diff --git a/.github/ISSUE_TEMPLATE/---1-report-an-issue.md b/.github/ISSUE_TEMPLATE/---1-report-an-issue.md deleted file mode 100644 index 52fb548a0..000000000 --- a/.github/ISSUE_TEMPLATE/---1-report-an-issue.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -name: "\U0001F41B Report an issue" -about: A feature is not working as expected. -title: '' -labels: '' -assignees: '' - ---- - -### New Issue Checklist - - -- [ ] I am not disclosing a [vulnerability](https://github.com/parse-community/Parse-SDK-Flutter/security/policy). -- [ ] I am not just asking a [question](https://github.com/parse-community/.github/blob/main/SUPPORT.md). -- [ ] I have searched through [existing issues](https://github.com/parse-community/Parse-SDK-Flutter/issues?q=is%3Aissue). -- [ ] I can reproduce the issue with the latest version of [Parse Server](https://github.com/parse-community/parse-server/releases) and the [Parse Flutter SDK](https://github.com/parse-community/Parse-SDK-Flutter/releases). - -### Issue Description - - -### Steps to reproduce - - -### Actual Outcome - - -### Expected Outcome - - -### Environment - - -Parse Flutter SDK -- SDK version: `FILL_THIS_OUT` -- Flutter version: `FILL_THIS_OUT` -- Dart version: `FILL_THIS_OUT` -- Operating system version: `FILL_THIS_OUT` - -Server -- Parse Server version: `FILL_THIS_OUT` - -### Logs - diff --git a/.github/ISSUE_TEMPLATE/---2-feature-request.md b/.github/ISSUE_TEMPLATE/---2-feature-request.md deleted file mode 100644 index 77c685a50..000000000 --- a/.github/ISSUE_TEMPLATE/---2-feature-request.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -name: "\U0001F4A1 Request a feature" -about: Suggest new functionality or an enhancement of existing functionality. -title: '' -labels: '' -assignees: '' - ---- - -### New Feature / Enhancement Checklist - - -- [ ] I am not disclosing a [vulnerability](https://github.com/parse-community/Parse-SDK-Flutter/security/policy). -- [ ] I am not just asking a [question](https://github.com/parse-community/.github/blob/main/SUPPORT.md). -- [ ] I have searched through [existing issues](https://github.com/parse-community/Parse-SDK-Flutter/issues?q=is%3Aissue). - -### Current Limitation - - -### Feature / Enhancement Description - - -### Example Use Case - - -### Alternatives / Workarounds - diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index e5a8c3caa..000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,8 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: 🙋🏽‍♀️ Getting help with code - url: https://stackoverflow.com/questions/tagged/parse-platform - about: Get help with code-level questions on Stack Overflow. - - name: 🙋 Getting general help - url: https://community.parseplatform.org - about: Get help with other questions on our Community Forum. diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md deleted file mode 100644 index 50d80c826..000000000 --- a/.github/pull_request_template.md +++ /dev/null @@ -1,20 +0,0 @@ - -## Pull Request - -- Report security issues [confidentially](https://github.com/parse-community/Parse-SDK-Flutter/security/policy). -- Any contribution is under this [license](https://github.com/parse-community/Parse-SDK-Flutter/blob/master/LICENSE). -- Link this pull request to an [issue](https://github.com/parse-community/Parse-SDK-Flutter/issues?q=is%3Aissue). - -## Issue - - -Closes: FILL_THIS_OUT - -## Approach - - -## Tasks - - -- [ ] Add tests -- [ ] Add changes to documentation (guides, repository pages, code comments) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 304d625c5..000000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,152 +0,0 @@ -name: ci -on: - push: - branches: - - "master" - - "development" - paths-ignore: - - "**/README.md" - - "docs/**" - pull_request: - branches: - - "**" -jobs: - check-dart: - runs-on: ${{ matrix.os }} - strategy: - matrix: - include: - # Dart framework may contain breaking changes in minor version releases, not following semver. - - name: Dart 3.0, Ubuntu - os: ubuntu-latest - sdk: 3.0.0 - - name: Dart 3.0, macOS - os: macos-latest - sdk: 3.0.0 - - name: Dart 3.0, Windows - os: windows-latest - sdk: 3.0.0 - # Only the latest Dart framework version (above) is tested with all architectures. Previous - # Dart framework versions (below) are only tested with Ubuntu to reduce CI resource usage. - - name: Dart 2.19 - os: ubuntu-latest - sdk: 2.19.6 - - name: Dart 2.18 - os: ubuntu-latest - sdk: 2.18.7 - - name: Dart beta - os: ubuntu-latest - sdk: beta - fail-fast: false - name: Test ${{ matrix.name }} - steps: - - name: Checkout code - uses: actions/checkout@v3 - - name: Setup dart - uses: dart-lang/setup-dart@v1.5.0 - with: - sdk: ${{ matrix.sdk }} - - name: Install dependencies - run: dart pub get --directory packages/dart - - name: Run build_runner - run: (cd packages/dart && dart run build_runner build --delete-conflicting-outputs) - - name: Analyze code - run: dart analyze packages/dart --fatal-infos - - name: Lint - run: dart format --output=none --set-exit-if-changed packages/dart - - name: Publish dry run - run: cd packages/dart && dart pub publish --dry-run - - name: Run tests - run: (cd packages/dart && dart test --coverage=coverage) - - name: Convert code coverage - # Needs to be adapted to collect the coverage at all platforms if platform specific code is added. - if: ${{ always() && matrix.os == 'ubuntu-latest' }} - working-directory: packages/dart - run: | - dart pub global activate coverage - dart pub global run coverage:format_coverage -i coverage/test -o coverage/lcov.info --lcov --packages=.dart_tool/package_config.json --report-on=lib - - name: Upload code coverage - uses: codecov/codecov-action@v2 - # Needs to be adapted to collect the coverage at all platforms if platform specific code is added. - if: ${{ always() && matrix.os == 'ubuntu-latest' }} - with: - files: packages/dart/coverage/lcov.info - fail_ci_if_error: true - check-flutter: - runs-on: ${{ matrix.os }} - strategy: - matrix: - include: - # Flutter framework may contain breaking changes in minor version releases, not following semver. - - name: Flutter 3.10, Ubuntu - os: ubuntu-latest - sdk: 3.10.x - - name: Flutter 3.10, macOS - os: macos-latest - sdk: 3.10.x - - name: Flutter 3.10, Windows - os: windows-latest - sdk: 3.10.x - # Only the latest Flutter framework version (above) is tested with all architectures. Previous - # Flutter framework versions (below) are only tested with Ubuntu to reduce CI resource usage. - - name: Flutter 3.7 - os: ubuntu-latest - sdk: 3.7.x - - name: Flutter 3.3 - os: ubuntu-latest - sdk: 3.3.x - - name: Flutter beta - os: ubuntu-latest - sdk: beta - fail-fast: false - name: Test ${{ matrix.name }} - steps: - - name: Checkout code - uses: actions/checkout@v3 - - name: Setup flutter (beta) - if: ${{ matrix.sdk == 'beta' }} - uses: subosito/flutter-action@v2 - with: - channel: "beta" - cache: true - - name: Setup flutter - if: ${{ matrix.sdk != 'beta' }} - uses: subosito/flutter-action@v2 - with: - flutter-version: ${{ matrix.sdk }} - cache: true - - name: Install dependencies on Ubuntu and MacOS - if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-latest' - run: | - (cd packages/dart && flutter pub get) - (cd packages/flutter && flutter pub get) - - name: Install dependencies on Windows - if: matrix.os == 'windows-latest' - run: | - cmd /c "cd packages\dart && flutter pub get" - cmd /c "cd packages\flutter && flutter pub get" - - name: Analyze code - run: flutter analyze packages/flutter --fatal-infos - - name: Lint - run: dart format --output=none --set-exit-if-changed packages/flutter - - name: Publish dry run - run: cd packages/flutter && dart pub publish --dry-run - - name: Run tests - run: (cd packages/flutter && flutter test --coverage) - - name: Convert code coverage - # Needs to be adapted to collect the coverage at all platforms if platform specific code is added. - if: ${{ always() && matrix.os == 'ubuntu-latest' }} - working-directory: packages/flutter - run: | - escapedPath="$(echo `pwd` | sed 's/\//\\\//g')" - sed "s/^SF:lib/SF:$escapedPath\/lib/g" coverage/lcov.info > coverage/lcov-full.info - - name: Upload code coverage - uses: codecov/codecov-action@v2 - # Needs to be adapted to collect the coverage at all platforms if platform specific code is added. - if: ${{ always() && matrix.os == 'ubuntu-latest' }} - with: - files: packages/flutter/coverage/lcov-full.info - fail_ci_if_error: true -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true diff --git a/.github/workflows/release-automated.yml b/.github/workflows/release-automated.yml deleted file mode 100644 index 71736b297..000000000 --- a/.github/workflows/release-automated.yml +++ /dev/null @@ -1,54 +0,0 @@ -# To authenticate on pub.dev to publish a release via GitHub Actions, a tag -# needs to be pushed, see: https://dart.dev/tools/pub/automated-publishing -# -# Publishing cannot currently be triggered manually via a "workflow_dispatch", -# see: https://dart.dev/go/publishing-from-github - -name: release-automated -on: - push: - tags: - - "dart-[0-9]+.[0-9]+.[0-9]+*" - - "flutter-[0-9]+.[0-9]+.[0-9]+*" -env: - package: ${{ startsWith(github.ref_name, 'dart') && 'dart' || 'flutter' }} -jobs: - release: - runs-on: ubuntu-latest - timeout-minutes: 10 - permissions: - id-token: write # This is required for requesting the JWT - steps: - - name: Checkout code - uses: actions/checkout@v3 - with: - ref: ${{ github.ref_name }} - - name: Setup dart - uses: dart-lang/setup-dart@v1 - with: - sdk: '3.0.0' # Set to 3.0.0 due to Parse Dart SDK compatibility, can be removed later on - - name: Setup flutter - if: env.package == 'flutter' - uses: subosito/flutter-action@v2 - with: - channel: 'stable' - cache: true - - name: Install dart dependencies - run: dart pub get --directory 'packages/dart' - - name: Install flutter dependencies - if: env.package == 'flutter' - run: dart pub get --directory 'packages/flutter' - - name: Analyze dart - if: env.package == 'dart' - run: dart analyze --fatal-infos 'packages/${{ env.package }}' - - name: Analyze flutter - if: env.package == 'flutter' - run: flutter analyze --fatal-infos 'packages/${{ env.package }}' - - name: Lint - run: dart format --output=none --set-exit-if-changed 'packages/${{ env.package }}' - - name: Publish package (dry-run) - working-directory: 'packages/${{ env.package }}' - run: dart pub publish --dry-run - - name: Publish package - working-directory: 'packages/${{ env.package }}' - run: dart pub publish --force diff --git a/.github/workflows/release-manual-docs.yml b/.github/workflows/release-manual-docs.yml deleted file mode 100644 index f3b1ab09a..000000000 --- a/.github/workflows/release-manual-docs.yml +++ /dev/null @@ -1,29 +0,0 @@ -name: release-manual-docs -on: - workflow_dispatch: - inputs: - tag: - default: '' - description: 'Version tag (dart-#.#.# or flutter-#.#.#):' -env: - package: ${{ startsWith(github.event.inputs.tag, 'dart') && 'dart' || 'flutter' }} -jobs: - docs-publish: - if: github.event.inputs.tag != '' - runs-on: ubuntu-latest - timeout-minutes: 15 - steps: - - uses: actions/checkout@v3 - with: - ref: ${{ github.event.inputs.tag }} - - name: Setup dart - uses: dart-lang/setup-dart@v1 - - name: Generate Docs - run: | - dart doc ./packages/${{ env.package }}/ -o ./.api_docs/${{ env.package }}/ - - name: Deploy - uses: peaceiris/actions-gh-pages@v3.7.3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./.api_docs/ - destination_dir: ${{ env.package }} diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 00bf6f00c..000000000 --- a/.gitignore +++ /dev/null @@ -1,124 +0,0 @@ -# Miscellaneous -*.class -*.lock -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# Visual Studio Code related -.classpath -.project -.settings/ -.vscode/ - -# Flutter repo-specific -/bin/cache/ -/bin/internal/bootstrap.bat -/bin/internal/bootstrap.sh -/bin/mingit/ -/dev/benchmarks/mega_gallery/ -/dev/bots/.recipe_deps -/dev/bots/android_tools/ -/dev/devicelab/ABresults*.json -/dev/docs/doc/ -/dev/docs/flutter.docs.zip -/dev/docs/lib/ -/dev/docs/pubspec.yaml -/dev/integration_tests/**/xcuserdata -/dev/integration_tests/**/Pods -/packages/flutter/coverage/ -version -analysis_benchmark.json - -# packages file containing multi-root paths -.packages.generated - -# Flutter/Dart/Pub related -**/doc/api/ -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -**/generated_plugin_registrant.dart -.packages -.pub-cache/ -.pub/ -build/ -flutter_*.png -linked_*.ds -unlinked.ds -unlinked_spec.ds - -# Android related -**/android/**/gradle-wrapper.jar -**/android/.gradle -**/android/captures/ -**/android/gradlew -**/android/gradlew.bat -**/android/local.properties -**/android/**/GeneratedPluginRegistrant.java -**/android/key.properties -*.jks - -# iOS/XCode related -**/ios/**/*.mode1v3 -**/ios/**/*.mode2v3 -**/ios/**/*.moved-aside -**/ios/**/*.pbxuser -**/ios/**/*.perspectivev3 -**/ios/**/*sync/ -**/ios/**/.sconsign.dblite -**/ios/**/.tags* -**/ios/**/.vagrant/ -**/ios/**/DerivedData/ -**/ios/**/Icon? -**/ios/**/Pods/ -**/ios/**/.symlinks/ -**/ios/**/profile -**/ios/**/xcuserdata -**/ios/.generated/ -**/ios/Flutter/.last_build_id -**/ios/Flutter/App.framework -**/ios/Flutter/Flutter.framework -**/ios/Flutter/Flutter.podspec -**/ios/Flutter/Generated.xcconfig -**/ios/Flutter/ephemeral -**/ios/Flutter/app.flx -**/ios/Flutter/app.zip -**/ios/Flutter/flutter_assets/ -**/ios/Flutter/flutter_export_environment.sh -**/ios/ServiceDefinitions.json -**/ios/Runner/GeneratedPluginRegistrant.* - -# macOS -**/macos/Flutter/GeneratedPluginRegistrant.swift -**/macos/Flutter/ephemeral/ - -# Linux -**/linux/flutter/ephemeral - -# Coverage -coverage/ -lcov.info - -# Symbols -app.*.symbols - -# Exceptions to above rules. -!**/ios/**/default.mode1v3 -!**/ios/**/default.mode2v3 -!**/ios/**/default.pbxuser -!**/ios/**/default.perspectivev3 -!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages -!/dev/ci/**/Gemfile.lock - diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 5f35995ba..000000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,23 +0,0 @@ -# Contributing to Parse SDK for Flutter - -We want to make contributing to this project as easy and transparent as possible. - -## Pull Requests - -We actively welcome your pull requests. When we get one, we'll run some Parse-specific integration tests on it first. From here, we'll need to get a core member to sign off on the changes and then merge the pull request. For API changes we may need to fix internal uses, which could cause some delay. We'll do our best to provide updates and feedback throughout the process. - -1. Fork the repo and create your branch from `master`. -2. Add unit tests for any new code you add. -3. If you've changed APIs, update the documentation. -4. Ensure the test suite passes. - -## Code of Conduct - -This project adheres to the [Contributor Covenant Code of Conduct](https://github.com/parse-community/parse-server/blob/master/CODE_OF_CONDUCT.md). By participating, you are expected to honor this code. - -## License - -By contributing to Parse SDK Flutter, you agree that your contributions will be licensed under its license. - -[stack-overflow]: http://stackoverflow.com/tags/parse.com -[bug-reports]: https://github.com/parse-community/parse-server diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 0e303d0f1..000000000 --- a/LICENSE +++ /dev/null @@ -1,176 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/NOTICE b/NOTICE deleted file mode 100644 index b23623122..000000000 --- a/NOTICE +++ /dev/null @@ -1,10 +0,0 @@ -Parse Dart / Flutter SDK - -Copyright 2021-present Parse Platform - -This product includes software developed at Parse Platform. -www.parseplatform.org - ---- - -As of October 19, 2021, the original author Phill Wiggins has transferred this code to the Parse Platform organization. \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index bb2ab9756..000000000 --- a/README.md +++ /dev/null @@ -1,27 +0,0 @@ -![parse-repository-header-sdk-flutterdart](https://user-images.githubusercontent.com/5673677/166121476-3838ac9f-a437-409c-bb28-6e1dfcc36b1c.png) - ---- - -[![Build Status](https://github.com/parse-community/Parse-SDK-Flutter/workflows/ci/badge.svg?branch=master)](https://github.com/parse-community/Parse-SDK-Flutter/actions?query=workflow%3Aci+branch%3Amaster) -[![Coverage](https://img.shields.io/codecov/c/github/parse-community/Parse-SDK-Flutter/master)](https://app.codecov.io/gh/parse-community/Parse-SDK-Flutter/branch/master) - -[![Backers on Open Collective](https://opencollective.com/parse-server/backers/badge.svg)][open-collective-link] -[![Sponsors on Open Collective](https://opencollective.com/parse-server/sponsors/badge.svg)][open-collective-link] -[![License](https://img.shields.io/badge/license-Apache%202.0-lightgrey.svg)](https://github.com/parse-community/Parse-SDK-Flutter/blob/master/LICENSE) -[![Forum](https://img.shields.io/discourse/https/community.parseplatform.org/topics.svg)](https://community.parseplatform.org/c/parse-server) -[![Twitter Follow](https://img.shields.io/twitter/follow/ParsePlatform.svg?label=Follow%20us&style=social)](https://twitter.com/intent/follow?screen_name=ParsePlatform) - ---- - -These libraries give you access to the powerful Parse Server backend from your Dart/Flutter app. For more information about Parse Platform and its features visit [parseplatform.org](https://parseplatform.org/). - -# Packages - -These packages are available in this repository: - -| Type | Name | Pub | -|---------|------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Dart | [parse_server_sdk](./packages/dart) | [![pub package](https://img.shields.io/pub/v/parse_server_sdk.svg)](https://pub.dev/packages/parse_server_sdk) [![likes](https://badges.bar/parse_server_sdk/likes)](https://pub.dev/packages/parse_server_sdk/score) [![popularity](https://badges.bar/parse_server_sdk/popularity)](https://pub.dev/packages/parse_server_sdk/score) [![pub points](https://badges.bar/parse_server_sdk/pub%20points)](https://pub.dev/packages/parse_server_sdk/score) | -| Flutter | [parse_server_sdk_flutter](./packages/flutter) | [![pub package](https://img.shields.io/pub/v/parse_server_sdk_flutter.svg)](https://pub.dev/packages/parse_server_sdk_flutter) [![likes](https://badges.bar/parse_server_sdk_flutter/likes)](https://pub.dev/packages/parse_server_sdk_flutter/score) [![popularity](https://badges.bar/parse_server_sdk_flutter/popularity)](https://pub.dev/packages/parse_server_sdk_flutter/score) [![pub points](https://badges.bar/parse_server_sdk_flutter/pub%20points)](https://pub.dev/packages/parse_server_sdk_flutter/score) | - -[open-collective-link]: https://opencollective.com/parse-server diff --git a/dart/__404error.html b/dart/__404error.html new file mode 100644 index 000000000..b55662109 --- /dev/null +++ b/dart/__404error.html @@ -0,0 +1,112 @@ + + + + + + + + + parse_server_sdk - Dart API docs + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
parse_server_sdk
+ +
+ +
+
+
+ +
+

404: Something's gone wrong :-(

+ +
+

You've tried to visit a page that doesn't exist. Luckily this site + has other pages.

+

If you were looking for something specific, try searching: +

+

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/categories.json b/dart/categories.json new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/dart/categories.json @@ -0,0 +1 @@ +[] diff --git a/dart/flutter_parse_sdk/CoreStore-class-sidebar.html b/dart/flutter_parse_sdk/CoreStore-class-sidebar.html new file mode 100644 index 000000000..4bf892266 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStore-class-sidebar.html @@ -0,0 +1,40 @@ +
    + +
  1. Constructors
  2. +
  3. CoreStore
  4. + + + +
  5. + Properties +
  6. +
  7. hashCode
  8. +
  9. runtimeType
  10. + +
  11. Methods
  12. +
  13. clear
  14. +
  15. containsKey
  16. +
  17. get
  18. +
  19. getBool
  20. +
  21. getDouble
  22. +
  23. getInt
  24. +
  25. getString
  26. +
  27. getStringList
  28. +
  29. noSuchMethod
  30. +
  31. remove
  32. +
  33. setBool
  34. +
  35. setDouble
  36. +
  37. setInt
  38. +
  39. setString
  40. +
  41. setStringList
  42. +
  43. toString
  44. + +
  45. Operators
  46. +
  47. operator ==
  48. + + + + + + +
diff --git a/dart/flutter_parse_sdk/CoreStore-class.html b/dart/flutter_parse_sdk/CoreStore-class.html new file mode 100644 index 000000000..26e2675de --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStore-class.html @@ -0,0 +1,417 @@ + + + + + + + + CoreStore class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
CoreStore
+ +
+ +
+
+
+ +
+
+

CoreStore class + abstract + +

+ + + + +
+
+ + + + + +
Implementers
+
+ + + + + +
+
+ + +
+

Constructors

+ +
+
+ CoreStore() +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ clear() + Future + + + +
+
+ + + +
+ +
+ containsKey(String key) + Future<bool> + + + +
+
+ + + +
+ +
+ get(String key) + Future + + + +
+
+ + + +
+ +
+ getBool(String key) + Future<bool?> + + + +
+
+ + + +
+ +
+ getDouble(String key) + Future<double?> + + + +
+
+ + + +
+ +
+ getInt(String key) + Future<int?> + + + +
+
+ + + +
+ +
+ getString(String key) + Future<String?> + + + +
+
+ + + +
+ +
+ getStringList(String key) + Future<List<String>?> + + + +
+
+ + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ remove(String key) + Future + + + +
+
+ + + +
+ +
+ setBool(String key, bool value) + Future + + + +
+
+ + + +
+ +
+ setDouble(String key, double value) + Future + + + +
+
+ + + +
+ +
+ setInt(String key, int value) + Future + + + +
+
+ + + +
+ +
+ setString(String key, String value) + Future + + + +
+
+ + + +
+ +
+ setStringList(String key, List<String> values) + Future + + + +
+
+ + + +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStore/CoreStore.html b/dart/flutter_parse_sdk/CoreStore/CoreStore.html new file mode 100644 index 000000000..9da61bf65 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStore/CoreStore.html @@ -0,0 +1,120 @@ + + + + + + + + CoreStore constructor - CoreStore - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
CoreStore
+ +
+ +
+
+
+ +
+
+

CoreStore constructor +

+ +
+ + CoreStore() +
+ + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStore/clear.html b/dart/flutter_parse_sdk/CoreStore/clear.html new file mode 100644 index 000000000..2f34fe492 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStore/clear.html @@ -0,0 +1,128 @@ + + + + + + + + clear method - CoreStore class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
clear
+ +
+ +
+
+
+ +
+
+

clear abstract method +

+ +
+ + +Future +clear() + + + +
+ + + + +
+

Implementation

+
Future<dynamic> clear();
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStore/containsKey.html b/dart/flutter_parse_sdk/CoreStore/containsKey.html new file mode 100644 index 000000000..1146c89ef --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStore/containsKey.html @@ -0,0 +1,129 @@ + + + + + + + + containsKey method - CoreStore class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
containsKey
+ +
+ +
+
+
+ +
+
+

containsKey abstract method +

+ +
+ + +Future<bool> +containsKey(
  1. String key
  2. +
) + + + +
+ + + + +
+

Implementation

+
Future<bool> containsKey(String key);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStore/get.html b/dart/flutter_parse_sdk/CoreStore/get.html new file mode 100644 index 000000000..03dae2e27 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStore/get.html @@ -0,0 +1,129 @@ + + + + + + + + get method - CoreStore class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
get
+ +
+ +
+
+
+ +
+
+

get abstract method +

+ +
+ + +Future +get(
  1. String key
  2. +
) + + + +
+ + + + +
+

Implementation

+
Future<dynamic> get(String key);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStore/getBool.html b/dart/flutter_parse_sdk/CoreStore/getBool.html new file mode 100644 index 000000000..8d185a2cf --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStore/getBool.html @@ -0,0 +1,129 @@ + + + + + + + + getBool method - CoreStore class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getBool
+ +
+ +
+
+
+ +
+
+

getBool abstract method +

+ +
+ + +Future<bool?> +getBool(
  1. String key
  2. +
) + + + +
+ + + + +
+

Implementation

+
Future<bool?> getBool(String key);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStore/getDouble.html b/dart/flutter_parse_sdk/CoreStore/getDouble.html new file mode 100644 index 000000000..c55842175 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStore/getDouble.html @@ -0,0 +1,129 @@ + + + + + + + + getDouble method - CoreStore class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getDouble
+ +
+ +
+
+
+ +
+
+

getDouble abstract method +

+ +
+ + +Future<double?> +getDouble(
  1. String key
  2. +
) + + + +
+ + + + +
+

Implementation

+
Future<double?> getDouble(String key);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStore/getInt.html b/dart/flutter_parse_sdk/CoreStore/getInt.html new file mode 100644 index 000000000..b94ee8ceb --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStore/getInt.html @@ -0,0 +1,129 @@ + + + + + + + + getInt method - CoreStore class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getInt
+ +
+ +
+
+
+ +
+
+

getInt abstract method +

+ +
+ + +Future<int?> +getInt(
  1. String key
  2. +
) + + + +
+ + + + +
+

Implementation

+
Future<int?> getInt(String key);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStore/getString.html b/dart/flutter_parse_sdk/CoreStore/getString.html new file mode 100644 index 000000000..c7be9b84b --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStore/getString.html @@ -0,0 +1,129 @@ + + + + + + + + getString method - CoreStore class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getString
+ +
+ +
+
+
+ +
+
+

getString abstract method +

+ +
+ + +Future<String?> +getString(
  1. String key
  2. +
) + + + +
+ + + + +
+

Implementation

+
Future<String?> getString(String key);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStore/getStringList.html b/dart/flutter_parse_sdk/CoreStore/getStringList.html new file mode 100644 index 000000000..114d9acf3 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStore/getStringList.html @@ -0,0 +1,129 @@ + + + + + + + + getStringList method - CoreStore class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getStringList
+ +
+ +
+
+
+ +
+
+

getStringList abstract method +

+ +
+ + +Future<List<String>?> +getStringList(
  1. String key
  2. +
) + + + +
+ + + + +
+

Implementation

+
Future<List<String>?> getStringList(String key);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStore/remove.html b/dart/flutter_parse_sdk/CoreStore/remove.html new file mode 100644 index 000000000..afd0ff5c7 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStore/remove.html @@ -0,0 +1,129 @@ + + + + + + + + remove method - CoreStore class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
remove
+ +
+ +
+
+
+ +
+
+

remove abstract method +

+ +
+ + +Future +remove(
  1. String key
  2. +
) + + + +
+ + + + +
+

Implementation

+
Future<dynamic> remove(String key);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStore/setBool.html b/dart/flutter_parse_sdk/CoreStore/setBool.html new file mode 100644 index 000000000..3b73ceea2 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStore/setBool.html @@ -0,0 +1,130 @@ + + + + + + + + setBool method - CoreStore class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setBool
+ +
+ +
+
+
+ +
+
+

setBool abstract method +

+ +
+ + +Future +setBool(
  1. String key,
  2. +
  3. bool value
  4. +
) + + + +
+ + + + +
+

Implementation

+
Future<dynamic> setBool(String key, bool value);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStore/setDouble.html b/dart/flutter_parse_sdk/CoreStore/setDouble.html new file mode 100644 index 000000000..4025dc6e8 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStore/setDouble.html @@ -0,0 +1,130 @@ + + + + + + + + setDouble method - CoreStore class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setDouble
+ +
+ +
+
+
+ +
+
+

setDouble abstract method +

+ +
+ + +Future +setDouble(
  1. String key,
  2. +
  3. double value
  4. +
) + + + +
+ + + + +
+

Implementation

+
Future<dynamic> setDouble(String key, double value);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStore/setInt.html b/dart/flutter_parse_sdk/CoreStore/setInt.html new file mode 100644 index 000000000..17f292922 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStore/setInt.html @@ -0,0 +1,130 @@ + + + + + + + + setInt method - CoreStore class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setInt
+ +
+ +
+
+
+ +
+
+

setInt abstract method +

+ +
+ + +Future +setInt(
  1. String key,
  2. +
  3. int value
  4. +
) + + + +
+ + + + +
+

Implementation

+
Future<dynamic> setInt(String key, int value);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStore/setString.html b/dart/flutter_parse_sdk/CoreStore/setString.html new file mode 100644 index 000000000..77f2b429b --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStore/setString.html @@ -0,0 +1,130 @@ + + + + + + + + setString method - CoreStore class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setString
+ +
+ +
+
+
+ +
+
+

setString abstract method +

+ +
+ + +Future +setString(
  1. String key,
  2. +
  3. String value
  4. +
) + + + +
+ + + + +
+

Implementation

+
Future<dynamic> setString(String key, String value);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStore/setStringList.html b/dart/flutter_parse_sdk/CoreStore/setStringList.html new file mode 100644 index 000000000..c2f013e09 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStore/setStringList.html @@ -0,0 +1,130 @@ + + + + + + + + setStringList method - CoreStore class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setStringList
+ +
+ +
+
+
+ +
+
+

setStringList abstract method +

+ +
+ + +Future +setStringList(
  1. String key,
  2. +
  3. List<String> values
  4. +
) + + + +
+ + + + +
+

Implementation

+
Future<dynamic> setStringList(String key, List<String> values);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreMemoryImp-class-sidebar.html b/dart/flutter_parse_sdk/CoreStoreMemoryImp-class-sidebar.html new file mode 100644 index 000000000..c46b3730c --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreMemoryImp-class-sidebar.html @@ -0,0 +1,40 @@ +
    + +
  1. Constructors
  2. +
  3. CoreStoreMemoryImp
  4. + + + +
  5. + Properties +
  6. +
  7. hashCode
  8. +
  9. runtimeType
  10. + +
  11. Methods
  12. +
  13. clear
  14. +
  15. containsKey
  16. +
  17. get
  18. +
  19. getBool
  20. +
  21. getDouble
  22. +
  23. getInt
  24. +
  25. getString
  26. +
  27. getStringList
  28. +
  29. noSuchMethod
  30. +
  31. remove
  32. +
  33. setBool
  34. +
  35. setDouble
  36. +
  37. setInt
  38. +
  39. setString
  40. +
  41. setStringList
  42. +
  43. toString
  44. + +
  45. Operators
  46. +
  47. operator ==
  48. + + + + + + +
diff --git a/dart/flutter_parse_sdk/CoreStoreMemoryImp-class.html b/dart/flutter_parse_sdk/CoreStoreMemoryImp-class.html new file mode 100644 index 000000000..2ce6cea8b --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreMemoryImp-class.html @@ -0,0 +1,417 @@ + + + + + + + + CoreStoreMemoryImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
CoreStoreMemoryImp
+ +
+ +
+
+
+ +
+
+

CoreStoreMemoryImp class + +

+ + + + +
+
+ + + +
Implemented types
+
+ +
+ + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ CoreStoreMemoryImp() +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ clear() + Future<void> + + + +
+
+ +
override
+ +
+ +
+ containsKey(String key) + Future<bool> + + + +
+
+ +
override
+ +
+ +
+ get(String key) + Future + + + +
+
+ +
override
+ +
+ +
+ getBool(String key) + Future<bool?> + + + +
+
+ +
override
+ +
+ +
+ getDouble(String key) + Future<double?> + + + +
+
+ +
override
+ +
+ +
+ getInt(String key) + Future<int?> + + + +
+
+ +
override
+ +
+ +
+ getString(String key) + Future<String?> + + + +
+
+ +
override
+ +
+ +
+ getStringList(String key) + Future<List<String>?> + + + +
+
+ +
override
+ +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ remove(String key) + Future + + + +
+
+ +
override
+ +
+ +
+ setBool(String key, bool value) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ setDouble(String key, double value) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ setInt(String key, int value) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ setString(String key, String value) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ setStringList(String key, List<String> values) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreMemoryImp/CoreStoreMemoryImp.html b/dart/flutter_parse_sdk/CoreStoreMemoryImp/CoreStoreMemoryImp.html new file mode 100644 index 000000000..319c35dc6 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreMemoryImp/CoreStoreMemoryImp.html @@ -0,0 +1,120 @@ + + + + + + + + CoreStoreMemoryImp constructor - CoreStoreMemoryImp - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
CoreStoreMemoryImp
+ +
+ +
+
+
+ +
+
+

CoreStoreMemoryImp constructor +

+ +
+ + CoreStoreMemoryImp() +
+ + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreMemoryImp/clear.html b/dart/flutter_parse_sdk/CoreStoreMemoryImp/clear.html new file mode 100644 index 000000000..7236db1bd --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreMemoryImp/clear.html @@ -0,0 +1,136 @@ + + + + + + + + clear method - CoreStoreMemoryImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
clear
+ +
+ +
+
+
+ +
+
+

clear method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +clear() + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> clear() async {
+  _data = <String, dynamic>{};
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreMemoryImp/containsKey.html b/dart/flutter_parse_sdk/CoreStoreMemoryImp/containsKey.html new file mode 100644 index 000000000..0b5f238d3 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreMemoryImp/containsKey.html @@ -0,0 +1,137 @@ + + + + + + + + containsKey method - CoreStoreMemoryImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
containsKey
+ +
+ +
+
+
+ +
+
+

containsKey method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<bool> +containsKey(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<bool> containsKey(String key) async {
+  return _data.containsKey(key);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreMemoryImp/get.html b/dart/flutter_parse_sdk/CoreStoreMemoryImp/get.html new file mode 100644 index 000000000..423e3c93f --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreMemoryImp/get.html @@ -0,0 +1,137 @@ + + + + + + + + get method - CoreStoreMemoryImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
get
+ +
+ +
+
+
+ +
+
+

get method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future +get(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<dynamic> get(String key) async {
+  return _data[key];
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreMemoryImp/getBool.html b/dart/flutter_parse_sdk/CoreStoreMemoryImp/getBool.html new file mode 100644 index 000000000..1c73a65fd --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreMemoryImp/getBool.html @@ -0,0 +1,137 @@ + + + + + + + + getBool method - CoreStoreMemoryImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getBool
+ +
+ +
+
+
+ +
+
+

getBool method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<bool?> +getBool(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<bool?> getBool(String key) async {
+  return _data[key];
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreMemoryImp/getDouble.html b/dart/flutter_parse_sdk/CoreStoreMemoryImp/getDouble.html new file mode 100644 index 000000000..8978e1c80 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreMemoryImp/getDouble.html @@ -0,0 +1,137 @@ + + + + + + + + getDouble method - CoreStoreMemoryImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getDouble
+ +
+ +
+
+
+ +
+
+

getDouble method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<double?> +getDouble(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<double?> getDouble(String key) async {
+  return _data[key];
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreMemoryImp/getInt.html b/dart/flutter_parse_sdk/CoreStoreMemoryImp/getInt.html new file mode 100644 index 000000000..4b9c36bbd --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreMemoryImp/getInt.html @@ -0,0 +1,137 @@ + + + + + + + + getInt method - CoreStoreMemoryImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getInt
+ +
+ +
+
+
+ +
+
+

getInt method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<int?> +getInt(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<int?> getInt(String key) async {
+  return _data[key];
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreMemoryImp/getString.html b/dart/flutter_parse_sdk/CoreStoreMemoryImp/getString.html new file mode 100644 index 000000000..8e4cca836 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreMemoryImp/getString.html @@ -0,0 +1,137 @@ + + + + + + + + getString method - CoreStoreMemoryImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getString
+ +
+ +
+
+
+ +
+
+

getString method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<String?> +getString(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<String?> getString(String key) async {
+  return _data[key];
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreMemoryImp/getStringList.html b/dart/flutter_parse_sdk/CoreStoreMemoryImp/getStringList.html new file mode 100644 index 000000000..e8966ff80 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreMemoryImp/getStringList.html @@ -0,0 +1,137 @@ + + + + + + + + getStringList method - CoreStoreMemoryImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getStringList
+ +
+ +
+
+
+ +
+
+

getStringList method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<List<String>?> +getStringList(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<List<String>?> getStringList(String key) async {
+  return _data[key];
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreMemoryImp/remove.html b/dart/flutter_parse_sdk/CoreStoreMemoryImp/remove.html new file mode 100644 index 000000000..addcb7729 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreMemoryImp/remove.html @@ -0,0 +1,137 @@ + + + + + + + + remove method - CoreStoreMemoryImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
remove
+ +
+ +
+
+
+ +
+
+

remove method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future +remove(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<dynamic> remove(String key) async {
+  return _data.remove(key);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreMemoryImp/setBool.html b/dart/flutter_parse_sdk/CoreStoreMemoryImp/setBool.html new file mode 100644 index 000000000..e4c754af8 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreMemoryImp/setBool.html @@ -0,0 +1,138 @@ + + + + + + + + setBool method - CoreStoreMemoryImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setBool
+ +
+ +
+
+
+ +
+
+

setBool method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setBool(
  1. String key,
  2. +
  3. bool value
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setBool(String key, bool value) async {
+  _data[key] = value;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreMemoryImp/setDouble.html b/dart/flutter_parse_sdk/CoreStoreMemoryImp/setDouble.html new file mode 100644 index 000000000..ff3f4de8d --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreMemoryImp/setDouble.html @@ -0,0 +1,138 @@ + + + + + + + + setDouble method - CoreStoreMemoryImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setDouble
+ +
+ +
+
+
+ +
+
+

setDouble method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setDouble(
  1. String key,
  2. +
  3. double value
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setDouble(String key, double value) async {
+  _data[key] = value;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreMemoryImp/setInt.html b/dart/flutter_parse_sdk/CoreStoreMemoryImp/setInt.html new file mode 100644 index 000000000..4bb16aa70 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreMemoryImp/setInt.html @@ -0,0 +1,138 @@ + + + + + + + + setInt method - CoreStoreMemoryImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setInt
+ +
+ +
+
+
+ +
+
+

setInt method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setInt(
  1. String key,
  2. +
  3. int value
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setInt(String key, int value) async {
+  _data[key] = value;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreMemoryImp/setString.html b/dart/flutter_parse_sdk/CoreStoreMemoryImp/setString.html new file mode 100644 index 000000000..135496ede --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreMemoryImp/setString.html @@ -0,0 +1,138 @@ + + + + + + + + setString method - CoreStoreMemoryImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setString
+ +
+ +
+
+
+ +
+
+

setString method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setString(
  1. String key,
  2. +
  3. String value
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setString(String key, String value) async {
+  _data[key] = value;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreMemoryImp/setStringList.html b/dart/flutter_parse_sdk/CoreStoreMemoryImp/setStringList.html new file mode 100644 index 000000000..e542b0370 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreMemoryImp/setStringList.html @@ -0,0 +1,138 @@ + + + + + + + + setStringList method - CoreStoreMemoryImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setStringList
+ +
+ +
+
+
+ +
+
+

setStringList method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setStringList(
  1. String key,
  2. +
  3. List<String> values
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setStringList(String key, List<String> values) async {
+  _data[key] = values;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreSembastImp-class-sidebar.html b/dart/flutter_parse_sdk/CoreStoreSembastImp-class-sidebar.html new file mode 100644 index 000000000..005cd3f90 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreSembastImp-class-sidebar.html @@ -0,0 +1,40 @@ +
    + + + + +
  1. + Properties +
  2. +
  3. hashCode
  4. +
  5. runtimeType
  6. + +
  7. Methods
  8. +
  9. clear
  10. +
  11. containsKey
  12. +
  13. get
  14. +
  15. getBool
  16. +
  17. getDouble
  18. +
  19. getInt
  20. +
  21. getString
  22. +
  23. getStringList
  24. +
  25. noSuchMethod
  26. +
  27. remove
  28. +
  29. setBool
  30. +
  31. setDouble
  32. +
  33. setInt
  34. +
  35. setString
  36. +
  37. setStringList
  38. +
  39. toString
  40. + +
  41. Operators
  42. +
  43. operator ==
  44. + + + + + +
  45. Static methods
  46. +
  47. getInstance
  48. + +
diff --git a/dart/flutter_parse_sdk/CoreStoreSembastImp-class.html b/dart/flutter_parse_sdk/CoreStoreSembastImp-class.html new file mode 100644 index 000000000..33cb6059d --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreSembastImp-class.html @@ -0,0 +1,423 @@ + + + + + + + + CoreStoreSembastImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
CoreStoreSembastImp
+ +
+ +
+
+
+ +
+
+

CoreStoreSembastImp class + +

+ + + + +
+
+ + + +
Implemented types
+
+ +
+ + + + + + + +
+
+ + + +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ clear() + Future<bool> + + + +
+
+ +
override
+ +
+ +
+ containsKey(String key) + Future<bool> + + + +
+
+ +
override
+ +
+ +
+ get(String key) + Future + + + +
+
+ +
override
+ +
+ +
+ getBool(String key) + Future<bool?> + + + +
+
+ +
override
+ +
+ +
+ getDouble(String key) + Future<double?> + + + +
+
+ +
override
+ +
+ +
+ getInt(String key) + Future<int?> + + + +
+
+ +
override
+ +
+ +
+ getString(String key) + Future<String?> + + + +
+
+ +
override
+ +
+ +
+ getStringList(String key) + Future<List<String>?> + + + +
+
+ +
override
+ +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ remove(String key) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ setBool(String key, bool value) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ setDouble(String key, double value) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ setInt(String key, int value) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ setString(String key, String value) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ setStringList(String key, List<String> values) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + +
+

Static Methods

+
+
+ getInstance(String dbPath, {DatabaseFactory? factory, String? password}) + Future<CoreStoreSembastImp> + + + +
+
+ + + +
+ +
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreSembastImp/clear.html b/dart/flutter_parse_sdk/CoreStoreSembastImp/clear.html new file mode 100644 index 000000000..98a4896a5 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreSembastImp/clear.html @@ -0,0 +1,136 @@ + + + + + + + + clear method - CoreStoreSembastImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
clear
+ +
+ +
+
+
+ +
+
+

clear method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<bool> +clear() + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<bool> clear() {
+  return _store.drop(_database) as Future<bool>;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreSembastImp/containsKey.html b/dart/flutter_parse_sdk/CoreStoreSembastImp/containsKey.html new file mode 100644 index 000000000..8fe138b64 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreSembastImp/containsKey.html @@ -0,0 +1,137 @@ + + + + + + + + containsKey method - CoreStoreSembastImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
containsKey
+ +
+ +
+
+
+ +
+
+

containsKey method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<bool> +containsKey(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<bool> containsKey(String key) {
+  return _store.record(key).exists(_database);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreSembastImp/get.html b/dart/flutter_parse_sdk/CoreStoreSembastImp/get.html new file mode 100644 index 000000000..ca53a403b --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreSembastImp/get.html @@ -0,0 +1,137 @@ + + + + + + + + get method - CoreStoreSembastImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
get
+ +
+ +
+
+
+ +
+
+

get method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future +get(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<dynamic> get(String key) {
+  return _store.record(key).get(_database);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreSembastImp/getBool.html b/dart/flutter_parse_sdk/CoreStoreSembastImp/getBool.html new file mode 100644 index 000000000..feaf3cbac --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreSembastImp/getBool.html @@ -0,0 +1,138 @@ + + + + + + + + getBool method - CoreStoreSembastImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getBool
+ +
+ +
+
+
+ +
+
+

getBool method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<bool?> +getBool(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<bool?> getBool(String key) async {
+  final bool? storedItem = await get(key);
+  return storedItem;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreSembastImp/getDouble.html b/dart/flutter_parse_sdk/CoreStoreSembastImp/getDouble.html new file mode 100644 index 000000000..41ba74297 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreSembastImp/getDouble.html @@ -0,0 +1,138 @@ + + + + + + + + getDouble method - CoreStoreSembastImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getDouble
+ +
+ +
+
+
+ +
+
+

getDouble method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<double?> +getDouble(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<double?> getDouble(String key) async {
+  final double? storedItem = await get(key);
+  return storedItem;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreSembastImp/getInstance.html b/dart/flutter_parse_sdk/CoreStoreSembastImp/getInstance.html new file mode 100644 index 000000000..b2aeeb2bb --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreSembastImp/getInstance.html @@ -0,0 +1,162 @@ + + + + + + + + getInstance method - CoreStoreSembastImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getInstance
+ +
+ +
+
+
+ +
+
+

getInstance static method +

+ +
+ + +Future<CoreStoreSembastImp> +getInstance(
  1. String dbPath,
  2. +
  3. {DatabaseFactory? factory,
  4. +
  5. String? password}
  6. +
) + + + +
+ + + + +
+

Implementation

+
static Future<CoreStoreSembastImp> getInstance(String dbPath,
+    {DatabaseFactory? factory, String? password}) async {
+  password ??= 'flutter_sdk';
+  if (_instance == null) {
+    factory ??= !parseIsWeb ? databaseFactoryIo : databaseFactoryWeb;
+    assert(() {
+      if (parseIsWeb) {
+        print(
+            '***********************************************************************************************************');
+        print(
+            'Warning: CoreStoreSembastImp of the Parse_Server_SDK does not encrypt the database on WEB.');
+        print(
+            '***********************************************************************************************************');
+      }
+      if (password == 'flutter_sdk') {
+        print(
+            '***********************************************************************************************************');
+        print(
+            'Warning: CoreStoreSembastImp uses the default password. Specify a custom password for increased security.');
+        print(
+            '***********************************************************************************************************');
+      }
+      return true;
+    }());
+    final Database db = await factory.openDatabase(dbPath,
+        codec: !parseIsWeb ? getXXTeaSembastCodec(password: password) : null);
+    _instance =
+        CoreStoreSembastImp._internal(db, StoreRef<String, String>.main());
+  }
+
+  return _instance!;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreSembastImp/getInt.html b/dart/flutter_parse_sdk/CoreStoreSembastImp/getInt.html new file mode 100644 index 000000000..61b9f6862 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreSembastImp/getInt.html @@ -0,0 +1,138 @@ + + + + + + + + getInt method - CoreStoreSembastImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getInt
+ +
+ +
+
+
+ +
+
+

getInt method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<int?> +getInt(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<int?> getInt(String key) async {
+  final int? storedItem = await get(key);
+  return storedItem;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreSembastImp/getString.html b/dart/flutter_parse_sdk/CoreStoreSembastImp/getString.html new file mode 100644 index 000000000..9cbe2f724 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreSembastImp/getString.html @@ -0,0 +1,138 @@ + + + + + + + + getString method - CoreStoreSembastImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getString
+ +
+ +
+
+
+ +
+
+

getString method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<String?> +getString(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<String?> getString(String key) async {
+  final String? storedItem = await get(key);
+  return storedItem;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreSembastImp/getStringList.html b/dart/flutter_parse_sdk/CoreStoreSembastImp/getStringList.html new file mode 100644 index 000000000..42b3d5417 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreSembastImp/getStringList.html @@ -0,0 +1,138 @@ + + + + + + + + getStringList method - CoreStoreSembastImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getStringList
+ +
+ +
+
+
+ +
+
+

getStringList method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<List<String>?> +getStringList(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<List<String>?> getStringList(String key) async {
+  final List<String>? storedItem = await get(key);
+  return storedItem;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreSembastImp/remove.html b/dart/flutter_parse_sdk/CoreStoreSembastImp/remove.html new file mode 100644 index 000000000..e01e35303 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreSembastImp/remove.html @@ -0,0 +1,137 @@ + + + + + + + + remove method - CoreStoreSembastImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
remove
+ +
+ +
+
+
+ +
+
+

remove method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +remove(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> remove(String key) {
+  return _store.record(key).delete(_database);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreSembastImp/setBool.html b/dart/flutter_parse_sdk/CoreStoreSembastImp/setBool.html new file mode 100644 index 000000000..e03480dc3 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreSembastImp/setBool.html @@ -0,0 +1,138 @@ + + + + + + + + setBool method - CoreStoreSembastImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setBool
+ +
+ +
+
+
+ +
+
+

setBool method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setBool(
  1. String key,
  2. +
  3. bool value
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setBool(String key, bool value) {
+  return _store.record(key).put(_database, value);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreSembastImp/setDouble.html b/dart/flutter_parse_sdk/CoreStoreSembastImp/setDouble.html new file mode 100644 index 000000000..b1a2f1fe7 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreSembastImp/setDouble.html @@ -0,0 +1,138 @@ + + + + + + + + setDouble method - CoreStoreSembastImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setDouble
+ +
+ +
+
+
+ +
+
+

setDouble method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setDouble(
  1. String key,
  2. +
  3. double value
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setDouble(String key, double value) {
+  return _store.record(key).put(_database, value);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreSembastImp/setInt.html b/dart/flutter_parse_sdk/CoreStoreSembastImp/setInt.html new file mode 100644 index 000000000..ab1645586 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreSembastImp/setInt.html @@ -0,0 +1,138 @@ + + + + + + + + setInt method - CoreStoreSembastImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setInt
+ +
+ +
+
+
+ +
+
+

setInt method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setInt(
  1. String key,
  2. +
  3. int value
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setInt(String key, int value) {
+  return _store.record(key).put(_database, value);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreSembastImp/setString.html b/dart/flutter_parse_sdk/CoreStoreSembastImp/setString.html new file mode 100644 index 000000000..017096560 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreSembastImp/setString.html @@ -0,0 +1,138 @@ + + + + + + + + setString method - CoreStoreSembastImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setString
+ +
+ +
+
+
+ +
+
+

setString method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setString(
  1. String key,
  2. +
  3. String value
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setString(String key, String value) {
+  return _store.record(key).put(_database, value);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/CoreStoreSembastImp/setStringList.html b/dart/flutter_parse_sdk/CoreStoreSembastImp/setStringList.html new file mode 100644 index 000000000..a428aa124 --- /dev/null +++ b/dart/flutter_parse_sdk/CoreStoreSembastImp/setStringList.html @@ -0,0 +1,138 @@ + + + + + + + + setStringList method - CoreStoreSembastImp class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setStringList
+ +
+ +
+
+
+ +
+
+

setStringList method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setStringList(
  1. String key,
  2. +
  3. List<String> values
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setStringList(String key, List<String> values) {
+  return _store.record(key).put(_database, values);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQuery-class-sidebar.html b/dart/flutter_parse_sdk/LiveQuery-class-sidebar.html new file mode 100644 index 000000000..0a4b51341 --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQuery-class-sidebar.html @@ -0,0 +1,27 @@ +
    + +
  1. Constructors
  2. +
  3. LiveQuery
  4. + + + +
  5. + Properties +
  6. +
  7. client
  8. +
  9. hashCode
  10. +
  11. runtimeType
  12. + +
  13. Methods
  14. +
  15. noSuchMethod
  16. +
  17. toString
  18. + +
  19. Operators
  20. +
  21. operator ==
  22. + + + + + + +
diff --git a/dart/flutter_parse_sdk/LiveQuery-class.html b/dart/flutter_parse_sdk/LiveQuery-class.html new file mode 100644 index 000000000..c65505ed6 --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQuery-class.html @@ -0,0 +1,226 @@ + + + + + + + + LiveQuery class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
LiveQuery
+ +
+ +
+
+
+ +
+
+

LiveQuery class + +

+ + + + + + +
+

Constructors

+ +
+
+ LiveQuery({bool? debug, bool? autoSendSessionId}) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ client + LiveQueryClient + +
+
+ +
getter/setter pair
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQuery/LiveQuery.html b/dart/flutter_parse_sdk/LiveQuery/LiveQuery.html new file mode 100644 index 000000000..b31e0497e --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQuery/LiveQuery.html @@ -0,0 +1,131 @@ + + + + + + + + LiveQuery constructor - LiveQuery - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
LiveQuery
+ +
+ +
+
+
+ +
+
+

LiveQuery constructor +

+ +
+ + LiveQuery(
  1. {bool? debug,
  2. +
  3. bool? autoSendSessionId}
  4. +
) +
+ + + + + +
+

Implementation

+
LiveQuery({bool? debug, bool? autoSendSessionId}) {
+  _debug = isDebugEnabled(objectLevelDebug: debug);
+  _sendSessionId = autoSendSessionId ?? ParseCoreData().autoSendSessionId;
+  client = LiveQueryClient._getInstance(
+      debug: _debug, autoSendSessionId: _sendSessionId);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQuery/client.html b/dart/flutter_parse_sdk/LiveQuery/client.html new file mode 100644 index 000000000..fbe965119 --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQuery/client.html @@ -0,0 +1,125 @@ + + + + + + + + client property - LiveQuery class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
client
+ +
+ +
+
+
+ +
+
+

client property +

+ +
+ + LiveQueryClient + client +
getter/setter pair
+ +
+ + + +
+

Implementation

+
late LiveQueryClient client;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryClient-class-sidebar.html b/dart/flutter_parse_sdk/LiveQueryClient-class-sidebar.html new file mode 100644 index 000000000..61abc9b61 --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryClient-class-sidebar.html @@ -0,0 +1,36 @@ +
    + +
  1. Constructors
  2. +
  3. LiveQueryClient
  4. + + + +
  5. + Properties +
  6. +
  7. chanelStream
  8. +
  9. getClientEventStream
  10. +
  11. hashCode
  12. +
  13. reconnectingController
  14. +
  15. runtimeType
  16. + +
  17. Methods
  18. +
  19. disconnect
  20. +
  21. noSuchMethod
  22. +
  23. readyState
  24. +
  25. reconnect
  26. +
  27. subscribe
  28. +
  29. toString
  30. +
  31. unSubscribe
  32. + +
  33. Operators
  34. +
  35. operator ==
  36. + + + + +
  37. Static properties
  38. +
  39. instance
  40. + + +
diff --git a/dart/flutter_parse_sdk/LiveQueryClient-class.html b/dart/flutter_parse_sdk/LiveQueryClient-class.html new file mode 100644 index 000000000..87b598e57 --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryClient-class.html @@ -0,0 +1,331 @@ + + + + + + + + LiveQueryClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
LiveQueryClient
+ +
+ +
+
+
+ +
+
+

LiveQueryClient class + +

+ + + + + + +
+

Constructors

+ +
+
+ LiveQueryClient() +
+
+ +
factory
+
+
+
+ +
+

Properties

+ +
+
+ chanelStream + StreamController<String>? + +
+
+ +
getter/setter pair
+ +
+ +
+ getClientEventStream + Stream<LiveQueryClientEvent> + +
+
+ +
no setter
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ reconnectingController + LiveQueryReconnectingController + +
+
+ +
getter/setter pair
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ disconnect({bool userInitialized = false}) + Future + + + +
+
+ + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ readyState() + int + + + +
+
+ + + +
+ +
+ reconnect({bool userInitialized = false}) + Future<void> + + + +
+
+ + + +
+ +
+ subscribe<T extends ParseObject>(QueryBuilder<T> query, {T? copyObject}) + Future<Subscription<T>> + + + +
+
+ + + +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+ unSubscribe<T extends ParseObject>(Subscription<T> subscription) + → void + + + +
+
+ + + +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ +
+

Static Properties

+ +
+
+ instance + LiveQueryClient + +
+
+ +
no setter
+ +
+ +
+
+ + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryClient/LiveQueryClient.html b/dart/flutter_parse_sdk/LiveQueryClient/LiveQueryClient.html new file mode 100644 index 000000000..48a00ffa5 --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryClient/LiveQueryClient.html @@ -0,0 +1,124 @@ + + + + + + + + LiveQueryClient constructor - LiveQueryClient - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
LiveQueryClient
+ +
+ +
+
+
+ +
+
+

LiveQueryClient constructor +

+ +
+ + LiveQueryClient() +
+ + + + + +
+

Implementation

+
factory LiveQueryClient() => _getInstance();
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryClient/chanelStream.html b/dart/flutter_parse_sdk/LiveQueryClient/chanelStream.html new file mode 100644 index 000000000..8ebd5ae3c --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryClient/chanelStream.html @@ -0,0 +1,125 @@ + + + + + + + + chanelStream property - LiveQueryClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
chanelStream
+ +
+ +
+
+
+ +
+
+

chanelStream property +

+ +
+ + StreamController<String>? + chanelStream +
getter/setter pair
+ +
+ + + +
+

Implementation

+
StreamController<String>? chanelStream;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryClient/disconnect.html b/dart/flutter_parse_sdk/LiveQueryClient/disconnect.html new file mode 100644 index 000000000..fd5565fff --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryClient/disconnect.html @@ -0,0 +1,155 @@ + + + + + + + + disconnect method - LiveQueryClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
disconnect
+ +
+ +
+
+
+ +
+
+

disconnect method +

+ +
+ + +Future +disconnect(
  1. {bool userInitialized = false}
  2. +
) + + + +
+ + + + +
+

Implementation

+
Future<dynamic> disconnect({bool userInitialized = false}) async {
+  parse_web_socket.WebSocket? webSocket = _webSocket;
+  if (webSocket != null &&
+      webSocket.readyState == parse_web_socket.WebSocket.open) {
+    if (_debug) {
+      print('$_printConstLiveQuery: Socket closed');
+    }
+    await webSocket.close();
+    _webSocket = null;
+  }
+  WebSocketChannel? channel = _channel;
+  if (channel != null) {
+    if (_debug) {
+      print('$_printConstLiveQuery: close');
+    }
+    await channel.sink.close();
+    _channel = null;
+  }
+  _requestSubscription.values.toList().forEach((Subscription subscription) {
+    subscription._enabled = false;
+  });
+  _connecting = false;
+  if (userInitialized) {
+    _clientEventStreamController.sink
+        .add(LiveQueryClientEvent.userDisconnected);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryClient/getClientEventStream.html b/dart/flutter_parse_sdk/LiveQueryClient/getClientEventStream.html new file mode 100644 index 000000000..f2e0e80d8 --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryClient/getClientEventStream.html @@ -0,0 +1,134 @@ + + + + + + + + getClientEventStream property - LiveQueryClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getClientEventStream
+ +
+ +
+
+
+ +
+
+

getClientEventStream property +

+ + + +
+ +
+ + Stream<LiveQueryClientEvent> + getClientEventStream + + +
+ + + + +
+

Implementation

+
Stream<LiveQueryClientEvent> get getClientEventStream {
+  return _clientEventStream;
+}
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryClient/instance.html b/dart/flutter_parse_sdk/LiveQueryClient/instance.html new file mode 100644 index 000000000..7d6883cbd --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryClient/instance.html @@ -0,0 +1,132 @@ + + + + + + + + instance property - LiveQueryClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
instance
+ +
+ +
+
+
+ +
+
+

instance property +

+ + + +
+ +
+ + LiveQueryClient + instance + + +
+ + + + +
+

Implementation

+
static LiveQueryClient get instance => _getInstance();
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryClient/readyState.html b/dart/flutter_parse_sdk/LiveQueryClient/readyState.html new file mode 100644 index 000000000..8d2fc291b --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryClient/readyState.html @@ -0,0 +1,134 @@ + + + + + + + + readyState method - LiveQueryClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
readyState
+ +
+ +
+
+
+ +
+
+

readyState method +

+ +
+ + +int +readyState() + + + +
+ + + + +
+

Implementation

+
int readyState() {
+  parse_web_socket.WebSocket? webSocket = _webSocket;
+  if (webSocket != null) {
+    return webSocket.readyState;
+  }
+  return parse_web_socket.WebSocket.connecting;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryClient/reconnect.html b/dart/flutter_parse_sdk/LiveQueryClient/reconnect.html new file mode 100644 index 000000000..af02dd67c --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryClient/reconnect.html @@ -0,0 +1,132 @@ + + + + + + + + reconnect method - LiveQueryClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
reconnect
+ +
+ +
+
+
+ +
+
+

reconnect method +

+ +
+ + +Future<void> +reconnect(
  1. {bool userInitialized = false}
  2. +
) + + + +
+ + + + +
+

Implementation

+
Future<void> reconnect({bool userInitialized = false}) async {
+  await _connect(userInitialized: userInitialized);
+  await _connectLiveQuery();
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryClient/reconnectingController.html b/dart/flutter_parse_sdk/LiveQueryClient/reconnectingController.html new file mode 100644 index 000000000..da1d67c2a --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryClient/reconnectingController.html @@ -0,0 +1,125 @@ + + + + + + + + reconnectingController property - LiveQueryClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
reconnectingController
+ +
+ +
+
+
+ +
+
+

reconnectingController property +

+ +
+ + LiveQueryReconnectingController + reconnectingController +
getter/setter pair
+ +
+ + + +
+

Implementation

+
late LiveQueryReconnectingController reconnectingController;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryClient/subscribe.html b/dart/flutter_parse_sdk/LiveQueryClient/subscribe.html new file mode 100644 index 000000000..d42851a78 --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryClient/subscribe.html @@ -0,0 +1,145 @@ + + + + + + + + subscribe method - LiveQueryClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
subscribe
+ +
+ +
+
+
+ +
+
+

subscribe<T extends ParseObject> method +

+ +
+ + +Future<Subscription<T>> +subscribe<T extends ParseObject>(
  1. QueryBuilder<T> query,
  2. +
  3. {T? copyObject}
  4. +
) + + + +
+ + + + +
+

Implementation

+
Future<Subscription<T>> subscribe<T extends ParseObject>(
+    QueryBuilder<T> query,
+    {T? copyObject}) async {
+  if (_webSocket == null) {
+    await _clientEventStream.any((LiveQueryClientEvent event) =>
+        event == LiveQueryClientEvent.connected);
+  }
+  final int requestId = _requestIdGenerator();
+  final Subscription<T> subscription =
+      Subscription<T>(query, requestId, copyObject: copyObject);
+  _requestSubscription[requestId] = subscription;
+  //After a client connects to the LiveQuery server,
+  //it can send a subscribe message to subscribe a ParseQuery.
+  _subscribeLiveQuery(subscription);
+  return subscription;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryClient/unSubscribe.html b/dart/flutter_parse_sdk/LiveQueryClient/unSubscribe.html new file mode 100644 index 000000000..7e599e6aa --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryClient/unSubscribe.html @@ -0,0 +1,144 @@ + + + + + + + + unSubscribe method - LiveQueryClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
unSubscribe
+ +
+ +
+
+
+ +
+
+

unSubscribe<T extends ParseObject> method +

+ +
+ + +void +unSubscribe<T extends ParseObject>(
  1. Subscription<T> subscription
  2. +
) + + + +
+ + + + +
+

Implementation

+
void unSubscribe<T extends ParseObject>(Subscription<T> subscription) {
+  //Mount message for Unsubscribe
+  final Map<String, dynamic> unsubscribeMessage = <String, dynamic>{
+    'op': 'unsubscribe',
+    'requestId': subscription.requestId,
+  };
+  WebSocketChannel? channel = _channel;
+  if (channel != null) {
+    if (_debug) {
+      print('$_printConstLiveQuery: UnsubscribeMessage: $unsubscribeMessage');
+    }
+    channel.sink.add(jsonEncode(unsubscribeMessage));
+    subscription._enabled = false;
+    _requestSubscription.remove(subscription.requestId);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryClientEvent-enum-sidebar.html b/dart/flutter_parse_sdk/LiveQueryClientEvent-enum-sidebar.html new file mode 100644 index 000000000..d48c704c3 --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryClientEvent-enum-sidebar.html @@ -0,0 +1,33 @@ +
    + +
  1. Constructors
  2. +
  3. LiveQueryClientEvent
  4. + +
  5. Values
  6. +
  7. connected
  8. +
  9. disconnected
  10. +
  11. userDisconnected
  12. + + +
  13. + Properties +
  14. +
  15. hashCode
  16. +
  17. index
  18. +
  19. runtimeType
  20. + +
  21. Methods
  22. +
  23. noSuchMethod
  24. +
  25. toString
  26. + +
  27. Operators
  28. +
  29. operator ==
  30. + + + + + + +
  31. Constants
  32. +
  33. values
  34. +
diff --git a/dart/flutter_parse_sdk/LiveQueryClientEvent.html b/dart/flutter_parse_sdk/LiveQueryClientEvent.html new file mode 100644 index 000000000..21f76985b --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryClientEvent.html @@ -0,0 +1,315 @@ + + + + + + + + LiveQueryClientEvent enum - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
LiveQueryClientEvent
+ +
+ +
+
+
+ +
+
+ +

+ LiveQueryClientEvent + enum + + +

+
+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + +
+
+ + +
+

Constructors

+ +
+
+ LiveQueryClientEvent() +
+
+ +
const
+
+
+
+ +
+

Values

+ +
+
+ connected + → const LiveQueryClientEvent + + +
+
+ + + +
+ +
+ disconnected + → const LiveQueryClientEvent + + +
+
+ + + +
+ +
+ userDisconnected + → const LiveQueryClientEvent + + +
+
+ + + +
+ +
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ index + int + +
+
+ A numeric identifier for the enumerated value. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + +
+

Constants

+ +
+
+ values + → const List<LiveQueryClientEvent> + + +
+
+ A constant List of the values in this enum, in order of their declaration. + + +
+ +
+
+
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryClientEvent/LiveQueryClientEvent.html b/dart/flutter_parse_sdk/LiveQueryClientEvent/LiveQueryClientEvent.html new file mode 100644 index 000000000..53d73e95b --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryClientEvent/LiveQueryClientEvent.html @@ -0,0 +1,120 @@ + + + + + + + + LiveQueryClientEvent constructor - LiveQueryClientEvent - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
LiveQueryClientEvent
+ +
+ +
+
+
+ +
+
+

LiveQueryClientEvent constructor +

+ +
+ const + LiveQueryClientEvent() +
+ + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryClientEvent/values-constant.html b/dart/flutter_parse_sdk/LiveQueryClientEvent/values-constant.html new file mode 100644 index 000000000..b212f6af2 --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryClientEvent/values-constant.html @@ -0,0 +1,124 @@ + + + + + + + + values constant - LiveQueryClientEvent enum - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
values
+ +
+ +
+
+
+ +
+
+

values constant +

+ +
+ + List<LiveQueryClientEvent> + const values + + +
+ +
+

A constant List of the values in this enum, in order of their declaration.

+
+ + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryEvent-enum-sidebar.html b/dart/flutter_parse_sdk/LiveQueryEvent-enum-sidebar.html new file mode 100644 index 000000000..a8f53d305 --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryEvent-enum-sidebar.html @@ -0,0 +1,36 @@ +
    + +
  1. Constructors
  2. +
  3. LiveQueryEvent
  4. + +
  5. Values
  6. +
  7. create
  8. +
  9. enter
  10. +
  11. update
  12. +
  13. leave
  14. +
  15. delete
  16. +
  17. error
  18. + + +
  19. + Properties +
  20. +
  21. hashCode
  22. +
  23. index
  24. +
  25. runtimeType
  26. + +
  27. Methods
  28. +
  29. noSuchMethod
  30. +
  31. toString
  32. + +
  33. Operators
  34. +
  35. operator ==
  36. + + + + + + +
  37. Constants
  38. +
  39. values
  40. +
diff --git a/dart/flutter_parse_sdk/LiveQueryEvent.html b/dart/flutter_parse_sdk/LiveQueryEvent.html new file mode 100644 index 000000000..6c6a465a9 --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryEvent.html @@ -0,0 +1,351 @@ + + + + + + + + LiveQueryEvent enum - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
LiveQueryEvent
+ +
+ +
+
+
+ +
+
+ +

+ LiveQueryEvent + enum + + +

+
+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + +
+
+ + +
+

Constructors

+ +
+
+ LiveQueryEvent() +
+
+ +
const
+
+
+
+ +
+

Values

+ +
+
+ create + → const LiveQueryEvent + + +
+
+ + + +
+ +
+ enter + → const LiveQueryEvent + + +
+
+ + + +
+ +
+ update + → const LiveQueryEvent + + +
+
+ + + +
+ +
+ leave + → const LiveQueryEvent + + +
+
+ + + +
+ +
+ delete + → const LiveQueryEvent + + +
+
+ + + +
+ +
+ error + → const LiveQueryEvent + + +
+
+ + + +
+ +
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ index + int + +
+
+ A numeric identifier for the enumerated value. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + +
+

Constants

+ +
+
+ values + → const List<LiveQueryEvent> + + +
+
+ A constant List of the values in this enum, in order of their declaration. + + +
+ +
+
+
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryEvent/LiveQueryEvent.html b/dart/flutter_parse_sdk/LiveQueryEvent/LiveQueryEvent.html new file mode 100644 index 000000000..db99a7b9b --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryEvent/LiveQueryEvent.html @@ -0,0 +1,120 @@ + + + + + + + + LiveQueryEvent constructor - LiveQueryEvent - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
LiveQueryEvent
+ +
+ +
+
+
+ +
+
+

LiveQueryEvent constructor +

+ +
+ const + LiveQueryEvent() +
+ + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryEvent/values-constant.html b/dart/flutter_parse_sdk/LiveQueryEvent/values-constant.html new file mode 100644 index 000000000..1d18c954e --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryEvent/values-constant.html @@ -0,0 +1,124 @@ + + + + + + + + values constant - LiveQueryEvent enum - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
values
+ +
+ +
+
+
+ +
+
+

values constant +

+ +
+ + List<LiveQueryEvent> + const values + + +
+ +
+

A constant List of the values in this enum, in order of their declaration.

+
+ + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryReconnectingController-class-sidebar.html b/dart/flutter_parse_sdk/LiveQueryReconnectingController-class-sidebar.html new file mode 100644 index 000000000..5deda36dc --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryReconnectingController-class-sidebar.html @@ -0,0 +1,31 @@ +
    + +
  1. Constructors
  2. +
  3. LiveQueryReconnectingController
  4. + + + +
  5. + Properties +
  6. +
  7. debug
  8. +
  9. hashCode
  10. +
  11. runtimeType
  12. + +
  13. Methods
  14. +
  15. noSuchMethod
  16. +
  17. toString
  18. + +
  19. Operators
  20. +
  21. operator ==
  22. + + + + +
  23. Static properties
  24. +
  25. retryInterval
  26. + + +
  27. Constants
  28. +
  29. debugTag
  30. +
diff --git a/dart/flutter_parse_sdk/LiveQueryReconnectingController-class.html b/dart/flutter_parse_sdk/LiveQueryReconnectingController-class.html new file mode 100644 index 000000000..9764f01fb --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryReconnectingController-class.html @@ -0,0 +1,261 @@ + + + + + + + + LiveQueryReconnectingController class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
LiveQueryReconnectingController
+ +
+ +
+
+
+ +
+
+

LiveQueryReconnectingController class + +

+ + + + + + +
+

Constructors

+ +
+
+ LiveQueryReconnectingController(Function _reconnect, Stream<LiveQueryClientEvent> _eventStream, bool debug) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ debug + bool + +
+
+ +
final
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ +
+

Static Properties

+ +
+
+ retryInterval + List<int> + +
+
+ +
no setter
+ +
+ +
+
+ + + +
+

Constants

+ +
+
+ debugTag + → const String + + +
+
+ + + +
+ +
+
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryReconnectingController/LiveQueryReconnectingController.html b/dart/flutter_parse_sdk/LiveQueryReconnectingController/LiveQueryReconnectingController.html new file mode 100644 index 000000000..fdf6a8fa3 --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryReconnectingController/LiveQueryReconnectingController.html @@ -0,0 +1,167 @@ + + + + + + + + LiveQueryReconnectingController constructor - LiveQueryReconnectingController - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
LiveQueryReconnectingController
+ +
+ +
+
+
+ +
+
+

LiveQueryReconnectingController constructor +

+ +
+ + LiveQueryReconnectingController(
  1. Function _reconnect,
  2. +
  3. Stream<LiveQueryClientEvent> _eventStream,
  4. +
  5. bool debug
  6. +
) +
+ + + + + +
+

Implementation

+
LiveQueryReconnectingController(
+  this._reconnect,
+  this._eventStream,
+  this.debug,
+) {
+  final ParseConnectivityProvider? connectivityProvider =
+      ParseCoreData().connectivityProvider;
+  if (connectivityProvider != null) {
+    connectivityProvider.checkConnectivity().then(_connectivityChanged);
+    connectivityProvider.connectivityStream.listen(_connectivityChanged);
+  } else {
+    print(
+        'LiveQuery does not work, if there is no ParseConnectivityProvider provided.');
+  }
+  _eventStream.listen((LiveQueryClientEvent event) {
+    switch (event) {
+      case LiveQueryClientEvent.connected:
+        _isConnected = true;
+        _retryState = 0;
+        _userDisconnected = false;
+        break;
+      case LiveQueryClientEvent.disconnected:
+        _isConnected = false;
+        _setReconnect();
+        break;
+      case LiveQueryClientEvent.userDisconnected:
+        _userDisconnected = true;
+        Timer? currentTimer = _currentTimer;
+        if (currentTimer != null) {
+          currentTimer.cancel();
+          _currentTimer = null;
+        }
+        break;
+    }
+
+    if (debug) {
+      print('$debugTag: $event');
+    }
+  });
+  ParseCoreData().appResumedStream?.listen((void _) => _setReconnect());
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryReconnectingController/debug.html b/dart/flutter_parse_sdk/LiveQueryReconnectingController/debug.html new file mode 100644 index 000000000..5f03aede4 --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryReconnectingController/debug.html @@ -0,0 +1,125 @@ + + + + + + + + debug property - LiveQueryReconnectingController class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
debug
+ +
+ +
+
+
+ +
+
+

debug property +

+ +
+ + bool + debug +
final
+ +
+ + + +
+

Implementation

+
final bool debug;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryReconnectingController/debugTag-constant.html b/dart/flutter_parse_sdk/LiveQueryReconnectingController/debugTag-constant.html new file mode 100644 index 000000000..1426d87fc --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryReconnectingController/debugTag-constant.html @@ -0,0 +1,125 @@ + + + + + + + + debugTag constant - LiveQueryReconnectingController class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
debugTag
+ +
+ +
+
+
+ +
+
+

debugTag constant +

+ +
+ + String + const debugTag + + +
+ + + +
+

Implementation

+
static const String debugTag = 'LiveQueryReconnectingController';
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/LiveQueryReconnectingController/retryInterval.html b/dart/flutter_parse_sdk/LiveQueryReconnectingController/retryInterval.html new file mode 100644 index 000000000..b50b220f9 --- /dev/null +++ b/dart/flutter_parse_sdk/LiveQueryReconnectingController/retryInterval.html @@ -0,0 +1,132 @@ + + + + + + + + retryInterval property - LiveQueryReconnectingController class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
retryInterval
+ +
+ +
+
+
+ +
+
+

retryInterval property +

+ + + +
+ +
+ + List<int> + retryInterval + + +
+ + + + +
+

Implementation

+
static List<int> get retryInterval => ParseCoreData().liveListRetryIntervals;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/Parse-class-sidebar.html b/dart/flutter_parse_sdk/Parse-class-sidebar.html new file mode 100644 index 000000000..48db230ce --- /dev/null +++ b/dart/flutter_parse_sdk/Parse-class-sidebar.html @@ -0,0 +1,31 @@ +
    + +
  1. Constructors
  2. +
  3. Parse
  4. + + + +
  5. + Properties +
  6. +
  7. hashCode
  8. +
  9. runtimeType
  10. + +
  11. Methods
  12. +
  13. hasParseBeenInitialized
  14. +
  15. healthCheck
  16. +
  17. initialize
  18. +
  19. noSuchMethod
  20. +
  21. toString
  22. + +
  23. Operators
  24. +
  25. operator ==
  26. + + + + +
  27. Static properties
  28. +
  29. objectsExistForEventually
  30. + + +
diff --git a/dart/flutter_parse_sdk/Parse-class.html b/dart/flutter_parse_sdk/Parse-class.html new file mode 100644 index 000000000..124f45007 --- /dev/null +++ b/dart/flutter_parse_sdk/Parse-class.html @@ -0,0 +1,271 @@ + + + + + + + + Parse class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
Parse
+ +
+ +
+
+
+ +
+
+

Parse class + +

+ + + + + + +
+

Constructors

+ +
+
+ Parse() +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ hasParseBeenInitialized() + bool + + + +
+
+ + + +
+ +
+ healthCheck({bool? debug, ParseClient? client, bool? sendSessionIdByDefault}) + Future<ParseResponse> + + + +
+
+ + + +
+ +
+ initialize(String appId, String serverUrl, {bool debug = false, String? appName, String? appVersion, String? appPackageName, String? locale, String? liveQueryUrl, String? clientKey, String? masterKey, String? sessionId, bool autoSendSessionId = true, SecurityContext? securityContext, CoreStore? coreStore, Map<String, ParseObjectConstructor>? registeredSubClassMap, ParseUserConstructor? parseUserConstructor, ParseFileConstructor? parseFileConstructor, List<int>? liveListRetryIntervals, ParseConnectivityProvider? connectivityProvider, String? fileDirectory, Stream<void>? appResumedStream, ParseClientCreator? clientCreator}) + Future<Parse> + + + +
+
+ To initialize Parse Server in your application + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ +
+

Static Properties

+ +
+
+ objectsExistForEventually + bool + +
+
+ +
getter/setter pair
+ +
+ +
+
+ + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/Parse/Parse.html b/dart/flutter_parse_sdk/Parse/Parse.html new file mode 100644 index 000000000..c7100dd17 --- /dev/null +++ b/dart/flutter_parse_sdk/Parse/Parse.html @@ -0,0 +1,120 @@ + + + + + + + + Parse constructor - Parse - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
Parse
+ +
+ +
+
+
+ +
+
+

Parse constructor +

+ +
+ + Parse() +
+ + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/Parse/hasParseBeenInitialized.html b/dart/flutter_parse_sdk/Parse/hasParseBeenInitialized.html new file mode 100644 index 000000000..8988c36fd --- /dev/null +++ b/dart/flutter_parse_sdk/Parse/hasParseBeenInitialized.html @@ -0,0 +1,128 @@ + + + + + + + + hasParseBeenInitialized method - Parse class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
hasParseBeenInitialized
+ +
+ +
+
+
+ +
+
+

hasParseBeenInitialized method +

+ +
+ + +bool +hasParseBeenInitialized() + + + +
+ + + + +
+

Implementation

+
bool hasParseBeenInitialized() => _hasBeenInitialized;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/Parse/healthCheck.html b/dart/flutter_parse_sdk/Parse/healthCheck.html new file mode 100644 index 000000000..8536e7e5c --- /dev/null +++ b/dart/flutter_parse_sdk/Parse/healthCheck.html @@ -0,0 +1,151 @@ + + + + + + + + healthCheck method - Parse class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
healthCheck
+ +
+ +
+
+
+ +
+
+

healthCheck method +

+ +
+ + +Future<ParseResponse> +healthCheck(
  1. {bool? debug,
  2. +
  3. ParseClient? client,
  4. +
  5. bool? sendSessionIdByDefault}
  6. +
) + + + +
+ + + + +
+

Implementation

+
Future<ParseResponse> healthCheck(
+    {bool? debug, ParseClient? client, bool? sendSessionIdByDefault}) async {
+  final bool debugLocal = isDebugEnabled(objectLevelDebug: debug);
+
+  final ParseClient clientLocal = client ??
+      ParseCoreData().clientCreator(
+          sendSessionId:
+              sendSessionIdByDefault ?? ParseCoreData().autoSendSessionId,
+          securityContext: ParseCoreData().securityContext);
+
+  const String className = 'parseBase';
+  const ParseApiRQ type = ParseApiRQ.healthCheck;
+
+  try {
+    final ParseNetworkResponse response = await clientLocal
+        .get('${ParseCoreData().serverUrl}$keyEndPointHealth');
+    return handleResponse<Parse>(null, response, type, debugLocal, className);
+  } on Exception catch (e) {
+    return handleException(e, type, debugLocal, className);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/Parse/initialize.html b/dart/flutter_parse_sdk/Parse/initialize.html new file mode 100644 index 000000000..e42cb4d02 --- /dev/null +++ b/dart/flutter_parse_sdk/Parse/initialize.html @@ -0,0 +1,221 @@ + + + + + + + + initialize method - Parse class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
initialize
+ +
+ +
+
+
+ +
+
+

initialize method +

+ +
+ + +Future<Parse> +initialize(
  1. String appId,
  2. +
  3. String serverUrl,
  4. +
  5. {bool debug = false,
  6. +
  7. String? appName,
  8. +
  9. String? appVersion,
  10. +
  11. String? appPackageName,
  12. +
  13. String? locale,
  14. +
  15. String? liveQueryUrl,
  16. +
  17. String? clientKey,
  18. +
  19. String? masterKey,
  20. +
  21. String? sessionId,
  22. +
  23. bool autoSendSessionId = true,
  24. +
  25. SecurityContext? securityContext,
  26. +
  27. CoreStore? coreStore,
  28. +
  29. Map<String, ParseObjectConstructor>? registeredSubClassMap,
  30. +
  31. ParseUserConstructor? parseUserConstructor,
  32. +
  33. ParseFileConstructor? parseFileConstructor,
  34. +
  35. List<int>? liveListRetryIntervals,
  36. +
  37. ParseConnectivityProvider? connectivityProvider,
  38. +
  39. String? fileDirectory,
  40. +
  41. Stream<void>? appResumedStream,
  42. +
  43. ParseClientCreator? clientCreator}
  44. +
) + + + +
+ +
+

To initialize Parse Server in your application

+

This should be initialized in MyApp() creation

+
Parse().initialize(
+       "PARSE_APP_ID",
+       "https://parse.myaddress.com/parse/,+%20%20%20%20%20%20%20clientKey:"asd23rjh234r234r234r",
+       debug: true,
+       liveQuery: true);
+
+
+ + + +
+

Implementation

+
Future<Parse> initialize(
+  String appId,
+  String serverUrl, {
+  bool debug = false,
+  String? appName,
+  String? appVersion,
+  String? appPackageName,
+  String? locale,
+  String? liveQueryUrl,
+  String? clientKey,
+  String? masterKey,
+  String? sessionId,
+  bool autoSendSessionId = true,
+  SecurityContext? securityContext,
+  CoreStore? coreStore,
+  Map<String, ParseObjectConstructor>? registeredSubClassMap,
+  ParseUserConstructor? parseUserConstructor,
+  ParseFileConstructor? parseFileConstructor,
+  List<int>? liveListRetryIntervals,
+  ParseConnectivityProvider? connectivityProvider,
+  String? fileDirectory,
+  Stream<void>? appResumedStream,
+  ParseClientCreator? clientCreator,
+}) async {
+  final String url = removeTrailingSlash(serverUrl);
+
+  await ParseCoreData.init(
+    appId,
+    url,
+    debug: debug,
+    appName: appName,
+    appVersion: appVersion,
+    appPackageName: appPackageName,
+    locale: locale,
+    liveQueryUrl: liveQueryUrl,
+    masterKey: masterKey,
+    clientKey: clientKey,
+    sessionId: sessionId,
+    autoSendSessionId: autoSendSessionId,
+    securityContext: securityContext,
+    store: coreStore,
+    registeredSubClassMap: registeredSubClassMap,
+    parseUserConstructor: parseUserConstructor,
+    parseFileConstructor: parseFileConstructor,
+    liveListRetryIntervals: liveListRetryIntervals,
+    connectivityProvider: connectivityProvider,
+    fileDirectory: fileDirectory,
+    appResumedStream: appResumedStream,
+    clientCreator: clientCreator,
+  );
+
+  _hasBeenInitialized = true;
+
+  objectsExistForEventually = await checkObjectsExistForEventually();
+
+  if (objectsExistForEventually) {
+    ParseObject.submitEventually();
+  }
+
+  return this;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/Parse/objectsExistForEventually.html b/dart/flutter_parse_sdk/Parse/objectsExistForEventually.html new file mode 100644 index 000000000..b89ca73b8 --- /dev/null +++ b/dart/flutter_parse_sdk/Parse/objectsExistForEventually.html @@ -0,0 +1,125 @@ + + + + + + + + objectsExistForEventually property - Parse class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
objectsExistForEventually
+ +
+ +
+
+
+ +
+
+

objectsExistForEventually property +

+ +
+ + bool + objectsExistForEventually +
getter/setter pair
+ +
+ + + +
+

Implementation

+
static bool objectsExistForEventually = false;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseACL-class-sidebar.html b/dart/flutter_parse_sdk/ParseACL-class-sidebar.html new file mode 100644 index 000000000..003878fcf --- /dev/null +++ b/dart/flutter_parse_sdk/ParseACL-class-sidebar.html @@ -0,0 +1,36 @@ +
    + +
  1. Constructors
  2. +
  3. ParseACL
  4. + + + +
  5. + Properties +
  6. +
  7. hashCode
  8. +
  9. runtimeType
  10. + +
  11. Methods
  12. +
  13. fromJson
  14. +
  15. getPublicReadAccess
  16. +
  17. getPublicWriteAccess
  18. +
  19. getReadAccess
  20. +
  21. getWriteAccess
  22. +
  23. noSuchMethod
  24. +
  25. setPublicReadAccess
  26. +
  27. setPublicWriteAccess
  28. +
  29. setReadAccess
  30. +
  31. setWriteAccess
  32. +
  33. toJson
  34. +
  35. toString
  36. + +
  37. Operators
  38. +
  39. operator ==
  40. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseACL-class.html b/dart/flutter_parse_sdk/ParseACL-class.html new file mode 100644 index 000000000..146cf9f5b --- /dev/null +++ b/dart/flutter_parse_sdk/ParseACL-class.html @@ -0,0 +1,357 @@ + + + + + + + + ParseACL class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseACL
+ +
+ +
+
+
+ +
+
+

ParseACL class + +

+ + +
+

ParseACL is used to control which users can access or modify a particular object +ParseObject can have its own ParseACL +You can grant read and write permissions separately to specific users + or you can grant permissions to "the public" so that, for example, any user could read a particular object but +only a particular set of users could write to that object

+
+ + + + +
+

Constructors

+ +
+
+ ParseACL({ParseUser? owner}) +
+
+ Creates an ACL where only the provided user has access. +owner The only user that can read or write objects governed by this ACL. +
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ fromJson(Map<String, dynamic> map) + ParseACL + + + +
+
+ + + +
+ +
+ getPublicReadAccess() + bool + + + +
+
+ Get whether the public is allowed to read this object. + + +
+ +
+ getPublicWriteAccess() + bool + + + +
+
+ Set whether the public is allowed to write this object. + + +
+ +
+ getReadAccess({required String userId}) + bool + + + +
+
+ Get whether the given user id is explicitly allowed to read this object. Even if this returns +false, the user may still be able to access it if getPublicReadAccess returns +true or a role that the user belongs to has read access. + + +
+ +
+ getWriteAccess({required String userId}) + bool + + + +
+
+ Get whether the given user id is explicitly allowed to write this object. Even if this +returns false, the user may still be able to write it if getPublicWriteAccess returns +true or a role that the user belongs to has write access. + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ setPublicReadAccess({required bool allowed}) + → void + + + +
+
+ Set whether the public is allowed to read this object. + + +
+ +
+ setPublicWriteAccess({required bool allowed}) + → void + + + +
+
+ Set whether the public is allowed to write this object. + + +
+ +
+ setReadAccess({required String userId, bool allowed = true}) + → void + + + +
+
+ Set whether the given user id is allowed to read this object. + + +
+ +
+ setWriteAccess({required String userId, bool allowed = true}) + → void + + + +
+
+ Set whether the given user id is allowed to write this object. + + +
+ +
+ toJson() + Map<String, dynamic> + + + +
+
+ + + +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
override
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseACL/ParseACL.html b/dart/flutter_parse_sdk/ParseACL/ParseACL.html new file mode 100644 index 000000000..2ba369cda --- /dev/null +++ b/dart/flutter_parse_sdk/ParseACL/ParseACL.html @@ -0,0 +1,134 @@ + + + + + + + + ParseACL constructor - ParseACL - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseACL
+ +
+ +
+
+
+ +
+
+

ParseACL constructor +

+ +
+ + ParseACL(
  1. {ParseUser? owner}
  2. +
) +
+ + +
+

Creates an ACL where only the provided user has access. +owner The only user that can read or write objects governed by this ACL.

+
+ + + +
+

Implementation

+
ParseACL({ParseUser? owner}) {
+  if (owner != null) {
+    setReadAccess(userId: owner.objectId!, allowed: true);
+    setWriteAccess(userId: owner.objectId!, allowed: true);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseACL/fromJson.html b/dart/flutter_parse_sdk/ParseACL/fromJson.html new file mode 100644 index 000000000..fd76e4cb2 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseACL/fromJson.html @@ -0,0 +1,141 @@ + + + + + + + + fromJson method - ParseACL class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
fromJson
+ +
+ +
+
+
+ +
+
+

fromJson method +

+ +
+ + +ParseACL +fromJson(
  1. Map<String, dynamic> map
  2. +
) + + + +
+ + + + +
+

Implementation

+
ParseACL fromJson(Map<String, dynamic> map) {
+  final ParseACL parseACL = ParseACL();
+
+  map.forEach((String userId, dynamic permission) {
+    if (permission['read'] != null) {
+      parseACL.setReadAccess(userId: userId, allowed: permission['read']);
+    }
+    if (permission['write'] != null) {
+      parseACL.setWriteAccess(userId: userId, allowed: permission['write']);
+    }
+  });
+  return parseACL;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseACL/getPublicReadAccess.html b/dart/flutter_parse_sdk/ParseACL/getPublicReadAccess.html new file mode 100644 index 000000000..1cbbbf352 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseACL/getPublicReadAccess.html @@ -0,0 +1,133 @@ + + + + + + + + getPublicReadAccess method - ParseACL class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getPublicReadAccess
+ +
+ +
+
+
+ +
+
+

getPublicReadAccess method +

+ +
+ + +bool +getPublicReadAccess() + + + +
+ +
+

Get whether the public is allowed to read this object.

+
+ + + +
+

Implementation

+
bool getPublicReadAccess() {
+  return getReadAccess(userId: _publicKEY);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseACL/getPublicWriteAccess.html b/dart/flutter_parse_sdk/ParseACL/getPublicWriteAccess.html new file mode 100644 index 000000000..2d25848bf --- /dev/null +++ b/dart/flutter_parse_sdk/ParseACL/getPublicWriteAccess.html @@ -0,0 +1,133 @@ + + + + + + + + getPublicWriteAccess method - ParseACL class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getPublicWriteAccess
+ +
+ +
+
+
+ +
+
+

getPublicWriteAccess method +

+ +
+ + +bool +getPublicWriteAccess() + + + +
+ +
+

Set whether the public is allowed to write this object.

+
+ + + +
+

Implementation

+
bool getPublicWriteAccess() {
+  return getWriteAccess(userId: _publicKEY);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseACL/getReadAccess.html b/dart/flutter_parse_sdk/ParseACL/getReadAccess.html new file mode 100644 index 000000000..8d0d45e00 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseACL/getReadAccess.html @@ -0,0 +1,136 @@ + + + + + + + + getReadAccess method - ParseACL class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getReadAccess
+ +
+ +
+
+
+ +
+
+

getReadAccess method +

+ +
+ + +bool +getReadAccess(
  1. {required String userId}
  2. +
) + + + +
+ +
+

Get whether the given user id is explicitly allowed to read this object. Even if this returns +false, the user may still be able to access it if getPublicReadAccess returns +true or a role that the user belongs to has read access.

+
+ + + +
+

Implementation

+
bool getReadAccess({required String userId}) {
+  return _permissionsById[userId]?.readPermission ?? false;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseACL/getWriteAccess.html b/dart/flutter_parse_sdk/ParseACL/getWriteAccess.html new file mode 100644 index 000000000..acb50d4ab --- /dev/null +++ b/dart/flutter_parse_sdk/ParseACL/getWriteAccess.html @@ -0,0 +1,136 @@ + + + + + + + + getWriteAccess method - ParseACL class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getWriteAccess
+ +
+ +
+
+
+ +
+
+

getWriteAccess method +

+ +
+ + +bool +getWriteAccess(
  1. {required String userId}
  2. +
) + + + +
+ +
+

Get whether the given user id is explicitly allowed to write this object. Even if this +returns false, the user may still be able to write it if getPublicWriteAccess returns +true or a role that the user belongs to has write access.

+
+ + + +
+

Implementation

+
bool getWriteAccess({required String userId}) {
+  return _permissionsById[userId]?.writePermission ?? false;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseACL/setPublicReadAccess.html b/dart/flutter_parse_sdk/ParseACL/setPublicReadAccess.html new file mode 100644 index 000000000..ca20f19b5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseACL/setPublicReadAccess.html @@ -0,0 +1,134 @@ + + + + + + + + setPublicReadAccess method - ParseACL class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setPublicReadAccess
+ +
+ +
+
+
+ +
+
+

setPublicReadAccess method +

+ +
+ + +void +setPublicReadAccess(
  1. {required bool allowed}
  2. +
) + + + +
+ +
+

Set whether the public is allowed to read this object.

+
+ + + +
+

Implementation

+
void setPublicReadAccess({required bool allowed}) {
+  setReadAccess(userId: _publicKEY, allowed: allowed);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseACL/setPublicWriteAccess.html b/dart/flutter_parse_sdk/ParseACL/setPublicWriteAccess.html new file mode 100644 index 000000000..12eabe9fc --- /dev/null +++ b/dart/flutter_parse_sdk/ParseACL/setPublicWriteAccess.html @@ -0,0 +1,134 @@ + + + + + + + + setPublicWriteAccess method - ParseACL class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setPublicWriteAccess
+ +
+ +
+
+
+ +
+
+

setPublicWriteAccess method +

+ +
+ + +void +setPublicWriteAccess(
  1. {required bool allowed}
  2. +
) + + + +
+ +
+

Set whether the public is allowed to write this object.

+
+ + + +
+

Implementation

+
void setPublicWriteAccess({required bool allowed}) {
+  setWriteAccess(userId: _publicKEY, allowed: allowed);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseACL/setReadAccess.html b/dart/flutter_parse_sdk/ParseACL/setReadAccess.html new file mode 100644 index 000000000..8c47f5b39 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseACL/setReadAccess.html @@ -0,0 +1,139 @@ + + + + + + + + setReadAccess method - ParseACL class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setReadAccess
+ +
+ +
+
+
+ +
+
+

setReadAccess method +

+ +
+ + +void +setReadAccess(
  1. {required String userId,
  2. +
  3. bool allowed = true}
  4. +
) + + + +
+ +
+

Set whether the given user id is allowed to read this object.

+
+ + + +
+

Implementation

+
void setReadAccess({required String userId, bool allowed = true}) {
+  final bool writePermission = getWriteAccess(userId: userId);
+  _setPermissionsIfNonEmpty(
+      userId: userId,
+      readPermission: allowed,
+      writePermission: writePermission);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseACL/setWriteAccess.html b/dart/flutter_parse_sdk/ParseACL/setWriteAccess.html new file mode 100644 index 000000000..bed68ee54 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseACL/setWriteAccess.html @@ -0,0 +1,139 @@ + + + + + + + + setWriteAccess method - ParseACL class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setWriteAccess
+ +
+ +
+
+
+ +
+
+

setWriteAccess method +

+ +
+ + +void +setWriteAccess(
  1. {required String userId,
  2. +
  3. bool allowed = true}
  4. +
) + + + +
+ +
+

Set whether the given user id is allowed to write this object.

+
+ + + +
+

Implementation

+
void setWriteAccess({required String userId, bool allowed = true}) {
+  final bool readPermission = getReadAccess(userId: userId);
+  _setPermissionsIfNonEmpty(
+      userId: userId,
+      readPermission: readPermission,
+      writePermission: allowed);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseACL/toJson.html b/dart/flutter_parse_sdk/ParseACL/toJson.html new file mode 100644 index 000000000..725c9aa81 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseACL/toJson.html @@ -0,0 +1,134 @@ + + + + + + + + toJson method - ParseACL class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
toJson
+ +
+ +
+
+
+ +
+
+

toJson method +

+ +
+ + +Map<String, dynamic> +toJson() + + + +
+ + + + +
+

Implementation

+
Map<String, dynamic> toJson() {
+  final Map<String, dynamic> map = <String, dynamic>{};
+  _permissionsById.forEach((String user, _ACLPermissions permission) {
+    map[user] = permission.toJson();
+  });
+  return map;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseACL/toString.html b/dart/flutter_parse_sdk/ParseACL/toString.html new file mode 100644 index 000000000..365c6e5d1 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseACL/toString.html @@ -0,0 +1,146 @@ + + + + + + + + toString method - ParseACL class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
toString
+ +
+ +
+
+
+ +
+
+

toString method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +String +toString() + +
override
+ +
+ +
+

A string representation of this object.

+

Some classes have a default textual representation, +often paired with a static parse function (like int.parse). +These classes will provide the textual representation as +their string representation.

+

Other classes have no meaningful textual representation +that a program will care about. +Such classes will typically override toString to provide +useful information when inspecting the object, +mainly for debugging or logging.

+
+ + + +
+

Implementation

+
@override
+String toString() => json.encode(toJson());
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseApiRQ-enum-sidebar.html b/dart/flutter_parse_sdk/ParseApiRQ-enum-sidebar.html new file mode 100644 index 000000000..dfc82fcd2 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseApiRQ-enum-sidebar.html @@ -0,0 +1,62 @@ +
    + +
  1. Constructors
  2. +
  3. ParseApiRQ
  4. + +
  5. Values
  6. +
  7. healthCheck
  8. +
  9. get
  10. +
  11. getAll
  12. +
  13. unset
  14. +
  15. create
  16. +
  17. save
  18. +
  19. query
  20. +
  21. delete
  22. +
  23. currentUser
  24. +
  25. signUp
  26. +
  27. login
  28. +
  29. logout
  30. +
  31. loginAnonymous
  32. +
  33. loginWith
  34. +
  35. verificationEmailRequest
  36. +
  37. requestPasswordReset
  38. +
  39. destroy
  40. +
  41. all
  42. +
  43. execute
  44. +
  45. executeObjectionFunction
  46. +
  47. upload
  48. +
  49. add
  50. +
  51. addAll
  52. +
  53. addUnique
  54. +
  55. remove
  56. +
  57. removeAll
  58. +
  59. increment
  60. +
  61. decrement
  62. +
  63. getConfigs
  64. +
  65. addConfig
  66. +
  67. liveQuery
  68. +
  69. batch
  70. + + +
  71. + Properties +
  72. +
  73. hashCode
  74. +
  75. index
  76. +
  77. runtimeType
  78. + +
  79. Methods
  80. +
  81. noSuchMethod
  82. +
  83. toString
  84. + +
  85. Operators
  86. +
  87. operator ==
  88. + + + + + + +
  89. Constants
  90. +
  91. values
  92. +
diff --git a/dart/flutter_parse_sdk/ParseApiRQ.html b/dart/flutter_parse_sdk/ParseApiRQ.html new file mode 100644 index 000000000..bc6e78208 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseApiRQ.html @@ -0,0 +1,666 @@ + + + + + + + + ParseApiRQ enum - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseApiRQ
+ +
+ +
+
+
+ +
+
+ +

+ ParseApiRQ + enum + + +

+
+ + +
+

Used to define the API calls made in ParseObject logs

+
+ + +
+
+ +
Inheritance
+
+ +
+ + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseApiRQ() +
+
+ +
const
+
+
+
+ +
+

Values

+ +
+
+ healthCheck + → const ParseApiRQ + + +
+
+ + + +
+ +
+ get + → const ParseApiRQ + + +
+
+ + + +
+ +
+ getAll + → const ParseApiRQ + + +
+
+ + + +
+ +
+ unset + → const ParseApiRQ + + +
+
+ + + +
+ +
+ create + → const ParseApiRQ + + +
+
+ + + +
+ +
+ save + → const ParseApiRQ + + +
+
+ + + +
+ +
+ query + → const ParseApiRQ + + +
+
+ + + +
+ +
+ delete + → const ParseApiRQ + + +
+
+ + + +
+ +
+ currentUser + → const ParseApiRQ + + +
+
+ + + +
+ +
+ signUp + → const ParseApiRQ + + +
+
+ + + +
+ +
+ login + → const ParseApiRQ + + +
+
+ + + +
+ +
+ logout + → const ParseApiRQ + + +
+
+ + + +
+ +
+ loginAnonymous + → const ParseApiRQ + + +
+
+ + + +
+ +
+ loginWith + → const ParseApiRQ + + +
+
+ + + +
+ +
+ verificationEmailRequest + → const ParseApiRQ + + +
+
+ + + +
+ +
+ requestPasswordReset + → const ParseApiRQ + + +
+
+ + + +
+ +
+ destroy + → const ParseApiRQ + + +
+
+ + + +
+ +
+ all + → const ParseApiRQ + + +
+
+ + + +
+ +
+ execute + → const ParseApiRQ + + +
+
+ + + +
+ +
+ executeObjectionFunction + → const ParseApiRQ + + +
+
+ + + +
+ +
+ upload + → const ParseApiRQ + + +
+
+ + + +
+ +
+ add + → const ParseApiRQ + + +
+
+ + + +
+ +
+ addAll + → const ParseApiRQ + + +
+
+ + + +
+ +
+ addUnique + → const ParseApiRQ + + +
+
+ + + +
+ +
+ remove + → const ParseApiRQ + + +
+
+ + + +
+ +
+ removeAll + → const ParseApiRQ + + +
+
+ + + +
+ +
+ increment + → const ParseApiRQ + + +
+
+ + + +
+ +
+ decrement + → const ParseApiRQ + + +
+
+ + + +
+ +
+ getConfigs + → const ParseApiRQ + + +
+
+ + + +
+ +
+ addConfig + → const ParseApiRQ + + +
+
+ + + +
+ +
+ liveQuery + → const ParseApiRQ + + +
+
+ + + +
+ +
+ batch + → const ParseApiRQ + + +
+
+ + + +
+ +
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ index + int + +
+
+ A numeric identifier for the enumerated value. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + +
+

Constants

+ +
+
+ values + → const List<ParseApiRQ> + + +
+
+ A constant List of the values in this enum, in order of their declaration. + + +
+ +
+
+
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseApiRQ/ParseApiRQ.html b/dart/flutter_parse_sdk/ParseApiRQ/ParseApiRQ.html new file mode 100644 index 000000000..ec095b03b --- /dev/null +++ b/dart/flutter_parse_sdk/ParseApiRQ/ParseApiRQ.html @@ -0,0 +1,120 @@ + + + + + + + + ParseApiRQ constructor - ParseApiRQ - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseApiRQ
+ +
+ +
+
+
+ +
+
+

ParseApiRQ constructor +

+ +
+ const + ParseApiRQ() +
+ + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseApiRQ/values-constant.html b/dart/flutter_parse_sdk/ParseApiRQ/values-constant.html new file mode 100644 index 000000000..e0508c40b --- /dev/null +++ b/dart/flutter_parse_sdk/ParseApiRQ/values-constant.html @@ -0,0 +1,124 @@ + + + + + + + + values constant - ParseApiRQ enum - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
values
+ +
+ +
+
+
+ +
+
+

values constant +

+ +
+ + List<ParseApiRQ> + const values + + +
+ +
+

A constant List of the values in this enum, in order of their declaration.

+
+ + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase-class-sidebar.html b/dart/flutter_parse_sdk/ParseBase-class-sidebar.html new file mode 100644 index 000000000..303450d65 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase-class-sidebar.html @@ -0,0 +1,49 @@ +
    + +
  1. Constructors
  2. +
  3. ParseBase
  4. + + + +
  5. + Properties +
  6. +
  7. createdAt
  8. +
  9. hashCode
  10. +
  11. objectId
  12. +
  13. parseClassName
  14. +
  15. runtimeType
  16. +
  17. updatedAt
  18. + +
  19. Methods
  20. +
  21. clearUnsavedChanges
  22. +
  23. containsKey
  24. +
  25. containsValue
  26. +
  27. copy
  28. +
  29. fromJson
  30. +
  31. fromJsonForManualObject
  32. +
  33. fromPin
  34. +
  35. get
  36. +
  37. getACL
  38. +
  39. isDirty
  40. +
  41. noSuchMethod
  42. +
  43. pin
  44. +
  45. saveInStorage
  46. +
  47. set
  48. +
  49. setACL
  50. +
  51. toJson
  52. +
  53. toPointer
  54. +
  55. toString
  56. +
  57. unpin
  58. + +
  59. Operators
  60. +
  61. operator ==
  62. +
  63. operator []
  64. +
  65. operator []=
  66. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseBase-class.html b/dart/flutter_parse_sdk/ParseBase-class.html new file mode 100644 index 000000000..dab137f27 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase-class.html @@ -0,0 +1,525 @@ + + + + + + + + ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseBase
+ +
+ +
+
+
+ +
+
+

ParseBase class + abstract + +

+ + + + +
+
+ + + + + +
Implementers
+
+ + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseBase() +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ createdAt + DateTime? + +
+
+ Returns DateTime createdAt +
no setter
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ objectId + String? + +
+
+ Returns String objectId +
getter/setter pair
+ +
+ +
+ parseClassName + String + +
+
+ refers to the Table Name in your Parse Server +
getter/setter pair
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ updatedAt + DateTime? + +
+
+ Returns DateTime updatedAt +
no setter
+ +
+ +
+
+ + +
+

Methods

+
+
+ clearUnsavedChanges() + → void + + + +
+
+ + + +
+ +
+ containsKey(String key) + bool + + + +
+
+ + + +
+ +
+ containsValue(Object value) + bool + + + +
+
+ + + +
+ +
+ copy() + → dynamic + + + +
+
+ Creates a copy of this class + + +
+ +
+ fromJson(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ + + +
+ +
+ fromJsonForManualObject(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ + + +
+ +
+ fromPin(String objectId) + Future + + + +
+
+ Get item from value storage + + +
+ +
+ get<T>(String key, {T? defaultValue}) + → T? + + + +
+
+ Get a value of type T associated with a given key + + +
+ +
+ getACL() + ParseACL + + + +
+
+ Access the ParseACL governing this object. + + +
+ +
+ isDirty({String? key}) + bool + + + +
+
+ + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ pin() + Future<bool> + + + +
+
+ Saves item to value storage + + +
+ +
+ saveInStorage(String key) + Future<void> + + + +
+
+ Saves in storage + + +
+ +
+ set<T>(String key, T value, {bool forceUpdate = true}) + → void + + + +
+
+ Add a key-value pair to this object. + + +
+ +
+ setACL<ParseACL>(ParseACL acl) + → void + + + +
+
+ Set the ParseACL governing this object. + + +
+ +
+ toJson({bool full = false, bool forApiRQ = false, bool allowCustomObjectId = false}) + Map<String, dynamic> + + + +
+
+ Converts object to String in JSON format + + +
+ +
+ toPointer() + Map<String, dynamic> + + + +
+
+ + + +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
override
+ +
+ +
+ unpin({String? key}) + Future<bool> + + + +
+
+ Remove item from value storage + + +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+ operator [](String key) + → dynamic + + + +
+
+ + + +
+ +
+ operator []=(String key, dynamic value) + → void + + + +
+
+ + + +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/ParseBase.html b/dart/flutter_parse_sdk/ParseBase/ParseBase.html new file mode 100644 index 000000000..0f56ff216 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/ParseBase.html @@ -0,0 +1,120 @@ + + + + + + + + ParseBase constructor - ParseBase - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseBase
+ +
+ +
+
+
+ +
+
+

ParseBase constructor +

+ +
+ + ParseBase() +
+ + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/clearUnsavedChanges.html b/dart/flutter_parse_sdk/ParseBase/clearUnsavedChanges.html new file mode 100644 index 000000000..d745b41d6 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/clearUnsavedChanges.html @@ -0,0 +1,131 @@ + + + + + + + + clearUnsavedChanges method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
clearUnsavedChanges
+ +
+ +
+
+
+ +
+
+

clearUnsavedChanges method +

+ +
+ + +void +clearUnsavedChanges() + + + +
+ + + + +
+

Implementation

+
void clearUnsavedChanges() {
+  _unsavedChanges.clear();
+  _notifyChildrenAboutClearUnsaved();
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/containsKey.html b/dart/flutter_parse_sdk/ParseBase/containsKey.html new file mode 100644 index 000000000..1539c54de --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/containsKey.html @@ -0,0 +1,131 @@ + + + + + + + + containsKey method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
containsKey
+ +
+ +
+
+
+ +
+
+

containsKey method +

+ +
+ + +bool +containsKey(
  1. String key
  2. +
) + + + +
+ + + + +
+

Implementation

+
bool containsKey(String key) {
+  return _getObjectData().containsKey(key);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/containsValue.html b/dart/flutter_parse_sdk/ParseBase/containsValue.html new file mode 100644 index 000000000..fd582da4b --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/containsValue.html @@ -0,0 +1,137 @@ + + + + + + + + containsValue method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
containsValue
+ +
+ +
+
+
+ +
+
+

containsValue method +

+ +
+ + +bool +containsValue(
  1. Object value
  2. +
) + + + +
+ + + + +
+

Implementation

+
bool containsValue(Object value) {
+  for (final val in _getObjectData().values) {
+    if (val == value || (val is _Valuable && val.getValue() == value)) {
+      return true;
+    }
+  }
+
+  return false;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/copy.html b/dart/flutter_parse_sdk/ParseBase/copy.html new file mode 100644 index 000000000..0772291b9 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/copy.html @@ -0,0 +1,137 @@ + + + + + + + + copy method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
copy
+ +
+ +
+
+
+ +
+
+

copy method +

+ +
+ +
+
    +
  1. @protected
  2. +
+
+ +dynamic +copy() + + + +
+ +
+

Creates a copy of this class

+
+ + + +
+

Implementation

+
@protected
+dynamic copy() => fromJson(toJson());
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/createdAt.html b/dart/flutter_parse_sdk/ParseBase/createdAt.html new file mode 100644 index 000000000..413040e91 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/createdAt.html @@ -0,0 +1,142 @@ + + + + + + + + createdAt property - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
createdAt
+ +
+ +
+
+
+ +
+
+

createdAt property +

+ + + +
+ +
+ + DateTime? + createdAt + + +
+ + +
+

Returns DateTime createdAt

+
+ + +
+

Implementation

+
DateTime? get createdAt {
+  if (get<dynamic>(keyVarCreatedAt) is String) {
+    final String? dateAsString = get<String>(keyVarCreatedAt);
+    return dateAsString != null ? _parseDateFormat.parse(dateAsString) : null;
+  } else {
+    return get<DateTime>(keyVarCreatedAt);
+  }
+}
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/fromJson.html b/dart/flutter_parse_sdk/ParseBase/fromJson.html new file mode 100644 index 000000000..e1220b0b8 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/fromJson.html @@ -0,0 +1,131 @@ + + + + + + + + fromJson method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
fromJson
+ +
+ +
+
+
+ +
+
+

fromJson method +

+ +
+ + +dynamic +fromJson(
  1. Map<String, dynamic> objectData
  2. +
) + + + +
+ + + + +
+

Implementation

+
dynamic fromJson(Map<String, dynamic> objectData) {
+  return _fromJson(objectData, false);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/fromJsonForManualObject.html b/dart/flutter_parse_sdk/ParseBase/fromJsonForManualObject.html new file mode 100644 index 000000000..be5bf6b09 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/fromJsonForManualObject.html @@ -0,0 +1,131 @@ + + + + + + + + fromJsonForManualObject method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
fromJsonForManualObject
+ +
+ +
+
+
+ +
+
+

fromJsonForManualObject method +

+ +
+ + +dynamic +fromJsonForManualObject(
  1. Map<String, dynamic> objectData
  2. +
) + + + +
+ + + + +
+

Implementation

+
dynamic fromJsonForManualObject(Map<String, dynamic> objectData) {
+  return _fromJson(objectData, true);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/fromPin.html b/dart/flutter_parse_sdk/ParseBase/fromPin.html new file mode 100644 index 000000000..62f47c018 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/fromPin.html @@ -0,0 +1,140 @@ + + + + + + + + fromPin method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
fromPin
+ +
+ +
+
+
+ +
+
+

fromPin method +

+ +
+ + +Future +fromPin(
  1. String objectId
  2. +
) + + + +
+ +
+

Get item from value storage

+
+ + + +
+

Implementation

+
Future<dynamic> fromPin(String objectId) async {
+  final CoreStore coreStore = ParseCoreData().getStore();
+  final String? itemFromStore = await coreStore.getString(objectId);
+
+  if (itemFromStore != null) {
+    return fromJson(json.decode(itemFromStore));
+  }
+  return null;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/get.html b/dart/flutter_parse_sdk/ParseBase/get.html new file mode 100644 index 000000000..711d86e78 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/get.html @@ -0,0 +1,152 @@ + + + + + + + + get method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
get
+ +
+ +
+
+
+ +
+
+

get<T> method +

+ +
+ + +T? +get<T>(
  1. String key,
  2. +
  3. {T? defaultValue}
  4. +
) + + + +
+ +
+

Get a value of type T associated with a given key

+

Returns null or defaultValue if provided.

+
+ + + +
+

Implementation

+
T? get<T>(String key, {T? defaultValue}) {
+  if (_getObjectData().containsKey(key)) {
+    final result = _getObjectData()[key];
+
+    if (result is _Valuable) {
+      return result.getValue() as T?;
+    }
+
+    if (result is _ParseRelation) {
+      return (result
+        ..parent = (this as ParseObject)
+        ..key = key) as T?;
+    }
+
+    return result as T?;
+  } else {
+    return defaultValue;
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/getACL.html b/dart/flutter_parse_sdk/ParseBase/getACL.html new file mode 100644 index 000000000..1db366394 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/getACL.html @@ -0,0 +1,137 @@ + + + + + + + + getACL method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getACL
+ +
+ +
+
+
+ +
+
+

getACL method +

+ +
+ + +ParseACL +getACL() + + + +
+ +
+

Access the ParseACL governing this object.

+
+ + + +
+

Implementation

+
ParseACL getACL() {
+  if (_getObjectData().containsKey(keyVarAcl)) {
+    return _getObjectData()[keyVarAcl];
+  } else {
+    return ParseACL();
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/isDirty.html b/dart/flutter_parse_sdk/ParseBase/isDirty.html new file mode 100644 index 000000000..9a32ede90 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/isDirty.html @@ -0,0 +1,134 @@ + + + + + + + + isDirty method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
isDirty
+ +
+ +
+
+
+ +
+
+

isDirty method +

+ +
+ + +bool +isDirty(
  1. {String? key}
  2. +
) + + + +
+ + + + +
+

Implementation

+
bool isDirty({String? key}) {
+  if (key != null) {
+    return _unsavedChanges[key] != null;
+  }
+  return _isDirty(true);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/objectId.html b/dart/flutter_parse_sdk/ParseBase/objectId.html new file mode 100644 index 000000000..ad1933bb0 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/objectId.html @@ -0,0 +1,156 @@ + + + + + + + + objectId property - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
objectId
+ +
+ +
+
+
+ +
+
+

objectId property +

+ + + +
+ +
+ + String? + objectId + + +
+ + +
+

Returns String objectId

+
+ + +
+

Implementation

+
String? get objectId => get<String>(keyVarObjectId);
+
+ +
+ + + +
+ +
+ + void + objectId=(String? objectId) + + +
+ + + + +
+

Implementation

+
set objectId(String? objectId) => set<String?>(keyVarObjectId, objectId);
+
+ +
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/operator_get.html b/dart/flutter_parse_sdk/ParseBase/operator_get.html new file mode 100644 index 000000000..38b220165 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/operator_get.html @@ -0,0 +1,131 @@ + + + + + + + + operator [] method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
operator []
+ +
+ +
+
+
+ +
+
+

operator [] method +

+ +
+ + +dynamic +operator [](
  1. String key
  2. +
) + + + +
+ + + + +
+

Implementation

+
dynamic operator [](String key) {
+  return get<dynamic>(key);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/operator_put.html b/dart/flutter_parse_sdk/ParseBase/operator_put.html new file mode 100644 index 000000000..9b54f3a14 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/operator_put.html @@ -0,0 +1,132 @@ + + + + + + + + operator []= method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
operator []=
+ +
+ +
+
+
+ +
+
+

operator []= method +

+ +
+ + +void +operator []=(
  1. String key,
  2. +
  3. dynamic value
  4. +
) + + + +
+ + + + +
+

Implementation

+
void operator []=(String key, dynamic value) {
+  set<dynamic>(key, value);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/parseClassName.html b/dart/flutter_parse_sdk/ParseBase/parseClassName.html new file mode 100644 index 000000000..d0c08526c --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/parseClassName.html @@ -0,0 +1,128 @@ + + + + + + + + parseClassName property - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
parseClassName
+ +
+ +
+
+
+ +
+
+

parseClassName property +

+ +
+ + String + parseClassName +
getter/setter pair
+ +
+ +
+

refers to the Table Name in your Parse Server

+
+ + +
+

Implementation

+
String parseClassName = 'ParseBase';
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/pin.html b/dart/flutter_parse_sdk/ParseBase/pin.html new file mode 100644 index 000000000..3a05db824 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/pin.html @@ -0,0 +1,141 @@ + + + + + + + + pin method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
pin
+ +
+ +
+
+
+ +
+
+

pin method +

+ +
+ + +Future<bool> +pin() + + + +
+ +
+

Saves item to value storage

+
+ + + +
+

Implementation

+
Future<bool> pin() async {
+  if (objectId != null) {
+    await unpin();
+    final Map<String, dynamic>? objectMap = parseEncode(this, full: true);
+    final String json = jsonEncode(objectMap);
+    await ParseCoreData().getStore().setString(objectId!, json);
+    return true;
+  } else {
+    return false;
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/saveInStorage.html b/dart/flutter_parse_sdk/ParseBase/saveInStorage.html new file mode 100644 index 000000000..76d18a100 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/saveInStorage.html @@ -0,0 +1,135 @@ + + + + + + + + saveInStorage method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
saveInStorage
+ +
+ +
+
+
+ +
+
+

saveInStorage method +

+ +
+ + +Future<void> +saveInStorage(
  1. String key
  2. +
) + + + +
+ +
+

Saves in storage

+
+ + + +
+

Implementation

+
Future<void> saveInStorage(String key) async {
+  final String objectJson = json.encode(toJson(full: true));
+  await ParseCoreData().getStore().setString(key, objectJson);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/set.html b/dart/flutter_parse_sdk/ParseBase/set.html new file mode 100644 index 000000000..447103245 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/set.html @@ -0,0 +1,150 @@ + + + + + + + + set method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
set
+ +
+ +
+
+
+ +
+
+

set<T> method +

+ +
+ + +void +set<T>(
  1. String key,
  2. +
  3. T value,
  4. +
  5. {bool forceUpdate = true}
  6. +
) + + + +
+ +
+

Add a key-value pair to this object.

+

It is recommended to name keys in camelCaseLikeThis

+

bool forceUpdate is always true, if unsure as to whether an item is +needed or not, set to false

+
+ + + +
+

Implementation

+
void set<T>(String key, T value, {bool forceUpdate = true}) {
+  if (_getObjectData()[key] == value && !forceUpdate) {
+    return;
+  }
+
+  _getObjectData()[key] = _ParseOperation.maybeMergeWithPrevious<T>(
+    newValue: value,
+    previousValue: _getObjectData()[key],
+    parent: this as ParseObject,
+    key: key,
+  );
+
+  _unsavedChanges[key] = _getObjectData()[key];
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/setACL.html b/dart/flutter_parse_sdk/ParseBase/setACL.html new file mode 100644 index 000000000..a22320b18 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/setACL.html @@ -0,0 +1,134 @@ + + + + + + + + setACL method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setACL
+ +
+ +
+
+
+ +
+
+

setACL<ParseACL> method +

+ +
+ + +void +setACL<ParseACL>(
  1. ParseACL acl
  2. +
) + + + +
+ +
+

Set the ParseACL governing this object.

+
+ + + +
+

Implementation

+
void setACL<ParseACL>(ParseACL acl) {
+  set(keyVarAcl, acl);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/toJson.html b/dart/flutter_parse_sdk/ParseBase/toJson.html new file mode 100644 index 000000000..8c80d8619 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/toJson.html @@ -0,0 +1,181 @@ + + + + + + + + toJson method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
toJson
+ +
+ +
+
+
+ +
+
+

toJson method +

+ +
+ + +Map<String, dynamic> +toJson(
  1. {bool full = false,
  2. +
  3. bool forApiRQ = false,
  4. +
  5. bool allowCustomObjectId = false}
  6. +
) + + + +
+ +
+

Converts object to String in JSON format

+
+ + + +
+

Implementation

+
Map<String, dynamic> toJson({
+  bool full = false,
+  bool forApiRQ = false,
+  bool allowCustomObjectId = false,
+}) {
+  final Map<String, dynamic> map = <String, dynamic>{
+    keyVarClassName: parseClassName,
+  };
+
+  if (objectId != null) {
+    map[keyVarObjectId] = objectId;
+  }
+
+  if (createdAt != null) {
+    map[keyVarCreatedAt] = _parseDateFormat.format(createdAt!);
+  }
+
+  if (updatedAt != null) {
+    map[keyVarUpdatedAt] = _parseDateFormat.format(updatedAt!);
+  }
+
+  final target = forApiRQ ? _unsavedChanges : _getObjectData();
+  target.forEach((String key, dynamic value) {
+    if (!map.containsKey(key)) {
+      map[key] = parseEncode(value, full: full);
+    }
+
+    if (forApiRQ &&
+        value is _ParseRelation &&
+        !value.shouldIncludeInRequest()) {
+      map.remove(key);
+    }
+  });
+
+  if (forApiRQ) {
+    map.remove(keyVarCreatedAt);
+    map.remove(keyVarUpdatedAt);
+    map.remove(keyVarClassName);
+    //map.remove(keyVarAcl);
+
+    if (!allowCustomObjectId) {
+      map.remove(keyVarObjectId);
+    }
+    map.remove(keyParamSessionToken);
+  }
+
+  return map;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/toPointer.html b/dart/flutter_parse_sdk/ParseBase/toPointer.html new file mode 100644 index 000000000..53503dff4 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/toPointer.html @@ -0,0 +1,128 @@ + + + + + + + + toPointer method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
toPointer
+ +
+ +
+
+
+ +
+
+

toPointer method +

+ +
+ + +Map<String, dynamic> +toPointer() + + + +
+ + + + +
+

Implementation

+
Map<String, dynamic> toPointer() => encodeObject(parseClassName, objectId!);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/toString.html b/dart/flutter_parse_sdk/ParseBase/toString.html new file mode 100644 index 000000000..904d754c5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/toString.html @@ -0,0 +1,146 @@ + + + + + + + + toString method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
toString
+ +
+ +
+
+
+ +
+
+

toString method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +String +toString() + +
override
+ +
+ +
+

A string representation of this object.

+

Some classes have a default textual representation, +often paired with a static parse function (like int.parse). +These classes will provide the textual representation as +their string representation.

+

Other classes have no meaningful textual representation +that a program will care about. +Such classes will typically override toString to provide +useful information when inspecting the object, +mainly for debugging or logging.

+
+ + + +
+

Implementation

+
@override
+String toString() => json.encode(toJson(full: true));
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/unpin.html b/dart/flutter_parse_sdk/ParseBase/unpin.html new file mode 100644 index 000000000..2a66b7935 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/unpin.html @@ -0,0 +1,139 @@ + + + + + + + + unpin method - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
unpin
+ +
+ +
+
+
+ +
+
+

unpin method +

+ +
+ + +Future<bool> +unpin(
  1. {String? key}
  2. +
) + + + +
+ +
+

Remove item from value storage

+
+ + + +
+

Implementation

+
Future<bool> unpin({String? key}) async {
+  if (objectId != null || key != null) {
+    await ParseCoreData().getStore().remove(key ?? objectId!);
+    return true;
+  }
+
+  return false;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseBase/updatedAt.html b/dart/flutter_parse_sdk/ParseBase/updatedAt.html new file mode 100644 index 000000000..cbf8c036e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseBase/updatedAt.html @@ -0,0 +1,142 @@ + + + + + + + + updatedAt property - ParseBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
updatedAt
+ +
+ +
+
+
+ +
+
+

updatedAt property +

+ + + +
+ +
+ + DateTime? + updatedAt + + +
+ + +
+

Returns DateTime updatedAt

+
+ + +
+

Implementation

+
DateTime? get updatedAt {
+  if (get<dynamic>(keyVarUpdatedAt) is String) {
+    final String? dateAsString = get<String>(keyVarUpdatedAt);
+    return dateAsString != null ? _parseDateFormat.parse(dateAsString) : null;
+  } else {
+    return get<DateTime>(keyVarUpdatedAt);
+  }
+}
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseClient-class-sidebar.html b/dart/flutter_parse_sdk/ParseClient-class-sidebar.html new file mode 100644 index 000000000..d568c99c8 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseClient-class-sidebar.html @@ -0,0 +1,33 @@ +
    + +
  1. Constructors
  2. +
  3. ParseClient
  4. + + + +
  5. + Properties +
  6. +
  7. data
  8. +
  9. hashCode
  10. +
  11. runtimeType
  12. + +
  13. Methods
  14. +
  15. delete
  16. +
  17. get
  18. +
  19. getBytes
  20. +
  21. noSuchMethod
  22. +
  23. post
  24. +
  25. postBytes
  26. +
  27. put
  28. +
  29. toString
  30. + +
  31. Operators
  32. +
  33. operator ==
  34. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseClient-class.html b/dart/flutter_parse_sdk/ParseClient-class.html new file mode 100644 index 000000000..77b1ca3af --- /dev/null +++ b/dart/flutter_parse_sdk/ParseClient-class.html @@ -0,0 +1,324 @@ + + + + + + + + ParseClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseClient
+ +
+ +
+
+
+ +
+
+

ParseClient class + abstract + +

+ + + + +
+
+ + + + + +
Implementers
+
+ + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseClient() +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ data + ParseCoreData + +
+
+ +
no setter
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ delete(String path, {ParseNetworkOptions? options}) + Future<ParseNetworkResponse> + + + +
+
+ + + +
+ +
+ get(String path, {ParseNetworkOptions? options, ProgressCallback? onReceiveProgress}) + Future<ParseNetworkResponse> + + + +
+
+ + + +
+ +
+ getBytes(String path, {ParseNetworkOptions? options, ProgressCallback? onReceiveProgress, dynamic cancelToken}) + Future<ParseNetworkByteResponse> + + + +
+
+ + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ post(String path, {String? data, ParseNetworkOptions? options}) + Future<ParseNetworkResponse> + + + +
+
+ + + +
+ +
+ postBytes(String path, {Stream<List<int>>? data, ParseNetworkOptions? options, ProgressCallback? onSendProgress, dynamic cancelToken}) + Future<ParseNetworkResponse> + + + +
+
+ + + +
+ +
+ put(String path, {String? data, ParseNetworkOptions? options}) + Future<ParseNetworkResponse> + + + +
+
+ + + +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseClient/ParseClient.html b/dart/flutter_parse_sdk/ParseClient/ParseClient.html new file mode 100644 index 000000000..f486cbd50 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseClient/ParseClient.html @@ -0,0 +1,120 @@ + + + + + + + + ParseClient constructor - ParseClient - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseClient
+ +
+ +
+
+
+ +
+
+

ParseClient constructor +

+ +
+ + ParseClient() +
+ + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseClient/data.html b/dart/flutter_parse_sdk/ParseClient/data.html new file mode 100644 index 000000000..5f03fb6f1 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseClient/data.html @@ -0,0 +1,138 @@ + + + + + + + + data property - ParseClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
data
+ +
+ +
+
+
+ +
+
+

data property +

+ + + +
+ +
+ +
+
    +
  1. @Deprecated("Use ParseCoreData() instead.")
  2. +
+
+ ParseCoreData + data + + +
+ + + + +
+

Implementation

+
@Deprecated("Use ParseCoreData() instead.")
+ParseCoreData get data => ParseCoreData();
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseClient/delete.html b/dart/flutter_parse_sdk/ParseClient/delete.html new file mode 100644 index 000000000..564198bf9 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseClient/delete.html @@ -0,0 +1,133 @@ + + + + + + + + delete method - ParseClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
delete
+ +
+ +
+
+
+ +
+
+

delete abstract method +

+ +
+ + +Future<ParseNetworkResponse> +delete(
  1. String path,
  2. +
  3. {ParseNetworkOptions? options}
  4. +
) + + + +
+ + + + +
+

Implementation

+
Future<ParseNetworkResponse> delete(
+  String path, {
+  ParseNetworkOptions? options,
+});
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseClient/get.html b/dart/flutter_parse_sdk/ParseClient/get.html new file mode 100644 index 000000000..9b6269d62 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseClient/get.html @@ -0,0 +1,135 @@ + + + + + + + + get method - ParseClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
get
+ +
+ +
+
+
+ +
+
+

get abstract method +

+ +
+ + +Future<ParseNetworkResponse> +get(
  1. String path,
  2. +
  3. {ParseNetworkOptions? options,
  4. +
  5. ProgressCallback? onReceiveProgress}
  6. +
) + + + +
+ + + + +
+

Implementation

+
Future<ParseNetworkResponse> get(
+  String path, {
+  ParseNetworkOptions? options,
+  ProgressCallback? onReceiveProgress,
+});
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseClient/getBytes.html b/dart/flutter_parse_sdk/ParseClient/getBytes.html new file mode 100644 index 000000000..13b67dacb --- /dev/null +++ b/dart/flutter_parse_sdk/ParseClient/getBytes.html @@ -0,0 +1,137 @@ + + + + + + + + getBytes method - ParseClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getBytes
+ +
+ +
+
+
+ +
+
+

getBytes abstract method +

+ +
+ + +Future<ParseNetworkByteResponse> +getBytes(
  1. String path,
  2. +
  3. {ParseNetworkOptions? options,
  4. +
  5. ProgressCallback? onReceiveProgress,
  6. +
  7. dynamic cancelToken}
  8. +
) + + + +
+ + + + +
+

Implementation

+
Future<ParseNetworkByteResponse> getBytes(
+  String path, {
+  ParseNetworkOptions? options,
+  ProgressCallback? onReceiveProgress,
+  dynamic cancelToken,
+});
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseClient/post.html b/dart/flutter_parse_sdk/ParseClient/post.html new file mode 100644 index 000000000..656ed7893 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseClient/post.html @@ -0,0 +1,135 @@ + + + + + + + + post method - ParseClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
post
+ +
+ +
+
+
+ +
+
+

post abstract method +

+ +
+ + +Future<ParseNetworkResponse> +post(
  1. String path,
  2. +
  3. {String? data,
  4. +
  5. ParseNetworkOptions? options}
  6. +
) + + + +
+ + + + +
+

Implementation

+
Future<ParseNetworkResponse> post(
+  String path, {
+  String? data,
+  ParseNetworkOptions? options,
+});
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseClient/postBytes.html b/dart/flutter_parse_sdk/ParseClient/postBytes.html new file mode 100644 index 000000000..0a4f09a28 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseClient/postBytes.html @@ -0,0 +1,139 @@ + + + + + + + + postBytes method - ParseClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
postBytes
+ +
+ +
+
+
+ +
+
+

postBytes abstract method +

+ +
+ + +Future<ParseNetworkResponse> +postBytes(
  1. String path,
  2. +
  3. {Stream<List<int>>? data,
  4. +
  5. ParseNetworkOptions? options,
  6. +
  7. ProgressCallback? onSendProgress,
  8. +
  9. dynamic cancelToken}
  10. +
) + + + +
+ + + + +
+

Implementation

+
Future<ParseNetworkResponse> postBytes(
+  String path, {
+  Stream<List<int>>? data,
+  ParseNetworkOptions? options,
+  ProgressCallback? onSendProgress,
+  dynamic cancelToken,
+});
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseClient/put.html b/dart/flutter_parse_sdk/ParseClient/put.html new file mode 100644 index 000000000..339451d64 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseClient/put.html @@ -0,0 +1,135 @@ + + + + + + + + put method - ParseClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
put
+ +
+ +
+
+
+ +
+
+

put abstract method +

+ +
+ + +Future<ParseNetworkResponse> +put(
  1. String path,
  2. +
  3. {String? data,
  4. +
  5. ParseNetworkOptions? options}
  6. +
) + + + +
+ + + + +
+

Implementation

+
Future<ParseNetworkResponse> put(
+  String path, {
+  String? data,
+  ParseNetworkOptions? options,
+});
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseClientCreator.html b/dart/flutter_parse_sdk/ParseClientCreator.html new file mode 100644 index 000000000..4296e4c39 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseClientCreator.html @@ -0,0 +1,124 @@ + + + + + + + + ParseClientCreator typedef - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseClientCreator
+ +
+ +
+
+
+ +
+
+

ParseClientCreator typedef + +

+ +
+ ParseClientCreator = + ParseClient Function({SecurityContext? securityContext, required bool sendSessionId}) + +
+ + + + +
+

Implementation

+
typedef ParseClientCreator = ParseClient Function(
+    {required bool sendSessionId, SecurityContext? securityContext});
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCloneable-class-sidebar.html b/dart/flutter_parse_sdk/ParseCloneable-class-sidebar.html new file mode 100644 index 000000000..40db907da --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCloneable-class-sidebar.html @@ -0,0 +1,27 @@ +
    + +
  1. Constructors
  2. +
  3. ParseCloneable
  4. + + + +
  5. + Properties +
  6. +
  7. hashCode
  8. +
  9. runtimeType
  10. + +
  11. Methods
  12. +
  13. clone
  14. +
  15. noSuchMethod
  16. +
  17. toString
  18. + +
  19. Operators
  20. +
  21. operator ==
  22. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseCloneable-class.html b/dart/flutter_parse_sdk/ParseCloneable-class.html new file mode 100644 index 000000000..d479cccef --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCloneable-class.html @@ -0,0 +1,252 @@ + + + + + + + + ParseCloneable class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseCloneable
+ +
+ +
+
+
+ +
+
+

ParseCloneable class + abstract + +

+ + +
+

Creates method which can be used to deep clone objects

+
+ + +
+
+ + + + + +
Implementers
+
+ + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseCloneable() +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ clone(Map<String, dynamic> map) + → dynamic + + + +
+
+ + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCloneable/ParseCloneable.html b/dart/flutter_parse_sdk/ParseCloneable/ParseCloneable.html new file mode 100644 index 000000000..8c3e0c1f5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCloneable/ParseCloneable.html @@ -0,0 +1,120 @@ + + + + + + + + ParseCloneable constructor - ParseCloneable - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseCloneable
+ +
+ +
+
+
+ +
+
+

ParseCloneable constructor +

+ +
+ + ParseCloneable() +
+ + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCloneable/clone.html b/dart/flutter_parse_sdk/ParseCloneable/clone.html new file mode 100644 index 000000000..d9c7e333d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCloneable/clone.html @@ -0,0 +1,129 @@ + + + + + + + + clone method - ParseCloneable class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
clone
+ +
+ +
+
+
+ +
+
+

clone abstract method +

+ +
+ + +dynamic +clone(
  1. Map<String, dynamic> map
  2. +
) + + + +
+ + + + +
+

Implementation

+
dynamic clone(Map<String, dynamic> map);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCloudFunction-class-sidebar.html b/dart/flutter_parse_sdk/ParseCloudFunction-class-sidebar.html new file mode 100644 index 000000000..b3325c153 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCloudFunction-class-sidebar.html @@ -0,0 +1,76 @@ +
    + +
  1. Constructors
  2. +
  3. ParseCloudFunction
  4. + + + +
  5. + Properties +
  6. +
  7. createdAt
  8. +
  9. functionName
  10. +
  11. hashCode
  12. +
  13. objectId
  14. +
  15. parseClassName
  16. +
  17. runtimeType
  18. +
  19. updatedAt
  20. + +
  21. Methods
  22. +
  23. addRelation
  24. +
  25. clearUnsavedChanges
  26. +
  27. clone
  28. +
  29. containsKey
  30. +
  31. containsValue
  32. +
  33. copy
  34. +
  35. create
  36. +
  37. delete
  38. +
  39. deleteEventually
  40. +
  41. distinct
  42. +
  43. execute
  44. +
  45. executeObjectFunction
  46. +
  47. fetch
  48. +
  49. fromJson
  50. +
  51. fromJsonForManualObject
  52. +
  53. fromPin
  54. +
  55. get
  56. +
  57. getACL
  58. +
  59. getAll
  60. +
  61. getObject
  62. +
  63. getRelation
  64. +
  65. isDirty
  66. +
  67. noSuchMethod
  68. +
  69. pin
  70. +
  71. query
  72. +
  73. removeRelation
  74. +
  75. save
  76. +
  77. saveEventually
  78. +
  79. saveInStorage
  80. +
  81. set
  82. +
  83. setACL
  84. +
  85. setAdd
  86. +
  87. setAddAll
  88. +
  89. setAddAllUnique
  90. +
  91. setAddUnique
  92. +
  93. setDecrement
  94. +
  95. setIncrement
  96. +
  97. setRemove
  98. +
  99. setRemoveAll
  100. +
  101. toJson
  102. +
  103. toPointer
  104. +
  105. toString
  106. +
  107. unpin
  108. +
  109. unset
  110. +
  111. update
  112. + +
  113. Operators
  114. +
  115. operator ==
  116. +
  117. operator []
  118. +
  119. operator []=
  120. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseCloudFunction-class.html b/dart/flutter_parse_sdk/ParseCloudFunction-class.html new file mode 100644 index 000000000..c018b4d50 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCloudFunction-class.html @@ -0,0 +1,885 @@ + + + + + + + + ParseCloudFunction class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseCloudFunction
+ +
+ +
+
+
+ +
+
+

ParseCloudFunction class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseCloudFunction(String functionName, {bool? debug, ParseClient? client, bool? autoSendSessionId}) +
+
+ Creates a new cloud function object +
+
+
+ +
+

Properties

+ +
+
+ createdAt + DateTime? + +
+
+ Returns DateTime createdAt +
no setterinherited
+ +
+ +
+ functionName + String + +
+
+ +
final
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ objectId + String? + +
+
+ Returns String objectId +
getter/setter pairinherited
+ +
+ +
+ parseClassName + String + +
+
+ refers to the Table Name in your Parse Server +
getter/setter pairinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ updatedAt + DateTime? + +
+
+ Returns DateTime updatedAt +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ addRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Add multiple objets to a relation associated with a given key +
inherited
+ +
+ +
+ clearUnsavedChanges() + → void + + + +
+
+ +
inherited
+ +
+ +
+ clone(Map<String, dynamic> map) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ containsKey(String key) + bool + + + +
+
+ +
inherited
+ +
+ +
+ containsValue(Object value) + bool + + + +
+
+ +
inherited
+ +
+ +
+ copy() + → dynamic + + + +
+
+ Creates a copy of this class +
inherited
+ +
+ +
+ create({bool allowCustomObjectId = false, dynamic context}) + Future<ParseResponse> + + + +
+
+ Creates a new object and saves it online +
inherited
+ +
+ +
+ delete<T extends ParseObject>({String? id, String? path}) + Future<ParseResponse> + + + +
+
+ Deletes the current object locally and online +
inherited
+ +
+ +
+ deleteEventually() + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ distinct<T extends ParseObject>(String query) + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ execute({Map<String, dynamic>? parameters, Map<String, String>? headers}) + Future<ParseResponse> + + + +
+
+ Executes a cloud function + + +
+ +
+ executeObjectFunction<T extends ParseObject>({Map<String, dynamic>? parameters, Map<String, String>? headers}) + Future<ParseResponse> + + + +
+
+ Executes a cloud function that returns a ParseObject type + + +
+ +
+ fetch({List<String>? include}) + Future<ParseObject> + + + +
+
+ Fetches this object with the data from the server. +
inherited
+ +
+ +
+ fromJson(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromJsonForManualObject(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromPin(String objectId) + Future + + + +
+
+ Get item from value storage +
inherited
+ +
+ +
+ get<T>(String key, {T? defaultValue}) + → T? + + + +
+
+ Get a value of type T associated with a given key +
inherited
+ +
+ +
+ getACL() + ParseACL + + + +
+
+ Access the ParseACL governing this object. +
inherited
+ +
+ +
+ getAll() + Future<ParseResponse> + + + +
+
+ Gets all objects from this table - Limited response at the moment +
inherited
+ +
+ +
+ getObject(String objectId, {List<String>? include}) + Future<ParseResponse> + + + +
+
+ Gets an object from the server using it's objectId +
inherited
+ +
+ +
+ getRelation<T extends ParseObject>(String key) + ParseRelation<T> + + + +
+
+ Get the instance of ParseRelation class associated with the given key +
inherited
+ +
+ +
+ isDirty({String? key}) + bool + + + +
+
+ +
inherited
+ +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ pin() + Future<bool> + + + +
+
+ Saves item to value storage +
inherited
+ +
+ +
+ query<T extends ParseObject>(String query, {ProgressCallback? progressCallback}) + Future<ParseResponse> + + + +
+
+ Can be used to create custom queries +
inherited
+ +
+ +
+ removeRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Remove multiple objets from a relation associated with a given key +
inherited
+ +
+ +
+ save({dynamic context}) + Future<ParseResponse> + + + +
+
+ Saves the current object online. +
inherited
+ +
+ +
+ saveEventually() + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ saveInStorage(String key) + Future<void> + + + +
+
+ Saves in storage +
inherited
+ +
+ +
+ set<T>(String key, T value, {bool forceUpdate = true}) + → void + + + +
+
+ Add a key-value pair to this object. +
inherited
+ +
+ +
+ setACL<ParseACL>(ParseACL acl) + → void + + + +
+
+ Set the ParseACL governing this object. +
inherited
+ +
+ +
+ setAdd<T>(String key, T element) + → void + + + +
+
+ Add an element to the end of the array associated with a given key +
inherited
+ +
+ +
+ setAddAll(String key, List elements) + → void + + + +
+
+ Add multiple elements to the end of the array +associated with a given key +
inherited
+ +
+ +
+ setAddAllUnique(String key, List elements) + → void + + + +
+
+ Add multiple elements to the array associated with a given key, only +adding elements which are not already present in the array. The position +of the insert is not guaranteed +
inherited
+ +
+ +
+ setAddUnique(String key, dynamic element) + → void + + + +
+
+ Add an element to the array associated with a given key, only if +it is not already present in the array. The position of the insert is not +guaranteed +
inherited
+ +
+ +
+ setDecrement(String key, num amount) + → void + + + +
+
+ Decrement a num value associated with a given key by the given amount +
inherited
+ +
+ +
+ setIncrement(String key, num amount) + → void + + + +
+
+ Increment a num value associated with a given key by the given amount +
inherited
+ +
+ +
+ setRemove(String key, dynamic element) + → void + + + +
+
+ Remove every instance of an element from an array +associated with a given key +
inherited
+ +
+ +
+ setRemoveAll(String key, List elements) + → void + + + +
+
+ Removes all instances of the elements contained in a List from the +array associated with a given key +
inherited
+ +
+ +
+ toJson({bool full = false, bool forApiRQ = false, bool allowCustomObjectId = false}) + Map<String, dynamic> + + + +
+
+ Converts object to String in JSON format +
inherited
+ +
+ +
+ toPointer() + Map<String, dynamic> + + + +
+
+ +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+ unpin({String? key}) + Future<bool> + + + +
+
+ Remove item from value storage +
inherited
+ +
+ +
+ unset(String key, {bool offlineOnly = false}) + Future<ParseResponse> + + + +
+
+ Can be used set an objects variable to undefined rather than null +
inherited
+ +
+ +
+ update({dynamic context}) + Future<ParseResponse> + + + +
+
+ Send the updated object to the server. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+ operator [](String key) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ operator []=(String key, dynamic value) + → void + + + +
+
+ +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCloudFunction/ParseCloudFunction.html b/dart/flutter_parse_sdk/ParseCloudFunction/ParseCloudFunction.html new file mode 100644 index 000000000..502573555 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCloudFunction/ParseCloudFunction.html @@ -0,0 +1,144 @@ + + + + + + + + ParseCloudFunction constructor - ParseCloudFunction - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseCloudFunction
+ +
+ +
+
+
+ +
+
+

ParseCloudFunction constructor +

+ +
+ + ParseCloudFunction(
  1. String functionName,
  2. +
  3. {bool? debug,
  4. +
  5. ParseClient? client,
  6. +
  7. bool? autoSendSessionId}
  8. +
) +
+ + +
+

Creates a new cloud function object

+

{https://docs.parseplatform.org/cloudcode/guide/}

+
+ + + +
+

Implementation

+
ParseCloudFunction(
+  this.functionName, {
+  bool? debug,
+  ParseClient? client,
+  bool? autoSendSessionId,
+}) : super(
+        functionName,
+        client: client,
+        autoSendSessionId: autoSendSessionId,
+        debug: debug,
+      ) {
+  _path = '/functions/$functionName';
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCloudFunction/execute.html b/dart/flutter_parse_sdk/ParseCloudFunction/execute.html new file mode 100644 index 000000000..bcd62037f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCloudFunction/execute.html @@ -0,0 +1,149 @@ + + + + + + + + execute method - ParseCloudFunction class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
execute
+ +
+ +
+
+
+ +
+
+

execute method +

+ +
+ + +Future<ParseResponse> +execute(
  1. {Map<String, dynamic>? parameters,
  2. +
  3. Map<String, String>? headers}
  4. +
) + + + +
+ +
+

Executes a cloud function

+

To add the parameters, create an object and call set(value to set)

+
+ + + +
+

Implementation

+
Future<ParseResponse> execute(
+    {Map<String, dynamic>? parameters, Map<String, String>? headers}) async {
+  final String uri = '${ParseCoreData().serverUrl}$_path';
+  if (parameters != null) {
+    _setObjectData(parameters);
+  }
+  try {
+    final ParseNetworkResponse result = await _client.post(uri,
+        options: ParseNetworkOptions(headers: headers),
+        data: json.encode(_getObjectData()));
+    return handleResponse<ParseCloudFunction>(
+        this, result, ParseApiRQ.execute, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(e, ParseApiRQ.execute, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCloudFunction/executeObjectFunction.html b/dart/flutter_parse_sdk/ParseCloudFunction/executeObjectFunction.html new file mode 100644 index 000000000..5807e9b17 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCloudFunction/executeObjectFunction.html @@ -0,0 +1,150 @@ + + + + + + + + executeObjectFunction method - ParseCloudFunction class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
executeObjectFunction
+ +
+ +
+
+
+ +
+
+

executeObjectFunction<T extends ParseObject> method +

+ +
+ + +Future<ParseResponse> +executeObjectFunction<T extends ParseObject>(
  1. {Map<String, dynamic>? parameters,
  2. +
  3. Map<String, String>? headers}
  4. +
) + + + +
+ +
+

Executes a cloud function that returns a ParseObject type

+

To add the parameters, create an object and call set(value to set)

+
+ + + +
+

Implementation

+
Future<ParseResponse> executeObjectFunction<T extends ParseObject>(
+    {Map<String, dynamic>? parameters, Map<String, String>? headers}) async {
+  final String uri = '${ParseCoreData().serverUrl}$_path';
+  if (parameters != null) {
+    _setObjectData(parameters);
+  }
+  try {
+    final ParseNetworkResponse result = await _client.post(uri,
+        options: ParseNetworkOptions(headers: headers),
+        data: json.encode(_getObjectData()));
+    return handleResponse<T>(this, result,
+        ParseApiRQ.executeObjectionFunction, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(
+        e, ParseApiRQ.executeObjectionFunction, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCloudFunction/functionName.html b/dart/flutter_parse_sdk/ParseCloudFunction/functionName.html new file mode 100644 index 000000000..d315cbe6b --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCloudFunction/functionName.html @@ -0,0 +1,125 @@ + + + + + + + + functionName property - ParseCloudFunction class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
functionName
+ +
+ +
+
+
+ +
+
+

functionName property +

+ +
+ + String + functionName +
final
+ +
+ + + +
+

Implementation

+
final String functionName;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseConfig-class-sidebar.html b/dart/flutter_parse_sdk/ParseConfig-class-sidebar.html new file mode 100644 index 000000000..01d5f5cb8 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseConfig-class-sidebar.html @@ -0,0 +1,75 @@ +
    + +
  1. Constructors
  2. +
  3. ParseConfig
  4. + + + +
  5. + Properties +
  6. +
  7. createdAt
  8. +
  9. hashCode
  10. +
  11. objectId
  12. +
  13. parseClassName
  14. +
  15. runtimeType
  16. +
  17. updatedAt
  18. + +
  19. Methods
  20. +
  21. addConfig
  22. +
  23. addRelation
  24. +
  25. clearUnsavedChanges
  26. +
  27. clone
  28. +
  29. containsKey
  30. +
  31. containsValue
  32. +
  33. copy
  34. +
  35. create
  36. +
  37. delete
  38. +
  39. deleteEventually
  40. +
  41. distinct
  42. +
  43. fetch
  44. +
  45. fromJson
  46. +
  47. fromJsonForManualObject
  48. +
  49. fromPin
  50. +
  51. get
  52. +
  53. getACL
  54. +
  55. getAll
  56. +
  57. getConfigs
  58. +
  59. getObject
  60. +
  61. getRelation
  62. +
  63. isDirty
  64. +
  65. noSuchMethod
  66. +
  67. pin
  68. +
  69. query
  70. +
  71. removeRelation
  72. +
  73. save
  74. +
  75. saveEventually
  76. +
  77. saveInStorage
  78. +
  79. set
  80. +
  81. setACL
  82. +
  83. setAdd
  84. +
  85. setAddAll
  86. +
  87. setAddAllUnique
  88. +
  89. setAddUnique
  90. +
  91. setDecrement
  92. +
  93. setIncrement
  94. +
  95. setRemove
  96. +
  97. setRemoveAll
  98. +
  99. toJson
  100. +
  101. toPointer
  102. +
  103. toString
  104. +
  105. unpin
  106. +
  107. unset
  108. +
  109. update
  110. + +
  111. Operators
  112. +
  113. operator ==
  114. +
  115. operator []
  116. +
  117. operator []=
  118. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseConfig-class.html b/dart/flutter_parse_sdk/ParseConfig-class.html new file mode 100644 index 000000000..38113ebc0 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseConfig-class.html @@ -0,0 +1,874 @@ + + + + + + + + ParseConfig class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseConfig
+ +
+ +
+
+
+ +
+
+

ParseConfig class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseConfig({bool? debug, ParseClient? client, bool? autoSendSessionId}) +
+
+ Creates an instance of ParseConfig so that you can grab all configs from the server +
+
+
+ +
+

Properties

+ +
+
+ createdAt + DateTime? + +
+
+ Returns DateTime createdAt +
no setterinherited
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ objectId + String? + +
+
+ Returns String objectId +
getter/setter pairinherited
+ +
+ +
+ parseClassName + String + +
+
+ refers to the Table Name in your Parse Server +
getter/setter pairinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ updatedAt + DateTime? + +
+
+ Returns DateTime updatedAt +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ addConfig(String key, dynamic value) + Future<ParseResponse> + + + +
+
+ Adds a new config + + +
+ +
+ addRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Add multiple objets to a relation associated with a given key +
inherited
+ +
+ +
+ clearUnsavedChanges() + → void + + + +
+
+ +
inherited
+ +
+ +
+ clone(Map<String, dynamic> map) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ containsKey(String key) + bool + + + +
+
+ +
inherited
+ +
+ +
+ containsValue(Object value) + bool + + + +
+
+ +
inherited
+ +
+ +
+ copy() + → dynamic + + + +
+
+ Creates a copy of this class +
inherited
+ +
+ +
+ create({bool allowCustomObjectId = false, dynamic context}) + Future<ParseResponse> + + + +
+
+ Creates a new object and saves it online +
inherited
+ +
+ +
+ delete<T extends ParseObject>({String? id, String? path}) + Future<ParseResponse> + + + +
+
+ Deletes the current object locally and online +
inherited
+ +
+ +
+ deleteEventually() + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ distinct<T extends ParseObject>(String query) + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ fetch({List<String>? include}) + Future<ParseObject> + + + +
+
+ Fetches this object with the data from the server. +
inherited
+ +
+ +
+ fromJson(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromJsonForManualObject(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromPin(String objectId) + Future + + + +
+
+ Get item from value storage +
inherited
+ +
+ +
+ get<T>(String key, {T? defaultValue}) + → T? + + + +
+
+ Get a value of type T associated with a given key +
inherited
+ +
+ +
+ getACL() + ParseACL + + + +
+
+ Access the ParseACL governing this object. +
inherited
+ +
+ +
+ getAll() + Future<ParseResponse> + + + +
+
+ Gets all objects from this table - Limited response at the moment +
inherited
+ +
+ +
+ getConfigs() + Future<ParseResponse> + + + +
+
+ Gets all configs from the server + + +
+ +
+ getObject(String objectId, {List<String>? include}) + Future<ParseResponse> + + + +
+
+ Gets an object from the server using it's objectId +
inherited
+ +
+ +
+ getRelation<T extends ParseObject>(String key) + ParseRelation<T> + + + +
+
+ Get the instance of ParseRelation class associated with the given key +
inherited
+ +
+ +
+ isDirty({String? key}) + bool + + + +
+
+ +
inherited
+ +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ pin() + Future<bool> + + + +
+
+ Saves item to value storage +
inherited
+ +
+ +
+ query<T extends ParseObject>(String query, {ProgressCallback? progressCallback}) + Future<ParseResponse> + + + +
+
+ Can be used to create custom queries +
inherited
+ +
+ +
+ removeRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Remove multiple objets from a relation associated with a given key +
inherited
+ +
+ +
+ save({dynamic context}) + Future<ParseResponse> + + + +
+
+ Saves the current object online. +
inherited
+ +
+ +
+ saveEventually() + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ saveInStorage(String key) + Future<void> + + + +
+
+ Saves in storage +
inherited
+ +
+ +
+ set<T>(String key, T value, {bool forceUpdate = true}) + → void + + + +
+
+ Add a key-value pair to this object. +
inherited
+ +
+ +
+ setACL<ParseACL>(ParseACL acl) + → void + + + +
+
+ Set the ParseACL governing this object. +
inherited
+ +
+ +
+ setAdd<T>(String key, T element) + → void + + + +
+
+ Add an element to the end of the array associated with a given key +
inherited
+ +
+ +
+ setAddAll(String key, List elements) + → void + + + +
+
+ Add multiple elements to the end of the array +associated with a given key +
inherited
+ +
+ +
+ setAddAllUnique(String key, List elements) + → void + + + +
+
+ Add multiple elements to the array associated with a given key, only +adding elements which are not already present in the array. The position +of the insert is not guaranteed +
inherited
+ +
+ +
+ setAddUnique(String key, dynamic element) + → void + + + +
+
+ Add an element to the array associated with a given key, only if +it is not already present in the array. The position of the insert is not +guaranteed +
inherited
+ +
+ +
+ setDecrement(String key, num amount) + → void + + + +
+
+ Decrement a num value associated with a given key by the given amount +
inherited
+ +
+ +
+ setIncrement(String key, num amount) + → void + + + +
+
+ Increment a num value associated with a given key by the given amount +
inherited
+ +
+ +
+ setRemove(String key, dynamic element) + → void + + + +
+
+ Remove every instance of an element from an array +associated with a given key +
inherited
+ +
+ +
+ setRemoveAll(String key, List elements) + → void + + + +
+
+ Removes all instances of the elements contained in a List from the +array associated with a given key +
inherited
+ +
+ +
+ toJson({bool full = false, bool forApiRQ = false, bool allowCustomObjectId = false}) + Map<String, dynamic> + + + +
+
+ Converts object to String in JSON format +
inherited
+ +
+ +
+ toPointer() + Map<String, dynamic> + + + +
+
+ +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+ unpin({String? key}) + Future<bool> + + + +
+
+ Remove item from value storage +
inherited
+ +
+ +
+ unset(String key, {bool offlineOnly = false}) + Future<ParseResponse> + + + +
+
+ Can be used set an objects variable to undefined rather than null +
inherited
+ +
+ +
+ update({dynamic context}) + Future<ParseResponse> + + + +
+
+ Send the updated object to the server. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+ operator [](String key) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ operator []=(String key, dynamic value) + → void + + + +
+
+ +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseConfig/ParseConfig.html b/dart/flutter_parse_sdk/ParseConfig/ParseConfig.html new file mode 100644 index 000000000..2e1e36677 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseConfig/ParseConfig.html @@ -0,0 +1,139 @@ + + + + + + + + ParseConfig constructor - ParseConfig - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseConfig
+ +
+ +
+
+
+ +
+
+

ParseConfig constructor +

+ +
+ + ParseConfig(
  1. {bool? debug,
  2. +
  3. ParseClient? client,
  4. +
  5. bool? autoSendSessionId}
  6. +
) +
+ + +
+

Creates an instance of ParseConfig so that you can grab all configs from the server

+
+ + + +
+

Implementation

+
ParseConfig({
+  bool? debug,
+  ParseClient? client,
+  bool? autoSendSessionId,
+}) : super(
+        'config',
+        debug: debug,
+        client: client,
+        autoSendSessionId: autoSendSessionId,
+      );
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseConfig/addConfig.html b/dart/flutter_parse_sdk/ParseConfig/addConfig.html new file mode 100644 index 000000000..4fb78c214 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseConfig/addConfig.html @@ -0,0 +1,144 @@ + + + + + + + + addConfig method - ParseConfig class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
addConfig
+ +
+ +
+
+
+ +
+
+

addConfig method +

+ +
+ + +Future<ParseResponse> +addConfig(
  1. String key,
  2. +
  3. dynamic value
  4. +
) + + + +
+ +
+

Adds a new config

+
+ + + +
+

Implementation

+
Future<ParseResponse> addConfig(String key, dynamic value) async {
+  try {
+    final String uri = '${ParseCoreData().serverUrl}/config';
+    final String body =
+        '{"params":{"$key": ${json.encode(parseEncode(value))}}}';
+    final ParseNetworkResponse result = await _client.put(uri, data: body);
+    return handleResponse<ParseConfig>(
+        this, result, ParseApiRQ.addConfig, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(e, ParseApiRQ.addConfig, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseConfig/getConfigs.html b/dart/flutter_parse_sdk/ParseConfig/getConfigs.html new file mode 100644 index 000000000..58b11661e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseConfig/getConfigs.html @@ -0,0 +1,140 @@ + + + + + + + + getConfigs method - ParseConfig class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getConfigs
+ +
+ +
+
+
+ +
+
+

getConfigs method +

+ +
+ + +Future<ParseResponse> +getConfigs() + + + +
+ +
+

Gets all configs from the server

+
+ + + +
+

Implementation

+
Future<ParseResponse> getConfigs() async {
+  try {
+    final String uri = '${ParseCoreData().serverUrl}/config';
+    final ParseNetworkResponse result = await _client.get(uri);
+    return handleResponse<ParseConfig>(
+        this, result, ParseApiRQ.getConfigs, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(e, ParseApiRQ.getConfigs, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseConnectivityProvider-class-sidebar.html b/dart/flutter_parse_sdk/ParseConnectivityProvider-class-sidebar.html new file mode 100644 index 000000000..b65fcface --- /dev/null +++ b/dart/flutter_parse_sdk/ParseConnectivityProvider-class-sidebar.html @@ -0,0 +1,28 @@ +
    + +
  1. Constructors
  2. +
  3. ParseConnectivityProvider
  4. + + + +
  5. + Properties +
  6. +
  7. connectivityStream
  8. +
  9. hashCode
  10. +
  11. runtimeType
  12. + +
  13. Methods
  14. +
  15. checkConnectivity
  16. +
  17. noSuchMethod
  18. +
  19. toString
  20. + +
  21. Operators
  22. +
  23. operator ==
  24. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseConnectivityProvider-class.html b/dart/flutter_parse_sdk/ParseConnectivityProvider-class.html new file mode 100644 index 000000000..90b500a6e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseConnectivityProvider-class.html @@ -0,0 +1,240 @@ + + + + + + + + ParseConnectivityProvider class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseConnectivityProvider
+ +
+ +
+
+
+ +
+
+

ParseConnectivityProvider class + abstract + +

+ + + + + + +
+

Constructors

+ +
+
+ ParseConnectivityProvider() +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ connectivityStream + Stream<ParseConnectivityResult> + +
+
+ +
no setter
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ checkConnectivity() + Future<ParseConnectivityResult> + + + +
+
+ + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseConnectivityProvider/ParseConnectivityProvider.html b/dart/flutter_parse_sdk/ParseConnectivityProvider/ParseConnectivityProvider.html new file mode 100644 index 000000000..6517bb961 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseConnectivityProvider/ParseConnectivityProvider.html @@ -0,0 +1,120 @@ + + + + + + + + ParseConnectivityProvider constructor - ParseConnectivityProvider - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseConnectivityProvider
+ +
+ +
+
+
+ +
+
+

ParseConnectivityProvider constructor +

+ +
+ + ParseConnectivityProvider() +
+ + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseConnectivityProvider/checkConnectivity.html b/dart/flutter_parse_sdk/ParseConnectivityProvider/checkConnectivity.html new file mode 100644 index 000000000..ed86ff022 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseConnectivityProvider/checkConnectivity.html @@ -0,0 +1,128 @@ + + + + + + + + checkConnectivity method - ParseConnectivityProvider class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
checkConnectivity
+ +
+ +
+
+
+ +
+
+

checkConnectivity abstract method +

+ +
+ + +Future<ParseConnectivityResult> +checkConnectivity() + + + +
+ + + + +
+

Implementation

+
Future<ParseConnectivityResult> checkConnectivity();
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseConnectivityProvider/connectivityStream.html b/dart/flutter_parse_sdk/ParseConnectivityProvider/connectivityStream.html new file mode 100644 index 000000000..28043650a --- /dev/null +++ b/dart/flutter_parse_sdk/ParseConnectivityProvider/connectivityStream.html @@ -0,0 +1,132 @@ + + + + + + + + connectivityStream property - ParseConnectivityProvider class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
connectivityStream
+ +
+ +
+
+
+ +
+
+

connectivityStream property +

+ + + +
+ +
+ + Stream<ParseConnectivityResult> + connectivityStream + + +
+ + + + +
+

Implementation

+
Stream<ParseConnectivityResult> get connectivityStream;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseConnectivityResult-enum-sidebar.html b/dart/flutter_parse_sdk/ParseConnectivityResult-enum-sidebar.html new file mode 100644 index 000000000..3de0e74ae --- /dev/null +++ b/dart/flutter_parse_sdk/ParseConnectivityResult-enum-sidebar.html @@ -0,0 +1,33 @@ +
    + +
  1. Constructors
  2. +
  3. ParseConnectivityResult
  4. + +
  5. Values
  6. +
  7. wifi
  8. +
  9. mobile
  10. +
  11. none
  12. + + +
  13. + Properties +
  14. +
  15. hashCode
  16. +
  17. index
  18. +
  19. runtimeType
  20. + +
  21. Methods
  22. +
  23. noSuchMethod
  24. +
  25. toString
  26. + +
  27. Operators
  28. +
  29. operator ==
  30. + + + + + + +
  31. Constants
  32. +
  33. values
  34. +
diff --git a/dart/flutter_parse_sdk/ParseConnectivityResult.html b/dart/flutter_parse_sdk/ParseConnectivityResult.html new file mode 100644 index 000000000..ca28e7580 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseConnectivityResult.html @@ -0,0 +1,318 @@ + + + + + + + + ParseConnectivityResult enum - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseConnectivityResult
+ +
+ +
+
+
+ +
+
+ +

+ ParseConnectivityResult + enum + + +

+
+ + +
+

Connection status check result.

+
+ + +
+
+ +
Inheritance
+
+ +
+ + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseConnectivityResult() +
+
+ +
const
+
+
+
+ +
+

Values

+ +
+
+ wifi + → const ParseConnectivityResult + + +
+
+

WiFi: Device connected via Wi-Fi

+ + +
+ +
+ mobile + → const ParseConnectivityResult + + +
+
+

Mobile: Device connected to cellular network

+ + +
+ +
+ none + → const ParseConnectivityResult + + +
+
+

None: Device not connected to any network

+ + +
+ +
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ index + int + +
+
+ A numeric identifier for the enumerated value. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + +
+

Constants

+ +
+
+ values + → const List<ParseConnectivityResult> + + +
+
+ A constant List of the values in this enum, in order of their declaration. + + +
+ +
+
+
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseConnectivityResult/ParseConnectivityResult.html b/dart/flutter_parse_sdk/ParseConnectivityResult/ParseConnectivityResult.html new file mode 100644 index 000000000..ed93cc73a --- /dev/null +++ b/dart/flutter_parse_sdk/ParseConnectivityResult/ParseConnectivityResult.html @@ -0,0 +1,120 @@ + + + + + + + + ParseConnectivityResult constructor - ParseConnectivityResult - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseConnectivityResult
+ +
+ +
+
+
+ +
+
+

ParseConnectivityResult constructor +

+ +
+ const + ParseConnectivityResult() +
+ + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseConnectivityResult/values-constant.html b/dart/flutter_parse_sdk/ParseConnectivityResult/values-constant.html new file mode 100644 index 000000000..51b55674e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseConnectivityResult/values-constant.html @@ -0,0 +1,124 @@ + + + + + + + + values constant - ParseConnectivityResult enum - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
values
+ +
+ +
+
+
+ +
+
+

values constant +

+ +
+ + List<ParseConnectivityResult> + const values + + +
+ +
+

A constant List of the values in this enum, in order of their declaration.

+
+ + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData-class-sidebar.html b/dart/flutter_parse_sdk/ParseCoreData-class-sidebar.html new file mode 100644 index 000000000..7fa6ce629 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData-class-sidebar.html @@ -0,0 +1,57 @@ +
    + +
  1. Constructors
  2. +
  3. ParseCoreData
  4. + + + +
  5. + Properties +
  6. +
  7. applicationId
  8. +
  9. appName
  10. +
  11. appPackageName
  12. +
  13. appResumedStream
  14. +
  15. appVersion
  16. +
  17. autoSendSessionId
  18. +
  19. clientCreator
  20. +
  21. clientKey
  22. +
  23. connectivityProvider
  24. +
  25. debug
  26. +
  27. fileDirectory
  28. +
  29. hashCode
  30. +
  31. liveListRetryIntervals
  32. +
  33. liveQueryURL
  34. +
  35. locale
  36. +
  37. masterKey
  38. +
  39. runtimeType
  40. +
  41. securityContext
  42. +
  43. serverUrl
  44. +
  45. sessionId
  46. +
  47. storage
  48. + +
  49. Methods
  50. +
  51. createFile
  52. +
  53. createObject
  54. +
  55. createParseUser
  56. +
  57. getStore
  58. +
  59. noSuchMethod
  60. +
  61. registerFileSubClass
  62. +
  63. registerSubClass
  64. +
  65. registerUserSubClass
  66. +
  67. setSessionId
  68. +
  69. toString
  70. + +
  71. Operators
  72. +
  73. operator ==
  74. + + + + +
  75. Static properties
  76. +
  77. instance
  78. + +
  79. Static methods
  80. +
  81. init
  82. + +
diff --git a/dart/flutter_parse_sdk/ParseCoreData-class.html b/dart/flutter_parse_sdk/ParseCoreData-class.html new file mode 100644 index 000000000..7e6324ce6 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData-class.html @@ -0,0 +1,567 @@ + + + + + + + + ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseCoreData
+ +
+ +
+
+
+ +
+
+

ParseCoreData class + +

+ + +
+

Singleton class that defines all user keys and data

+
+ + + + +
+

Constructors

+ +
+
+ ParseCoreData() +
+
+ +
factory
+
+
+
+ +
+

Properties

+ +
+
+ applicationId + String + +
+
+ +
getter/setter pair
+ +
+ +
+ appName + String? + +
+
+ +
getter/setter pair
+ +
+ +
+ appPackageName + String? + +
+
+ +
getter/setter pair
+ +
+ +
+ appResumedStream + Stream<void>? + +
+
+ +
getter/setter pair
+ +
+ +
+ appVersion + String? + +
+
+ +
getter/setter pair
+ +
+ +
+ autoSendSessionId + bool + +
+
+ +
getter/setter pair
+ +
+ +
+ clientCreator + ParseClientCreator + +
+
+ +
getter/setter pair
+ +
+ +
+ clientKey + String? + +
+
+ +
getter/setter pair
+ +
+ +
+ connectivityProvider + ParseConnectivityProvider? + +
+
+ +
getter/setter pair
+ +
+ +
+ debug + bool + +
+
+ +
getter/setter pair
+ +
+ +
+ fileDirectory + String? + +
+
+ +
getter/setter pair
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ liveListRetryIntervals + List<int> + +
+
+ +
getter/setter pair
+ +
+ +
+ liveQueryURL + String? + +
+
+ +
getter/setter pair
+ +
+ +
+ locale + String? + +
+
+ +
getter/setter pair
+ +
+ +
+ masterKey + String? + +
+
+ +
getter/setter pair
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ securityContext + SecurityContext? + +
+
+ +
getter/setter pair
+ +
+ +
+ serverUrl + String + +
+
+ +
getter/setter pair
+ +
+ +
+ sessionId + String? + +
+
+ +
getter/setter pair
+ +
+ +
+ storage + CoreStore + +
+
+ +
getter/setter pair
+ +
+ +
+
+ + +
+

Methods

+
+
+ createFile({String? url, String? name}) + ParseFileBase + + + +
+
+ + + +
+ +
+ createObject(String classname) + ParseObject + + + +
+
+ + + +
+ +
+ createParseUser(String? username, String? password, String? emailAddress, {String? sessionToken, bool? debug, ParseClient? client}) + ParseUser + + + +
+
+ + + +
+ +
+ getStore() + CoreStore + + + +
+
+ + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ registerFileSubClass(ParseFileConstructor parseFileConstructor) + → void + + + +
+
+ + + +
+ +
+ registerSubClass(String className, ParseObjectConstructor objectConstructor) + → void + + + +
+
+ + + +
+ +
+ registerUserSubClass(ParseUserConstructor parseUserConstructor) + → void + + + +
+
+ + + +
+ +
+ setSessionId(String sessionId) + → void + + + +
+
+ Sets the current sessionId. + + +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
override
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ +
+

Static Properties

+ +
+
+ instance + ParseCoreData + +
+
+ +
no setter
+ +
+ +
+
+ +
+

Static Methods

+
+
+ init(String appId, String serverUrl, {required bool debug, String? appName, String? appVersion, String? appPackageName, String? locale, String? liveQueryUrl, String? masterKey, String? clientKey, String? sessionId, required bool autoSendSessionId, SecurityContext? securityContext, CoreStore? store, Map<String, ParseObjectConstructor>? registeredSubClassMap, ParseUserConstructor? parseUserConstructor, ParseFileConstructor? parseFileConstructor, List<int>? liveListRetryIntervals, ParseConnectivityProvider? connectivityProvider, String? fileDirectory, Stream<void>? appResumedStream, ParseClientCreator? clientCreator}) + Future<void> + + + +
+
+ Creates an instance of Parse Server + + +
+ +
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/ParseCoreData.html b/dart/flutter_parse_sdk/ParseCoreData/ParseCoreData.html new file mode 100644 index 000000000..d0278f69a --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/ParseCoreData.html @@ -0,0 +1,124 @@ + + + + + + + + ParseCoreData constructor - ParseCoreData - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseCoreData
+ +
+ +
+
+
+ +
+
+

ParseCoreData constructor +

+ +
+ + ParseCoreData() +
+ + + + + +
+

Implementation

+
factory ParseCoreData() => _instance;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/appName.html b/dart/flutter_parse_sdk/ParseCoreData/appName.html new file mode 100644 index 000000000..b2912a527 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/appName.html @@ -0,0 +1,125 @@ + + + + + + + + appName property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
appName
+ +
+ +
+
+
+ +
+
+

appName property +

+ +
+ + String? + appName +
getter/setter pair
+ +
+ + + +
+

Implementation

+
String? appName;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/appPackageName.html b/dart/flutter_parse_sdk/ParseCoreData/appPackageName.html new file mode 100644 index 000000000..1e9ab2a3e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/appPackageName.html @@ -0,0 +1,125 @@ + + + + + + + + appPackageName property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
appPackageName
+ +
+ +
+
+
+ +
+
+

appPackageName property +

+ +
+ + String? + appPackageName +
getter/setter pair
+ +
+ + + +
+

Implementation

+
String? appPackageName;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/appResumedStream.html b/dart/flutter_parse_sdk/ParseCoreData/appResumedStream.html new file mode 100644 index 000000000..863263cb9 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/appResumedStream.html @@ -0,0 +1,125 @@ + + + + + + + + appResumedStream property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
appResumedStream
+ +
+ +
+
+
+ +
+
+

appResumedStream property +

+ +
+ + Stream<void>? + appResumedStream +
getter/setter pair
+ +
+ + + +
+

Implementation

+
Stream<void>? appResumedStream;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/appVersion.html b/dart/flutter_parse_sdk/ParseCoreData/appVersion.html new file mode 100644 index 000000000..cc6b17d53 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/appVersion.html @@ -0,0 +1,125 @@ + + + + + + + + appVersion property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
appVersion
+ +
+ +
+
+
+ +
+
+

appVersion property +

+ +
+ + String? + appVersion +
getter/setter pair
+ +
+ + + +
+

Implementation

+
String? appVersion;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/applicationId.html b/dart/flutter_parse_sdk/ParseCoreData/applicationId.html new file mode 100644 index 000000000..c8de8df38 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/applicationId.html @@ -0,0 +1,125 @@ + + + + + + + + applicationId property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
applicationId
+ +
+ +
+
+
+ +
+
+

applicationId property +

+ +
+ + String + applicationId +
getter/setter pair
+ +
+ + + +
+

Implementation

+
String applicationId;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/autoSendSessionId.html b/dart/flutter_parse_sdk/ParseCoreData/autoSendSessionId.html new file mode 100644 index 000000000..e0d893851 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/autoSendSessionId.html @@ -0,0 +1,125 @@ + + + + + + + + autoSendSessionId property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
autoSendSessionId
+ +
+ +
+
+
+ +
+
+

autoSendSessionId property +

+ +
+ + bool + autoSendSessionId +
getter/setter pair
+ +
+ + + +
+

Implementation

+
late bool autoSendSessionId;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/clientCreator.html b/dart/flutter_parse_sdk/ParseCoreData/clientCreator.html new file mode 100644 index 000000000..7a1e0a02f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/clientCreator.html @@ -0,0 +1,125 @@ + + + + + + + + clientCreator property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
clientCreator
+ +
+ +
+
+
+ +
+
+

clientCreator property +

+ +
+ + ParseClientCreator + clientCreator +
getter/setter pair
+ +
+ + + +
+

Implementation

+
late ParseClientCreator clientCreator;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/clientKey.html b/dart/flutter_parse_sdk/ParseCoreData/clientKey.html new file mode 100644 index 000000000..58eea29e5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/clientKey.html @@ -0,0 +1,125 @@ + + + + + + + + clientKey property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
clientKey
+ +
+ +
+
+
+ +
+
+

clientKey property +

+ +
+ + String? + clientKey +
getter/setter pair
+ +
+ + + +
+

Implementation

+
String? clientKey;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/connectivityProvider.html b/dart/flutter_parse_sdk/ParseCoreData/connectivityProvider.html new file mode 100644 index 000000000..b2d6f7134 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/connectivityProvider.html @@ -0,0 +1,125 @@ + + + + + + + + connectivityProvider property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
connectivityProvider
+ +
+ +
+
+
+ +
+
+

connectivityProvider property +

+ +
+ + ParseConnectivityProvider? + connectivityProvider +
getter/setter pair
+ +
+ + + +
+

Implementation

+
ParseConnectivityProvider? connectivityProvider;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/createFile.html b/dart/flutter_parse_sdk/ParseCoreData/createFile.html new file mode 100644 index 000000000..a19b86a1a --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/createFile.html @@ -0,0 +1,131 @@ + + + + + + + + createFile method - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
createFile
+ +
+ +
+
+
+ +
+
+

createFile method +

+ +
+ + +ParseFileBase +createFile(
  1. {String? url,
  2. +
  3. String? name}
  4. +
) + + + +
+ + + + +
+

Implementation

+
ParseFileBase createFile({String? url, String? name}) =>
+    _subClassHandler.createFile(name: name, url: url);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/createObject.html b/dart/flutter_parse_sdk/ParseCoreData/createObject.html new file mode 100644 index 000000000..88697030f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/createObject.html @@ -0,0 +1,131 @@ + + + + + + + + createObject method - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
createObject
+ +
+ +
+
+
+ +
+
+

createObject method +

+ +
+ + +ParseObject +createObject(
  1. String classname
  2. +
) + + + +
+ + + + +
+

Implementation

+
ParseObject createObject(String classname) {
+  return _subClassHandler.createObject(classname);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/createParseUser.html b/dart/flutter_parse_sdk/ParseCoreData/createParseUser.html new file mode 100644 index 000000000..02b0e1a6e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/createParseUser.html @@ -0,0 +1,139 @@ + + + + + + + + createParseUser method - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
createParseUser
+ +
+ +
+
+
+ +
+
+

createParseUser method +

+ +
+ + +ParseUser +createParseUser(
  1. String? username,
  2. +
  3. String? password,
  4. +
  5. String? emailAddress,
  6. +
  7. {String? sessionToken,
  8. +
  9. bool? debug,
  10. +
  11. ParseClient? client}
  12. +
) + + + +
+ + + + +
+

Implementation

+
ParseUser createParseUser(
+    String? username, String? password, String? emailAddress,
+    {String? sessionToken, bool? debug, ParseClient? client}) {
+  return _subClassHandler.createParseUser(username, password, emailAddress,
+      sessionToken: sessionToken, debug: debug, client: client);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/debug.html b/dart/flutter_parse_sdk/ParseCoreData/debug.html new file mode 100644 index 000000000..fc5b90d5f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/debug.html @@ -0,0 +1,125 @@ + + + + + + + + debug property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
debug
+ +
+ +
+
+
+ +
+
+

debug property +

+ +
+ + bool + debug +
getter/setter pair
+ +
+ + + +
+

Implementation

+
late bool debug;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/fileDirectory.html b/dart/flutter_parse_sdk/ParseCoreData/fileDirectory.html new file mode 100644 index 000000000..d74da6c9d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/fileDirectory.html @@ -0,0 +1,125 @@ + + + + + + + + fileDirectory property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
fileDirectory
+ +
+ +
+
+
+ +
+
+

fileDirectory property +

+ +
+ + String? + fileDirectory +
getter/setter pair
+ +
+ + + +
+

Implementation

+
String? fileDirectory;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/getStore.html b/dart/flutter_parse_sdk/ParseCoreData/getStore.html new file mode 100644 index 000000000..31c52ab85 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/getStore.html @@ -0,0 +1,130 @@ + + + + + + + + getStore method - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getStore
+ +
+ +
+
+
+ +
+
+

getStore method +

+ +
+ + +CoreStore +getStore() + + + +
+ + + + +
+

Implementation

+
CoreStore getStore() {
+  return storage;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/init.html b/dart/flutter_parse_sdk/ParseCoreData/init.html new file mode 100644 index 000000000..d9289a03f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/init.html @@ -0,0 +1,210 @@ + + + + + + + + init method - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
init
+ +
+ +
+
+
+ +
+
+

init static method +

+ +
+ + +Future<void> +init(
  1. String appId,
  2. +
  3. String serverUrl,
  4. +
  5. {required bool debug,
  6. +
  7. String? appName,
  8. +
  9. String? appVersion,
  10. +
  11. String? appPackageName,
  12. +
  13. String? locale,
  14. +
  15. String? liveQueryUrl,
  16. +
  17. String? masterKey,
  18. +
  19. String? clientKey,
  20. +
  21. String? sessionId,
  22. +
  23. required bool autoSendSessionId,
  24. +
  25. SecurityContext? securityContext,
  26. +
  27. CoreStore? store,
  28. +
  29. Map<String, ParseObjectConstructor>? registeredSubClassMap,
  30. +
  31. ParseUserConstructor? parseUserConstructor,
  32. +
  33. ParseFileConstructor? parseFileConstructor,
  34. +
  35. List<int>? liveListRetryIntervals,
  36. +
  37. ParseConnectivityProvider? connectivityProvider,
  38. +
  39. String? fileDirectory,
  40. +
  41. Stream<void>? appResumedStream,
  42. +
  43. ParseClientCreator? clientCreator}
  44. +
) + + + +
+ +
+

Creates an instance of Parse Server

+

This class should not be user unless switching servers during the app, +which is odd. Should only be user by Parse.init

+
+ + + +
+

Implementation

+
static Future<void> init(
+  String appId,
+  String serverUrl, {
+  required bool debug,
+  String? appName,
+  String? appVersion,
+  String? appPackageName,
+  String? locale,
+  String? liveQueryUrl,
+  String? masterKey,
+  String? clientKey,
+  String? sessionId,
+  required bool autoSendSessionId,
+  SecurityContext? securityContext,
+  CoreStore? store,
+  Map<String, ParseObjectConstructor>? registeredSubClassMap,
+  ParseUserConstructor? parseUserConstructor,
+  ParseFileConstructor? parseFileConstructor,
+  List<int>? liveListRetryIntervals,
+  ParseConnectivityProvider? connectivityProvider,
+  String? fileDirectory,
+  Stream<void>? appResumedStream,
+  ParseClientCreator? clientCreator,
+}) async {
+  _instance = ParseCoreData._init(appId, serverUrl);
+
+  _instance.storage = store ?? CoreStoreMemoryImp();
+  _instance.debug = debug;
+  _instance.appName = appName;
+  _instance.appVersion = appVersion;
+  _instance.appPackageName = appPackageName;
+  _instance.locale = locale;
+  _instance.liveQueryURL = liveQueryUrl;
+  _instance.clientKey = clientKey;
+  _instance.masterKey = masterKey;
+  _instance.sessionId = sessionId;
+  _instance.autoSendSessionId = autoSendSessionId;
+  _instance.securityContext = securityContext;
+  _instance.liveListRetryIntervals = liveListRetryIntervals ??
+      (parseIsWeb
+          ? <int>[0, 500, 1000, 2000, 5000]
+          : <int>[0, 500, 1000, 2000, 5000, 10000]);
+  _instance._subClassHandler = ParseSubClassHandler(
+    registeredSubClassMap: registeredSubClassMap,
+    parseUserConstructor: parseUserConstructor,
+    parseFileConstructor: parseFileConstructor,
+  );
+  _instance.connectivityProvider = connectivityProvider;
+  _instance.fileDirectory = fileDirectory;
+  _instance.appResumedStream = appResumedStream;
+  _instance.clientCreator = clientCreator ??
+      (({required bool sendSessionId, SecurityContext? securityContext}) =>
+          ParseHTTPClient(
+              sendSessionId: sendSessionId,
+              securityContext: securityContext));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/instance.html b/dart/flutter_parse_sdk/ParseCoreData/instance.html new file mode 100644 index 000000000..34a4646d2 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/instance.html @@ -0,0 +1,132 @@ + + + + + + + + instance property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
instance
+ +
+ +
+
+
+ +
+
+

instance property +

+ + + +
+ +
+ + ParseCoreData + instance + + +
+ + + + +
+

Implementation

+
static ParseCoreData get instance => _instance;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/liveListRetryIntervals.html b/dart/flutter_parse_sdk/ParseCoreData/liveListRetryIntervals.html new file mode 100644 index 000000000..8946e139d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/liveListRetryIntervals.html @@ -0,0 +1,125 @@ + + + + + + + + liveListRetryIntervals property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
liveListRetryIntervals
+ +
+ +
+
+
+ +
+
+

liveListRetryIntervals property +

+ +
+ + List<int> + liveListRetryIntervals +
getter/setter pair
+ +
+ + + +
+

Implementation

+
late List<int> liveListRetryIntervals;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/liveQueryURL.html b/dart/flutter_parse_sdk/ParseCoreData/liveQueryURL.html new file mode 100644 index 000000000..ac1772b51 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/liveQueryURL.html @@ -0,0 +1,125 @@ + + + + + + + + liveQueryURL property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
liveQueryURL
+ +
+ +
+
+
+ +
+
+

liveQueryURL property +

+ +
+ + String? + liveQueryURL +
getter/setter pair
+ +
+ + + +
+

Implementation

+
String? liveQueryURL;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/locale.html b/dart/flutter_parse_sdk/ParseCoreData/locale.html new file mode 100644 index 000000000..49e06a9dc --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/locale.html @@ -0,0 +1,125 @@ + + + + + + + + locale property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
locale
+ +
+ +
+
+
+ +
+
+

locale property +

+ +
+ + String? + locale +
getter/setter pair
+ +
+ + + +
+

Implementation

+
String? locale;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/masterKey.html b/dart/flutter_parse_sdk/ParseCoreData/masterKey.html new file mode 100644 index 000000000..35d03e37e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/masterKey.html @@ -0,0 +1,125 @@ + + + + + + + + masterKey property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
masterKey
+ +
+ +
+
+
+ +
+
+

masterKey property +

+ +
+ + String? + masterKey +
getter/setter pair
+ +
+ + + +
+

Implementation

+
String? masterKey;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/registerFileSubClass.html b/dart/flutter_parse_sdk/ParseCoreData/registerFileSubClass.html new file mode 100644 index 000000000..ffc519598 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/registerFileSubClass.html @@ -0,0 +1,131 @@ + + + + + + + + registerFileSubClass method - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
registerFileSubClass
+ +
+ +
+
+
+ +
+
+

registerFileSubClass method +

+ +
+ + +void +registerFileSubClass(
  1. ParseFileConstructor parseFileConstructor
  2. +
) + + + +
+ + + + +
+

Implementation

+
void registerFileSubClass(ParseFileConstructor parseFileConstructor) {
+  _subClassHandler.registerFileSubClass(parseFileConstructor);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/registerSubClass.html b/dart/flutter_parse_sdk/ParseCoreData/registerSubClass.html new file mode 100644 index 000000000..d5ddb0e88 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/registerSubClass.html @@ -0,0 +1,133 @@ + + + + + + + + registerSubClass method - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
registerSubClass
+ +
+ +
+
+
+ +
+
+

registerSubClass method +

+ +
+ + +void +registerSubClass(
  1. String className,
  2. +
  3. ParseObjectConstructor objectConstructor
  4. +
) + + + +
+ + + + +
+

Implementation

+
void registerSubClass(
+    String className, ParseObjectConstructor objectConstructor) {
+  _subClassHandler.registerSubClass(className, objectConstructor);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/registerUserSubClass.html b/dart/flutter_parse_sdk/ParseCoreData/registerUserSubClass.html new file mode 100644 index 000000000..084be20ad --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/registerUserSubClass.html @@ -0,0 +1,131 @@ + + + + + + + + registerUserSubClass method - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
registerUserSubClass
+ +
+ +
+
+
+ +
+
+

registerUserSubClass method +

+ +
+ + +void +registerUserSubClass(
  1. ParseUserConstructor parseUserConstructor
  2. +
) + + + +
+ + + + +
+

Implementation

+
void registerUserSubClass(ParseUserConstructor parseUserConstructor) {
+  _subClassHandler.registerUserSubClass(parseUserConstructor);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/securityContext.html b/dart/flutter_parse_sdk/ParseCoreData/securityContext.html new file mode 100644 index 000000000..ec92baad1 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/securityContext.html @@ -0,0 +1,125 @@ + + + + + + + + securityContext property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
securityContext
+ +
+ +
+
+
+ +
+
+

securityContext property +

+ +
+ + SecurityContext? + securityContext +
getter/setter pair
+ +
+ + + +
+

Implementation

+
SecurityContext? securityContext;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/serverUrl.html b/dart/flutter_parse_sdk/ParseCoreData/serverUrl.html new file mode 100644 index 000000000..17731a089 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/serverUrl.html @@ -0,0 +1,125 @@ + + + + + + + + serverUrl property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
serverUrl
+ +
+ +
+
+
+ +
+
+

serverUrl property +

+ +
+ + String + serverUrl +
getter/setter pair
+ +
+ + + +
+

Implementation

+
String serverUrl;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/sessionId.html b/dart/flutter_parse_sdk/ParseCoreData/sessionId.html new file mode 100644 index 000000000..e62cfd770 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/sessionId.html @@ -0,0 +1,125 @@ + + + + + + + + sessionId property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
sessionId
+ +
+ +
+
+
+ +
+
+

sessionId property +

+ +
+ + String? + sessionId +
getter/setter pair
+ +
+ + + +
+

Implementation

+
String? sessionId;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/setSessionId.html b/dart/flutter_parse_sdk/ParseCoreData/setSessionId.html new file mode 100644 index 000000000..6e87dce63 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/setSessionId.html @@ -0,0 +1,136 @@ + + + + + + + + setSessionId method - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setSessionId
+ +
+ +
+
+
+ +
+
+

setSessionId method +

+ +
+ + +void +setSessionId(
  1. String sessionId
  2. +
) + + + +
+ +
+

Sets the current sessionId.

+

This is generated when a users logs in, or calls currentUser to update +their keys

+
+ + + +
+

Implementation

+
void setSessionId(String sessionId) {
+  this.sessionId = sessionId;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/storage.html b/dart/flutter_parse_sdk/ParseCoreData/storage.html new file mode 100644 index 000000000..e99c599dd --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/storage.html @@ -0,0 +1,125 @@ + + + + + + + + storage property - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
storage
+ +
+ +
+
+
+ +
+
+

storage property +

+ +
+ + CoreStore + storage +
getter/setter pair
+ +
+ + + +
+

Implementation

+
late CoreStore storage;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseCoreData/toString.html b/dart/flutter_parse_sdk/ParseCoreData/toString.html new file mode 100644 index 000000000..dd2f3a9a9 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseCoreData/toString.html @@ -0,0 +1,146 @@ + + + + + + + + toString method - ParseCoreData class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
toString
+ +
+ +
+
+
+ +
+
+

toString method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +String +toString() + +
override
+ +
+ +
+

A string representation of this object.

+

Some classes have a default textual representation, +often paired with a static parse function (like int.parse). +These classes will provide the textual representation as +their string representation.

+

Other classes have no meaningful textual representation +that a program will care about. +Such classes will typically override toString to provide +useful information when inspecting the object, +mainly for debugging or logging.

+
+ + + +
+

Implementation

+
@override
+String toString() => '$applicationId $masterKey';
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseDioClient-class-sidebar.html b/dart/flutter_parse_sdk/ParseDioClient-class-sidebar.html new file mode 100644 index 000000000..d58ec3fa3 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseDioClient-class-sidebar.html @@ -0,0 +1,33 @@ +
    + +
  1. Constructors
  2. +
  3. ParseDioClient
  4. + + + +
  5. + Properties +
  6. +
  7. data
  8. +
  9. hashCode
  10. +
  11. runtimeType
  12. + +
  13. Methods
  14. +
  15. delete
  16. +
  17. get
  18. +
  19. getBytes
  20. +
  21. noSuchMethod
  22. +
  23. post
  24. +
  25. postBytes
  26. +
  27. put
  28. +
  29. toString
  30. + +
  31. Operators
  32. +
  33. operator ==
  34. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseDioClient-class.html b/dart/flutter_parse_sdk/ParseDioClient-class.html new file mode 100644 index 000000000..422ed98cd --- /dev/null +++ b/dart/flutter_parse_sdk/ParseDioClient-class.html @@ -0,0 +1,326 @@ + + + + + + + + ParseDioClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseDioClient
+ +
+ +
+
+
+ +
+
+

ParseDioClient class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseDioClient({bool sendSessionId = false, dynamic securityContext}) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ data + ParseCoreData + +
+
+ +
no setterinherited
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ delete(String path, {ParseNetworkOptions? options}) + Future<ParseNetworkResponse> + + + +
+
+ +
override
+ +
+ +
+ get(String path, {ParseNetworkOptions? options, ProgressCallback? onReceiveProgress}) + Future<ParseNetworkResponse> + + + +
+
+ +
override
+ +
+ +
+ getBytes(String path, {ParseNetworkOptions? options, ProgressCallback? onReceiveProgress, dynamic cancelToken}) + Future<ParseNetworkByteResponse> + + + +
+
+ +
override
+ +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ post(String path, {String? data, ParseNetworkOptions? options}) + Future<ParseNetworkResponse> + + + +
+
+ +
override
+ +
+ +
+ postBytes(String path, {Stream<List<int>>? data, ParseNetworkOptions? options, ProgressCallback? onSendProgress, dynamic cancelToken}) + Future<ParseNetworkResponse> + + + +
+
+ +
override
+ +
+ +
+ put(String path, {String? data, ParseNetworkOptions? options}) + Future<ParseNetworkResponse> + + + +
+
+ +
override
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseDioClient/ParseDioClient.html b/dart/flutter_parse_sdk/ParseDioClient/ParseDioClient.html new file mode 100644 index 000000000..7457afaf7 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseDioClient/ParseDioClient.html @@ -0,0 +1,131 @@ + + + + + + + + ParseDioClient constructor - ParseDioClient - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseDioClient
+ +
+ +
+
+
+ +
+
+

ParseDioClient constructor +

+ +
+ + ParseDioClient(
  1. {bool sendSessionId = false,
  2. +
  3. dynamic securityContext}
  4. +
) +
+ + + + + +
+

Implementation

+
ParseDioClient({bool sendSessionId = false, dynamic securityContext}) {
+  _client = _ParseDioClient(
+    sendSessionId: sendSessionId,
+    securityContext: securityContext,
+  );
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseDioClient/delete.html b/dart/flutter_parse_sdk/ParseDioClient/delete.html new file mode 100644 index 000000000..4f609fde4 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseDioClient/delete.html @@ -0,0 +1,154 @@ + + + + + + + + delete method - ParseDioClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
delete
+ +
+ +
+
+
+ +
+
+

delete method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseNetworkResponse> +delete(
  1. String path,
  2. +
  3. {ParseNetworkOptions? options}
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<ParseNetworkResponse> delete(String path,
+    {ParseNetworkOptions? options}) async {
+  try {
+    final dio.Response<String> dioResponse = await _client.delete<String>(
+      path,
+      options: _Options(headers: options?.headers),
+    );
+
+    return ParseNetworkResponse(
+      data: dioResponse.data!,
+      statusCode: dioResponse.statusCode!,
+    );
+  } on dio.DioException catch (error) {
+    return ParseNetworkResponse(
+      data: error.response?.data ?? _fallbackErrorData,
+      statusCode: error.response?.statusCode ?? ParseError.otherCause,
+    );
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseDioClient/get.html b/dart/flutter_parse_sdk/ParseDioClient/get.html new file mode 100644 index 000000000..ccc3ccb69 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseDioClient/get.html @@ -0,0 +1,158 @@ + + + + + + + + get method - ParseDioClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
get
+ +
+ +
+
+
+ +
+
+

get method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseNetworkResponse> +get(
  1. String path,
  2. +
  3. {ParseNetworkOptions? options,
  4. +
  5. ProgressCallback? onReceiveProgress}
  6. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<ParseNetworkResponse> get(
+  String path, {
+  ParseNetworkOptions? options,
+  ProgressCallback? onReceiveProgress,
+}) async {
+  try {
+    final dio.Response<String> dioResponse = await _client.get<String>(
+      path,
+      options: _Options(headers: options?.headers),
+    );
+
+    return ParseNetworkResponse(
+      data: dioResponse.data!,
+      statusCode: dioResponse.statusCode!,
+    );
+  } on dio.DioException catch (error) {
+    return ParseNetworkResponse(
+      data: error.response?.data ?? _fallbackErrorData,
+      statusCode: error.response?.statusCode ?? ParseError.otherCause,
+    );
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseDioClient/getBytes.html b/dart/flutter_parse_sdk/ParseDioClient/getBytes.html new file mode 100644 index 000000000..d56b6a37f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseDioClient/getBytes.html @@ -0,0 +1,167 @@ + + + + + + + + getBytes method - ParseDioClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getBytes
+ +
+ +
+
+
+ +
+
+

getBytes method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseNetworkByteResponse> +getBytes(
  1. String path,
  2. +
  3. {ParseNetworkOptions? options,
  4. +
  5. ProgressCallback? onReceiveProgress,
  6. +
  7. dynamic cancelToken}
  8. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<ParseNetworkByteResponse> getBytes(
+  String path, {
+  ParseNetworkOptions? options,
+  ProgressCallback? onReceiveProgress,
+  dynamic cancelToken,
+}) async {
+  try {
+    final dio.Response<List<int>> dioResponse = await _client.get<List<int>>(
+      path,
+      cancelToken: cancelToken,
+      onReceiveProgress: onReceiveProgress,
+      options: _Options(
+          headers: options?.headers, responseType: dio.ResponseType.bytes),
+    );
+    return ParseNetworkByteResponse(
+      bytes: dioResponse.data,
+      statusCode: dioResponse.statusCode!,
+    );
+  } on dio.DioException catch (error) {
+    if (error.response != null) {
+      return ParseNetworkByteResponse(
+        data: error.response?.data ?? _fallbackErrorData,
+        statusCode: error.response?.statusCode ?? ParseError.otherCause,
+      );
+    } else {
+      return _getOtherCaseErrorForParseNetworkResponse(
+          error.error.toString());
+    }
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseDioClient/post.html b/dart/flutter_parse_sdk/ParseDioClient/post.html new file mode 100644 index 000000000..05758330f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseDioClient/post.html @@ -0,0 +1,156 @@ + + + + + + + + post method - ParseDioClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
post
+ +
+ +
+
+
+ +
+
+

post method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseNetworkResponse> +post(
  1. String path,
  2. +
  3. {String? data,
  4. +
  5. ParseNetworkOptions? options}
  6. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<ParseNetworkResponse> post(String path,
+    {String? data, ParseNetworkOptions? options}) async {
+  try {
+    final dio.Response<String> dioResponse = await _client.post<String>(
+      path,
+      data: data,
+      options: _Options(headers: options?.headers),
+    );
+
+    return ParseNetworkResponse(
+      data: dioResponse.data!,
+      statusCode: dioResponse.statusCode!,
+    );
+  } on dio.DioException catch (error) {
+    return ParseNetworkResponse(
+      data: error.response?.data ?? _fallbackErrorData,
+      statusCode: error.response?.statusCode ?? ParseError.otherCause,
+    );
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseDioClient/postBytes.html b/dart/flutter_parse_sdk/ParseDioClient/postBytes.html new file mode 100644 index 000000000..82c0f14e5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseDioClient/postBytes.html @@ -0,0 +1,168 @@ + + + + + + + + postBytes method - ParseDioClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
postBytes
+ +
+ +
+
+
+ +
+
+

postBytes method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseNetworkResponse> +postBytes(
  1. String path,
  2. +
  3. {Stream<List<int>>? data,
  4. +
  5. ParseNetworkOptions? options,
  6. +
  7. ProgressCallback? onSendProgress,
  8. +
  9. dynamic cancelToken}
  10. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<ParseNetworkResponse> postBytes(String path,
+    {Stream<List<int>>? data,
+    ParseNetworkOptions? options,
+    ProgressCallback? onSendProgress,
+    dynamic cancelToken}) async {
+  try {
+    final dio.Response<String> dioResponse = await _client.post<String>(
+      path,
+      data: data,
+      cancelToken: cancelToken,
+      options: _Options(headers: options?.headers),
+      onSendProgress: onSendProgress,
+    );
+
+    return ParseNetworkResponse(
+      data: dioResponse.data!,
+      statusCode: dioResponse.statusCode!,
+    );
+  } on dio.DioException catch (error) {
+    if (error.response != null) {
+      return ParseNetworkResponse(
+        data: error.response?.data ?? _fallbackErrorData,
+        statusCode: error.response?.statusCode ?? ParseError.otherCause,
+      );
+    } else {
+      return _getOtherCaseErrorForParseNetworkResponse(
+          error.error.toString());
+    }
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseDioClient/put.html b/dart/flutter_parse_sdk/ParseDioClient/put.html new file mode 100644 index 000000000..23fde4a07 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseDioClient/put.html @@ -0,0 +1,156 @@ + + + + + + + + put method - ParseDioClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
put
+ +
+ +
+
+
+ +
+
+

put method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseNetworkResponse> +put(
  1. String path,
  2. +
  3. {String? data,
  4. +
  5. ParseNetworkOptions? options}
  6. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<ParseNetworkResponse> put(String path,
+    {String? data, ParseNetworkOptions? options}) async {
+  try {
+    final dio.Response<String> dioResponse = await _client.put<String>(
+      path,
+      data: data,
+      options: _Options(headers: options?.headers),
+    );
+
+    return ParseNetworkResponse(
+      data: dioResponse.data!,
+      statusCode: dioResponse.statusCode!,
+    );
+  } on dio.DioException catch (error) {
+    return ParseNetworkResponse(
+      data: error.response?.data ?? _fallbackErrorData,
+      statusCode: error.response?.statusCode ?? ParseError.otherCause,
+    );
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError-class-sidebar.html b/dart/flutter_parse_sdk/ParseError-class-sidebar.html new file mode 100644 index 000000000..ac3f48923 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError-class-sidebar.html @@ -0,0 +1,92 @@ +
    + +
  1. Constructors
  2. +
  3. ParseError
  4. + + + +
  5. + Properties +
  6. +
  7. code
  8. +
  9. exception
  10. +
  11. hashCode
  12. +
  13. message
  14. +
  15. runtimeType
  16. +
  17. type
  18. + +
  19. Methods
  20. +
  21. noSuchMethod
  22. +
  23. toString
  24. + +
  25. Operators
  26. +
  27. operator ==
  28. + + + + + + +
  29. Constants
  30. +
  31. accountAlreadyLinked
  32. +
  33. aggregateError
  34. +
  35. cacheMiss
  36. +
  37. commandUnavailable
  38. +
  39. connectionFailed
  40. +
  41. duplicateRequest
  42. +
  43. duplicateValue
  44. +
  45. emailMissing
  46. +
  47. emailNotFound
  48. +
  49. emailTaken
  50. +
  51. exceededQuota
  52. +
  53. fileDeleteError
  54. +
  55. fileDeleteUnnamedError
  56. +
  57. fileReadError
  58. +
  59. fileSaveError
  60. +
  61. fileTooLarge
  62. +
  63. incorrectType
  64. +
  65. internalServerError
  66. +
  67. invalidAcl
  68. +
  69. invalidChannelName
  70. +
  71. invalidClassName
  72. +
  73. invalidContentLength
  74. +
  75. invalidEmailAddress
  76. +
  77. invalidEventName
  78. +
  79. invalidFileName
  80. +
  81. invalidImageData
  82. +
  83. invalidJson
  84. +
  85. invalidKeyName
  86. +
  87. invalidLinkedSession
  88. +
  89. invalidNestedKey
  90. +
  91. invalidPointer
  92. +
  93. invalidPushTimeError
  94. +
  95. invalidQuery
  96. +
  97. invalidRoleName
  98. +
  99. invalidSchemaOperation
  100. +
  101. invalidSessionToken
  102. +
  103. invalidValue
  104. +
  105. linkedIdMissing
  106. +
  107. mfaError
  108. +
  109. mfaTokenRequired
  110. +
  111. missingContentLength
  112. +
  113. missingContentType
  114. +
  115. missingObjectId
  116. +
  117. mustCreateUserThroughSignup
  118. +
  119. notInitialized
  120. +
  121. objectNotFound
  122. +
  123. objectTooLarge
  124. +
  125. operationForbidden
  126. +
  127. otherCause
  128. +
  129. passwordMissing
  130. +
  131. pushMisconfigured
  132. +
  133. requestLimitExceeded
  134. +
  135. scriptFailed
  136. +
  137. sessionMissing
  138. +
  139. timeout
  140. +
  141. unsavedFileError
  142. +
  143. unsupportedService
  144. +
  145. usernameMissing
  146. +
  147. usernameTaken
  148. +
  149. validationError
  150. +
  151. xDomainRequest
  152. +
diff --git a/dart/flutter_parse_sdk/ParseError-class.html b/dart/flutter_parse_sdk/ParseError-class.html new file mode 100644 index 000000000..f0c2f4e7d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError-class.html @@ -0,0 +1,1028 @@ + + + + + + + + ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseError
+ +
+ +
+
+
+ +
+
+

ParseError class + +

+ + +
+

ParseException is used in ParseResult to inform the user of the exception

+
+ + + + +
+

Constructors

+ +
+
+ ParseError({int code = otherCause, String message = 'OtherCause', Exception? exception, bool debug = false}) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ code + int + +
+
+ +
final
+ +
+ +
+ exception + Exception? + +
+
+ +
final
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ message + String + +
+
+ +
final
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ type + String? + +
+
+ +
getter/setter pair
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
override
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + +
+

Constants

+ +
+
+ accountAlreadyLinked + → const int + + +
+
+ Error code indicating that an an account being linked is already linked +to another user. + + +
+ +
+ aggregateError + → const int + + +
+
+ Error code indicating that there were multiple errors. Aggregate errors +have an "errors" property, which is an array of error objects with more +detail about each error that occurred. + + +
+ +
+ cacheMiss + → const int + + +
+
+ Error code indicating the result was not found in the cache. + + +
+ +
+ commandUnavailable + → const int + + +
+
+ Error code indicating that the feature you tried to access is only +available internally for testing purposes. + + +
+ +
+ connectionFailed + → const int + + +
+
+ Error code indicating the connection to the Parse servers failed. + + +
+ +
+ duplicateRequest + → const int + + +
+
+ Error code indicating that the request was a duplicate and has been discarded due to +idempotency rules. + + +
+ +
+ duplicateValue + → const int + + +
+
+ Error code indicating that a unique field was given a value that is +already taken. + + +
+ +
+ emailMissing + → const int + + +
+
+ Error code indicating that the email is missing, but must be specified. + + +
+ +
+ emailNotFound + → const int + + +
+
+ Error code indicating that a user with the specified email was not found. + + +
+ +
+ emailTaken + → const int + + +
+
+ Error code indicating that the email has already been taken. + + +
+ +
+ exceededQuota + → const int + + +
+
+ Error code indicating that an application quota was exceeded. Upgrade to +resolve. + + +
+ +
+ fileDeleteError + → const int + + +
+
+ Error code indicating an error deleting a file. + + +
+ +
+ fileDeleteUnnamedError + → const int + + +
+
+ Error code indicating an error deleting an unnamed file. + + +
+ +
+ fileReadError + → const int + + +
+
+ Error code indicating the client was unable to read an input file. + + +
+ +
+ fileSaveError + → const int + + +
+
+ Error code indicating an error saving a file. + + +
+ +
+ fileTooLarge + → const int + + +
+
+ Error code indicating a file that was too large. + + +
+ +
+ incorrectType + → const int + + +
+
+ Error code indicating that a field was set to an inconsistent type. + + +
+ +
+ internalServerError + → const int + + +
+
+ Error code indicating that something has gone wrong with the server. + + +
+ +
+ invalidAcl + → const int + + +
+
+ Error code indicating an invalid ACL was provided. + + +
+ +
+ invalidChannelName + → const int + + +
+
+ Error code indicating an invalid channel name. A channel name is either +an empty string (the broadcast channel) or contains only a-zA-Z0-9_ +characters and starts with a letter. + + +
+ +
+ invalidClassName + → const int + + +
+
+ Error code indicating a missing or invalid classname. Classnames are +case-sensitive. They must start with a letter, and a-zA-Z0-9_ are the +only valid characters. + + +
+ +
+ invalidContentLength + → const int + + +
+
+ Error code indicating an invalid content length. + + +
+ +
+ invalidEmailAddress + → const int + + +
+
+ Error code indicating that the email address was invalid. + + +
+ +
+ invalidEventName + → const int + + +
+
+ Error code indicating an invalid event name. + + +
+ +
+ invalidFileName + → const int + + +
+
+ Error code indicating that an invalid filename was used for ParseFile. +A valid file name contains only a-zA-Z0-9_. characters and is between 1 +and 128 characters. + + +
+ +
+ invalidImageData + → const int + + +
+
+ Error code indicating that invalid image data was provided. + + +
+ +
+ invalidJson + → const int + + +
+
+ Error code indicating that badly formed JSON was received upstream. This +either indicates you have done something unusual with modifying how +things encode to JSON, or the network is failing badly. + + +
+ +
+ invalidKeyName + → const int + + +
+
+ Error code indicating an invalid key name. Keys are case-sensitive. They +must start with a letter, and a-zA-Z0-9_ are the only valid characters. + + +
+ +
+ invalidLinkedSession + → const int + + +
+
+ Error code indicating that a user with a linked (e.g. Facebook) account +has an invalid session. + + +
+ +
+ invalidNestedKey + → const int + + +
+
+ Error code indicating that an invalid key was used in a nested +JSONObject. + + +
+ +
+ invalidPointer + → const int + + +
+
+ Error code indicating a malformed pointer. You should not see this unless +you have been mucking about changing internal Parse code. + + +
+ +
+ invalidPushTimeError + → const int + + +
+
+ Error code indicating an invalid push time. + + +
+ +
+ invalidQuery + → const int + + +
+
+ Error code indicating you tried to query with a datatype that doesn't +support it, like exact matching an array or object. + + +
+ +
+ invalidRoleName + → const int + + +
+
+ Error code indicating that a role's name is invalid. + + +
+ +
+ invalidSchemaOperation + → const int + + +
+
+ Error code indicating an invalid operation occured on schema + + +
+ +
+ invalidSessionToken + → const int + + +
+
+ Error code indicating that the current session token is invalid. + + +
+ +
+ invalidValue + → const int + + +
+
+ Error code indicating that a field had an invalid value. + + +
+ +
+ linkedIdMissing + → const int + + +
+
+ Error code indicating that a user cannot be linked to an account because +that account's id could not be found. + + +
+ +
+ mfaError + → const int + + +
+
+ Error code indicating an error enabling or verifying MFA + + +
+ +
+ mfaTokenRequired + → const int + + +
+
+ Error code indicating that a valid MFA token must be provided + + +
+ +
+ missingContentLength + → const int + + +
+
+ Error code indicating a missing content length. + + +
+ +
+ missingContentType + → const int + + +
+
+ Error code indicating a missing content type. + + +
+ +
+ missingObjectId + → const int + + +
+
+ Error code indicating an unspecified object id. + + +
+ +
+ mustCreateUserThroughSignup + → const int + + +
+
+ Error code indicating that a user can only be created through signup. + + +
+ +
+ notInitialized + → const int + + +
+
+ You must call Parse().initialize before using the Parse library. + + +
+ +
+ objectNotFound + → const int + + +
+
+ Error code indicating the specified object doesn't exist. + + +
+ +
+ objectTooLarge + → const int + + +
+
+ Error code indicating that the object is too large. + + +
+ +
+ operationForbidden + → const int + + +
+
+ Error code indicating that the operation isn't allowed for clients. + + +
+ +
+ otherCause + → const int + + +
+
+ Error code indicating some error other than those enumerated here. + + +
+ +
+ passwordMissing + → const int + + +
+
+ Error code indicating that the password is missing or empty. + + +
+ +
+ pushMisconfigured + → const int + + +
+
+ Error code indicating that push is misconfigured. + + +
+ +
+ requestLimitExceeded + → const int + + +
+
+ Error code indicating that the application has exceeded its request +limit. + + +
+ +
+ scriptFailed + → const int + + +
+
+ Error code indicating that a Cloud Code script failed. + + +
+ +
+ sessionMissing + → const int + + +
+
+ Error code indicating that a user object without a valid session could +not be altered. + + +
+ +
+ timeout + → const int + + +
+
+ Error code indicating that the request timed out on the server. Typically +this indicates that the request is too expensive to run. + + +
+ +
+ unsavedFileError + → const int + + +
+
+ Error code indicating an unsaved file. + + +
+ +
+ unsupportedService + → const int + + +
+
+ Error code indicating that a service being linked (e.g. Facebook or +Twitter) is unsupported. + + +
+ +
+ usernameMissing + → const int + + +
+
+ Error code indicating that the username is missing or empty. + + +
+ +
+ usernameTaken + → const int + + +
+
+ Error code indicating that the username has already been taken. + + +
+ +
+ validationError + → const int + + +
+
+ Error code indicating that a Cloud Code validation failed. + + +
+ +
+ xDomainRequest + → const int + + +
+
+ Error code indicating a real error code is unavailable because +we had to use an XDomainRequest object to allow CORS requests in +Internet Explorer, which strips the body from HTTP responses that have +a non-2XX status code. + + +
+ +
+
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/ParseError.html b/dart/flutter_parse_sdk/ParseError/ParseError.html new file mode 100644 index 000000000..ad581ae02 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/ParseError.html @@ -0,0 +1,137 @@ + + + + + + + + ParseError constructor - ParseError - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseError
+ +
+ +
+
+
+ +
+
+

ParseError constructor +

+ +
+ + ParseError(
  1. {int code = otherCause,
  2. +
  3. String message = 'OtherCause',
  4. +
  5. Exception? exception,
  6. +
  7. bool debug = false}
  8. +
) +
+ + + + + +
+

Implementation

+
ParseError(
+    {this.code = otherCause,
+    this.message = 'OtherCause',
+    this.exception,
+    bool debug = false}) {
+  type = _exceptions[code];
+  if (debug) {
+    print(toString());
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/accountAlreadyLinked-constant.html b/dart/flutter_parse_sdk/ParseError/accountAlreadyLinked-constant.html new file mode 100644 index 000000000..2eede3fb4 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/accountAlreadyLinked-constant.html @@ -0,0 +1,129 @@ + + + + + + + + accountAlreadyLinked constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
accountAlreadyLinked
+ +
+ +
+
+
+ +
+
+

accountAlreadyLinked constant +

+ +
+ + int + const accountAlreadyLinked + + +
+ +
+

Error code indicating that an an account being linked is already linked +to another user.

+
+ + +
+

Implementation

+
static const int accountAlreadyLinked = 208;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/aggregateError-constant.html b/dart/flutter_parse_sdk/ParseError/aggregateError-constant.html new file mode 100644 index 000000000..f1967a77d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/aggregateError-constant.html @@ -0,0 +1,130 @@ + + + + + + + + aggregateError constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
aggregateError
+ +
+ +
+
+
+ +
+
+

aggregateError constant +

+ +
+ + int + const aggregateError + + +
+ +
+

Error code indicating that there were multiple errors. Aggregate errors +have an "errors" property, which is an array of error objects with more +detail about each error that occurred.

+
+ + +
+

Implementation

+
static const int aggregateError = 600;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/cacheMiss-constant.html b/dart/flutter_parse_sdk/ParseError/cacheMiss-constant.html new file mode 100644 index 000000000..2664fe3cc --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/cacheMiss-constant.html @@ -0,0 +1,128 @@ + + + + + + + + cacheMiss constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
cacheMiss
+ +
+ +
+
+
+ +
+
+

cacheMiss constant +

+ +
+ + int + const cacheMiss + + +
+ +
+

Error code indicating the result was not found in the cache.

+
+ + +
+

Implementation

+
static const int cacheMiss = 120;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/code.html b/dart/flutter_parse_sdk/ParseError/code.html new file mode 100644 index 000000000..155105c7d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/code.html @@ -0,0 +1,125 @@ + + + + + + + + code property - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
code
+ +
+ +
+
+
+ +
+
+

code property +

+ +
+ + int + code +
final
+ +
+ + + +
+

Implementation

+
final int code;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/commandUnavailable-constant.html b/dart/flutter_parse_sdk/ParseError/commandUnavailable-constant.html new file mode 100644 index 000000000..c845922f8 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/commandUnavailable-constant.html @@ -0,0 +1,129 @@ + + + + + + + + commandUnavailable constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
commandUnavailable
+ +
+ +
+
+
+ +
+
+

commandUnavailable constant +

+ +
+ + int + const commandUnavailable + + +
+ +
+

Error code indicating that the feature you tried to access is only +available internally for testing purposes.

+
+ + +
+

Implementation

+
static const int commandUnavailable = 108;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/connectionFailed-constant.html b/dart/flutter_parse_sdk/ParseError/connectionFailed-constant.html new file mode 100644 index 000000000..a65822565 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/connectionFailed-constant.html @@ -0,0 +1,128 @@ + + + + + + + + connectionFailed constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
connectionFailed
+ +
+ +
+
+
+ +
+
+

connectionFailed constant +

+ +
+ + int + const connectionFailed + + +
+ +
+

Error code indicating the connection to the Parse servers failed.

+
+ + +
+

Implementation

+
static const int connectionFailed = 100;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/duplicateRequest-constant.html b/dart/flutter_parse_sdk/ParseError/duplicateRequest-constant.html new file mode 100644 index 000000000..08995994d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/duplicateRequest-constant.html @@ -0,0 +1,129 @@ + + + + + + + + duplicateRequest constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
duplicateRequest
+ +
+ +
+
+
+ +
+
+

duplicateRequest constant +

+ +
+ + int + const duplicateRequest + + +
+ +
+

Error code indicating that the request was a duplicate and has been discarded due to +idempotency rules.

+
+ + +
+

Implementation

+
static const int duplicateRequest = 159;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/duplicateValue-constant.html b/dart/flutter_parse_sdk/ParseError/duplicateValue-constant.html new file mode 100644 index 000000000..484aef0be --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/duplicateValue-constant.html @@ -0,0 +1,129 @@ + + + + + + + + duplicateValue constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
duplicateValue
+ +
+ +
+
+
+ +
+
+

duplicateValue constant +

+ +
+ + int + const duplicateValue + + +
+ +
+

Error code indicating that a unique field was given a value that is +already taken.

+
+ + +
+

Implementation

+
static const int duplicateValue = 137;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/emailMissing-constant.html b/dart/flutter_parse_sdk/ParseError/emailMissing-constant.html new file mode 100644 index 000000000..65427abd8 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/emailMissing-constant.html @@ -0,0 +1,128 @@ + + + + + + + + emailMissing constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
emailMissing
+ +
+ +
+
+
+ +
+
+

emailMissing constant +

+ +
+ + int + const emailMissing + + +
+ +
+

Error code indicating that the email is missing, but must be specified.

+
+ + +
+

Implementation

+
static const int emailMissing = 204;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/emailNotFound-constant.html b/dart/flutter_parse_sdk/ParseError/emailNotFound-constant.html new file mode 100644 index 000000000..39ef0f9a3 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/emailNotFound-constant.html @@ -0,0 +1,128 @@ + + + + + + + + emailNotFound constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
emailNotFound
+ +
+ +
+
+
+ +
+
+

emailNotFound constant +

+ +
+ + int + const emailNotFound + + +
+ +
+

Error code indicating that a user with the specified email was not found.

+
+ + +
+

Implementation

+
static const int emailNotFound = 205;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/emailTaken-constant.html b/dart/flutter_parse_sdk/ParseError/emailTaken-constant.html new file mode 100644 index 000000000..7d7b74f9d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/emailTaken-constant.html @@ -0,0 +1,128 @@ + + + + + + + + emailTaken constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
emailTaken
+ +
+ +
+
+
+ +
+
+

emailTaken constant +

+ +
+ + int + const emailTaken + + +
+ +
+

Error code indicating that the email has already been taken.

+
+ + +
+

Implementation

+
static const int emailTaken = 203;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/exceededQuota-constant.html b/dart/flutter_parse_sdk/ParseError/exceededQuota-constant.html new file mode 100644 index 000000000..e52a1d933 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/exceededQuota-constant.html @@ -0,0 +1,129 @@ + + + + + + + + exceededQuota constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
exceededQuota
+ +
+ +
+
+
+ +
+
+

exceededQuota constant +

+ +
+ + int + const exceededQuota + + +
+ +
+

Error code indicating that an application quota was exceeded. Upgrade to +resolve.

+
+ + +
+

Implementation

+
static const int exceededQuota = 140;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/exception.html b/dart/flutter_parse_sdk/ParseError/exception.html new file mode 100644 index 000000000..808367f92 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/exception.html @@ -0,0 +1,125 @@ + + + + + + + + exception property - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
exception
+ +
+ +
+
+
+ +
+
+

exception property +

+ +
+ + Exception? + exception +
final
+ +
+ + + +
+

Implementation

+
final Exception? exception;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/fileDeleteError-constant.html b/dart/flutter_parse_sdk/ParseError/fileDeleteError-constant.html new file mode 100644 index 000000000..31d027866 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/fileDeleteError-constant.html @@ -0,0 +1,128 @@ + + + + + + + + fileDeleteError constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
fileDeleteError
+ +
+ +
+
+
+ +
+
+

fileDeleteError constant +

+ +
+ + int + const fileDeleteError + + +
+ +
+

Error code indicating an error deleting a file.

+
+ + +
+

Implementation

+
static const int fileDeleteError = 153;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/fileDeleteUnnamedError-constant.html b/dart/flutter_parse_sdk/ParseError/fileDeleteUnnamedError-constant.html new file mode 100644 index 000000000..e2fba0106 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/fileDeleteUnnamedError-constant.html @@ -0,0 +1,128 @@ + + + + + + + + fileDeleteUnnamedError constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
fileDeleteUnnamedError
+ +
+ +
+
+
+ +
+
+

fileDeleteUnnamedError constant +

+ +
+ + int + const fileDeleteUnnamedError + + +
+ +
+

Error code indicating an error deleting an unnamed file.

+
+ + +
+

Implementation

+
static const int fileDeleteUnnamedError = 161;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/fileReadError-constant.html b/dart/flutter_parse_sdk/ParseError/fileReadError-constant.html new file mode 100644 index 000000000..fd079bd2c --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/fileReadError-constant.html @@ -0,0 +1,128 @@ + + + + + + + + fileReadError constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
fileReadError
+ +
+ +
+
+
+ +
+
+

fileReadError constant +

+ +
+ + int + const fileReadError + + +
+ +
+

Error code indicating the client was unable to read an input file.

+
+ + +
+

Implementation

+
static const int fileReadError = 601;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/fileSaveError-constant.html b/dart/flutter_parse_sdk/ParseError/fileSaveError-constant.html new file mode 100644 index 000000000..296ebbd14 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/fileSaveError-constant.html @@ -0,0 +1,128 @@ + + + + + + + + fileSaveError constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
fileSaveError
+ +
+ +
+
+
+ +
+
+

fileSaveError constant +

+ +
+ + int + const fileSaveError + + +
+ +
+

Error code indicating an error saving a file.

+
+ + +
+

Implementation

+
static const int fileSaveError = 130;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/fileTooLarge-constant.html b/dart/flutter_parse_sdk/ParseError/fileTooLarge-constant.html new file mode 100644 index 000000000..dec7aae2a --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/fileTooLarge-constant.html @@ -0,0 +1,128 @@ + + + + + + + + fileTooLarge constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
fileTooLarge
+ +
+ +
+
+
+ +
+
+

fileTooLarge constant +

+ +
+ + int + const fileTooLarge + + +
+ +
+

Error code indicating a file that was too large.

+
+ + +
+

Implementation

+
static const int fileTooLarge = 129;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/incorrectType-constant.html b/dart/flutter_parse_sdk/ParseError/incorrectType-constant.html new file mode 100644 index 000000000..fd0a64d3a --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/incorrectType-constant.html @@ -0,0 +1,128 @@ + + + + + + + + incorrectType constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
incorrectType
+ +
+ +
+
+
+ +
+
+

incorrectType constant +

+ +
+ + int + const incorrectType + + +
+ +
+

Error code indicating that a field was set to an inconsistent type.

+
+ + +
+

Implementation

+
static const int incorrectType = 111;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/internalServerError-constant.html b/dart/flutter_parse_sdk/ParseError/internalServerError-constant.html new file mode 100644 index 000000000..e2e3159fa --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/internalServerError-constant.html @@ -0,0 +1,128 @@ + + + + + + + + internalServerError constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
internalServerError
+ +
+ +
+
+
+ +
+
+

internalServerError constant +

+ +
+ + int + const internalServerError + + +
+ +
+

Error code indicating that something has gone wrong with the server.

+
+ + +
+

Implementation

+
static const int internalServerError = 1;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidAcl-constant.html b/dart/flutter_parse_sdk/ParseError/invalidAcl-constant.html new file mode 100644 index 000000000..f0a21d75d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidAcl-constant.html @@ -0,0 +1,128 @@ + + + + + + + + invalidAcl constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidAcl
+ +
+ +
+
+
+ +
+
+

invalidAcl constant +

+ +
+ + int + const invalidAcl + + +
+ +
+

Error code indicating an invalid ACL was provided.

+
+ + +
+

Implementation

+
static const int invalidAcl = 123;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidChannelName-constant.html b/dart/flutter_parse_sdk/ParseError/invalidChannelName-constant.html new file mode 100644 index 000000000..22095378f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidChannelName-constant.html @@ -0,0 +1,130 @@ + + + + + + + + invalidChannelName constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidChannelName
+ +
+ +
+
+
+ +
+
+

invalidChannelName constant +

+ +
+ + int + const invalidChannelName + + +
+ +
+

Error code indicating an invalid channel name. A channel name is either +an empty string (the broadcast channel) or contains only a-zA-Z0-9_ +characters and starts with a letter.

+
+ + +
+

Implementation

+
static const int invalidChannelName = 112;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidClassName-constant.html b/dart/flutter_parse_sdk/ParseError/invalidClassName-constant.html new file mode 100644 index 000000000..e62151ff5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidClassName-constant.html @@ -0,0 +1,130 @@ + + + + + + + + invalidClassName constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidClassName
+ +
+ +
+
+
+ +
+
+

invalidClassName constant +

+ +
+ + int + const invalidClassName + + +
+ +
+

Error code indicating a missing or invalid classname. Classnames are +case-sensitive. They must start with a letter, and a-zA-Z0-9_ are the +only valid characters.

+
+ + +
+

Implementation

+
static const int invalidClassName = 103;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidContentLength-constant.html b/dart/flutter_parse_sdk/ParseError/invalidContentLength-constant.html new file mode 100644 index 000000000..42df3c512 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidContentLength-constant.html @@ -0,0 +1,128 @@ + + + + + + + + invalidContentLength constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidContentLength
+ +
+ +
+
+
+ +
+
+

invalidContentLength constant +

+ +
+ + int + const invalidContentLength + + +
+ +
+

Error code indicating an invalid content length.

+
+ + +
+

Implementation

+
static const int invalidContentLength = 128;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidEmailAddress-constant.html b/dart/flutter_parse_sdk/ParseError/invalidEmailAddress-constant.html new file mode 100644 index 000000000..570259752 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidEmailAddress-constant.html @@ -0,0 +1,128 @@ + + + + + + + + invalidEmailAddress constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidEmailAddress
+ +
+ +
+
+
+ +
+
+

invalidEmailAddress constant +

+ +
+ + int + const invalidEmailAddress + + +
+ +
+

Error code indicating that the email address was invalid.

+
+ + +
+

Implementation

+
static const int invalidEmailAddress = 125;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidEventName-constant.html b/dart/flutter_parse_sdk/ParseError/invalidEventName-constant.html new file mode 100644 index 000000000..aa957cfd5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidEventName-constant.html @@ -0,0 +1,128 @@ + + + + + + + + invalidEventName constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidEventName
+ +
+ +
+
+
+ +
+
+

invalidEventName constant +

+ +
+ + int + const invalidEventName + + +
+ +
+

Error code indicating an invalid event name.

+
+ + +
+

Implementation

+
static const int invalidEventName = 160;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidFileName-constant.html b/dart/flutter_parse_sdk/ParseError/invalidFileName-constant.html new file mode 100644 index 000000000..bb31c48e6 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidFileName-constant.html @@ -0,0 +1,130 @@ + + + + + + + + invalidFileName constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidFileName
+ +
+ +
+
+
+ +
+
+

invalidFileName constant +

+ +
+ + int + const invalidFileName + + +
+ +
+

Error code indicating that an invalid filename was used for ParseFile. +A valid file name contains only a-zA-Z0-9_. characters and is between 1 +and 128 characters.

+
+ + +
+

Implementation

+
static const int invalidFileName = 122;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidImageData-constant.html b/dart/flutter_parse_sdk/ParseError/invalidImageData-constant.html new file mode 100644 index 000000000..009999cb6 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidImageData-constant.html @@ -0,0 +1,128 @@ + + + + + + + + invalidImageData constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidImageData
+ +
+ +
+
+
+ +
+
+

invalidImageData constant +

+ +
+ + int + const invalidImageData + + +
+ +
+

Error code indicating that invalid image data was provided.

+
+ + +
+

Implementation

+
static const int invalidImageData = 143;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidJson-constant.html b/dart/flutter_parse_sdk/ParseError/invalidJson-constant.html new file mode 100644 index 000000000..309e2eb67 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidJson-constant.html @@ -0,0 +1,130 @@ + + + + + + + + invalidJson constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidJson
+ +
+ +
+
+
+ +
+
+

invalidJson constant +

+ +
+ + int + const invalidJson + + +
+ +
+

Error code indicating that badly formed JSON was received upstream. This +either indicates you have done something unusual with modifying how +things encode to JSON, or the network is failing badly.

+
+ + +
+

Implementation

+
static const int invalidJson = 107;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidKeyName-constant.html b/dart/flutter_parse_sdk/ParseError/invalidKeyName-constant.html new file mode 100644 index 000000000..aa486a913 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidKeyName-constant.html @@ -0,0 +1,129 @@ + + + + + + + + invalidKeyName constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidKeyName
+ +
+ +
+
+
+ +
+
+

invalidKeyName constant +

+ +
+ + int + const invalidKeyName + + +
+ +
+

Error code indicating an invalid key name. Keys are case-sensitive. They +must start with a letter, and a-zA-Z0-9_ are the only valid characters.

+
+ + +
+

Implementation

+
static const int invalidKeyName = 105;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidLinkedSession-constant.html b/dart/flutter_parse_sdk/ParseError/invalidLinkedSession-constant.html new file mode 100644 index 000000000..76843dd3f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidLinkedSession-constant.html @@ -0,0 +1,129 @@ + + + + + + + + invalidLinkedSession constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidLinkedSession
+ +
+ +
+
+
+ +
+
+

invalidLinkedSession constant +

+ +
+ + int + const invalidLinkedSession + + +
+ +
+

Error code indicating that a user with a linked (e.g. Facebook) account +has an invalid session.

+
+ + +
+

Implementation

+
static const int invalidLinkedSession = 251;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidNestedKey-constant.html b/dart/flutter_parse_sdk/ParseError/invalidNestedKey-constant.html new file mode 100644 index 000000000..60cca5fde --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidNestedKey-constant.html @@ -0,0 +1,129 @@ + + + + + + + + invalidNestedKey constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidNestedKey
+ +
+ +
+
+
+ +
+
+

invalidNestedKey constant +

+ +
+ + int + const invalidNestedKey + + +
+ +
+

Error code indicating that an invalid key was used in a nested +JSONObject.

+
+ + +
+

Implementation

+
static const int invalidNestedKey = 121;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidPointer-constant.html b/dart/flutter_parse_sdk/ParseError/invalidPointer-constant.html new file mode 100644 index 000000000..d3f7bf590 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidPointer-constant.html @@ -0,0 +1,129 @@ + + + + + + + + invalidPointer constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidPointer
+ +
+ +
+
+
+ +
+
+

invalidPointer constant +

+ +
+ + int + const invalidPointer + + +
+ +
+

Error code indicating a malformed pointer. You should not see this unless +you have been mucking about changing internal Parse code.

+
+ + +
+

Implementation

+
static const int invalidPointer = 106;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidPushTimeError-constant.html b/dart/flutter_parse_sdk/ParseError/invalidPushTimeError-constant.html new file mode 100644 index 000000000..15494dbb2 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidPushTimeError-constant.html @@ -0,0 +1,128 @@ + + + + + + + + invalidPushTimeError constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidPushTimeError
+ +
+ +
+
+
+ +
+
+

invalidPushTimeError constant +

+ +
+ + int + const invalidPushTimeError + + +
+ +
+

Error code indicating an invalid push time.

+
+ + +
+

Implementation

+
static const int invalidPushTimeError = 152;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidQuery-constant.html b/dart/flutter_parse_sdk/ParseError/invalidQuery-constant.html new file mode 100644 index 000000000..4dd2c3ddf --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidQuery-constant.html @@ -0,0 +1,129 @@ + + + + + + + + invalidQuery constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidQuery
+ +
+ +
+
+
+ +
+
+

invalidQuery constant +

+ +
+ + int + const invalidQuery + + +
+ +
+

Error code indicating you tried to query with a datatype that doesn't +support it, like exact matching an array or object.

+
+ + +
+

Implementation

+
static const int invalidQuery = 102;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidRoleName-constant.html b/dart/flutter_parse_sdk/ParseError/invalidRoleName-constant.html new file mode 100644 index 000000000..e76821c65 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidRoleName-constant.html @@ -0,0 +1,128 @@ + + + + + + + + invalidRoleName constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidRoleName
+ +
+ +
+
+
+ +
+
+

invalidRoleName constant +

+ +
+ + int + const invalidRoleName + + +
+ +
+

Error code indicating that a role's name is invalid.

+
+ + +
+

Implementation

+
static const int invalidRoleName = 139;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidSchemaOperation-constant.html b/dart/flutter_parse_sdk/ParseError/invalidSchemaOperation-constant.html new file mode 100644 index 000000000..9b7480d7e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidSchemaOperation-constant.html @@ -0,0 +1,128 @@ + + + + + + + + invalidSchemaOperation constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidSchemaOperation
+ +
+ +
+
+
+ +
+
+

invalidSchemaOperation constant +

+ +
+ + int + const invalidSchemaOperation + + +
+ +
+

Error code indicating an invalid operation occured on schema

+
+ + +
+

Implementation

+
static const int invalidSchemaOperation = 255;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidSessionToken-constant.html b/dart/flutter_parse_sdk/ParseError/invalidSessionToken-constant.html new file mode 100644 index 000000000..8dd90c6d5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidSessionToken-constant.html @@ -0,0 +1,128 @@ + + + + + + + + invalidSessionToken constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidSessionToken
+ +
+ +
+
+
+ +
+
+

invalidSessionToken constant +

+ +
+ + int + const invalidSessionToken + + +
+ +
+

Error code indicating that the current session token is invalid.

+
+ + +
+

Implementation

+
static const int invalidSessionToken = 209;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/invalidValue-constant.html b/dart/flutter_parse_sdk/ParseError/invalidValue-constant.html new file mode 100644 index 000000000..987b6908d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/invalidValue-constant.html @@ -0,0 +1,128 @@ + + + + + + + + invalidValue constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
invalidValue
+ +
+ +
+
+
+ +
+
+

invalidValue constant +

+ +
+ + int + const invalidValue + + +
+ +
+

Error code indicating that a field had an invalid value.

+
+ + +
+

Implementation

+
static const int invalidValue = 162;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/linkedIdMissing-constant.html b/dart/flutter_parse_sdk/ParseError/linkedIdMissing-constant.html new file mode 100644 index 000000000..113bc1378 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/linkedIdMissing-constant.html @@ -0,0 +1,129 @@ + + + + + + + + linkedIdMissing constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
linkedIdMissing
+ +
+ +
+
+
+ +
+
+

linkedIdMissing constant +

+ +
+ + int + const linkedIdMissing + + +
+ +
+

Error code indicating that a user cannot be linked to an account because +that account's id could not be found.

+
+ + +
+

Implementation

+
static const int linkedIdMissing = 250;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/message.html b/dart/flutter_parse_sdk/ParseError/message.html new file mode 100644 index 000000000..92fd8c444 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/message.html @@ -0,0 +1,125 @@ + + + + + + + + message property - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
message
+ +
+ +
+
+
+ +
+
+

message property +

+ +
+ + String + message +
final
+ +
+ + + +
+

Implementation

+
final String message;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/mfaError-constant.html b/dart/flutter_parse_sdk/ParseError/mfaError-constant.html new file mode 100644 index 000000000..27a45d964 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/mfaError-constant.html @@ -0,0 +1,128 @@ + + + + + + + + mfaError constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
mfaError
+ +
+ +
+
+
+ +
+
+

mfaError constant +

+ +
+ + int + const mfaError + + +
+ +
+

Error code indicating an error enabling or verifying MFA

+
+ + +
+

Implementation

+
static const int mfaError = 210;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/mfaTokenRequired-constant.html b/dart/flutter_parse_sdk/ParseError/mfaTokenRequired-constant.html new file mode 100644 index 000000000..98390878f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/mfaTokenRequired-constant.html @@ -0,0 +1,128 @@ + + + + + + + + mfaTokenRequired constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
mfaTokenRequired
+ +
+ +
+
+
+ +
+
+

mfaTokenRequired constant +

+ +
+ + int + const mfaTokenRequired + + +
+ +
+

Error code indicating that a valid MFA token must be provided

+
+ + +
+

Implementation

+
static const int mfaTokenRequired = 211;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/missingContentLength-constant.html b/dart/flutter_parse_sdk/ParseError/missingContentLength-constant.html new file mode 100644 index 000000000..d4fe55dd3 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/missingContentLength-constant.html @@ -0,0 +1,128 @@ + + + + + + + + missingContentLength constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
missingContentLength
+ +
+ +
+
+
+ +
+
+

missingContentLength constant +

+ +
+ + int + const missingContentLength + + +
+ +
+

Error code indicating a missing content length.

+
+ + +
+

Implementation

+
static const int missingContentLength = 127;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/missingContentType-constant.html b/dart/flutter_parse_sdk/ParseError/missingContentType-constant.html new file mode 100644 index 000000000..6a5b6412a --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/missingContentType-constant.html @@ -0,0 +1,128 @@ + + + + + + + + missingContentType constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
missingContentType
+ +
+ +
+
+
+ +
+
+

missingContentType constant +

+ +
+ + int + const missingContentType + + +
+ +
+

Error code indicating a missing content type.

+
+ + +
+

Implementation

+
static const int missingContentType = 126;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/missingObjectId-constant.html b/dart/flutter_parse_sdk/ParseError/missingObjectId-constant.html new file mode 100644 index 000000000..d4a314555 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/missingObjectId-constant.html @@ -0,0 +1,128 @@ + + + + + + + + missingObjectId constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
missingObjectId
+ +
+ +
+
+
+ +
+
+

missingObjectId constant +

+ +
+ + int + const missingObjectId + + +
+ +
+

Error code indicating an unspecified object id.

+
+ + +
+

Implementation

+
static const int missingObjectId = 104;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/mustCreateUserThroughSignup-constant.html b/dart/flutter_parse_sdk/ParseError/mustCreateUserThroughSignup-constant.html new file mode 100644 index 000000000..f8b0f332e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/mustCreateUserThroughSignup-constant.html @@ -0,0 +1,128 @@ + + + + + + + + mustCreateUserThroughSignup constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
mustCreateUserThroughSignup
+ +
+ +
+
+
+ +
+
+

mustCreateUserThroughSignup constant +

+ +
+ + int + const mustCreateUserThroughSignup + + +
+ +
+

Error code indicating that a user can only be created through signup.

+
+ + +
+

Implementation

+
static const int mustCreateUserThroughSignup = 207;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/notInitialized-constant.html b/dart/flutter_parse_sdk/ParseError/notInitialized-constant.html new file mode 100644 index 000000000..a42594493 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/notInitialized-constant.html @@ -0,0 +1,128 @@ + + + + + + + + notInitialized constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
notInitialized
+ +
+ +
+
+
+ +
+
+

notInitialized constant +

+ +
+ + int + const notInitialized + + +
+ +
+

You must call Parse().initialize before using the Parse library.

+
+ + +
+

Implementation

+
static const int notInitialized = 109;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/objectNotFound-constant.html b/dart/flutter_parse_sdk/ParseError/objectNotFound-constant.html new file mode 100644 index 000000000..b7cc2afaf --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/objectNotFound-constant.html @@ -0,0 +1,128 @@ + + + + + + + + objectNotFound constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
objectNotFound
+ +
+ +
+
+
+ +
+
+

objectNotFound constant +

+ +
+ + int + const objectNotFound + + +
+ +
+

Error code indicating the specified object doesn't exist.

+
+ + +
+

Implementation

+
static const int objectNotFound = 101;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/objectTooLarge-constant.html b/dart/flutter_parse_sdk/ParseError/objectTooLarge-constant.html new file mode 100644 index 000000000..9d81dc89e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/objectTooLarge-constant.html @@ -0,0 +1,128 @@ + + + + + + + + objectTooLarge constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
objectTooLarge
+ +
+ +
+
+
+ +
+
+

objectTooLarge constant +

+ +
+ + int + const objectTooLarge + + +
+ +
+

Error code indicating that the object is too large.

+
+ + +
+

Implementation

+
static const int objectTooLarge = 116;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/operationForbidden-constant.html b/dart/flutter_parse_sdk/ParseError/operationForbidden-constant.html new file mode 100644 index 000000000..e907b1e99 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/operationForbidden-constant.html @@ -0,0 +1,128 @@ + + + + + + + + operationForbidden constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
operationForbidden
+ +
+ +
+
+
+ +
+
+

operationForbidden constant +

+ +
+ + int + const operationForbidden + + +
+ +
+

Error code indicating that the operation isn't allowed for clients.

+
+ + +
+

Implementation

+
static const int operationForbidden = 119;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/otherCause-constant.html b/dart/flutter_parse_sdk/ParseError/otherCause-constant.html new file mode 100644 index 000000000..122fb8157 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/otherCause-constant.html @@ -0,0 +1,128 @@ + + + + + + + + otherCause constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
otherCause
+ +
+ +
+
+
+ +
+
+

otherCause constant +

+ +
+ + int + const otherCause + + +
+ +
+

Error code indicating some error other than those enumerated here.

+
+ + +
+

Implementation

+
static const int otherCause = -1;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/passwordMissing-constant.html b/dart/flutter_parse_sdk/ParseError/passwordMissing-constant.html new file mode 100644 index 000000000..1db97047a --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/passwordMissing-constant.html @@ -0,0 +1,128 @@ + + + + + + + + passwordMissing constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
passwordMissing
+ +
+ +
+
+
+ +
+
+

passwordMissing constant +

+ +
+ + int + const passwordMissing + + +
+ +
+

Error code indicating that the password is missing or empty.

+
+ + +
+

Implementation

+
static const int passwordMissing = 201;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/pushMisconfigured-constant.html b/dart/flutter_parse_sdk/ParseError/pushMisconfigured-constant.html new file mode 100644 index 000000000..9490ff8ff --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/pushMisconfigured-constant.html @@ -0,0 +1,128 @@ + + + + + + + + pushMisconfigured constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
pushMisconfigured
+ +
+ +
+
+
+ +
+
+

pushMisconfigured constant +

+ +
+ + int + const pushMisconfigured + + +
+ +
+

Error code indicating that push is misconfigured.

+
+ + +
+

Implementation

+
static const int pushMisconfigured = 115;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/requestLimitExceeded-constant.html b/dart/flutter_parse_sdk/ParseError/requestLimitExceeded-constant.html new file mode 100644 index 000000000..5a798a1f3 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/requestLimitExceeded-constant.html @@ -0,0 +1,129 @@ + + + + + + + + requestLimitExceeded constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
requestLimitExceeded
+ +
+ +
+
+
+ +
+
+

requestLimitExceeded constant +

+ +
+ + int + const requestLimitExceeded + + +
+ +
+

Error code indicating that the application has exceeded its request +limit.

+
+ + +
+

Implementation

+
static const int requestLimitExceeded = 155;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/scriptFailed-constant.html b/dart/flutter_parse_sdk/ParseError/scriptFailed-constant.html new file mode 100644 index 000000000..1dca0e883 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/scriptFailed-constant.html @@ -0,0 +1,128 @@ + + + + + + + + scriptFailed constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
scriptFailed
+ +
+ +
+
+
+ +
+
+

scriptFailed constant +

+ +
+ + int + const scriptFailed + + +
+ +
+

Error code indicating that a Cloud Code script failed.

+
+ + +
+

Implementation

+
static const int scriptFailed = 141;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/sessionMissing-constant.html b/dart/flutter_parse_sdk/ParseError/sessionMissing-constant.html new file mode 100644 index 000000000..1283a795d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/sessionMissing-constant.html @@ -0,0 +1,129 @@ + + + + + + + + sessionMissing constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
sessionMissing
+ +
+ +
+
+
+ +
+
+

sessionMissing constant +

+ +
+ + int + const sessionMissing + + +
+ +
+

Error code indicating that a user object without a valid session could +not be altered.

+
+ + +
+

Implementation

+
static const int sessionMissing = 206;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/timeout-constant.html b/dart/flutter_parse_sdk/ParseError/timeout-constant.html new file mode 100644 index 000000000..57d918e77 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/timeout-constant.html @@ -0,0 +1,129 @@ + + + + + + + + timeout constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
timeout
+ +
+ +
+
+
+ +
+
+

timeout constant +

+ +
+ + int + const timeout + + +
+ +
+

Error code indicating that the request timed out on the server. Typically +this indicates that the request is too expensive to run.

+
+ + +
+

Implementation

+
static const int timeout = 124;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/toString.html b/dart/flutter_parse_sdk/ParseError/toString.html new file mode 100644 index 000000000..92f69b807 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/toString.html @@ -0,0 +1,154 @@ + + + + + + + + toString method - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
toString
+ +
+ +
+
+
+ +
+
+

toString method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +String +toString() + +
override
+ +
+ +
+

A string representation of this object.

+

Some classes have a default textual representation, +often paired with a static parse function (like int.parse). +These classes will provide the textual representation as +their string representation.

+

Other classes have no meaningful textual representation +that a program will care about. +Such classes will typically override toString to provide +useful information when inspecting the object, +mainly for debugging or logging.

+
+ + + +
+

Implementation

+
@override
+String toString() {
+  String exceptionString = ' \n';
+  exceptionString += '----';
+  exceptionString += '\nParseException (Type: $type) :';
+  exceptionString += '\nCode: $code';
+  exceptionString += '\nMessage: $message';
+  exceptionString += '----';
+  return exceptionString;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/type.html b/dart/flutter_parse_sdk/ParseError/type.html new file mode 100644 index 000000000..fe11cf11e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/type.html @@ -0,0 +1,125 @@ + + + + + + + + type property - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
type
+ +
+ +
+
+
+ +
+
+

type property +

+ +
+ + String? + type +
getter/setter pair
+ +
+ + + +
+

Implementation

+
String? type;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/unsavedFileError-constant.html b/dart/flutter_parse_sdk/ParseError/unsavedFileError-constant.html new file mode 100644 index 000000000..0bb958032 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/unsavedFileError-constant.html @@ -0,0 +1,128 @@ + + + + + + + + unsavedFileError constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
unsavedFileError
+ +
+ +
+
+
+ +
+
+

unsavedFileError constant +

+ +
+ + int + const unsavedFileError + + +
+ +
+

Error code indicating an unsaved file.

+
+ + +
+

Implementation

+
static const int unsavedFileError = 151;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/unsupportedService-constant.html b/dart/flutter_parse_sdk/ParseError/unsupportedService-constant.html new file mode 100644 index 000000000..08f32c9b9 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/unsupportedService-constant.html @@ -0,0 +1,129 @@ + + + + + + + + unsupportedService constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
unsupportedService
+ +
+ +
+
+
+ +
+
+

unsupportedService constant +

+ +
+ + int + const unsupportedService + + +
+ +
+

Error code indicating that a service being linked (e.g. Facebook or +Twitter) is unsupported.

+
+ + +
+

Implementation

+
static const int unsupportedService = 252;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/usernameMissing-constant.html b/dart/flutter_parse_sdk/ParseError/usernameMissing-constant.html new file mode 100644 index 000000000..9089d87cd --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/usernameMissing-constant.html @@ -0,0 +1,128 @@ + + + + + + + + usernameMissing constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
usernameMissing
+ +
+ +
+
+
+ +
+
+

usernameMissing constant +

+ +
+ + int + const usernameMissing + + +
+ +
+

Error code indicating that the username is missing or empty.

+
+ + +
+

Implementation

+
static const int usernameMissing = 200;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/usernameTaken-constant.html b/dart/flutter_parse_sdk/ParseError/usernameTaken-constant.html new file mode 100644 index 000000000..a21f697c8 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/usernameTaken-constant.html @@ -0,0 +1,128 @@ + + + + + + + + usernameTaken constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
usernameTaken
+ +
+ +
+
+
+ +
+
+

usernameTaken constant +

+ +
+ + int + const usernameTaken + + +
+ +
+

Error code indicating that the username has already been taken.

+
+ + +
+

Implementation

+
static const int usernameTaken = 202;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/validationError-constant.html b/dart/flutter_parse_sdk/ParseError/validationError-constant.html new file mode 100644 index 000000000..f6ec400de --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/validationError-constant.html @@ -0,0 +1,128 @@ + + + + + + + + validationError constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
validationError
+ +
+ +
+
+
+ +
+
+

validationError constant +

+ +
+ + int + const validationError + + +
+ +
+

Error code indicating that a Cloud Code validation failed.

+
+ + +
+

Implementation

+
static const int validationError = 142;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseError/xDomainRequest-constant.html b/dart/flutter_parse_sdk/ParseError/xDomainRequest-constant.html new file mode 100644 index 000000000..c035c8e7c --- /dev/null +++ b/dart/flutter_parse_sdk/ParseError/xDomainRequest-constant.html @@ -0,0 +1,131 @@ + + + + + + + + xDomainRequest constant - ParseError class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
xDomainRequest
+ +
+ +
+
+
+ +
+
+

xDomainRequest constant +

+ +
+ + int + const xDomainRequest + + +
+ +
+

Error code indicating a real error code is unavailable because +we had to use an XDomainRequest object to allow CORS requests in +Internet Explorer, which strips the body from HTTP responses that have +a non-2XX status code.

+
+ + +
+

Implementation

+
static const int xDomainRequest = 602;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseException-class-sidebar.html b/dart/flutter_parse_sdk/ParseException-class-sidebar.html new file mode 100644 index 000000000..39bd813d5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseException-class-sidebar.html @@ -0,0 +1,26 @@ +
    + +
  1. Constructors
  2. +
  3. ParseException
  4. + + + +
  5. + Properties +
  6. +
  7. hashCode
  8. +
  9. runtimeType
  10. + +
  11. Methods
  12. +
  13. noSuchMethod
  14. +
  15. toString
  16. + +
  17. Operators
  18. +
  19. operator ==
  20. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseException-class.html b/dart/flutter_parse_sdk/ParseException-class.html new file mode 100644 index 000000000..d778358fa --- /dev/null +++ b/dart/flutter_parse_sdk/ParseException-class.html @@ -0,0 +1,241 @@ + + + + + + + + ParseException class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseException
+ +
+ +
+
+
+ +
+
+

ParseException class + abstract + +

+ + + + +
+
+ + + +
Implemented types
+
+ +
+ + +
Implementers
+
+ + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseException() +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseException/ParseException.html b/dart/flutter_parse_sdk/ParseException/ParseException.html new file mode 100644 index 000000000..af7b566ee --- /dev/null +++ b/dart/flutter_parse_sdk/ParseException/ParseException.html @@ -0,0 +1,120 @@ + + + + + + + + ParseException constructor - ParseException - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseException
+ +
+ +
+
+
+ +
+
+

ParseException constructor +

+ +
+ + ParseException() +
+ + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFile-class-sidebar.html b/dart/flutter_parse_sdk/ParseFile-class-sidebar.html new file mode 100644 index 000000000..133b6517a --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFile-class-sidebar.html @@ -0,0 +1,82 @@ +
    + +
  1. Constructors
  2. +
  3. ParseFile
  4. + + + +
  5. + Properties +
  6. +
  7. createdAt
  8. +
  9. file
  10. +
  11. hashCode
  12. +
  13. name
  14. +
  15. objectId
  16. +
  17. parseClassName
  18. +
  19. runtimeType
  20. +
  21. saved
  22. +
  23. updatedAt
  24. +
  25. url
  26. + +
  27. Methods
  28. +
  29. addRelation
  30. +
  31. cancel
  32. +
  33. clearUnsavedChanges
  34. +
  35. clone
  36. +
  37. containsKey
  38. +
  39. containsValue
  40. +
  41. copy
  42. +
  43. create
  44. +
  45. delete
  46. +
  47. deleteEventually
  48. +
  49. distinct
  50. +
  51. download
  52. +
  53. fetch
  54. +
  55. fromJson
  56. +
  57. fromJsonForManualObject
  58. +
  59. fromPin
  60. +
  61. get
  62. +
  63. getACL
  64. +
  65. getAll
  66. +
  67. getObject
  68. +
  69. getRelation
  70. +
  71. isDirty
  72. +
  73. loadStorage
  74. +
  75. noSuchMethod
  76. +
  77. pin
  78. +
  79. progressCallback
  80. +
  81. query
  82. +
  83. removeRelation
  84. +
  85. save
  86. +
  87. saveEventually
  88. +
  89. saveInStorage
  90. +
  91. set
  92. +
  93. setACL
  94. +
  95. setAdd
  96. +
  97. setAddAll
  98. +
  99. setAddAllUnique
  100. +
  101. setAddUnique
  102. +
  103. setDecrement
  104. +
  105. setIncrement
  106. +
  107. setRemove
  108. +
  109. setRemoveAll
  110. +
  111. toJson
  112. +
  113. toPointer
  114. +
  115. toString
  116. +
  117. unpin
  118. +
  119. unset
  120. +
  121. update
  122. +
  123. upload
  124. + +
  125. Operators
  126. +
  127. operator ==
  128. +
  129. operator []
  130. +
  131. operator []=
  132. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseFile-class.html b/dart/flutter_parse_sdk/ParseFile-class.html new file mode 100644 index 000000000..6de811b06 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFile-class.html @@ -0,0 +1,958 @@ + + + + + + + + ParseFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseFile
+ +
+ +
+
+
+ +
+
+

ParseFile class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseFile(File? file, {String? name, String? url, bool? debug, ParseClient? client, bool? autoSendSessionId}) +
+
+ Creates a new file +
+
+
+ +
+

Properties

+ +
+
+ createdAt + DateTime? + +
+
+ Returns DateTime createdAt +
no setterinherited
+ +
+ +
+ file + File? + +
+
+ +
getter/setter pair
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ name + String + +
+
+ +
getter/setter pairinherited
+ +
+ +
+ objectId + String? + +
+
+ Returns String objectId +
getter/setter pairinherited
+ +
+ +
+ parseClassName + String + +
+
+ refers to the Table Name in your Parse Server +
getter/setter pairinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ saved + bool + +
+
+ +
no setterinherited
+ +
+ +
+ updatedAt + DateTime? + +
+
+ Returns DateTime updatedAt +
no setterinherited
+ +
+ +
+ url + String? + +
+
+ +
getter/setter pairinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ addRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Add multiple objets to a relation associated with a given key +
inherited
+ +
+ +
+ cancel([dynamic reason]) + → void + + + +
+
+ Cancels the current request (upload or download of file). +
override
+ +
+ +
+ clearUnsavedChanges() + → void + + + +
+
+ +
inherited
+ +
+ +
+ clone(Map<String, dynamic> map) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ containsKey(String key) + bool + + + +
+
+ +
inherited
+ +
+ +
+ containsValue(Object value) + bool + + + +
+
+ +
inherited
+ +
+ +
+ copy() + → dynamic + + + +
+
+ Creates a copy of this class +
inherited
+ +
+ +
+ create({bool allowCustomObjectId = false, dynamic context}) + Future<ParseResponse> + + + +
+
+ Creates a new object and saves it online +
inherited
+ +
+ +
+ delete<T extends ParseObject>({String? id, String? path}) + Future<ParseResponse> + + + +
+
+ Deletes the current object locally and online +
inherited
+ +
+ +
+ deleteEventually() + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ distinct<T extends ParseObject>(String query) + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ download({ProgressCallback? progressCallback}) + Future<ParseFile> + + + +
+
+ +
override
+ +
+ +
+ fetch({List<String>? include}) + Future<ParseObject> + + + +
+
+ Fetches this object with the data from the server. +
inherited
+ +
+ +
+ fromJson(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromJsonForManualObject(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromPin(String objectId) + Future + + + +
+
+ Get item from value storage +
inherited
+ +
+ +
+ get<T>(String key, {T? defaultValue}) + → T? + + + +
+
+ Get a value of type T associated with a given key +
inherited
+ +
+ +
+ getACL() + ParseACL + + + +
+
+ Access the ParseACL governing this object. +
inherited
+ +
+ +
+ getAll() + Future<ParseResponse> + + + +
+
+ Gets all objects from this table - Limited response at the moment +
inherited
+ +
+ +
+ getObject(String objectId, {List<String>? include}) + Future<ParseResponse> + + + +
+
+ Gets an object from the server using it's objectId +
inherited
+ +
+ +
+ getRelation<T extends ParseObject>(String key) + ParseRelation<T> + + + +
+
+ Get the instance of ParseRelation class associated with the given key +
inherited
+ +
+ +
+ isDirty({String? key}) + bool + + + +
+
+ +
inherited
+ +
+ +
+ loadStorage() + Future<ParseFile> + + + +
+
+ + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ pin() + Future<bool> + + + +
+
+ Saves item to value storage +
inherited
+ +
+ +
+ progressCallback(ProgressCallback progressCallback) + → void + + + +
+
+ Add Progress Callback +
override
+ +
+ +
+ query<T extends ParseObject>(String query, {ProgressCallback? progressCallback}) + Future<ParseResponse> + + + +
+
+ Can be used to create custom queries +
inherited
+ +
+ +
+ removeRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Remove multiple objets from a relation associated with a given key +
inherited
+ +
+ +
+ save({dynamic context}) + Future<ParseResponse> + + + +
+
+ Uploads a file to Parse Server +
inherited
+ +
+ +
+ saveEventually() + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ saveInStorage(String key) + Future<void> + + + +
+
+ Saves in storage +
inherited
+ +
+ +
+ set<T>(String key, T value, {bool forceUpdate = true}) + → void + + + +
+
+ Add a key-value pair to this object. +
inherited
+ +
+ +
+ setACL<ParseACL>(ParseACL acl) + → void + + + +
+
+ Set the ParseACL governing this object. +
inherited
+ +
+ +
+ setAdd<T>(String key, T element) + → void + + + +
+
+ Add an element to the end of the array associated with a given key +
inherited
+ +
+ +
+ setAddAll(String key, List elements) + → void + + + +
+
+ Add multiple elements to the end of the array +associated with a given key +
inherited
+ +
+ +
+ setAddAllUnique(String key, List elements) + → void + + + +
+
+ Add multiple elements to the array associated with a given key, only +adding elements which are not already present in the array. The position +of the insert is not guaranteed +
inherited
+ +
+ +
+ setAddUnique(String key, dynamic element) + → void + + + +
+
+ Add an element to the array associated with a given key, only if +it is not already present in the array. The position of the insert is not +guaranteed +
inherited
+ +
+ +
+ setDecrement(String key, num amount) + → void + + + +
+
+ Decrement a num value associated with a given key by the given amount +
inherited
+ +
+ +
+ setIncrement(String key, num amount) + → void + + + +
+
+ Increment a num value associated with a given key by the given amount +
inherited
+ +
+ +
+ setRemove(String key, dynamic element) + → void + + + +
+
+ Remove every instance of an element from an array +associated with a given key +
inherited
+ +
+ +
+ setRemoveAll(String key, List elements) + → void + + + +
+
+ Removes all instances of the elements contained in a List from the +array associated with a given key +
inherited
+ +
+ +
+ toJson({bool full = false, bool forApiRQ = false, bool allowCustomObjectId = false}) + Map<String, dynamic> + + + +
+
+ Converts object to String in JSON format +
inherited
+ +
+ +
+ toPointer() + Map<String, dynamic> + + + +
+
+ +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+ unpin({String? key}) + Future<bool> + + + +
+
+ Remove item from value storage +
inherited
+ +
+ +
+ unset(String key, {bool offlineOnly = false}) + Future<ParseResponse> + + + +
+
+ Can be used set an objects variable to undefined rather than null +
inherited
+ +
+ +
+ update({dynamic context}) + Future<ParseResponse> + + + +
+
+ Send the updated object to the server. +
inherited
+ +
+ +
+ upload({ProgressCallback? progressCallback}) + Future<ParseResponse> + + + +
+
+ Uploads a file to Parse Server +
override
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+ operator [](String key) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ operator []=(String key, dynamic value) + → void + + + +
+
+ +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFile/ParseFile.html b/dart/flutter_parse_sdk/ParseFile/ParseFile.html new file mode 100644 index 000000000..a9b1eba01 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFile/ParseFile.html @@ -0,0 +1,146 @@ + + + + + + + + ParseFile constructor - ParseFile - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseFile
+ +
+ +
+
+
+ +
+
+

ParseFile constructor +

+ +
+ + ParseFile(
  1. File? file,
  2. +
  3. {String? name,
  4. +
  5. String? url,
  6. +
  7. bool? debug,
  8. +
  9. ParseClient? client,
  10. +
  11. bool? autoSendSessionId}
  12. +
) +
+ + +
+

Creates a new file

+

{https://docs.parseplatform.org/rest/guide/#files/}

+
+ + + +
+

Implementation

+
ParseFile(this.file,
+    {String? name,
+    String? url,
+    bool? debug,
+    ParseClient? client,
+    bool? autoSendSessionId})
+    : super(
+        name: file != null ? path.basename(file.path) : name!,
+        url: url,
+        debug: debug,
+        client: client,
+        autoSendSessionId: autoSendSessionId,
+      );
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFile/cancel.html b/dart/flutter_parse_sdk/ParseFile/cancel.html new file mode 100644 index 000000000..fb21b242f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFile/cancel.html @@ -0,0 +1,141 @@ + + + + + + + + cancel method - ParseFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
cancel
+ +
+ +
+
+
+ +
+
+

cancel method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +void +cancel(
  1. [dynamic reason]
  2. +
) + +
override
+ +
+ +
+

Cancels the current request (upload or download of file).

+
+ + + +
+

Implementation

+
@override
+void cancel([dynamic reason]) {
+  _cancelToken?.cancel(reason);
+  _cancelToken = null;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFile/download.html b/dart/flutter_parse_sdk/ParseFile/download.html new file mode 100644 index 000000000..8eaaecc36 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFile/download.html @@ -0,0 +1,155 @@ + + + + + + + + download method - ParseFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
download
+ +
+ +
+
+
+ +
+
+

download method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseFile> +download(
  1. {ProgressCallback? progressCallback}
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<ParseFile> download({ProgressCallback? progressCallback}) async {
+  if (url == null) {
+    return this;
+  }
+
+  file = File('${ParseCoreData().fileDirectory}/$name');
+  await file!.create();
+
+  progressCallback ??= _progressCallback;
+
+  _cancelToken = CancelToken();
+
+  final ParseNetworkByteResponse response = await _client.getBytes(
+    url!,
+    onReceiveProgress: progressCallback,
+    cancelToken: _cancelToken,
+  );
+  await file!.writeAsBytes(response.bytes!);
+
+  return this;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFile/file.html b/dart/flutter_parse_sdk/ParseFile/file.html new file mode 100644 index 000000000..87dc4e09c --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFile/file.html @@ -0,0 +1,125 @@ + + + + + + + + file property - ParseFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
file
+ +
+ +
+
+
+ +
+
+

file property +

+ +
+ + File? + file +
getter/setter pair
+ +
+ + + +
+

Implementation

+
File? file;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFile/loadStorage.html b/dart/flutter_parse_sdk/ParseFile/loadStorage.html new file mode 100644 index 000000000..abcdf052e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFile/loadStorage.html @@ -0,0 +1,140 @@ + + + + + + + + loadStorage method - ParseFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
loadStorage
+ +
+ +
+
+
+ +
+
+

loadStorage method +

+ +
+ + +Future<ParseFile> +loadStorage() + + + +
+ + + + +
+

Implementation

+
Future<ParseFile> loadStorage() async {
+  final File possibleFile = File('${ParseCoreData().fileDirectory}/$name');
+  // ignore: avoid_slow_async_io
+  final bool exists = await possibleFile.exists();
+
+  if (exists) {
+    file = possibleFile;
+  } else {
+    file = null;
+  }
+
+  return this;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFile/progressCallback.html b/dart/flutter_parse_sdk/ParseFile/progressCallback.html new file mode 100644 index 000000000..a9b8d4b2f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFile/progressCallback.html @@ -0,0 +1,140 @@ + + + + + + + + progressCallback method - ParseFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
progressCallback
+ +
+ +
+
+
+ +
+
+

progressCallback method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +void +progressCallback(
  1. ProgressCallback progressCallback
  2. +
) + +
override
+ +
+ +
+

Add Progress Callback

+
+ + + +
+

Implementation

+
@override
+void progressCallback(ProgressCallback progressCallback) {
+  _progressCallback = progressCallback;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFile/upload.html b/dart/flutter_parse_sdk/ParseFile/upload.html new file mode 100644 index 000000000..83a3fcc0c --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFile/upload.html @@ -0,0 +1,183 @@ + + + + + + + + upload method - ParseFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
upload
+ +
+ +
+
+
+ +
+
+

upload method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseResponse> +upload(
  1. {ProgressCallback? progressCallback}
  2. +
) + +
override
+ +
+ +
+

Uploads a file to Parse Server

+
+ + + +
+

Implementation

+
@override
+Future<ParseResponse> upload({ProgressCallback? progressCallback}) async {
+  if (saved) {
+    //Creates a Fake Response to return the correct result
+    final Map<String, String> response = <String, String>{
+      'url': url!,
+      'name': name
+    };
+    return handleResponse<ParseFile>(
+        this,
+        ParseNetworkResponse(data: json.encode(response), statusCode: 201),
+        ParseApiRQ.upload,
+        _debug,
+        parseClassName);
+  }
+
+  progressCallback ??= _progressCallback;
+
+  _cancelToken = CancelToken();
+
+  final Map<String, String> headers = <String, String>{
+    HttpHeaders.contentTypeHeader:
+        lookupMimeType(file!.path) ?? 'application/octet-stream',
+    HttpHeaders.contentLengthHeader: '${file!.lengthSync()}',
+  };
+
+  try {
+    final String uri = ParseCoreData().serverUrl + _path;
+    final ParseNetworkResponse response = await _client.postBytes(
+      uri,
+      options: ParseNetworkOptions(headers: headers),
+      data: file!.openRead(),
+      onSendProgress: progressCallback,
+      cancelToken: _cancelToken,
+    );
+    if (response.statusCode == 201) {
+      final Map<String, dynamic> map = json.decode(response.data);
+      url = map['url'].toString();
+      name = map['name'].toString();
+    }
+
+    return handleResponse<ParseFile>(
+        this, response, ParseApiRQ.upload, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(e, ParseApiRQ.upload, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFileBase-class-sidebar.html b/dart/flutter_parse_sdk/ParseFileBase-class-sidebar.html new file mode 100644 index 000000000..0e263632c --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFileBase-class-sidebar.html @@ -0,0 +1,80 @@ +
    + +
  1. Constructors
  2. +
  3. ParseFileBase
  4. + + + +
  5. + Properties +
  6. +
  7. createdAt
  8. +
  9. hashCode
  10. +
  11. name
  12. +
  13. objectId
  14. +
  15. parseClassName
  16. +
  17. runtimeType
  18. +
  19. saved
  20. +
  21. updatedAt
  22. +
  23. url
  24. + +
  25. Methods
  26. +
  27. addRelation
  28. +
  29. cancel
  30. +
  31. clearUnsavedChanges
  32. +
  33. clone
  34. +
  35. containsKey
  36. +
  37. containsValue
  38. +
  39. copy
  40. +
  41. create
  42. +
  43. delete
  44. +
  45. deleteEventually
  46. +
  47. distinct
  48. +
  49. download
  50. +
  51. fetch
  52. +
  53. fromJson
  54. +
  55. fromJsonForManualObject
  56. +
  57. fromPin
  58. +
  59. get
  60. +
  61. getACL
  62. +
  63. getAll
  64. +
  65. getObject
  66. +
  67. getRelation
  68. +
  69. isDirty
  70. +
  71. noSuchMethod
  72. +
  73. pin
  74. +
  75. progressCallback
  76. +
  77. query
  78. +
  79. removeRelation
  80. +
  81. save
  82. +
  83. saveEventually
  84. +
  85. saveInStorage
  86. +
  87. set
  88. +
  89. setACL
  90. +
  91. setAdd
  92. +
  93. setAddAll
  94. +
  95. setAddAllUnique
  96. +
  97. setAddUnique
  98. +
  99. setDecrement
  100. +
  101. setIncrement
  102. +
  103. setRemove
  104. +
  105. setRemoveAll
  106. +
  107. toJson
  108. +
  109. toPointer
  110. +
  111. toString
  112. +
  113. unpin
  114. +
  115. unset
  116. +
  117. update
  118. +
  119. upload
  120. + +
  121. Operators
  122. +
  123. operator ==
  124. +
  125. operator []
  126. +
  127. operator []=
  128. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseFileBase-class.html b/dart/flutter_parse_sdk/ParseFileBase-class.html new file mode 100644 index 000000000..a3b913b1e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFileBase-class.html @@ -0,0 +1,940 @@ + + + + + + + + ParseFileBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseFileBase
+ +
+ +
+
+
+ +
+
+

ParseFileBase class + abstract + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + +
Implementers
+
+ + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseFileBase({required String name, String? url, bool? debug, ParseClient? client, bool? autoSendSessionId}) +
+
+ Creates a new file +
+
+
+ +
+

Properties

+ +
+
+ createdAt + DateTime? + +
+
+ Returns DateTime createdAt +
no setterinherited
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ name + String + +
+
+ +
getter/setter pair
+ +
+ +
+ objectId + String? + +
+
+ Returns String objectId +
getter/setter pairinherited
+ +
+ +
+ parseClassName + String + +
+
+ refers to the Table Name in your Parse Server +
getter/setter pairinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ saved + bool + +
+
+ +
no setter
+ +
+ +
+ updatedAt + DateTime? + +
+
+ Returns DateTime updatedAt +
no setterinherited
+ +
+ +
+ url + String? + +
+
+ +
getter/setter pair
+ +
+ +
+
+ + +
+

Methods

+
+
+ addRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Add multiple objets to a relation associated with a given key +
inherited
+ +
+ +
+ cancel([dynamic reason]) + → void + + + +
+
+ + + +
+ +
+ clearUnsavedChanges() + → void + + + +
+
+ +
inherited
+ +
+ +
+ clone(Map<String, dynamic> map) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ containsKey(String key) + bool + + + +
+
+ +
inherited
+ +
+ +
+ containsValue(Object value) + bool + + + +
+
+ +
inherited
+ +
+ +
+ copy() + → dynamic + + + +
+
+ Creates a copy of this class +
inherited
+ +
+ +
+ create({bool allowCustomObjectId = false, dynamic context}) + Future<ParseResponse> + + + +
+
+ Creates a new object and saves it online +
inherited
+ +
+ +
+ delete<T extends ParseObject>({String? id, String? path}) + Future<ParseResponse> + + + +
+
+ Deletes the current object locally and online +
inherited
+ +
+ +
+ deleteEventually() + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ distinct<T extends ParseObject>(String query) + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ download({ProgressCallback? progressCallback}) + Future<ParseFileBase> + + + +
+
+ + + +
+ +
+ fetch({List<String>? include}) + Future<ParseObject> + + + +
+
+ Fetches this object with the data from the server. +
inherited
+ +
+ +
+ fromJson(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromJsonForManualObject(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromPin(String objectId) + Future + + + +
+
+ Get item from value storage +
inherited
+ +
+ +
+ get<T>(String key, {T? defaultValue}) + → T? + + + +
+
+ Get a value of type T associated with a given key +
inherited
+ +
+ +
+ getACL() + ParseACL + + + +
+
+ Access the ParseACL governing this object. +
inherited
+ +
+ +
+ getAll() + Future<ParseResponse> + + + +
+
+ Gets all objects from this table - Limited response at the moment +
inherited
+ +
+ +
+ getObject(String objectId, {List<String>? include}) + Future<ParseResponse> + + + +
+
+ Gets an object from the server using it's objectId +
inherited
+ +
+ +
+ getRelation<T extends ParseObject>(String key) + ParseRelation<T> + + + +
+
+ Get the instance of ParseRelation class associated with the given key +
inherited
+ +
+ +
+ isDirty({String? key}) + bool + + + +
+
+ +
inherited
+ +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ pin() + Future<bool> + + + +
+
+ Saves item to value storage +
inherited
+ +
+ +
+ progressCallback(ProgressCallback progressCallback) + → void + + + +
+
+ + + +
+ +
+ query<T extends ParseObject>(String query, {ProgressCallback? progressCallback}) + Future<ParseResponse> + + + +
+
+ Can be used to create custom queries +
inherited
+ +
+ +
+ removeRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Remove multiple objets from a relation associated with a given key +
inherited
+ +
+ +
+ save({dynamic context}) + Future<ParseResponse> + + + +
+
+ Uploads a file to Parse Server +
override
+ +
+ +
+ saveEventually() + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ saveInStorage(String key) + Future<void> + + + +
+
+ Saves in storage +
inherited
+ +
+ +
+ set<T>(String key, T value, {bool forceUpdate = true}) + → void + + + +
+
+ Add a key-value pair to this object. +
inherited
+ +
+ +
+ setACL<ParseACL>(ParseACL acl) + → void + + + +
+
+ Set the ParseACL governing this object. +
inherited
+ +
+ +
+ setAdd<T>(String key, T element) + → void + + + +
+
+ Add an element to the end of the array associated with a given key +
inherited
+ +
+ +
+ setAddAll(String key, List elements) + → void + + + +
+
+ Add multiple elements to the end of the array +associated with a given key +
inherited
+ +
+ +
+ setAddAllUnique(String key, List elements) + → void + + + +
+
+ Add multiple elements to the array associated with a given key, only +adding elements which are not already present in the array. The position +of the insert is not guaranteed +
inherited
+ +
+ +
+ setAddUnique(String key, dynamic element) + → void + + + +
+
+ Add an element to the array associated with a given key, only if +it is not already present in the array. The position of the insert is not +guaranteed +
inherited
+ +
+ +
+ setDecrement(String key, num amount) + → void + + + +
+
+ Decrement a num value associated with a given key by the given amount +
inherited
+ +
+ +
+ setIncrement(String key, num amount) + → void + + + +
+
+ Increment a num value associated with a given key by the given amount +
inherited
+ +
+ +
+ setRemove(String key, dynamic element) + → void + + + +
+
+ Remove every instance of an element from an array +associated with a given key +
inherited
+ +
+ +
+ setRemoveAll(String key, List elements) + → void + + + +
+
+ Removes all instances of the elements contained in a List from the +array associated with a given key +
inherited
+ +
+ +
+ toJson({bool full = false, bool forApiRQ = false, bool allowCustomObjectId = false}) + Map<String, dynamic> + + + +
+
+ Converts object to String in JSON format +
override
+ +
+ +
+ toPointer() + Map<String, dynamic> + + + +
+
+ +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
override
+ +
+ +
+ unpin({String? key}) + Future<bool> + + + +
+
+ Remove item from value storage +
inherited
+ +
+ +
+ unset(String key, {bool offlineOnly = false}) + Future<ParseResponse> + + + +
+
+ Can be used set an objects variable to undefined rather than null +
inherited
+ +
+ +
+ update({dynamic context}) + Future<ParseResponse> + + + +
+
+ Send the updated object to the server. +
inherited
+ +
+ +
+ upload({ProgressCallback? progressCallback}) + Future<ParseResponse> + + + +
+
+ Uploads a file to Parse Server + + +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+ operator [](String key) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ operator []=(String key, dynamic value) + → void + + + +
+
+ +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFileBase/ParseFileBase.html b/dart/flutter_parse_sdk/ParseFileBase/ParseFileBase.html new file mode 100644 index 000000000..7962edd88 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFileBase/ParseFileBase.html @@ -0,0 +1,146 @@ + + + + + + + + ParseFileBase constructor - ParseFileBase - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseFileBase
+ +
+ +
+
+
+ +
+
+

ParseFileBase constructor +

+ +
+ + ParseFileBase(
  1. {required String name,
  2. +
  3. String? url,
  4. +
  5. bool? debug,
  6. +
  7. ParseClient? client,
  8. +
  9. bool? autoSendSessionId}
  10. +
) +
+ + +
+

Creates a new file

+

{https://docs.parseplatform.org/rest/guide/#files/}

+
+ + + +
+

Implementation

+
ParseFileBase(
+    {required String name,
+    String? url,
+    bool? debug,
+    ParseClient? client,
+    bool? autoSendSessionId})
+    : super(keyFileClassname,
+          debug: debug,
+          autoSendSessionId: autoSendSessionId,
+          client: client) {
+  _path = '/files/$name';
+  this.name = name;
+  if (url != null) this.url = url;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFileBase/cancel.html b/dart/flutter_parse_sdk/ParseFileBase/cancel.html new file mode 100644 index 000000000..b5a322239 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFileBase/cancel.html @@ -0,0 +1,129 @@ + + + + + + + + cancel method - ParseFileBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
cancel
+ +
+ +
+
+
+ +
+
+

cancel abstract method +

+ +
+ + +void +cancel(
  1. [dynamic reason]
  2. +
) + + + +
+ + + + +
+

Implementation

+
void cancel([dynamic reason]);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFileBase/download.html b/dart/flutter_parse_sdk/ParseFileBase/download.html new file mode 100644 index 000000000..79fe0cd90 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFileBase/download.html @@ -0,0 +1,129 @@ + + + + + + + + download method - ParseFileBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
download
+ +
+ +
+
+
+ +
+
+

download abstract method +

+ +
+ + +Future<ParseFileBase> +download(
  1. {ProgressCallback? progressCallback}
  2. +
) + + + +
+ + + + +
+

Implementation

+
Future<ParseFileBase> download({ProgressCallback? progressCallback});
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFileBase/name.html b/dart/flutter_parse_sdk/ParseFileBase/name.html new file mode 100644 index 000000000..15ef7791a --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFileBase/name.html @@ -0,0 +1,153 @@ + + + + + + + + name property - ParseFileBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
name
+ +
+ +
+
+
+ +
+
+

name property +

+ + + +
+ +
+ + String + name + + +
+ + + + +
+

Implementation

+
String get name => super.get<String>(keyVarName)!;
+
+ +
+ + + +
+ +
+ + void + name=(String name) + + +
+ + + + +
+

Implementation

+
set name(String name) => set<String>(keyVarName, name);
+
+ +
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFileBase/progressCallback.html b/dart/flutter_parse_sdk/ParseFileBase/progressCallback.html new file mode 100644 index 000000000..87506711b --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFileBase/progressCallback.html @@ -0,0 +1,129 @@ + + + + + + + + progressCallback method - ParseFileBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
progressCallback
+ +
+ +
+
+
+ +
+
+

progressCallback abstract method +

+ +
+ + +void +progressCallback(
  1. ProgressCallback progressCallback
  2. +
) + + + +
+ + + + +
+

Implementation

+
void progressCallback(ProgressCallback progressCallback);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFileBase/save.html b/dart/flutter_parse_sdk/ParseFileBase/save.html new file mode 100644 index 000000000..c6dc030c6 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFileBase/save.html @@ -0,0 +1,140 @@ + + + + + + + + save method - ParseFileBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
save
+ +
+ +
+
+
+ +
+
+

save method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseResponse> +save(
  1. {dynamic context}
  2. +
) + +
override
+ +
+ +
+

Uploads a file to Parse Server

+
+ + + +
+

Implementation

+
@override
+Future<ParseResponse> save({dynamic context}) async {
+  return upload();
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFileBase/saved.html b/dart/flutter_parse_sdk/ParseFileBase/saved.html new file mode 100644 index 000000000..1833aeabe --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFileBase/saved.html @@ -0,0 +1,132 @@ + + + + + + + + saved property - ParseFileBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
saved
+ +
+ +
+
+
+ +
+
+

saved property +

+ + + +
+ +
+ + bool + saved + + +
+ + + + +
+

Implementation

+
bool get saved => url != null;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFileBase/toJson.html b/dart/flutter_parse_sdk/ParseFileBase/toJson.html new file mode 100644 index 000000000..2028d38ab --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFileBase/toJson.html @@ -0,0 +1,145 @@ + + + + + + + + toJson method - ParseFileBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
toJson
+ +
+ +
+
+
+ +
+
+

toJson method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Map<String, dynamic> +toJson(
  1. {bool full = false,
  2. +
  3. bool forApiRQ = false,
  4. +
  5. bool allowCustomObjectId = false}
  6. +
) + +
override
+ +
+ +
+

Converts object to String in JSON format

+
+ + + +
+

Implementation

+
@override
+Map<String, dynamic> toJson({
+  bool full = false,
+  bool forApiRQ = false,
+  bool allowCustomObjectId = false,
+}) =>
+    <String, String?>{'__type': keyFile, 'name': name, 'url': url};
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFileBase/toString.html b/dart/flutter_parse_sdk/ParseFileBase/toString.html new file mode 100644 index 000000000..34a2cee4f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFileBase/toString.html @@ -0,0 +1,146 @@ + + + + + + + + toString method - ParseFileBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
toString
+ +
+ +
+
+
+ +
+
+

toString method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +String +toString() + +
override
+ +
+ +
+

A string representation of this object.

+

Some classes have a default textual representation, +often paired with a static parse function (like int.parse). +These classes will provide the textual representation as +their string representation.

+

Other classes have no meaningful textual representation +that a program will care about. +Such classes will typically override toString to provide +useful information when inspecting the object, +mainly for debugging or logging.

+
+ + + +
+

Implementation

+
@override
+String toString() => json.encode(toJson(full: true));
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFileBase/upload.html b/dart/flutter_parse_sdk/ParseFileBase/upload.html new file mode 100644 index 000000000..71dc5abd3 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFileBase/upload.html @@ -0,0 +1,132 @@ + + + + + + + + upload method - ParseFileBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
upload
+ +
+ +
+
+
+ +
+
+

upload abstract method +

+ +
+ + +Future<ParseResponse> +upload(
  1. {ProgressCallback? progressCallback}
  2. +
) + + + +
+ +
+

Uploads a file to Parse Server

+
+ + + +
+

Implementation

+
Future<ParseResponse> upload({ProgressCallback? progressCallback});
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFileBase/url.html b/dart/flutter_parse_sdk/ParseFileBase/url.html new file mode 100644 index 000000000..0dc48f9f2 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFileBase/url.html @@ -0,0 +1,153 @@ + + + + + + + + url property - ParseFileBase class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
url
+ +
+ +
+
+
+ +
+
+

url property +

+ + + +
+ +
+ + String? + url + + +
+ + + + +
+

Implementation

+
String? get url => super.get<String>(keyVarURL);
+
+ +
+ + + +
+ +
+ + void + url=(String? url) + + +
+ + + + +
+

Implementation

+
set url(http://github.com/String?%20url) => set<String?>(keyVarURL, url);
+
+ +
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseFileConstructor.html b/dart/flutter_parse_sdk/ParseFileConstructor.html new file mode 100644 index 000000000..e7f3dbef9 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseFileConstructor.html @@ -0,0 +1,124 @@ + + + + + + + + ParseFileConstructor typedef - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseFileConstructor
+ +
+ +
+
+
+ +
+
+

ParseFileConstructor typedef + +

+ +
+ ParseFileConstructor = + ParseFileBase Function({String? name, String? url}) + +
+ + + + +
+

Implementation

+
typedef ParseFileConstructor = ParseFileBase Function(
+    {String? name, String? url});
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseGeoPoint-class-sidebar.html b/dart/flutter_parse_sdk/ParseGeoPoint-class-sidebar.html new file mode 100644 index 000000000..4e7c61458 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseGeoPoint-class-sidebar.html @@ -0,0 +1,29 @@ +
    + +
  1. Constructors
  2. +
  3. ParseGeoPoint
  4. + + + +
  5. + Properties +
  6. +
  7. hashCode
  8. +
  9. latitude
  10. +
  11. longitude
  12. +
  13. runtimeType
  14. + +
  15. Methods
  16. +
  17. noSuchMethod
  18. +
  19. toJson
  20. +
  21. toString
  22. + +
  23. Operators
  24. +
  25. operator ==
  26. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseGeoPoint-class.html b/dart/flutter_parse_sdk/ParseGeoPoint-class.html new file mode 100644 index 000000000..d78005aec --- /dev/null +++ b/dart/flutter_parse_sdk/ParseGeoPoint-class.html @@ -0,0 +1,250 @@ + + + + + + + + ParseGeoPoint class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseGeoPoint
+ +
+ +
+
+
+ +
+
+

ParseGeoPoint class + +

+ + + + + + +
+

Constructors

+ +
+
+ ParseGeoPoint({double latitude = 0.0, double longitude = 0.0}) +
+
+ Creates a Parse Object of type GeoPoint +
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ latitude + double + +
+
+ +
getter/setter pair
+ +
+ +
+ longitude + double + +
+
+ +
getter/setter pair
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toJson({bool full = false, bool forApiRQ = false}) + Map<String, dynamic> + + + +
+
+ + + +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
override
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseGeoPoint/ParseGeoPoint.html b/dart/flutter_parse_sdk/ParseGeoPoint/ParseGeoPoint.html new file mode 100644 index 000000000..d47a1882f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseGeoPoint/ParseGeoPoint.html @@ -0,0 +1,137 @@ + + + + + + + + ParseGeoPoint constructor - ParseGeoPoint - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseGeoPoint
+ +
+ +
+
+
+ +
+
+

ParseGeoPoint constructor +

+ +
+ + ParseGeoPoint(
  1. {double latitude = 0.0,
  2. +
  3. double longitude = 0.0}
  4. +
) +
+ + +
+

Creates a Parse Object of type GeoPoint

+
+ + + +
+

Implementation

+
ParseGeoPoint({this.latitude = 0.0, this.longitude = 0.0})
+    : assert(
+          latitude < 90, 'Latitude must be within the range (-90.0, 90.0).'),
+      assert(
+          latitude > -90, 'Latitude must be within the range (-90.0, 90.0).'),
+      assert(latitude < 180,
+          'Longitude must be within the range (-180.0, 180.0).'),
+      assert(latitude > -180,
+          'Longitude must be within the range (-180.0, 180.0).');
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseGeoPoint/latitude.html b/dart/flutter_parse_sdk/ParseGeoPoint/latitude.html new file mode 100644 index 000000000..2ac51733b --- /dev/null +++ b/dart/flutter_parse_sdk/ParseGeoPoint/latitude.html @@ -0,0 +1,125 @@ + + + + + + + + latitude property - ParseGeoPoint class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
latitude
+ +
+ +
+
+
+ +
+
+

latitude property +

+ +
+ + double + latitude +
getter/setter pair
+ +
+ + + +
+

Implementation

+
double latitude, longitude;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseGeoPoint/longitude.html b/dart/flutter_parse_sdk/ParseGeoPoint/longitude.html new file mode 100644 index 000000000..d9e3028ae --- /dev/null +++ b/dart/flutter_parse_sdk/ParseGeoPoint/longitude.html @@ -0,0 +1,125 @@ + + + + + + + + longitude property - ParseGeoPoint class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
longitude
+ +
+ +
+
+
+ +
+
+

longitude property +

+ +
+ + double + longitude +
getter/setter pair
+ +
+ + + +
+

Implementation

+
double latitude, longitude;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseGeoPoint/toJson.html b/dart/flutter_parse_sdk/ParseGeoPoint/toJson.html new file mode 100644 index 000000000..b4647ee0e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseGeoPoint/toJson.html @@ -0,0 +1,135 @@ + + + + + + + + toJson method - ParseGeoPoint class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
toJson
+ +
+ +
+
+
+ +
+
+

toJson method +

+ +
+ + +Map<String, dynamic> +toJson(
  1. {bool full = false,
  2. +
  3. bool forApiRQ = false}
  4. +
) + + + +
+ + + + +
+

Implementation

+
Map<String, dynamic> toJson({bool full = false, bool forApiRQ = false}) =>
+    <String, dynamic>{
+      '__type': 'GeoPoint',
+      'latitude': latitude,
+      'longitude': longitude
+    };
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseGeoPoint/toString.html b/dart/flutter_parse_sdk/ParseGeoPoint/toString.html new file mode 100644 index 000000000..ffcb91686 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseGeoPoint/toString.html @@ -0,0 +1,148 @@ + + + + + + + + toString method - ParseGeoPoint class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
toString
+ +
+ +
+
+
+ +
+
+

toString method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +String +toString() + +
override
+ +
+ +
+

A string representation of this object.

+

Some classes have a default textual representation, +often paired with a static parse function (like int.parse). +These classes will provide the textual representation as +their string representation.

+

Other classes have no meaningful textual representation +that a program will care about. +Such classes will typically override toString to provide +useful information when inspecting the object, +mainly for debugging or logging.

+
+ + + +
+

Implementation

+
@override
+String toString() {
+  return 'latitude: $latitude, longitude: $longitude';
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseHTTPClient-class-sidebar.html b/dart/flutter_parse_sdk/ParseHTTPClient-class-sidebar.html new file mode 100644 index 000000000..12d35b90d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseHTTPClient-class-sidebar.html @@ -0,0 +1,34 @@ +
    + +
  1. Constructors
  2. +
  3. ParseHTTPClient
  4. + + + +
  5. + Properties +
  6. +
  7. additionalHeaders
  8. +
  9. data
  10. +
  11. hashCode
  12. +
  13. runtimeType
  14. + +
  15. Methods
  16. +
  17. delete
  18. +
  19. get
  20. +
  21. getBytes
  22. +
  23. noSuchMethod
  24. +
  25. post
  26. +
  27. postBytes
  28. +
  29. put
  30. +
  31. toString
  32. + +
  33. Operators
  34. +
  35. operator ==
  36. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseHTTPClient-class.html b/dart/flutter_parse_sdk/ParseHTTPClient-class.html new file mode 100644 index 000000000..a91836303 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseHTTPClient-class.html @@ -0,0 +1,337 @@ + + + + + + + + ParseHTTPClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseHTTPClient
+ +
+ +
+
+
+ +
+
+

ParseHTTPClient class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseHTTPClient({bool sendSessionId = false, SecurityContext? securityContext}) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ additionalHeaders + Map<String, String>? + +
+
+ +
getter/setter pair
+ +
+ +
+ data + ParseCoreData + +
+
+ +
no setterinherited
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ delete(String path, {ParseNetworkOptions? options}) + Future<ParseNetworkResponse> + + + +
+
+ +
override
+ +
+ +
+ get(String path, {ParseNetworkOptions? options, ProgressCallback? onReceiveProgress}) + Future<ParseNetworkResponse> + + + +
+
+ +
override
+ +
+ +
+ getBytes(String path, {ParseNetworkOptions? options, ProgressCallback? onReceiveProgress, dynamic cancelToken}) + Future<ParseNetworkByteResponse> + + + +
+
+ +
override
+ +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ post(String path, {String? data, ParseNetworkOptions? options}) + Future<ParseNetworkResponse> + + + +
+
+ +
override
+ +
+ +
+ postBytes(String path, {Stream<List<int>>? data, ParseNetworkOptions? options, ProgressCallback? onSendProgress, dynamic cancelToken}) + Future<ParseNetworkResponse> + + + +
+
+ +
override
+ +
+ +
+ put(String path, {String? data, ParseNetworkOptions? options}) + Future<ParseNetworkResponse> + + + +
+
+ +
override
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseHTTPClient/ParseHTTPClient.html b/dart/flutter_parse_sdk/ParseHTTPClient/ParseHTTPClient.html new file mode 100644 index 000000000..b1c9ff169 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseHTTPClient/ParseHTTPClient.html @@ -0,0 +1,132 @@ + + + + + + + + ParseHTTPClient constructor - ParseHTTPClient - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseHTTPClient
+ +
+ +
+
+
+ +
+
+

ParseHTTPClient constructor +

+ +
+ + ParseHTTPClient(
  1. {bool sendSessionId = false,
  2. +
  3. SecurityContext? securityContext}
  4. +
) +
+ + + + + +
+

Implementation

+
ParseHTTPClient(
+    {bool sendSessionId = false, SecurityContext? securityContext}) {
+  _client = _ParseHTTPClient(
+    sendSessionId: sendSessionId,
+    securityContext: securityContext,
+  );
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseHTTPClient/additionalHeaders.html b/dart/flutter_parse_sdk/ParseHTTPClient/additionalHeaders.html new file mode 100644 index 000000000..59dd52044 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseHTTPClient/additionalHeaders.html @@ -0,0 +1,154 @@ + + + + + + + + additionalHeaders property - ParseHTTPClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
additionalHeaders
+ +
+ +
+
+
+ +
+
+

additionalHeaders property +

+ + + +
+ +
+ + Map<String, String>? + additionalHeaders + + +
+ + + + +
+

Implementation

+
Map<String, String>? get additionalHeaders => _client.additionalHeaders;
+
+ +
+ + + +
+ +
+ + void + additionalHeaders=(Map<String, String>? additionalHeaders) + + +
+ + + + +
+

Implementation

+
set additionalHeaders(Map<String, String>? additionalHeaders) =>
+    _client.additionalHeaders = additionalHeaders;
+
+ +
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseHTTPClient/delete.html b/dart/flutter_parse_sdk/ParseHTTPClient/delete.html new file mode 100644 index 000000000..4ca64eeee --- /dev/null +++ b/dart/flutter_parse_sdk/ParseHTTPClient/delete.html @@ -0,0 +1,144 @@ + + + + + + + + delete method - ParseHTTPClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
delete
+ +
+ +
+
+
+ +
+
+

delete method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseNetworkResponse> +delete(
  1. String path,
  2. +
  3. {ParseNetworkOptions? options}
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<ParseNetworkResponse> delete(String path,
+    {ParseNetworkOptions? options}) async {
+  final http.Response response = await _client.delete(
+    Uri.parse(path),
+    headers: options?.headers,
+  );
+  return ParseNetworkResponse(
+      data: response.body, statusCode: response.statusCode);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseHTTPClient/get.html b/dart/flutter_parse_sdk/ParseHTTPClient/get.html new file mode 100644 index 000000000..13bc791a8 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseHTTPClient/get.html @@ -0,0 +1,148 @@ + + + + + + + + get method - ParseHTTPClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
get
+ +
+ +
+
+
+ +
+
+

get method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseNetworkResponse> +get(
  1. String path,
  2. +
  3. {ParseNetworkOptions? options,
  4. +
  5. ProgressCallback? onReceiveProgress}
  6. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<ParseNetworkResponse> get(
+  String path, {
+  ParseNetworkOptions? options,
+  ProgressCallback? onReceiveProgress,
+}) async {
+  final http.Response response = await _client.get(
+    Uri.parse(path),
+    headers: options?.headers,
+  );
+  return ParseNetworkResponse(
+      data: response.body, statusCode: response.statusCode);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseHTTPClient/getBytes.html b/dart/flutter_parse_sdk/ParseHTTPClient/getBytes.html new file mode 100644 index 000000000..883bf4bd1 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseHTTPClient/getBytes.html @@ -0,0 +1,150 @@ + + + + + + + + getBytes method - ParseHTTPClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getBytes
+ +
+ +
+
+
+ +
+
+

getBytes method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseNetworkByteResponse> +getBytes(
  1. String path,
  2. +
  3. {ParseNetworkOptions? options,
  4. +
  5. ProgressCallback? onReceiveProgress,
  6. +
  7. dynamic cancelToken}
  8. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<ParseNetworkByteResponse> getBytes(
+  String path, {
+  ParseNetworkOptions? options,
+  ProgressCallback? onReceiveProgress,
+  dynamic cancelToken,
+}) async {
+  final http.Response response = await _client.get(
+    Uri.parse(path),
+    headers: options?.headers,
+  );
+  return ParseNetworkByteResponse(
+      bytes: response.bodyBytes, statusCode: response.statusCode);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseHTTPClient/post.html b/dart/flutter_parse_sdk/ParseHTTPClient/post.html new file mode 100644 index 000000000..6d1803081 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseHTTPClient/post.html @@ -0,0 +1,149 @@ + + + + + + + + post method - ParseHTTPClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
post
+ +
+ +
+
+
+ +
+
+

post method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseNetworkResponse> +post(
  1. String path,
  2. +
  3. {String? data,
  4. +
  5. ParseNetworkOptions? options}
  6. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<ParseNetworkResponse> post(
+  String path, {
+  String? data,
+  ParseNetworkOptions? options,
+}) async {
+  final http.Response response = await _client.post(
+    Uri.parse(path),
+    body: data,
+    headers: options?.headers,
+  );
+  return ParseNetworkResponse(
+      data: response.body, statusCode: response.statusCode);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseHTTPClient/postBytes.html b/dart/flutter_parse_sdk/ParseHTTPClient/postBytes.html new file mode 100644 index 000000000..e617df536 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseHTTPClient/postBytes.html @@ -0,0 +1,155 @@ + + + + + + + + postBytes method - ParseHTTPClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
postBytes
+ +
+ +
+
+
+ +
+
+

postBytes method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseNetworkResponse> +postBytes(
  1. String path,
  2. +
  3. {Stream<List<int>>? data,
  4. +
  5. ParseNetworkOptions? options,
  6. +
  7. ProgressCallback? onSendProgress,
  8. +
  9. dynamic cancelToken}
  10. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<ParseNetworkResponse> postBytes(
+  String path, {
+  Stream<List<int>>? data,
+  ParseNetworkOptions? options,
+  ProgressCallback? onSendProgress,
+  dynamic cancelToken,
+}) async {
+  final http.Response response = await _client.post(
+    Uri.parse(path),
+    //Convert the stream to a list
+    body: await data?.fold<List<int>>(<int>[],
+        (List<int> previous, List<int> element) => previous..addAll(element)),
+    headers: options?.headers,
+  );
+  return ParseNetworkResponse(
+      data: response.body, statusCode: response.statusCode);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseHTTPClient/put.html b/dart/flutter_parse_sdk/ParseHTTPClient/put.html new file mode 100644 index 000000000..c57e28360 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseHTTPClient/put.html @@ -0,0 +1,149 @@ + + + + + + + + put method - ParseHTTPClient class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
put
+ +
+ +
+
+
+ +
+
+

put method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseNetworkResponse> +put(
  1. String path,
  2. +
  3. {String? data,
  4. +
  5. ParseNetworkOptions? options}
  6. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<ParseNetworkResponse> put(
+  String path, {
+  String? data,
+  ParseNetworkOptions? options,
+}) async {
+  final http.Response response = await _client.put(
+    Uri.parse(path),
+    body: data,
+    headers: options?.headers,
+  );
+  return ParseNetworkResponse(
+      data: response.body, statusCode: response.statusCode);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation-class-sidebar.html b/dart/flutter_parse_sdk/ParseInstallation-class-sidebar.html new file mode 100644 index 000000000..402394169 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation-class-sidebar.html @@ -0,0 +1,90 @@ +
    + +
  1. Constructors
  2. +
  3. ParseInstallation
  4. +
  5. forQuery
  6. + + + +
  7. + Properties +
  8. +
  9. acl
  10. +
  11. appIdentifier
  12. +
  13. appName
  14. +
  15. appVersion
  16. +
  17. createdAt
  18. +
  19. deviceToken
  20. +
  21. deviceType
  22. +
  23. hashCode
  24. +
  25. installationId
  26. +
  27. objectId
  28. +
  29. parseClassName
  30. +
  31. parseVersion
  32. +
  33. runtimeType
  34. +
  35. updatedAt
  36. + +
  37. Methods
  38. +
  39. addRelation
  40. +
  41. clearUnsavedChanges
  42. +
  43. clone
  44. +
  45. containsKey
  46. +
  47. containsValue
  48. +
  49. copy
  50. +
  51. create
  52. +
  53. delete
  54. +
  55. deleteEventually
  56. +
  57. distinct
  58. +
  59. fetch
  60. +
  61. fromJson
  62. +
  63. fromJsonForManualObject
  64. +
  65. fromPin
  66. +
  67. get
  68. +
  69. getACL
  70. +
  71. getAll
  72. +
  73. getObject
  74. +
  75. getRelation
  76. +
  77. getSubscribedChannels
  78. +
  79. isDirty
  80. +
  81. noSuchMethod
  82. +
  83. pin
  84. +
  85. query
  86. +
  87. removeRelation
  88. +
  89. save
  90. +
  91. saveEventually
  92. +
  93. saveInStorage
  94. +
  95. set
  96. +
  97. setACL
  98. +
  99. setAdd
  100. +
  101. setAddAll
  102. +
  103. setAddAllUnique
  104. +
  105. setAddUnique
  106. +
  107. setDecrement
  108. +
  109. setIncrement
  110. +
  111. setRemove
  112. +
  113. setRemoveAll
  114. +
  115. subscribeToChannel
  116. +
  117. toJson
  118. +
  119. toPointer
  120. +
  121. toString
  122. +
  123. unpin
  124. +
  125. unset
  126. +
  127. unsubscribeFromChannel
  128. +
  129. update
  130. + +
  131. Operators
  132. +
  133. operator ==
  134. +
  135. operator []
  136. +
  137. operator []=
  138. + + + + +
  139. Static properties
  140. +
  141. readOnlyKeys
  142. + +
  143. Static methods
  144. +
  145. currentInstallation
  146. +
  147. isCurrent
  148. + +
diff --git a/dart/flutter_parse_sdk/ParseInstallation-class.html b/dart/flutter_parse_sdk/ParseInstallation-class.html new file mode 100644 index 000000000..ba0ae26c4 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation-class.html @@ -0,0 +1,1029 @@ + + + + + + + + ParseInstallation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseInstallation
+ +
+ +
+
+
+ +
+
+

ParseInstallation class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseInstallation({bool? debug, ParseClient? client, bool? autoSendSessionId}) +
+
+ Creates an instance of ParseInstallation +
+
+ ParseInstallation.forQuery() +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ acl + Map<String, dynamic> + +
+
+ +
getter/setter pair
+ +
+ +
+ appIdentifier + String? + +
+
+ +
no setter
+ +
+ +
+ appName + String? + +
+
+ +
no setter
+ +
+ +
+ appVersion + String? + +
+
+ +
no setter
+ +
+ +
+ createdAt + DateTime? + +
+
+ Returns DateTime createdAt +
no setterinherited
+ +
+ +
+ deviceToken + String? + +
+
+ +
getter/setter pair
+ +
+ +
+ deviceType + String? + +
+
+ +
no setter
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ installationId + String? + +
+
+ +
no setter
+ +
+ +
+ objectId + String? + +
+
+ Returns String objectId +
getter/setter pairinherited
+ +
+ +
+ parseClassName + String + +
+
+ refers to the Table Name in your Parse Server +
getter/setter pairinherited
+ +
+ +
+ parseVersion + String? + +
+
+ +
no setter
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ updatedAt + DateTime? + +
+
+ Returns DateTime updatedAt +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ addRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Add multiple objets to a relation associated with a given key +
inherited
+ +
+ +
+ clearUnsavedChanges() + → void + + + +
+
+ +
inherited
+ +
+ +
+ clone(Map<String, dynamic> map) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ containsKey(String key) + bool + + + +
+
+ +
inherited
+ +
+ +
+ containsValue(Object value) + bool + + + +
+
+ +
inherited
+ +
+ +
+ copy() + → dynamic + + + +
+
+ Creates a copy of this class +
inherited
+ +
+ +
+ create({bool allowCustomObjectId = false, dynamic context}) + Future<ParseResponse> + + + +
+
+ Creates a new object and saves it online +
override
+ +
+ +
+ delete<T extends ParseObject>({String? id, String? path}) + Future<ParseResponse> + + + +
+
+ Deletes the current object locally and online +
inherited
+ +
+ +
+ deleteEventually() + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ distinct<T extends ParseObject>(String query) + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ fetch({List<String>? include}) + Future<ParseObject> + + + +
+
+ Fetches this object with the data from the server. +
inherited
+ +
+ +
+ fromJson(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromJsonForManualObject(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromPin(String objectId) + Future + + + +
+
+ Get item from value storage +
inherited
+ +
+ +
+ get<T>(String key, {T? defaultValue}) + → T? + + + +
+
+ Get a value of type T associated with a given key +
inherited
+ +
+ +
+ getACL() + ParseACL + + + +
+
+ Access the ParseACL governing this object. +
inherited
+ +
+ +
+ getAll() + Future<ParseResponse> + + + +
+
+ Gets all objects from this table - Limited response at the moment +
inherited
+ +
+ +
+ getObject(String objectId, {List<String>? include}) + Future<ParseResponse> + + + +
+
+ Gets an object from the server using it's objectId +
inherited
+ +
+ +
+ getRelation<T extends ParseObject>(String key) + ParseRelation<T> + + + +
+
+ Get the instance of ParseRelation class associated with the given key +
inherited
+ +
+ +
+ getSubscribedChannels() + Future<List> + + + +
+
+ Returns an <List> containing all the channel names this device is subscribed to. + + +
+ +
+ isDirty({String? key}) + bool + + + +
+
+ +
inherited
+ +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ pin() + Future<bool> + + + +
+
+ Saves item to value storage +
inherited
+ +
+ +
+ query<T extends ParseObject>(String query, {ProgressCallback? progressCallback}) + Future<ParseResponse> + + + +
+
+ Can be used to create custom queries +
inherited
+ +
+ +
+ removeRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Remove multiple objets from a relation associated with a given key +
inherited
+ +
+ +
+ save({dynamic context}) + Future<ParseResponse> + + + +
+
+ Saves the current installation +
override
+ +
+ +
+ saveEventually() + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ saveInStorage(String key) + Future<void> + + + +
+
+ Saves in storage +
inherited
+ +
+ +
+ set<T>(String key, T value, {bool forceUpdate = true}) + → void + + + +
+
+ Add a key-value pair to this object. +
inherited
+ +
+ +
+ setACL<ParseACL>(ParseACL acl) + → void + + + +
+
+ Set the ParseACL governing this object. +
inherited
+ +
+ +
+ setAdd<T>(String key, T element) + → void + + + +
+
+ Add an element to the end of the array associated with a given key +
inherited
+ +
+ +
+ setAddAll(String key, List elements) + → void + + + +
+
+ Add multiple elements to the end of the array +associated with a given key +
inherited
+ +
+ +
+ setAddAllUnique(String key, List elements) + → void + + + +
+
+ Add multiple elements to the array associated with a given key, only +adding elements which are not already present in the array. The position +of the insert is not guaranteed +
inherited
+ +
+ +
+ setAddUnique(String key, dynamic element) + → void + + + +
+
+ Add an element to the array associated with a given key, only if +it is not already present in the array. The position of the insert is not +guaranteed +
inherited
+ +
+ +
+ setDecrement(String key, num amount) + → void + + + +
+
+ Decrement a num value associated with a given key by the given amount +
inherited
+ +
+ +
+ setIncrement(String key, num amount) + → void + + + +
+
+ Increment a num value associated with a given key by the given amount +
inherited
+ +
+ +
+ setRemove(String key, dynamic element) + → void + + + +
+
+ Remove every instance of an element from an array +associated with a given key +
inherited
+ +
+ +
+ setRemoveAll(String key, List elements) + → void + + + +
+
+ Removes all instances of the elements contained in a List from the +array associated with a given key +
inherited
+ +
+ +
+ subscribeToChannel(String value) + Future<void> + + + +
+
+ Subscribes the device to a channel of push notifications. + + +
+ +
+ toJson({bool full = false, bool forApiRQ = false, bool allowCustomObjectId = false}) + Map<String, dynamic> + + + +
+
+ Converts object to String in JSON format +
inherited
+ +
+ +
+ toPointer() + Map<String, dynamic> + + + +
+
+ +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+ unpin({String? key}) + Future<bool> + + + +
+
+ Remove item from value storage +
inherited
+ +
+ +
+ unset(String key, {bool offlineOnly = false}) + Future<ParseResponse> + + + +
+
+ Can be used set an objects variable to undefined rather than null +
inherited
+ +
+ +
+ unsubscribeFromChannel(String value) + Future<void> + + + +
+
+ Unsubscribes the device to a channel of push notifications. + + +
+ +
+ update({dynamic context}) + Future<ParseResponse> + + + +
+
+ Send the updated object to the server. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+ operator [](String key) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ operator []=(String key, dynamic value) + → void + + + +
+
+ +
inherited
+ +
+ +
+
+ +
+

Static Properties

+ +
+
+ readOnlyKeys + List<String> + +
+
+ +
final
+ +
+ +
+
+ +
+

Static Methods

+
+
+ currentInstallation() + Future<ParseInstallation> + + + +
+
+ Gets the current installation from storage + + +
+ +
+ isCurrent(ParseInstallation installation) + Future<bool> + + + +
+
+ + + +
+ +
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation/ParseInstallation.forQuery.html b/dart/flutter_parse_sdk/ParseInstallation/ParseInstallation.forQuery.html new file mode 100644 index 000000000..fa3872b0d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation/ParseInstallation.forQuery.html @@ -0,0 +1,124 @@ + + + + + + + + ParseInstallation.forQuery constructor - ParseInstallation - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseInstallation.forQuery
+ +
+ +
+
+
+ +
+
+

ParseInstallation.forQuery constructor +

+ +
+ + ParseInstallation.forQuery() +
+ + + + + +
+

Implementation

+
ParseInstallation.forQuery() : super(keyClassUser);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation/ParseInstallation.html b/dart/flutter_parse_sdk/ParseInstallation/ParseInstallation.html new file mode 100644 index 000000000..c33f4955d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation/ParseInstallation.html @@ -0,0 +1,139 @@ + + + + + + + + ParseInstallation constructor - ParseInstallation - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseInstallation
+ +
+ +
+
+
+ +
+
+

ParseInstallation constructor +

+ +
+ + ParseInstallation(
  1. {bool? debug,
  2. +
  3. ParseClient? client,
  4. +
  5. bool? autoSendSessionId}
  6. +
) +
+ + +
+

Creates an instance of ParseInstallation

+
+ + + +
+

Implementation

+
ParseInstallation({
+  bool? debug,
+  ParseClient? client,
+  bool? autoSendSessionId,
+}) : super(
+        keyClassInstallation,
+        client: client,
+        autoSendSessionId: autoSendSessionId,
+        debug: debug,
+      );
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation/acl.html b/dart/flutter_parse_sdk/ParseInstallation/acl.html new file mode 100644 index 000000000..c31ac836f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation/acl.html @@ -0,0 +1,155 @@ + + + + + + + + acl property - ParseInstallation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
acl
+ +
+ +
+
+
+ +
+
+

acl property +

+ + + +
+ +
+ + Map<String, dynamic> + acl + + +
+ + + + +
+

Implementation

+
Map<String, dynamic> get acl => super
+    .get<Map<String, dynamic>>(keyVarAcl, defaultValue: <String, dynamic>{})!;
+
+ +
+ + + +
+ +
+ + void + acl=(Map<String, dynamic> acl) + + +
+ + + + +
+

Implementation

+
set acl(Map<String, dynamic> acl) =>
+    set<Map<String, dynamic>>(keyVarAcl, acl);
+
+ +
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation/appIdentifier.html b/dart/flutter_parse_sdk/ParseInstallation/appIdentifier.html new file mode 100644 index 000000000..4f694d22c --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation/appIdentifier.html @@ -0,0 +1,132 @@ + + + + + + + + appIdentifier property - ParseInstallation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
appIdentifier
+ +
+ +
+
+
+ +
+
+

appIdentifier property +

+ + + +
+ +
+ + String? + appIdentifier + + +
+ + + + +
+

Implementation

+
String? get appIdentifier => super.get<String>(keyAppIdentifier);
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation/appName.html b/dart/flutter_parse_sdk/ParseInstallation/appName.html new file mode 100644 index 000000000..aef77d4ab --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation/appName.html @@ -0,0 +1,132 @@ + + + + + + + + appName property - ParseInstallation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
appName
+ +
+ +
+
+
+ +
+
+

appName property +

+ + + +
+ +
+ + String? + appName + + +
+ + + + +
+

Implementation

+
String? get appName => super.get<String>(keyAppName);
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation/appVersion.html b/dart/flutter_parse_sdk/ParseInstallation/appVersion.html new file mode 100644 index 000000000..ec14c27b5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation/appVersion.html @@ -0,0 +1,132 @@ + + + + + + + + appVersion property - ParseInstallation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
appVersion
+ +
+ +
+
+
+ +
+
+

appVersion property +

+ + + +
+ +
+ + String? + appVersion + + +
+ + + + +
+

Implementation

+
String? get appVersion => super.get<String>(keyAppVersion);
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation/create.html b/dart/flutter_parse_sdk/ParseInstallation/create.html new file mode 100644 index 000000000..cb5c03472 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation/create.html @@ -0,0 +1,154 @@ + + + + + + + + create method - ParseInstallation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
create
+ +
+ +
+
+
+ +
+
+

create method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseResponse> +create(
  1. {bool allowCustomObjectId = false,
  2. +
  3. dynamic context}
  4. +
) + +
override
+ +
+ +
+

Creates a new object and saves it online

+

Prefer using save over create

+
+ + + +
+

Implementation

+
@override
+Future<ParseResponse> create(
+    {bool allowCustomObjectId = false, dynamic context}) async {
+  final bool isCurrent = await ParseInstallation.isCurrent(this);
+  if (isCurrent) {
+    await _updateInstallation();
+  }
+
+  final ParseResponse parseResponse =
+      await _create(allowCustomObjectId: allowCustomObjectId);
+  if (parseResponse.success && isCurrent) {
+    clearUnsavedChanges();
+    await saveInStorage(keyParseStoreInstallation);
+  }
+  return parseResponse;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation/currentInstallation.html b/dart/flutter_parse_sdk/ParseInstallation/currentInstallation.html new file mode 100644 index 000000000..b54943bb5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation/currentInstallation.html @@ -0,0 +1,133 @@ + + + + + + + + currentInstallation method - ParseInstallation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
currentInstallation
+ +
+ +
+
+
+ +
+
+

currentInstallation static method +

+ +
+ + +Future<ParseInstallation> +currentInstallation() + + + +
+ +
+

Gets the current installation from storage

+
+ + + +
+

Implementation

+
static Future<ParseInstallation> currentInstallation() async {
+  return (await _getFromLocalStore()) ?? (await _createInstallation());
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation/deviceToken.html b/dart/flutter_parse_sdk/ParseInstallation/deviceToken.html new file mode 100644 index 000000000..8a507288d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation/deviceToken.html @@ -0,0 +1,154 @@ + + + + + + + + deviceToken property - ParseInstallation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
deviceToken
+ +
+ +
+
+
+ +
+
+

deviceToken property +

+ + + +
+ +
+ + String? + deviceToken + + +
+ + + + +
+

Implementation

+
String? get deviceToken => super.get<String>(keyDeviceToken);
+
+ +
+ + + +
+ +
+ + void + deviceToken=(String? deviceToken) + + +
+ + + + +
+

Implementation

+
set deviceToken(String? deviceToken) =>
+    set<String?>(keyDeviceToken, deviceToken);
+
+ +
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation/deviceType.html b/dart/flutter_parse_sdk/ParseInstallation/deviceType.html new file mode 100644 index 000000000..d02d709ca --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation/deviceType.html @@ -0,0 +1,132 @@ + + + + + + + + deviceType property - ParseInstallation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
deviceType
+ +
+ +
+
+
+ +
+
+

deviceType property +

+ + + +
+ +
+ + String? + deviceType + + +
+ + + + +
+

Implementation

+
String? get deviceType => super.get<String>(keyDeviceType);
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation/getSubscribedChannels.html b/dart/flutter_parse_sdk/ParseInstallation/getSubscribedChannels.html new file mode 100644 index 000000000..7d1a4e833 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation/getSubscribedChannels.html @@ -0,0 +1,143 @@ + + + + + + + + getSubscribedChannels method - ParseInstallation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getSubscribedChannels
+ +
+ +
+
+
+ +
+
+

getSubscribedChannels method +

+ +
+ + +Future<List> +getSubscribedChannels() + + + +
+ +
+

Returns an <List> containing all the channel names this device is subscribed to.

+
+ + + +
+

Implementation

+
Future<List<dynamic>> getSubscribedChannels() async {
+  print('getSubscribedChannels');
+  final ParseResponse apiResponse =
+      await ParseObject(keyClassInstallation).getObject(objectId!);
+
+  if (apiResponse.success) {
+    final ParseObject installation = apiResponse.result;
+    return Future<List<dynamic>>.value(installation
+        .get<List<dynamic>>('channels', defaultValue: <dynamic>[]));
+  } else {
+    return <String>[];
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation/installationId.html b/dart/flutter_parse_sdk/ParseInstallation/installationId.html new file mode 100644 index 000000000..2bdd6d958 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation/installationId.html @@ -0,0 +1,132 @@ + + + + + + + + installationId property - ParseInstallation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
installationId
+ +
+ +
+
+
+ +
+
+

installationId property +

+ + + +
+ +
+ + String? + installationId + + +
+ + + + +
+

Implementation

+
String? get installationId => super.get<String>(keyInstallationId);
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation/isCurrent.html b/dart/flutter_parse_sdk/ParseInstallation/isCurrent.html new file mode 100644 index 000000000..6fd1dba03 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation/isCurrent.html @@ -0,0 +1,133 @@ + + + + + + + + isCurrent method - ParseInstallation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
isCurrent
+ +
+ +
+
+
+ +
+
+

isCurrent static method +

+ +
+ + +Future<bool> +isCurrent(
  1. ParseInstallation installation
  2. +
) + + + +
+ + + + +
+

Implementation

+
static Future<bool> isCurrent(ParseInstallation installation) async {
+  _currentInstallationId ??= (await _getFromLocalStore())?.installationId;
+  return _currentInstallationId != null &&
+      installation.installationId == _currentInstallationId;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation/parseVersion.html b/dart/flutter_parse_sdk/ParseInstallation/parseVersion.html new file mode 100644 index 000000000..0a569a868 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation/parseVersion.html @@ -0,0 +1,132 @@ + + + + + + + + parseVersion property - ParseInstallation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
parseVersion
+ +
+ +
+
+
+ +
+
+

parseVersion property +

+ + + +
+ +
+ + String? + parseVersion + + +
+ + + + +
+

Implementation

+
String? get parseVersion => super.get<String>(keyParseVersion);
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation/readOnlyKeys.html b/dart/flutter_parse_sdk/ParseInstallation/readOnlyKeys.html new file mode 100644 index 000000000..05d560dbd --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation/readOnlyKeys.html @@ -0,0 +1,133 @@ + + + + + + + + readOnlyKeys property - ParseInstallation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
readOnlyKeys
+ +
+ +
+
+
+ +
+
+

readOnlyKeys property +

+ +
+ + List<String> + readOnlyKeys +
final
+ +
+ + + +
+

Implementation

+
static final List<String> readOnlyKeys = <String>[
+  keyDeviceToken,
+  keyDeviceType,
+  keyInstallationId,
+  keyAppName,
+  keyAppVersion,
+  keyAppIdentifier,
+  keyParseVersion
+];
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation/save.html b/dart/flutter_parse_sdk/ParseInstallation/save.html new file mode 100644 index 000000000..2c550d017 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation/save.html @@ -0,0 +1,150 @@ + + + + + + + + save method - ParseInstallation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
save
+ +
+ +
+
+
+ +
+
+

save method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseResponse> +save(
  1. {dynamic context}
  2. +
) + +
override
+ +
+ +
+

Saves the current installation

+
+ + + +
+

Implementation

+
@override
+Future<ParseResponse> save({dynamic context}) async {
+  final bool isCurrent = await ParseInstallation.isCurrent(this);
+  if (isCurrent) {
+    await _updateInstallation();
+  }
+  //ParseResponse parseResponse = await super.save();
+  final ParseResponse parseResponse = await _save();
+  if (parseResponse.success && isCurrent) {
+    clearUnsavedChanges();
+    await saveInStorage(keyParseStoreInstallation);
+  }
+  return parseResponse;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation/subscribeToChannel.html b/dart/flutter_parse_sdk/ParseInstallation/subscribeToChannel.html new file mode 100644 index 000000000..04b6ac976 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation/subscribeToChannel.html @@ -0,0 +1,136 @@ + + + + + + + + subscribeToChannel method - ParseInstallation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
subscribeToChannel
+ +
+ +
+
+
+ +
+
+

subscribeToChannel method +

+ +
+ + +Future<void> +subscribeToChannel(
  1. String value
  2. +
) + + + +
+ +
+

Subscribes the device to a channel of push notifications.

+
+ + + +
+

Implementation

+
Future<void> subscribeToChannel(String value) async {
+  final List<dynamic> channel = <String>[value];
+  setAddAllUnique('channels', channel);
+  await save();
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseInstallation/unsubscribeFromChannel.html b/dart/flutter_parse_sdk/ParseInstallation/unsubscribeFromChannel.html new file mode 100644 index 000000000..b3a8d4d92 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseInstallation/unsubscribeFromChannel.html @@ -0,0 +1,136 @@ + + + + + + + + unsubscribeFromChannel method - ParseInstallation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
unsubscribeFromChannel
+ +
+ +
+
+
+ +
+
+

unsubscribeFromChannel method +

+ +
+ + +Future<void> +unsubscribeFromChannel(
  1. String value
  2. +
) + + + +
+ +
+

Unsubscribes the device to a channel of push notifications.

+
+ + + +
+

Implementation

+
Future<void> unsubscribeFromChannel(String value) async {
+  final List<dynamic> channel = <String>[value];
+  setRemove('channels', channel);
+  await save();
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveElement-class-sidebar.html b/dart/flutter_parse_sdk/ParseLiveElement-class-sidebar.html new file mode 100644 index 000000000..d15960e0d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveElement-class-sidebar.html @@ -0,0 +1,32 @@ +
    + +
  1. Constructors
  2. +
  3. ParseLiveElement
  4. + + + +
  5. + Properties +
  6. +
  7. hashCode
  8. +
  9. loaded
  10. +
  11. object
  12. +
  13. queryBuilder
  14. +
  15. runtimeType
  16. +
  17. stream
  18. + +
  19. Methods
  20. +
  21. dispose
  22. +
  23. noSuchMethod
  24. +
  25. reconnected
  26. +
  27. toString
  28. + +
  29. Operators
  30. +
  31. operator ==
  32. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseLiveElement-class.html b/dart/flutter_parse_sdk/ParseLiveElement-class.html new file mode 100644 index 000000000..dcf4b2ac9 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveElement-class.html @@ -0,0 +1,307 @@ + + + + + + + + ParseLiveElement class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveElement
+ +
+ +
+
+
+ +
+
+

ParseLiveElement<T extends ParseObject> class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseLiveElement(T object, {bool loaded = false, List<String>? includeObject}) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ loaded + bool + +
+
+ +
no setterinherited
+ +
+ +
+ object + ↔ T + +
+
+ +
getter/setter pairinherited
+ +
+ +
+ queryBuilder + QueryBuilder<T> + +
+
+ +
getter/setter pair
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ stream + Stream<T> + +
+
+ +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ dispose() + → void + + + +
+
+ +
override
+ +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ reconnected() + Future<void> + + + +
+
+ +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveElement/ParseLiveElement.html b/dart/flutter_parse_sdk/ParseLiveElement/ParseLiveElement.html new file mode 100644 index 000000000..605fedd02 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveElement/ParseLiveElement.html @@ -0,0 +1,139 @@ + + + + + + + + ParseLiveElement constructor - ParseLiveElement - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveElement
+ +
+ +
+
+
+ +
+
+

ParseLiveElement<T extends ParseObject> constructor +

+ +
+ + ParseLiveElement<T extends ParseObject>(
  1. T object,
  2. +
  3. {bool loaded = false,
  4. +
  5. List<String>? includeObject}
  6. +
) +
+ + + + + +
+

Implementation

+
ParseLiveElement(T object, {bool loaded = false, List<String>? includeObject})
+    : super(object,
+          loaded: loaded,
+          updatedSubItems:
+              ParseLiveList._toIncludeMap(includeObject ?? <String>[])) {
+  _includes = ParseLiveList._toIncludeMap(includeObject ?? <String>[]);
+  queryBuilder = QueryBuilder<T>(object.clone(<String, dynamic>{}))
+    ..whereEqualTo(keyVarObjectId, object.objectId);
+  if (includeObject != null) {
+    queryBuilder.includeObject(includeObject);
+  }
+  _init(object, loaded: loaded, includeObject: includeObject);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveElement/dispose.html b/dart/flutter_parse_sdk/ParseLiveElement/dispose.html new file mode 100644 index 000000000..0b3e7bc31 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveElement/dispose.html @@ -0,0 +1,141 @@ + + + + + + + + dispose method - ParseLiveElement class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
dispose
+ +
+ +
+
+
+ +
+
+

dispose method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +void +dispose() + +
override
+ +
+ + + + +
+

Implementation

+
@override
+void dispose() {
+  final Subscription<T>? subscription = _subscription;
+  if (subscription != null) {
+    LiveQuery().client.unSubscribe(subscription);
+    _subscription = null;
+  }
+  super.dispose();
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveElement/queryBuilder.html b/dart/flutter_parse_sdk/ParseLiveElement/queryBuilder.html new file mode 100644 index 000000000..1bd19dddb --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveElement/queryBuilder.html @@ -0,0 +1,125 @@ + + + + + + + + queryBuilder property - ParseLiveElement class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
queryBuilder
+ +
+ +
+
+
+ +
+
+

queryBuilder property +

+ +
+ + QueryBuilder<T> + queryBuilder +
getter/setter pair
+ +
+ + + +
+

Implementation

+
late QueryBuilder<T> queryBuilder;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveList-class-sidebar.html b/dart/flutter_parse_sdk/ParseLiveList-class-sidebar.html new file mode 100644 index 000000000..daf43bbf4 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveList-class-sidebar.html @@ -0,0 +1,37 @@ +
    + + + + +
  1. + Properties +
  2. +
  3. hashCode
  4. +
  5. includes
  6. +
  7. nextID
  8. +
  9. runtimeType
  10. +
  11. size
  12. +
  13. stream
  14. + +
  15. Methods
  16. +
  17. after
  18. +
  19. dispose
  20. +
  21. getAt
  22. +
  23. getIdentifier
  24. +
  25. getLoadedAt
  26. +
  27. getPreLoadedAt
  28. +
  29. idOf
  30. +
  31. noSuchMethod
  32. +
  33. toString
  34. + +
  35. Operators
  36. +
  37. operator ==
  38. + + + + + +
  39. Static methods
  40. +
  41. create
  42. + +
diff --git a/dart/flutter_parse_sdk/ParseLiveList-class.html b/dart/flutter_parse_sdk/ParseLiveList-class.html new file mode 100644 index 000000000..0eb75d310 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveList-class.html @@ -0,0 +1,356 @@ + + + + + + + + ParseLiveList class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveList
+ +
+ +
+
+
+ +
+
+

ParseLiveList<T extends ParseObject> class + +

+ + + + + + + +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ includes + List<String> + +
+
+ +
no setter
+ +
+ +
+ nextID + int + +
+
+ +
no setter
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ size + int + +
+
+ +
no setter
+ +
+ +
+ stream + Stream<ParseLiveListEvent<T>> + +
+
+ +
no setter
+ +
+ +
+
+ + +
+

Methods

+
+
+ after(T object1, T object2) + bool? + + + +
+
+ is object1 listed after object2? + + +
+ +
+ dispose() + → void + + + +
+
+ + + +
+ +
+ getAt(int index) + Stream<T> + + + +
+
+ + + +
+ +
+ getIdentifier(int index) + String + + + +
+
+ + + +
+ +
+ getLoadedAt(int index) + → T? + + + +
+
+ + + +
+ +
+ getPreLoadedAt(int index) + → T? + + + +
+
+ + + +
+ +
+ idOf(int index) + String + + + +
+
+ + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + +
+

Static Methods

+
+
+ create<T extends ParseObject>(QueryBuilder<T> query, {bool? listenOnAllSubItems, List<String>? listeningIncludes, bool lazyLoading = true, List<String>? preloadedColumns}) + Future<ParseLiveList<T>> + + + +
+
+ + + +
+ +
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveList/after.html b/dart/flutter_parse_sdk/ParseLiveList/after.html new file mode 100644 index 000000000..1f722f6f6 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveList/after.html @@ -0,0 +1,183 @@ + + + + + + + + after method - ParseLiveList class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
after
+ +
+ +
+
+
+ +
+
+

after method +

+ +
+ + +bool? +after(
  1. T object1,
  2. +
  3. T object2
  4. +
) + + + +
+ +
+

is object1 listed after object2?

+
+ + + +
+

Implementation

+
bool? after(T object1, T object2) {
+  List<String> fields = <String>[];
+
+  if (_query.limiters.containsKey('order')) {
+    fields = _query.limiters['order'].toString().split(',');
+  }
+  fields.add(keyVarCreatedAt);
+  for (String key in fields) {
+    bool reverse = false;
+    if (key.startsWith('-')) {
+      reverse = true;
+      key = key.substring(1);
+    }
+    final dynamic val1 = object1.get<dynamic>(key);
+    final dynamic val2 = object2.get<dynamic>(key);
+
+    if (val1 == null && val2 == null) {
+      break;
+    }
+    if (val1 == null) {
+      return reverse;
+    }
+    if (val2 == null) {
+      return !reverse;
+    }
+
+    if (val1 is num && val2 is num) {
+      if (val1 < val2) {
+        return reverse;
+      }
+      if (val1 > val2) {
+        return !reverse;
+      }
+    } else if (val1 is String && val2 is String) {
+      if (val1.toString().compareTo(val2) < 0) {
+        return reverse;
+      }
+      if (val1.toString().compareTo(val2) > 0) {
+        return !reverse;
+      }
+    } else if (val1 is DateTime && val2 is DateTime) {
+      if (val1.isAfter(val2)) {
+        return !reverse;
+      }
+      if (val1.isBefore(val2)) {
+        return reverse;
+      }
+    }
+  }
+  return null;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveList/create.html b/dart/flutter_parse_sdk/ParseLiveList/create.html new file mode 100644 index 000000000..e5b8d6a16 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveList/create.html @@ -0,0 +1,153 @@ + + + + + + + + create method - ParseLiveList class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
create
+ +
+ +
+
+
+ +
+
+

create<T extends ParseObject> static method +

+ +
+ + +Future<ParseLiveList<T>> +create<T extends ParseObject>(
  1. QueryBuilder<T> query,
  2. +
  3. {bool? listenOnAllSubItems,
  4. +
  5. List<String>? listeningIncludes,
  6. +
  7. bool lazyLoading = true,
  8. +
  9. List<String>? preloadedColumns}
  10. +
) + + + +
+ + + + +
+

Implementation

+
static Future<ParseLiveList<T>> create<T extends ParseObject>(
+  QueryBuilder<T> query, {
+  bool? listenOnAllSubItems,
+  List<String>? listeningIncludes,
+  bool lazyLoading = true,
+  List<String>? preloadedColumns,
+}) {
+  final ParseLiveList<T> parseLiveList = ParseLiveList<T>._(
+    query,
+    listenOnAllSubItems == true
+        ? _toIncludeMap(
+            query.limiters['include']?.toString().split(',') ?? <String>[])
+        : _toIncludeMap(listeningIncludes ?? <String>[]),
+    lazyLoading,
+    preloadedColumns: preloadedColumns ?? const <String>[],
+  );
+
+  return parseLiveList._init().then((_) {
+    return parseLiveList;
+  });
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveList/dispose.html b/dart/flutter_parse_sdk/ParseLiveList/dispose.html new file mode 100644 index 000000000..b4ed9e20d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveList/dispose.html @@ -0,0 +1,143 @@ + + + + + + + + dispose method - ParseLiveList class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
dispose
+ +
+ +
+
+
+ +
+
+

dispose method +

+ +
+ + +void +dispose() + + + +
+ + + + +
+

Implementation

+
void dispose() {
+  Subscription<T>? liveQuerySubscription = _liveQuerySubscription;
+  if (liveQuerySubscription != null) {
+    LiveQuery().client.unSubscribe(liveQuerySubscription);
+    _liveQuerySubscription = null;
+  }
+  StreamSubscription<LiveQueryClientEvent>? liveQueryClientEventSubscription =
+      _liveQueryClientEventSubscription;
+  if (liveQueryClientEventSubscription != null) {
+    liveQueryClientEventSubscription.cancel();
+    _liveQueryClientEventSubscription = null;
+  }
+  while (_list.isNotEmpty) {
+    _list.removeLast().dispose();
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveList/getAt.html b/dart/flutter_parse_sdk/ParseLiveList/getAt.html new file mode 100644 index 000000000..fc293fb88 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveList/getAt.html @@ -0,0 +1,155 @@ + + + + + + + + getAt method - ParseLiveList class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getAt
+ +
+ +
+
+
+ +
+
+

getAt method +

+ +
+ + +Stream<T> +getAt(
  1. int index
  2. +
) + + + +
+ + + + +
+

Implementation

+
Stream<T> getAt(final int index) async* {
+  if (index < _list.length) {
+    if (!_list[index].loaded) {
+      final QueryBuilder<T> queryBuilder = QueryBuilder<T>.copy(_query)
+        ..whereEqualTo(
+            keyVarObjectId, _list[index].object.get<String>(keyVarObjectId))
+        ..setLimit(1);
+      final ParseResponse response = await queryBuilder.query<T>();
+      if (_list.isEmpty) {
+        yield* _createStreamError<T>(
+            ParseError(message: 'ParseLiveList: _list is empty'));
+        return;
+      }
+      if (response.success) {
+        _list[index].object = response.results?.first;
+      } else {
+        ParseError? error = response.error;
+        if (error != null) yield* _createStreamError<T>(error);
+        return;
+      }
+    }
+//    just for testing
+//    await Future<void>.delayed(const Duration(seconds: 2));
+    yield _list[index].object;
+    yield* _list[index].stream;
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveList/getIdentifier.html b/dart/flutter_parse_sdk/ParseLiveList/getIdentifier.html new file mode 100644 index 000000000..df992cfa5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveList/getIdentifier.html @@ -0,0 +1,135 @@ + + + + + + + + getIdentifier method - ParseLiveList class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getIdentifier
+ +
+ +
+
+
+ +
+
+

getIdentifier method +

+ +
+ + +String +getIdentifier(
  1. int index
  2. +
) + + + +
+ + + + +
+

Implementation

+
String getIdentifier(int index) {
+  if (index < _list.length) {
+    return idOf(index) +
+        _list[index].object.get<DateTime>(keyVarUpdatedAt).toString();
+  }
+  return 'NotFound';
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveList/getLoadedAt.html b/dart/flutter_parse_sdk/ParseLiveList/getLoadedAt.html new file mode 100644 index 000000000..405d204c1 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveList/getLoadedAt.html @@ -0,0 +1,134 @@ + + + + + + + + getLoadedAt method - ParseLiveList class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getLoadedAt
+ +
+ +
+
+
+ +
+
+

getLoadedAt method +

+ +
+ + +T? +getLoadedAt(
  1. int index
  2. +
) + + + +
+ + + + +
+

Implementation

+
T? getLoadedAt(int index) {
+  if (index < _list.length && _list[index].loaded) {
+    return _list[index].object;
+  }
+  return null;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveList/getPreLoadedAt.html b/dart/flutter_parse_sdk/ParseLiveList/getPreLoadedAt.html new file mode 100644 index 000000000..378c73a7f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveList/getPreLoadedAt.html @@ -0,0 +1,134 @@ + + + + + + + + getPreLoadedAt method - ParseLiveList class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getPreLoadedAt
+ +
+ +
+
+
+ +
+
+

getPreLoadedAt method +

+ +
+ + +T? +getPreLoadedAt(
  1. int index
  2. +
) + + + +
+ + + + +
+

Implementation

+
T? getPreLoadedAt(int index) {
+  if (index < _list.length) {
+    return _list[index].object;
+  }
+  return null;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveList/idOf.html b/dart/flutter_parse_sdk/ParseLiveList/idOf.html new file mode 100644 index 000000000..a1f1098e5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveList/idOf.html @@ -0,0 +1,134 @@ + + + + + + + + idOf method - ParseLiveList class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
idOf
+ +
+ +
+
+
+ +
+
+

idOf method +

+ +
+ + +String +idOf(
  1. int index
  2. +
) + + + +
+ + + + +
+

Implementation

+
String idOf(int index) {
+  if (index < _list.length) {
+    return _list[index].object.objectId ?? 'NotFound';
+  }
+  return 'NotFound';
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveList/includes.html b/dart/flutter_parse_sdk/ParseLiveList/includes.html new file mode 100644 index 000000000..ee4ebb546 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveList/includes.html @@ -0,0 +1,133 @@ + + + + + + + + includes property - ParseLiveList class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
includes
+ +
+ +
+
+
+ +
+
+

includes property +

+ + + +
+ +
+ + List<String> + includes + + +
+ + + + +
+

Implementation

+
List<String> get includes =>
+    _query.limiters['include']?.toString().split(',') ?? <String>[];
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveList/nextID.html b/dart/flutter_parse_sdk/ParseLiveList/nextID.html new file mode 100644 index 000000000..4e770578b --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveList/nextID.html @@ -0,0 +1,132 @@ + + + + + + + + nextID property - ParseLiveList class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
nextID
+ +
+ +
+
+
+ +
+
+

nextID property +

+ + + +
+ +
+ + int + nextID + + +
+ + + + +
+

Implementation

+
int get nextID => _nextID++;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveList/size.html b/dart/flutter_parse_sdk/ParseLiveList/size.html new file mode 100644 index 000000000..c32fd20cc --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveList/size.html @@ -0,0 +1,134 @@ + + + + + + + + size property - ParseLiveList class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
size
+ +
+ +
+
+
+ +
+
+

size property +

+ + + +
+ +
+ + int + size + + +
+ + + + +
+

Implementation

+
int get size {
+  return _list.length;
+}
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveList/stream.html b/dart/flutter_parse_sdk/ParseLiveList/stream.html new file mode 100644 index 000000000..f4f7e8a00 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveList/stream.html @@ -0,0 +1,132 @@ + + + + + + + + stream property - ParseLiveList class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
stream
+ +
+ +
+
+
+ +
+
+

stream property +

+ + + +
+ +
+ + Stream<ParseLiveListEvent<T>> + stream + + +
+ + + + +
+

Implementation

+
Stream<ParseLiveListEvent<T>> get stream => _eventStreamController.stream;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListAddEvent-class-sidebar.html b/dart/flutter_parse_sdk/ParseLiveListAddEvent-class-sidebar.html new file mode 100644 index 000000000..368f4bbec --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListAddEvent-class-sidebar.html @@ -0,0 +1,28 @@ +
    + +
  1. Constructors
  2. +
  3. ParseLiveListAddEvent
  4. + + + +
  5. + Properties +
  6. +
  7. hashCode
  8. +
  9. index
  10. +
  11. object
  12. +
  13. runtimeType
  14. + +
  15. Methods
  16. +
  17. noSuchMethod
  18. +
  19. toString
  20. + +
  21. Operators
  22. +
  23. operator ==
  24. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseLiveListAddEvent-class.html b/dart/flutter_parse_sdk/ParseLiveListAddEvent-class.html new file mode 100644 index 000000000..d9aa57e24 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListAddEvent-class.html @@ -0,0 +1,259 @@ + + + + + + + + ParseLiveListAddEvent class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveListAddEvent
+ +
+ +
+
+
+ +
+
+

ParseLiveListAddEvent<T extends ParseObject> class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseLiveListAddEvent(int index, T object) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ index + int + +
+
+ +
no setterinherited
+ +
+ +
+ object + → T + +
+
+ +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListAddEvent/ParseLiveListAddEvent.html b/dart/flutter_parse_sdk/ParseLiveListAddEvent/ParseLiveListAddEvent.html new file mode 100644 index 000000000..21d665e03 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListAddEvent/ParseLiveListAddEvent.html @@ -0,0 +1,126 @@ + + + + + + + + ParseLiveListAddEvent constructor - ParseLiveListAddEvent - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveListAddEvent
+ +
+ +
+
+
+ +
+
+

ParseLiveListAddEvent<T extends ParseObject> constructor +

+ +
+ + ParseLiveListAddEvent<T extends ParseObject>(
  1. int index,
  2. +
  3. T object
  4. +
) +
+ + + + + +
+

Implementation

+
ParseLiveListAddEvent(int index, T object) : super(index, object);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListDeleteEvent-class-sidebar.html b/dart/flutter_parse_sdk/ParseLiveListDeleteEvent-class-sidebar.html new file mode 100644 index 000000000..82302ee8b --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListDeleteEvent-class-sidebar.html @@ -0,0 +1,28 @@ +
    + +
  1. Constructors
  2. +
  3. ParseLiveListDeleteEvent
  4. + + + +
  5. + Properties +
  6. +
  7. hashCode
  8. +
  9. index
  10. +
  11. object
  12. +
  13. runtimeType
  14. + +
  15. Methods
  16. +
  17. noSuchMethod
  18. +
  19. toString
  20. + +
  21. Operators
  22. +
  23. operator ==
  24. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseLiveListDeleteEvent-class.html b/dart/flutter_parse_sdk/ParseLiveListDeleteEvent-class.html new file mode 100644 index 000000000..c77fa6d66 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListDeleteEvent-class.html @@ -0,0 +1,259 @@ + + + + + + + + ParseLiveListDeleteEvent class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveListDeleteEvent
+ +
+ +
+
+
+ +
+
+

ParseLiveListDeleteEvent<T extends ParseObject> class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseLiveListDeleteEvent(int index, T object) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ index + int + +
+
+ +
no setterinherited
+ +
+ +
+ object + → T + +
+
+ +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListDeleteEvent/ParseLiveListDeleteEvent.html b/dart/flutter_parse_sdk/ParseLiveListDeleteEvent/ParseLiveListDeleteEvent.html new file mode 100644 index 000000000..13d80e36a --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListDeleteEvent/ParseLiveListDeleteEvent.html @@ -0,0 +1,126 @@ + + + + + + + + ParseLiveListDeleteEvent constructor - ParseLiveListDeleteEvent - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveListDeleteEvent
+ +
+ +
+
+
+ +
+
+

ParseLiveListDeleteEvent<T extends ParseObject> constructor +

+ +
+ + ParseLiveListDeleteEvent<T extends ParseObject>(
  1. int index,
  2. +
  3. T object
  4. +
) +
+ + + + + +
+

Implementation

+
ParseLiveListDeleteEvent(int index, T object) : super(index, object);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListElement-class-sidebar.html b/dart/flutter_parse_sdk/ParseLiveListElement-class-sidebar.html new file mode 100644 index 000000000..427080f20 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListElement-class-sidebar.html @@ -0,0 +1,31 @@ +
    + +
  1. Constructors
  2. +
  3. ParseLiveListElement
  4. + + + +
  5. + Properties +
  6. +
  7. hashCode
  8. +
  9. loaded
  10. +
  11. object
  12. +
  13. runtimeType
  14. +
  15. stream
  16. + +
  17. Methods
  18. +
  19. dispose
  20. +
  21. noSuchMethod
  22. +
  23. reconnected
  24. +
  25. toString
  26. + +
  27. Operators
  28. +
  29. operator ==
  30. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseLiveListElement-class.html b/dart/flutter_parse_sdk/ParseLiveListElement-class.html new file mode 100644 index 000000000..8160cc6bf --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListElement-class.html @@ -0,0 +1,292 @@ + + + + + + + + ParseLiveListElement class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveListElement
+ +
+ +
+
+
+ +
+
+

ParseLiveListElement<T extends ParseObject> class + +

+ + + + +
+
+ + + + + +
Implementers
+
+ + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseLiveListElement(T _object, {bool loaded = false, Map<String, dynamic>? updatedSubItems}) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ loaded + bool + +
+
+ +
no setter
+ +
+ +
+ object + ↔ T + +
+
+ +
getter/setter pair
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ stream + Stream<T> + +
+
+ +
no setter
+ +
+ +
+
+ + +
+

Methods

+
+
+ dispose() + → void + + + +
+
+ + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ reconnected() + Future<void> + + + +
+
+ + + +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListElement/ParseLiveListElement.html b/dart/flutter_parse_sdk/ParseLiveListElement/ParseLiveListElement.html new file mode 100644 index 000000000..68a26c5f2 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListElement/ParseLiveListElement.html @@ -0,0 +1,136 @@ + + + + + + + + ParseLiveListElement constructor - ParseLiveListElement - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveListElement
+ +
+ +
+
+
+ +
+
+

ParseLiveListElement<T extends ParseObject> constructor +

+ +
+ + ParseLiveListElement<T extends ParseObject>(
  1. T _object,
  2. +
  3. {bool loaded = false,
  4. +
  5. Map<String, dynamic>? updatedSubItems}
  6. +
) +
+ + + + + +
+

Implementation

+
ParseLiveListElement(this._object,
+    {bool loaded = false, Map<String, dynamic>? updatedSubItems})
+    : _loaded = loaded {
+  _updatedSubItems =
+      _toSubscriptionMap(updatedSubItems ?? <String, dynamic>{});
+  if (_updatedSubItems.isNotEmpty) {
+    _liveQuery = LiveQuery();
+    _subscribe();
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListElement/dispose.html b/dart/flutter_parse_sdk/ParseLiveListElement/dispose.html new file mode 100644 index 000000000..a35cb8bdc --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListElement/dispose.html @@ -0,0 +1,131 @@ + + + + + + + + dispose method - ParseLiveListElement class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
dispose
+ +
+ +
+
+
+ +
+
+

dispose method +

+ +
+ + +void +dispose() + + + +
+ + + + +
+

Implementation

+
void dispose() {
+  _unsubscribe(_updatedSubItems);
+  _streamController.close();
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListElement/loaded.html b/dart/flutter_parse_sdk/ParseLiveListElement/loaded.html new file mode 100644 index 000000000..28c18dfca --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListElement/loaded.html @@ -0,0 +1,132 @@ + + + + + + + + loaded property - ParseLiveListElement class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
loaded
+ +
+ +
+
+
+ +
+
+

loaded property +

+ + + +
+ +
+ + bool + loaded + + +
+ + + + +
+

Implementation

+
bool get loaded => _loaded;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListElement/object.html b/dart/flutter_parse_sdk/ParseLiveListElement/object.html new file mode 100644 index 000000000..f9fc614f0 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListElement/object.html @@ -0,0 +1,159 @@ + + + + + + + + object property - ParseLiveListElement class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
object
+ +
+ +
+
+
+ +
+
+

object property +

+ + + +
+ +
+ + T + object + + +
+ + + + +
+

Implementation

+
T get object => _object.clone(_object.toJson(full: true));
+
+ +
+ + + +
+ +
+ + void + object=(T value) + + +
+ + + + +
+

Implementation

+
set object(T value) {
+  _loaded = true;
+  _object = value;
+  _unsubscribe(_updatedSubItems);
+  _subscribe();
+  _streamController.add(object);
+}
+
+ +
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListElement/reconnected.html b/dart/flutter_parse_sdk/ParseLiveListElement/reconnected.html new file mode 100644 index 000000000..bdfa135ef --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListElement/reconnected.html @@ -0,0 +1,135 @@ + + + + + + + + reconnected method - ParseLiveListElement class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
reconnected
+ +
+ +
+
+
+ +
+
+

reconnected method +

+ +
+ + +Future<void> +reconnected() + + + +
+ + + + +
+

Implementation

+
Future<void> reconnected() async {
+  if (loaded) {
+    _subscriptionQueue.whenComplete(() async {
+      await _updateSubItems(_object, _updatedSubItems);
+//        _streamController.add(_object?.clone(_object.toJson(full: true)));
+    });
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListElement/stream.html b/dart/flutter_parse_sdk/ParseLiveListElement/stream.html new file mode 100644 index 000000000..e48694b7b --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListElement/stream.html @@ -0,0 +1,132 @@ + + + + + + + + stream property - ParseLiveListElement class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
stream
+ +
+ +
+
+
+ +
+
+

stream property +

+ + + +
+ +
+ + Stream<T> + stream + + +
+ + + + +
+

Implementation

+
Stream<T> get stream => _streamController.stream;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListElementSnapshot-class-sidebar.html b/dart/flutter_parse_sdk/ParseLiveListElementSnapshot-class-sidebar.html new file mode 100644 index 000000000..ebc685e83 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListElementSnapshot-class-sidebar.html @@ -0,0 +1,32 @@ +
    + +
  1. Constructors
  2. +
  3. ParseLiveListElementSnapshot
  4. + + + +
  5. + Properties +
  6. +
  7. error
  8. +
  9. failed
  10. +
  11. hasData
  12. +
  13. hashCode
  14. +
  15. hasPreLoadedData
  16. +
  17. loadedData
  18. +
  19. preLoadedData
  20. +
  21. runtimeType
  22. + +
  23. Methods
  24. +
  25. noSuchMethod
  26. +
  27. toString
  28. + +
  29. Operators
  30. +
  31. operator ==
  32. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseLiveListElementSnapshot-class.html b/dart/flutter_parse_sdk/ParseLiveListElementSnapshot-class.html new file mode 100644 index 000000000..3b3853959 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListElementSnapshot-class.html @@ -0,0 +1,281 @@ + + + + + + + + ParseLiveListElementSnapshot class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveListElementSnapshot
+ +
+ +
+
+
+ +
+
+

ParseLiveListElementSnapshot<T extends ParseObject> class + +

+ + + + + + +
+

Constructors

+ +
+
+ ParseLiveListElementSnapshot({T? loadedData, ParseError? error, T? preLoadedData}) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ error + ParseError? + +
+
+ +
final
+ +
+ +
+ failed + bool + +
+
+ +
no setter
+ +
+ +
+ hasData + bool + +
+
+ +
no setter
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ hasPreLoadedData + bool + +
+
+ +
no setter
+ +
+ +
+ loadedData + → T? + +
+
+ +
final
+ +
+ +
+ preLoadedData + → T? + +
+
+ +
final
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/ParseLiveListElementSnapshot.html b/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/ParseLiveListElementSnapshot.html new file mode 100644 index 000000000..f15c72682 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/ParseLiveListElementSnapshot.html @@ -0,0 +1,128 @@ + + + + + + + + ParseLiveListElementSnapshot constructor - ParseLiveListElementSnapshot - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveListElementSnapshot
+ +
+ +
+
+
+ +
+
+

ParseLiveListElementSnapshot<T extends ParseObject> constructor +

+ +
+ + ParseLiveListElementSnapshot<T extends ParseObject>(
  1. {T? loadedData,
  2. +
  3. ParseError? error,
  4. +
  5. T? preLoadedData}
  6. +
) +
+ + + + + +
+

Implementation

+
ParseLiveListElementSnapshot(
+    {this.loadedData, this.error, this.preLoadedData});
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/error.html b/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/error.html new file mode 100644 index 000000000..c8a5876f2 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/error.html @@ -0,0 +1,125 @@ + + + + + + + + error property - ParseLiveListElementSnapshot class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
error
+ +
+ +
+
+
+ +
+
+

error property +

+ +
+ + ParseError? + error +
final
+ +
+ + + +
+

Implementation

+
final ParseError? error;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/failed.html b/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/failed.html new file mode 100644 index 000000000..61e30b155 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/failed.html @@ -0,0 +1,132 @@ + + + + + + + + failed property - ParseLiveListElementSnapshot class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
failed
+ +
+ +
+
+
+ +
+
+

failed property +

+ + + +
+ +
+ + bool + failed + + +
+ + + + +
+

Implementation

+
bool get failed => error != null;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/hasData.html b/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/hasData.html new file mode 100644 index 000000000..6ab3cd40e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/hasData.html @@ -0,0 +1,132 @@ + + + + + + + + hasData property - ParseLiveListElementSnapshot class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
hasData
+ +
+ +
+
+
+ +
+
+

hasData property +

+ + + +
+ +
+ + bool + hasData + + +
+ + + + +
+

Implementation

+
bool get hasData => loadedData != null;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/hasPreLoadedData.html b/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/hasPreLoadedData.html new file mode 100644 index 000000000..b180e4f97 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/hasPreLoadedData.html @@ -0,0 +1,132 @@ + + + + + + + + hasPreLoadedData property - ParseLiveListElementSnapshot class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
hasPreLoadedData
+ +
+ +
+
+
+ +
+
+

hasPreLoadedData property +

+ + + +
+ +
+ + bool + hasPreLoadedData + + +
+ + + + +
+

Implementation

+
bool get hasPreLoadedData => preLoadedData != null;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/loadedData.html b/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/loadedData.html new file mode 100644 index 000000000..f5ec9ef0a --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/loadedData.html @@ -0,0 +1,125 @@ + + + + + + + + loadedData property - ParseLiveListElementSnapshot class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
loadedData
+ +
+ +
+
+
+ +
+
+

loadedData property +

+ +
+ + T? + loadedData +
final
+ +
+ + + +
+

Implementation

+
final T? loadedData;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/preLoadedData.html b/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/preLoadedData.html new file mode 100644 index 000000000..f7c0b939f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListElementSnapshot/preLoadedData.html @@ -0,0 +1,125 @@ + + + + + + + + preLoadedData property - ParseLiveListElementSnapshot class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
preLoadedData
+ +
+ +
+
+
+ +
+
+

preLoadedData property +

+ +
+ + T? + preLoadedData +
final
+ +
+ + + +
+

Implementation

+
final T? preLoadedData;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListEvent-class-sidebar.html b/dart/flutter_parse_sdk/ParseLiveListEvent-class-sidebar.html new file mode 100644 index 000000000..e94a9433b --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListEvent-class-sidebar.html @@ -0,0 +1,28 @@ +
    + +
  1. Constructors
  2. +
  3. ParseLiveListEvent
  4. + + + +
  5. + Properties +
  6. +
  7. hashCode
  8. +
  9. index
  10. +
  11. object
  12. +
  13. runtimeType
  14. + +
  15. Methods
  16. +
  17. noSuchMethod
  18. +
  19. toString
  20. + +
  21. Operators
  22. +
  23. operator ==
  24. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseLiveListEvent-class.html b/dart/flutter_parse_sdk/ParseLiveListEvent-class.html new file mode 100644 index 000000000..7f9a10a4e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListEvent-class.html @@ -0,0 +1,258 @@ + + + + + + + + ParseLiveListEvent class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveListEvent
+ +
+ +
+
+
+ +
+
+

ParseLiveListEvent<T extends ParseObject> class + abstract + +

+ + + + +
+
+ + + + + +
Implementers
+
+ + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseLiveListEvent(int _index, T _object) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ index + int + +
+
+ +
no setter
+ +
+ +
+ object + → T + +
+
+ +
no setter
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListEvent/ParseLiveListEvent.html b/dart/flutter_parse_sdk/ParseLiveListEvent/ParseLiveListEvent.html new file mode 100644 index 000000000..ad0d4f943 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListEvent/ParseLiveListEvent.html @@ -0,0 +1,126 @@ + + + + + + + + ParseLiveListEvent constructor - ParseLiveListEvent - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveListEvent
+ +
+ +
+
+
+ +
+
+

ParseLiveListEvent<T extends ParseObject> constructor +

+ +
+ + ParseLiveListEvent<T extends ParseObject>(
  1. int _index,
  2. +
  3. T _object
  4. +
) +
+ + + + + +
+

Implementation

+
ParseLiveListEvent(this._index, this._object);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListEvent/index.html b/dart/flutter_parse_sdk/ParseLiveListEvent/index.html new file mode 100644 index 000000000..16f8831c3 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListEvent/index.html @@ -0,0 +1,132 @@ + + + + + + + + index property - ParseLiveListEvent class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
index
+ +
+ +
+
+
+ +
+
+

index property +

+ + + +
+ +
+ + int + index + + +
+ + + + +
+

Implementation

+
int get index => _index;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListEvent/object.html b/dart/flutter_parse_sdk/ParseLiveListEvent/object.html new file mode 100644 index 000000000..c172fac83 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListEvent/object.html @@ -0,0 +1,132 @@ + + + + + + + + object property - ParseLiveListEvent class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
object
+ +
+ +
+
+
+ +
+
+

object property +

+ + + +
+ +
+ + T + object + + +
+ + + + +
+

Implementation

+
T get object => _object;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListUpdateEvent-class-sidebar.html b/dart/flutter_parse_sdk/ParseLiveListUpdateEvent-class-sidebar.html new file mode 100644 index 000000000..e2097f9f7 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListUpdateEvent-class-sidebar.html @@ -0,0 +1,28 @@ +
    + +
  1. Constructors
  2. +
  3. ParseLiveListUpdateEvent
  4. + + + +
  5. + Properties +
  6. +
  7. hashCode
  8. +
  9. index
  10. +
  11. object
  12. +
  13. runtimeType
  14. + +
  15. Methods
  16. +
  17. noSuchMethod
  18. +
  19. toString
  20. + +
  21. Operators
  22. +
  23. operator ==
  24. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseLiveListUpdateEvent-class.html b/dart/flutter_parse_sdk/ParseLiveListUpdateEvent-class.html new file mode 100644 index 000000000..0d46a68fa --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListUpdateEvent-class.html @@ -0,0 +1,259 @@ + + + + + + + + ParseLiveListUpdateEvent class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveListUpdateEvent
+ +
+ +
+
+
+ +
+
+

ParseLiveListUpdateEvent<T extends ParseObject> class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseLiveListUpdateEvent(int index, T object) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ index + int + +
+
+ +
no setterinherited
+ +
+ +
+ object + → T + +
+
+ +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseLiveListUpdateEvent/ParseLiveListUpdateEvent.html b/dart/flutter_parse_sdk/ParseLiveListUpdateEvent/ParseLiveListUpdateEvent.html new file mode 100644 index 000000000..c5a5380f8 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseLiveListUpdateEvent/ParseLiveListUpdateEvent.html @@ -0,0 +1,126 @@ + + + + + + + + ParseLiveListUpdateEvent constructor - ParseLiveListUpdateEvent - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveListUpdateEvent
+ +
+ +
+
+
+ +
+
+

ParseLiveListUpdateEvent<T extends ParseObject> constructor +

+ +
+ + ParseLiveListUpdateEvent<T extends ParseObject>(
  1. int index,
  2. +
  3. T object
  4. +
) +
+ + + + + +
+

Implementation

+
ParseLiveListUpdateEvent(int index, T object) : super(index, object);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseNetworkByteResponse-class-sidebar.html b/dart/flutter_parse_sdk/ParseNetworkByteResponse-class-sidebar.html new file mode 100644 index 000000000..25f890b5b --- /dev/null +++ b/dart/flutter_parse_sdk/ParseNetworkByteResponse-class-sidebar.html @@ -0,0 +1,29 @@ +
    + +
  1. Constructors
  2. +
  3. ParseNetworkByteResponse
  4. + + + +
  5. + Properties +
  6. +
  7. bytes
  8. +
  9. data
  10. +
  11. hashCode
  12. +
  13. runtimeType
  14. +
  15. statusCode
  16. + +
  17. Methods
  18. +
  19. noSuchMethod
  20. +
  21. toString
  22. + +
  23. Operators
  24. +
  25. operator ==
  26. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseNetworkByteResponse-class.html b/dart/flutter_parse_sdk/ParseNetworkByteResponse-class.html new file mode 100644 index 000000000..5c3f634c5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseNetworkByteResponse-class.html @@ -0,0 +1,270 @@ + + + + + + + + ParseNetworkByteResponse class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseNetworkByteResponse
+ +
+ +
+
+
+ +
+
+

ParseNetworkByteResponse class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseNetworkByteResponse({List<int>? bytes, String data = 'byte response', int statusCode = -1}) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ bytes + List<int>? + +
+
+ +
final
+ +
+ +
+ data + String + +
+
+ +
finalinherited
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ statusCode + int + +
+
+ +
finalinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseNetworkByteResponse/ParseNetworkByteResponse.html b/dart/flutter_parse_sdk/ParseNetworkByteResponse/ParseNetworkByteResponse.html new file mode 100644 index 000000000..aceb07146 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseNetworkByteResponse/ParseNetworkByteResponse.html @@ -0,0 +1,134 @@ + + + + + + + + ParseNetworkByteResponse constructor - ParseNetworkByteResponse - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseNetworkByteResponse
+ +
+ +
+
+
+ +
+
+

ParseNetworkByteResponse constructor +

+ +
+ + ParseNetworkByteResponse(
  1. {List<int>? bytes,
  2. +
  3. String data = 'byte response',
  4. +
  5. int statusCode = -1}
  6. +
) +
+ + + + + +
+

Implementation

+
ParseNetworkByteResponse({
+  this.bytes,
+  final String data = 'byte response',
+  final int statusCode = -1,
+}) : super(
+        data: data,
+        statusCode: statusCode,
+      );
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseNetworkByteResponse/bytes.html b/dart/flutter_parse_sdk/ParseNetworkByteResponse/bytes.html new file mode 100644 index 000000000..cead8ab3e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseNetworkByteResponse/bytes.html @@ -0,0 +1,125 @@ + + + + + + + + bytes property - ParseNetworkByteResponse class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
bytes
+ +
+ +
+
+
+ +
+
+

bytes property +

+ +
+ + List<int>? + bytes +
final
+ +
+ + + +
+

Implementation

+
final List<int>? bytes;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseNetworkOptions-class-sidebar.html b/dart/flutter_parse_sdk/ParseNetworkOptions-class-sidebar.html new file mode 100644 index 000000000..6ea72af9a --- /dev/null +++ b/dart/flutter_parse_sdk/ParseNetworkOptions-class-sidebar.html @@ -0,0 +1,27 @@ +
    + +
  1. Constructors
  2. +
  3. ParseNetworkOptions
  4. + + + +
  5. + Properties +
  6. +
  7. hashCode
  8. +
  9. headers
  10. +
  11. runtimeType
  12. + +
  13. Methods
  14. +
  15. noSuchMethod
  16. +
  17. toString
  18. + +
  19. Operators
  20. +
  21. operator ==
  22. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseNetworkOptions-class.html b/dart/flutter_parse_sdk/ParseNetworkOptions-class.html new file mode 100644 index 000000000..28489328a --- /dev/null +++ b/dart/flutter_parse_sdk/ParseNetworkOptions-class.html @@ -0,0 +1,226 @@ + + + + + + + + ParseNetworkOptions class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseNetworkOptions
+ +
+ +
+
+
+ +
+
+

ParseNetworkOptions class + +

+ + + + + + +
+

Constructors

+ +
+
+ ParseNetworkOptions({Map<String, String>? headers}) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ headers + Map<String, String>? + +
+
+ +
final
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseNetworkOptions/ParseNetworkOptions.html b/dart/flutter_parse_sdk/ParseNetworkOptions/ParseNetworkOptions.html new file mode 100644 index 000000000..4d55368b3 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseNetworkOptions/ParseNetworkOptions.html @@ -0,0 +1,125 @@ + + + + + + + + ParseNetworkOptions constructor - ParseNetworkOptions - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseNetworkOptions
+ +
+ +
+
+
+ +
+
+

ParseNetworkOptions constructor +

+ +
+ + ParseNetworkOptions(
  1. {Map<String, String>? headers}
  2. +
) +
+ + + + + +
+

Implementation

+
ParseNetworkOptions({this.headers});
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseNetworkOptions/headers.html b/dart/flutter_parse_sdk/ParseNetworkOptions/headers.html new file mode 100644 index 000000000..41da917aa --- /dev/null +++ b/dart/flutter_parse_sdk/ParseNetworkOptions/headers.html @@ -0,0 +1,125 @@ + + + + + + + + headers property - ParseNetworkOptions class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
headers
+ +
+ +
+
+
+ +
+
+

headers property +

+ +
+ + Map<String, String>? + headers +
final
+ +
+ + + +
+

Implementation

+
final Map<String, String>? headers;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseNetworkResponse-class-sidebar.html b/dart/flutter_parse_sdk/ParseNetworkResponse-class-sidebar.html new file mode 100644 index 000000000..f63b3f80a --- /dev/null +++ b/dart/flutter_parse_sdk/ParseNetworkResponse-class-sidebar.html @@ -0,0 +1,28 @@ +
    + +
  1. Constructors
  2. +
  3. ParseNetworkResponse
  4. + + + +
  5. + Properties +
  6. +
  7. data
  8. +
  9. hashCode
  10. +
  11. runtimeType
  12. +
  13. statusCode
  14. + +
  15. Methods
  16. +
  17. noSuchMethod
  18. +
  19. toString
  20. + +
  21. Operators
  22. +
  23. operator ==
  24. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseNetworkResponse-class.html b/dart/flutter_parse_sdk/ParseNetworkResponse-class.html new file mode 100644 index 000000000..425f45c21 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseNetworkResponse-class.html @@ -0,0 +1,255 @@ + + + + + + + + ParseNetworkResponse class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseNetworkResponse
+ +
+ +
+
+
+ +
+
+

ParseNetworkResponse class + +

+ + + + +
+
+ + + + + +
Implementers
+
+ + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseNetworkResponse({required String data, int statusCode = -1}) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ data + String + +
+
+ +
final
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ statusCode + int + +
+
+ +
final
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseNetworkResponse/ParseNetworkResponse.html b/dart/flutter_parse_sdk/ParseNetworkResponse/ParseNetworkResponse.html new file mode 100644 index 000000000..361ed3cda --- /dev/null +++ b/dart/flutter_parse_sdk/ParseNetworkResponse/ParseNetworkResponse.html @@ -0,0 +1,129 @@ + + + + + + + + ParseNetworkResponse constructor - ParseNetworkResponse - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseNetworkResponse
+ +
+ +
+
+
+ +
+
+

ParseNetworkResponse constructor +

+ +
+ + ParseNetworkResponse(
  1. {required String data,
  2. +
  3. int statusCode = -1}
  4. +
) +
+ + + + + +
+

Implementation

+
ParseNetworkResponse({
+  required this.data,
+  this.statusCode = -1,
+});
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseNetworkResponse/data.html b/dart/flutter_parse_sdk/ParseNetworkResponse/data.html new file mode 100644 index 000000000..2f9f1f538 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseNetworkResponse/data.html @@ -0,0 +1,125 @@ + + + + + + + + data property - ParseNetworkResponse class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
data
+ +
+ +
+
+
+ +
+
+

data property +

+ +
+ + String + data +
final
+ +
+ + + +
+

Implementation

+
final String data;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseNetworkResponse/statusCode.html b/dart/flutter_parse_sdk/ParseNetworkResponse/statusCode.html new file mode 100644 index 000000000..79ebbb4f2 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseNetworkResponse/statusCode.html @@ -0,0 +1,125 @@ + + + + + + + + statusCode property - ParseNetworkResponse class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
statusCode
+ +
+ +
+
+
+ +
+
+

statusCode property +

+ +
+ + int + statusCode +
final
+ +
+ + + +
+

Implementation

+
final int statusCode;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseNetworkResponseType-enum-sidebar.html b/dart/flutter_parse_sdk/ParseNetworkResponseType-enum-sidebar.html new file mode 100644 index 000000000..26b8980e6 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseNetworkResponseType-enum-sidebar.html @@ -0,0 +1,34 @@ +
    + +
  1. Constructors
  2. +
  3. ParseNetworkResponseType
  4. + +
  5. Values
  6. +
  7. json
  8. +
  9. stream
  10. +
  11. plain
  12. +
  13. bytes
  14. + + +
  15. + Properties +
  16. +
  17. hashCode
  18. +
  19. index
  20. +
  21. runtimeType
  22. + +
  23. Methods
  24. +
  25. noSuchMethod
  26. +
  27. toString
  28. + +
  29. Operators
  30. +
  31. operator ==
  32. + + + + + + +
  33. Constants
  34. +
  35. values
  36. +
diff --git a/dart/flutter_parse_sdk/ParseNetworkResponseType.html b/dart/flutter_parse_sdk/ParseNetworkResponseType.html new file mode 100644 index 000000000..b9f953935 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseNetworkResponseType.html @@ -0,0 +1,327 @@ + + + + + + + + ParseNetworkResponseType enum - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseNetworkResponseType
+ +
+ +
+
+
+ +
+
+ +

+ ParseNetworkResponseType + enum + + +

+
+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseNetworkResponseType() +
+
+ +
const
+
+
+
+ +
+

Values

+ +
+
+ json + → const ParseNetworkResponseType + + +
+
+ + + +
+ +
+ stream + → const ParseNetworkResponseType + + +
+
+ + + +
+ +
+ plain + → const ParseNetworkResponseType + + +
+
+ + + +
+ +
+ bytes + → const ParseNetworkResponseType + + +
+
+ + + +
+ +
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ index + int + +
+
+ A numeric identifier for the enumerated value. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + +
+

Constants

+ +
+
+ values + → const List<ParseNetworkResponseType> + + +
+
+ A constant List of the values in this enum, in order of their declaration. + + +
+ +
+
+
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseNetworkResponseType/ParseNetworkResponseType.html b/dart/flutter_parse_sdk/ParseNetworkResponseType/ParseNetworkResponseType.html new file mode 100644 index 000000000..9f2c4febb --- /dev/null +++ b/dart/flutter_parse_sdk/ParseNetworkResponseType/ParseNetworkResponseType.html @@ -0,0 +1,120 @@ + + + + + + + + ParseNetworkResponseType constructor - ParseNetworkResponseType - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseNetworkResponseType
+ +
+ +
+
+
+ +
+
+

ParseNetworkResponseType constructor +

+ +
+ const + ParseNetworkResponseType() +
+ + + + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseNetworkResponseType/values-constant.html b/dart/flutter_parse_sdk/ParseNetworkResponseType/values-constant.html new file mode 100644 index 000000000..2c44c6574 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseNetworkResponseType/values-constant.html @@ -0,0 +1,124 @@ + + + + + + + + values constant - ParseNetworkResponseType enum - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
values
+ +
+ +
+
+
+ +
+
+

values constant +

+ +
+ + List<ParseNetworkResponseType> + const values + + +
+ +
+

A constant List of the values in this enum, in order of their declaration.

+
+ + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject-class-sidebar.html b/dart/flutter_parse_sdk/ParseObject-class-sidebar.html new file mode 100644 index 000000000..782b551e3 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject-class-sidebar.html @@ -0,0 +1,78 @@ +
    + +
  1. Constructors
  2. +
  3. ParseObject
  4. +
  5. clone
  6. + + + +
  7. + Properties +
  8. +
  9. createdAt
  10. +
  11. hashCode
  12. +
  13. objectId
  14. +
  15. parseClassName
  16. +
  17. runtimeType
  18. +
  19. updatedAt
  20. + +
  21. Methods
  22. +
  23. addRelation
  24. +
  25. clearUnsavedChanges
  26. +
  27. clone
  28. +
  29. containsKey
  30. +
  31. containsValue
  32. +
  33. copy
  34. +
  35. create
  36. +
  37. delete
  38. +
  39. deleteEventually
  40. +
  41. distinct
  42. +
  43. fetch
  44. +
  45. fromJson
  46. +
  47. fromJsonForManualObject
  48. +
  49. fromPin
  50. +
  51. get
  52. +
  53. getACL
  54. +
  55. getAll
  56. +
  57. getObject
  58. +
  59. getRelation
  60. +
  61. isDirty
  62. +
  63. noSuchMethod
  64. +
  65. pin
  66. +
  67. query
  68. +
  69. removeRelation
  70. +
  71. save
  72. +
  73. saveEventually
  74. +
  75. saveInStorage
  76. +
  77. set
  78. +
  79. setACL
  80. +
  81. setAdd
  82. +
  83. setAddAll
  84. +
  85. setAddAllUnique
  86. +
  87. setAddUnique
  88. +
  89. setDecrement
  90. +
  91. setIncrement
  92. +
  93. setRemove
  94. +
  95. setRemoveAll
  96. +
  97. toJson
  98. +
  99. toPointer
  100. +
  101. toString
  102. +
  103. unpin
  104. +
  105. unset
  106. +
  107. update
  108. + +
  109. Operators
  110. +
  111. operator ==
  112. +
  113. operator []
  114. +
  115. operator []=
  116. + + + + + +
  117. Static methods
  118. +
  119. submitDeleteEventually
  120. +
  121. submitEventually
  122. +
  123. submitSaveEventually
  124. + +
diff --git a/dart/flutter_parse_sdk/ParseObject-class.html b/dart/flutter_parse_sdk/ParseObject-class.html new file mode 100644 index 000000000..e761787b2 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject-class.html @@ -0,0 +1,921 @@ + + + + + + + + ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseObject
+ +
+ +
+
+
+ +
+
+

ParseObject class + +

+ + +
+

ParseObject is a local representation of data that can be saved and +retrieved from the Parse cloud.

+

The basic workflow for creating new data is to construct a new ParseObject, +use set(key, value) to fill it with data, and then use save to persist +to the cloud.

+

The basic workflow for accessing existing data is to use a QueryBuilder +to specify which existing data to retrieve.

+
+ + +
+
+ +
Inheritance
+
+ +
+ + +
Implemented types
+
+ +
+ + +
Implementers
+
+ + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseObject(String className, {bool? debug, ParseClient? client, bool? autoSendSessionId}) +
+
+ Creates a new Parse Object +
+
+ ParseObject.clone(String className) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ createdAt + DateTime? + +
+
+ Returns DateTime createdAt +
no setterinherited
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ objectId + String? + +
+
+ Returns String objectId +
getter/setter pairinherited
+ +
+ +
+ parseClassName + String + +
+
+ refers to the Table Name in your Parse Server +
getter/setter pairinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ updatedAt + DateTime? + +
+
+ Returns DateTime updatedAt +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ addRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Add multiple objets to a relation associated with a given key + + +
+ +
+ clearUnsavedChanges() + → void + + + +
+
+ +
inherited
+ +
+ +
+ clone(Map<String, dynamic> map) + → dynamic + + + +
+
+ +
override
+ +
+ +
+ containsKey(String key) + bool + + + +
+
+ +
inherited
+ +
+ +
+ containsValue(Object value) + bool + + + +
+
+ +
inherited
+ +
+ +
+ copy() + → dynamic + + + +
+
+ Creates a copy of this class +
inherited
+ +
+ +
+ create({bool allowCustomObjectId = false, dynamic context}) + Future<ParseResponse> + + + +
+
+ Creates a new object and saves it online + + +
+ +
+ delete<T extends ParseObject>({String? id, String? path}) + Future<ParseResponse> + + + +
+
+ Deletes the current object locally and online + + +
+ +
+ deleteEventually() + Future<ParseResponse> + + + +
+
+ + + +
+ +
+ distinct<T extends ParseObject>(String query) + Future<ParseResponse> + + + +
+
+ + + +
+ +
+ fetch({List<String>? include}) + Future<ParseObject> + + + +
+
+ Fetches this object with the data from the server. + + +
+ +
+ fromJson(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromJsonForManualObject(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromPin(String objectId) + Future + + + +
+
+ Get item from value storage +
inherited
+ +
+ +
+ get<T>(String key, {T? defaultValue}) + → T? + + + +
+
+ Get a value of type T associated with a given key +
inherited
+ +
+ +
+ getACL() + ParseACL + + + +
+
+ Access the ParseACL governing this object. +
inherited
+ +
+ +
+ getAll() + Future<ParseResponse> + + + +
+
+ Gets all objects from this table - Limited response at the moment + + +
+ +
+ getObject(String objectId, {List<String>? include}) + Future<ParseResponse> + + + +
+
+ Gets an object from the server using it's objectId + + +
+ +
+ getRelation<T extends ParseObject>(String key) + ParseRelation<T> + + + +
+
+ Get the instance of ParseRelation class associated with the given key + + +
+ +
+ isDirty({String? key}) + bool + + + +
+
+ +
inherited
+ +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ pin() + Future<bool> + + + +
+
+ Saves item to value storage +
inherited
+ +
+ +
+ query<T extends ParseObject>(String query, {ProgressCallback? progressCallback}) + Future<ParseResponse> + + + +
+
+ Can be used to create custom queries + + +
+ +
+ removeRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Remove multiple objets from a relation associated with a given key + + +
+ +
+ save({dynamic context}) + Future<ParseResponse> + + + +
+
+ Saves the current object online. + + +
+ +
+ saveEventually() + Future<ParseResponse> + + + +
+
+ + + +
+ +
+ saveInStorage(String key) + Future<void> + + + +
+
+ Saves in storage +
inherited
+ +
+ +
+ set<T>(String key, T value, {bool forceUpdate = true}) + → void + + + +
+
+ Add a key-value pair to this object. +
inherited
+ +
+ +
+ setACL<ParseACL>(ParseACL acl) + → void + + + +
+
+ Set the ParseACL governing this object. +
inherited
+ +
+ +
+ setAdd<T>(String key, T element) + → void + + + +
+
+ Add an element to the end of the array associated with a given key + + +
+ +
+ setAddAll(String key, List elements) + → void + + + +
+
+ Add multiple elements to the end of the array +associated with a given key + + +
+ +
+ setAddAllUnique(String key, List elements) + → void + + + +
+
+ Add multiple elements to the array associated with a given key, only +adding elements which are not already present in the array. The position +of the insert is not guaranteed + + +
+ +
+ setAddUnique(String key, dynamic element) + → void + + + +
+
+ Add an element to the array associated with a given key, only if +it is not already present in the array. The position of the insert is not +guaranteed + + +
+ +
+ setDecrement(String key, num amount) + → void + + + +
+
+ Decrement a num value associated with a given key by the given amount + + +
+ +
+ setIncrement(String key, num amount) + → void + + + +
+
+ Increment a num value associated with a given key by the given amount + + +
+ +
+ setRemove(String key, dynamic element) + → void + + + +
+
+ Remove every instance of an element from an array +associated with a given key + + +
+ +
+ setRemoveAll(String key, List elements) + → void + + + +
+
+ Removes all instances of the elements contained in a List from the +array associated with a given key + + +
+ +
+ toJson({bool full = false, bool forApiRQ = false, bool allowCustomObjectId = false}) + Map<String, dynamic> + + + +
+
+ Converts object to String in JSON format +
inherited
+ +
+ +
+ toPointer() + Map<String, dynamic> + + + +
+
+ +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+ unpin({String? key}) + Future<bool> + + + +
+
+ Remove item from value storage +
inherited
+ +
+ +
+ unset(String key, {bool offlineOnly = false}) + Future<ParseResponse> + + + +
+
+ Can be used set an objects variable to undefined rather than null + + +
+ +
+ update({dynamic context}) + Future<ParseResponse> + + + +
+
+ Send the updated object to the server. + + +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+ operator [](String key) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ operator []=(String key, dynamic value) + → void + + + +
+
+ +
inherited
+ +
+ +
+
+ + +
+

Static Methods

+
+
+ submitDeleteEventually({ParseClient? client, bool? autoSendSessionId}) + Future<ParseResponse?> + + + +
+
+ + + +
+ +
+ submitEventually({ParseClient? client, bool? autoSendSessionId}) + Future<void> + + + +
+
+ + + +
+ +
+ submitSaveEventually({ParseClient? client, bool? autoSendSessionId}) + Future<ParseResponse?> + + + +
+
+ + + +
+ +
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/ParseObject.clone.html b/dart/flutter_parse_sdk/ParseObject/ParseObject.clone.html new file mode 100644 index 000000000..8af8a01df --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/ParseObject.clone.html @@ -0,0 +1,125 @@ + + + + + + + + ParseObject.clone constructor - ParseObject - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseObject.clone
+ +
+ +
+
+
+ +
+
+

ParseObject.clone constructor +

+ +
+ + ParseObject.clone(
  1. String className
  2. +
) +
+ + + + + +
+

Implementation

+
ParseObject.clone(String className) : this(className);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/ParseObject.html b/dart/flutter_parse_sdk/ParseObject/ParseObject.html new file mode 100644 index 000000000..dd434a3bc --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/ParseObject.html @@ -0,0 +1,150 @@ + + + + + + + + ParseObject constructor - ParseObject - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseObject
+ +
+ +
+
+
+ +
+
+

ParseObject constructor +

+ +
+ + ParseObject(
  1. String className,
  2. +
  3. {bool? debug,
  4. +
  5. ParseClient? client,
  6. +
  7. bool? autoSendSessionId}
  8. +
) +
+ + +
+

Creates a new Parse Object

+

className, refers to the Table Name in your Parse Server

+

debug, will overwrite the current default debug settings

+

client, can be overwritten to create your own HTTP Client

+
+ + + +
+

Implementation

+
ParseObject(
+  String className, {
+  bool? debug,
+  ParseClient? client,
+  bool? autoSendSessionId,
+}) : super() {
+  parseClassName = className;
+  _path = '$keyEndPointClasses$className';
+  _aggregatepath = '$keyEndPointAggregate$className';
+
+  _debug = isDebugEnabled(objectLevelDebug: debug);
+  _client = client ??
+      ParseCoreData().clientCreator(
+          sendSessionId:
+              autoSendSessionId ?? ParseCoreData().autoSendSessionId,
+          securityContext: ParseCoreData().securityContext);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/addRelation.html b/dart/flutter_parse_sdk/ParseObject/addRelation.html new file mode 100644 index 000000000..a817e9d13 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/addRelation.html @@ -0,0 +1,135 @@ + + + + + + + + addRelation method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
addRelation
+ +
+ +
+
+
+ +
+
+

addRelation method +

+ +
+ + +void +addRelation(
  1. String key,
  2. +
  3. List<ParseObject> objets
  4. +
) + + + +
+ +
+

Add multiple objets to a relation associated with a given key

+
+ + + +
+

Implementation

+
void addRelation(String key, List<ParseObject> objets) {
+  set(key, _ParseAddRelationOperation(objets.toSet()));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/clone.html b/dart/flutter_parse_sdk/ParseObject/clone.html new file mode 100644 index 000000000..d5193f90e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/clone.html @@ -0,0 +1,136 @@ + + + + + + + + clone method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
clone
+ +
+ +
+
+
+ +
+
+

clone method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +dynamic +clone(
  1. Map<String, dynamic> map
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+dynamic clone(Map<String, dynamic> map) =>
+    ParseObject.clone(parseClassName)..fromJson(map);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/create.html b/dart/flutter_parse_sdk/ParseObject/create.html new file mode 100644 index 000000000..08426053e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/create.html @@ -0,0 +1,169 @@ + + + + + + + + create method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
create
+ +
+ +
+
+
+ +
+
+

create method +

+ +
+ + +Future<ParseResponse> +create(
  1. {bool allowCustomObjectId = false,
  2. +
  3. dynamic context}
  4. +
) + + + +
+ +
+

Creates a new object and saves it online

+

Prefer using save over create

+
+ + + +
+

Implementation

+
Future<ParseResponse> create(
+    {bool allowCustomObjectId = false, dynamic context}) async {
+  try {
+    final Uri url = getSanitisedUri(_client, _path);
+    final String body = json.encode(toJson(
+      forApiRQ: true,
+      allowCustomObjectId: allowCustomObjectId,
+    ));
+
+    _saveChanges();
+
+    final Map<String, String> headers = {
+      keyHeaderContentType: keyHeaderContentTypeJson,
+    };
+
+    if (context != null) {
+      headers
+          .addAll({keyHeaderCloudContext: json.encode(parseEncode(context))});
+    }
+
+    final ParseNetworkResponse result = await _client.post(url.toString(),
+        data: body, options: ParseNetworkOptions(headers: headers));
+
+    final response = handleResponse<ParseObject>(
+        this, result, ParseApiRQ.create, _debug, parseClassName);
+
+    if (!response.success) {
+      _notifyChildrenAboutErrorSaving();
+    }
+
+    return response;
+  } on Exception catch (e) {
+    _notifyChildrenAboutErrorSaving();
+    return handleException(e, ParseApiRQ.create, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/delete.html b/dart/flutter_parse_sdk/ParseObject/delete.html new file mode 100644 index 000000000..37deaa78e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/delete.html @@ -0,0 +1,162 @@ + + + + + + + + delete method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
delete
+ +
+ +
+
+
+ +
+
+

delete<T extends ParseObject> method +

+ +
+ + +Future<ParseResponse> +delete<T extends ParseObject>(
  1. {String? id,
  2. +
  3. String? path}
  4. +
) + + + +
+ +
+

Deletes the current object locally and online

+
+ + + +
+

Implementation

+
Future<ParseResponse> delete<T extends ParseObject>({
+  String? id,
+  String? path,
+}) async {
+  assert(() {
+    final objId = objectId;
+    final isNotValidObjectId = objId == null || objId.isEmpty;
+    final isNotValidIdArg = id == null || id.isEmpty;
+
+    if (isNotValidObjectId && isNotValidIdArg) {
+      throw Exception(
+        "Can't delete a parse object while the objectId property "
+        "and id argument is null or empty",
+      );
+    }
+
+    return true;
+  }());
+
+  try {
+    path ??= _path;
+    id ??= objectId;
+    final Uri url = getSanitisedUri(_client, '$_path/$id');
+    final ParseNetworkResponse result = await _client.delete(url.toString());
+    return handleResponse<T>(
+        this, result, ParseApiRQ.delete, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(e, ParseApiRQ.delete, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/deleteEventually.html b/dart/flutter_parse_sdk/ParseObject/deleteEventually.html new file mode 100644 index 000000000..a17b53398 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/deleteEventually.html @@ -0,0 +1,145 @@ + + + + + + + + deleteEventually method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
deleteEventually
+ +
+ +
+
+
+ +
+
+

deleteEventually method +

+ +
+ + +Future<ParseResponse> +deleteEventually() + + + +
+ + + + +
+

Implementation

+
Future<ParseResponse> deleteEventually() async {
+  // save object
+  final ParseResponse response = await delete();
+
+  if (response.success) {
+    // return success response
+    return response;
+  } else {
+    // if have network connection error
+    if ((response.error?.message ?? "").contains(keyNetworkError)) {
+      // save this object in CoreStore
+      await _addThisObjectToParseCoreDataList(keyParseStoreDeletes);
+    } else {
+      return response;
+    }
+  }
+  return response;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/distinct.html b/dart/flutter_parse_sdk/ParseObject/distinct.html new file mode 100644 index 000000000..b8ecadec5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/distinct.html @@ -0,0 +1,138 @@ + + + + + + + + distinct method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
distinct
+ +
+ +
+
+
+ +
+
+

distinct<T extends ParseObject> method +

+ +
+ + +Future<ParseResponse> +distinct<T extends ParseObject>(
  1. String query
  2. +
) + + + +
+ + + + +
+

Implementation

+
Future<ParseResponse> distinct<T extends ParseObject>(String query) async {
+  try {
+    final Uri url = getSanitisedUri(_client, _aggregatepath, query: query);
+    final ParseNetworkResponse result = await _client.get(url.toString());
+    return handleResponse<T>(
+        this, result, ParseApiRQ.query, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(e, ParseApiRQ.query, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/fetch.html b/dart/flutter_parse_sdk/ParseObject/fetch.html new file mode 100644 index 000000000..6e2fb3165 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/fetch.html @@ -0,0 +1,148 @@ + + + + + + + + fetch method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
fetch
+ +
+ +
+
+
+ +
+
+

fetch method +

+ +
+ + +Future<ParseObject> +fetch(
  1. {List<String>? include}
  2. +
) + + + +
+ +
+

Fetches this object with the data from the server.

+

Call this whenever you want the state of the object to reflect exactly +what is on the server.

+

include, is a list of ParseObjects keys to be included directly and +not as a pointer.

+
+ + + +
+

Implementation

+
Future<ParseObject> fetch({List<String>? include}) async {
+  if (objectId == null || objectId!.isEmpty) {
+    throw 'can not fetch without a objectId';
+  }
+
+  final ParseResponse response = await getObject(objectId!, include: include);
+
+  if (response.success && response.results != null) {
+    return response.results!.first;
+  } else {
+    return this;
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/getAll.html b/dart/flutter_parse_sdk/ParseObject/getAll.html new file mode 100644 index 000000000..c1cee944b --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/getAll.html @@ -0,0 +1,140 @@ + + + + + + + + getAll method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getAll
+ +
+ +
+
+
+ +
+
+

getAll method +

+ +
+ + +Future<ParseResponse> +getAll() + + + +
+ +
+

Gets all objects from this table - Limited response at the moment

+
+ + + +
+

Implementation

+
Future<ParseResponse> getAll() async {
+  try {
+    final Uri url = getSanitisedUri(_client, _path);
+    final ParseNetworkResponse result = await _client.get(url.toString());
+    return handleResponse<ParseObject>(
+        this, result, ParseApiRQ.getAll, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(e, ParseApiRQ.getAll, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/getObject.html b/dart/flutter_parse_sdk/ParseObject/getObject.html new file mode 100644 index 000000000..933136b06 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/getObject.html @@ -0,0 +1,154 @@ + + + + + + + + getObject method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getObject
+ +
+ +
+
+
+ +
+
+

getObject method +

+ +
+ + +Future<ParseResponse> +getObject(
  1. String objectId,
  2. +
  3. {List<String>? include}
  4. +
) + + + +
+ +
+

Gets an object from the server using it's objectId

+

include, is a list of ParseObjects keys to be included directly and +not as a pointer.

+
+ + + +
+

Implementation

+
Future<ParseResponse> getObject(
+  String objectId, {
+  List<String>? include,
+}) async {
+  try {
+    String? query;
+    if (include != null) {
+      query = 'include=${concatenateArray(include)}';
+    }
+
+    final Uri url =
+        getSanitisedUri(_client, '$_path/$objectId', query: query);
+
+    final ParseNetworkResponse result = await _client.get(url.toString());
+    return handleResponse<ParseObject>(
+        this, result, ParseApiRQ.get, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(e, ParseApiRQ.get, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/getRelation.html b/dart/flutter_parse_sdk/ParseObject/getRelation.html new file mode 100644 index 000000000..753ef2151 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/getRelation.html @@ -0,0 +1,152 @@ + + + + + + + + getRelation method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getRelation
+ +
+ +
+
+
+ +
+
+

getRelation<T extends ParseObject> method +

+ +
+ + +ParseRelation<T> +getRelation<T extends ParseObject>(
  1. String key
  2. +
) + + + +
+ +
+

Get the instance of ParseRelation class associated with the given key

+
+ + + +
+

Implementation

+
ParseRelation<T> getRelation<T extends ParseObject>(String key) {
+  final potentialRelation = _getObjectData()[key];
+
+  if (potentialRelation == null) {
+    final relation = ParseRelation<T>(parent: this, key: key);
+
+    set(key, relation);
+
+    return relation;
+  }
+
+  if (potentialRelation is _ParseRelation<T>) {
+    return potentialRelation
+      ..parent = this
+      ..key = key;
+  }
+
+  throw ParseRelationException(
+      'The key $key is associated with a value ($potentialRelation) '
+      'can not be a relation');
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/query.html b/dart/flutter_parse_sdk/ParseObject/query.html new file mode 100644 index 000000000..c8df42c3a --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/query.html @@ -0,0 +1,146 @@ + + + + + + + + query method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
query
+ +
+ +
+
+
+ +
+
+

query<T extends ParseObject> method +

+ +
+ + +Future<ParseResponse> +query<T extends ParseObject>(
  1. String query,
  2. +
  3. {ProgressCallback? progressCallback}
  4. +
) + + + +
+ +
+

Can be used to create custom queries

+
+ + + +
+

Implementation

+
Future<ParseResponse> query<T extends ParseObject>(String query,
+    {ProgressCallback? progressCallback}) async {
+  try {
+    final Uri url = getSanitisedUri(_client, _path, query: query);
+    final ParseNetworkResponse result = await _client.get(
+      url.toString(),
+      onReceiveProgress: progressCallback,
+    );
+    return handleResponse<T>(
+        this, result, ParseApiRQ.query, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(e, ParseApiRQ.query, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/removeRelation.html b/dart/flutter_parse_sdk/ParseObject/removeRelation.html new file mode 100644 index 000000000..c79a0c119 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/removeRelation.html @@ -0,0 +1,135 @@ + + + + + + + + removeRelation method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
removeRelation
+ +
+ +
+
+
+ +
+
+

removeRelation method +

+ +
+ + +void +removeRelation(
  1. String key,
  2. +
  3. List<ParseObject> objets
  4. +
) + + + +
+ +
+

Remove multiple objets from a relation associated with a given key

+
+ + + +
+

Implementation

+
void removeRelation(String key, List<ParseObject> objets) {
+  set(key, _ParseRemoveRelationOperation(objets.toSet()));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/save.html b/dart/flutter_parse_sdk/ParseObject/save.html new file mode 100644 index 000000000..6c14dd0e5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/save.html @@ -0,0 +1,175 @@ + + + + + + + + save method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
save
+ +
+ +
+
+
+ +
+
+

save method +

+ +
+ + +Future<ParseResponse> +save(
  1. {dynamic context}
  2. +
) + + + +
+ +
+

Saves the current object online.

+

If the object not saved yet, this will create it. Otherwise, +it will send the updated object to the server.

+

This will save any nested(child) object in this object. So you do not need +to each one of them manually.

+

Example of saving child and parent objects using save():

+
final dietPlan = ParseObject('Diet_Plans')..set('Fat', 15);
+final plan = ParseObject('Plan')..set('planName', 'John.W');
+dietPlan.set('plan', plan);
+
+// the save function will create the nested(child) object first and then
+// attempts to save the parent object.
+//
+// using create in this situation will throw an error, because the child
+// object is not saved/created yet and you need to create it manually
+await dietPlan.save();
+
+print(plan.objectId); // DLde4rYA8C
+print(dietPlan.objectId); // RGd4fdEUB
+
+
+

The same principle works with ParseRelation

+

Its safe to call this function aging if an error occurred while saving.

+

Prefer using save over update and create

+
+ + + +
+

Implementation

+
Future<ParseResponse> save({dynamic context}) async {
+  final ParseResponse childrenResponse = await _saveChildren(this, _client);
+  if (childrenResponse.success) {
+    ParseResponse? response;
+    if (objectId == null) {
+      response = await create(context: context);
+    } else if (_isDirty(false)) {
+      response = await update(context: context);
+    }
+
+    if (response != null) {
+      if (response.success) {
+        _savingChanges.clear();
+      } else {
+        _revertSavingChanges();
+      }
+      return response;
+    }
+  }
+  return childrenResponse;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/saveEventually.html b/dart/flutter_parse_sdk/ParseObject/saveEventually.html new file mode 100644 index 000000000..6b9ccf87c --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/saveEventually.html @@ -0,0 +1,145 @@ + + + + + + + + saveEventually method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
saveEventually
+ +
+ +
+
+
+ +
+
+

saveEventually method +

+ +
+ + +Future<ParseResponse> +saveEventually() + + + +
+ + + + +
+

Implementation

+
Future<ParseResponse> saveEventually() async {
+  // save object
+  final ParseResponse response = await save();
+
+  if (response.success) {
+    // return success response
+    return response;
+  } else {
+    // if have network connection error
+    if ((response.error?.message ?? "").contains(keyNetworkError)) {
+      // save this object in CoreStore
+      await _addThisObjectToParseCoreDataList(keyParseStoreObjects);
+    } else {
+      return response;
+    }
+  }
+  return response;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/setAdd.html b/dart/flutter_parse_sdk/ParseObject/setAdd.html new file mode 100644 index 000000000..35e00cae5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/setAdd.html @@ -0,0 +1,135 @@ + + + + + + + + setAdd method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setAdd
+ +
+ +
+
+
+ +
+
+

setAdd<T> method +

+ +
+ + +void +setAdd<T>(
  1. String key,
  2. +
  3. T element
  4. +
) + + + +
+ +
+

Add an element to the end of the array associated with a given key

+
+ + + +
+

Implementation

+
void setAdd<T>(String key, T element) {
+  set(key, _ParseAddOperation([element]));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/setAddAll.html b/dart/flutter_parse_sdk/ParseObject/setAddAll.html new file mode 100644 index 000000000..afb3112ba --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/setAddAll.html @@ -0,0 +1,136 @@ + + + + + + + + setAddAll method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setAddAll
+ +
+ +
+
+
+ +
+
+

setAddAll method +

+ +
+ + +void +setAddAll(
  1. String key,
  2. +
  3. List elements
  4. +
) + + + +
+ +
+

Add multiple elements to the end of the array +associated with a given key

+
+ + + +
+

Implementation

+
void setAddAll(String key, List<dynamic> elements) {
+  set(key, _ParseAddOperation(elements));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/setAddAllUnique.html b/dart/flutter_parse_sdk/ParseObject/setAddAllUnique.html new file mode 100644 index 000000000..c24d8743e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/setAddAllUnique.html @@ -0,0 +1,137 @@ + + + + + + + + setAddAllUnique method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setAddAllUnique
+ +
+ +
+
+
+ +
+
+

setAddAllUnique method +

+ +
+ + +void +setAddAllUnique(
  1. String key,
  2. +
  3. List elements
  4. +
) + + + +
+ +
+

Add multiple elements to the array associated with a given key, only +adding elements which are not already present in the array. The position +of the insert is not guaranteed

+
+ + + +
+

Implementation

+
void setAddAllUnique(String key, List<dynamic> elements) {
+  set(key, _ParseAddUniqueOperation(elements));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/setAddUnique.html b/dart/flutter_parse_sdk/ParseObject/setAddUnique.html new file mode 100644 index 000000000..63744cca0 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/setAddUnique.html @@ -0,0 +1,137 @@ + + + + + + + + setAddUnique method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setAddUnique
+ +
+ +
+
+
+ +
+
+

setAddUnique method +

+ +
+ + +void +setAddUnique(
  1. String key,
  2. +
  3. dynamic element
  4. +
) + + + +
+ +
+

Add an element to the array associated with a given key, only if +it is not already present in the array. The position of the insert is not +guaranteed

+
+ + + +
+

Implementation

+
void setAddUnique(String key, dynamic element) {
+  set(key, _ParseAddUniqueOperation([element]));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/setDecrement.html b/dart/flutter_parse_sdk/ParseObject/setDecrement.html new file mode 100644 index 000000000..db7a63db0 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/setDecrement.html @@ -0,0 +1,135 @@ + + + + + + + + setDecrement method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setDecrement
+ +
+ +
+
+
+ +
+
+

setDecrement method +

+ +
+ + +void +setDecrement(
  1. String key,
  2. +
  3. num amount
  4. +
) + + + +
+ +
+

Decrement a num value associated with a given key by the given amount

+
+ + + +
+

Implementation

+
void setDecrement(String key, num amount) {
+  set(key, _ParseIncrementOperation(-amount));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/setIncrement.html b/dart/flutter_parse_sdk/ParseObject/setIncrement.html new file mode 100644 index 000000000..5f30b53d1 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/setIncrement.html @@ -0,0 +1,135 @@ + + + + + + + + setIncrement method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setIncrement
+ +
+ +
+
+
+ +
+
+

setIncrement method +

+ +
+ + +void +setIncrement(
  1. String key,
  2. +
  3. num amount
  4. +
) + + + +
+ +
+

Increment a num value associated with a given key by the given amount

+
+ + + +
+

Implementation

+
void setIncrement(String key, num amount) {
+  set(key, _ParseIncrementOperation(amount));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/setRemove.html b/dart/flutter_parse_sdk/ParseObject/setRemove.html new file mode 100644 index 000000000..7667eeb33 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/setRemove.html @@ -0,0 +1,136 @@ + + + + + + + + setRemove method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setRemove
+ +
+ +
+
+
+ +
+
+

setRemove method +

+ +
+ + +void +setRemove(
  1. String key,
  2. +
  3. dynamic element
  4. +
) + + + +
+ +
+

Remove every instance of an element from an array +associated with a given key

+
+ + + +
+

Implementation

+
void setRemove(String key, dynamic element) {
+  set(key, _ParseRemoveOperation([element]));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/setRemoveAll.html b/dart/flutter_parse_sdk/ParseObject/setRemoveAll.html new file mode 100644 index 000000000..8e37f2c00 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/setRemoveAll.html @@ -0,0 +1,136 @@ + + + + + + + + setRemoveAll method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setRemoveAll
+ +
+ +
+
+
+ +
+
+

setRemoveAll method +

+ +
+ + +void +setRemoveAll(
  1. String key,
  2. +
  3. List elements
  4. +
) + + + +
+ +
+

Removes all instances of the elements contained in a List from the +array associated with a given key

+
+ + + +
+

Implementation

+
void setRemoveAll(String key, List<dynamic> elements) {
+  set(key, _ParseRemoveOperation(elements));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/submitDeleteEventually.html b/dart/flutter_parse_sdk/ParseObject/submitDeleteEventually.html new file mode 100644 index 000000000..921992f1e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/submitDeleteEventually.html @@ -0,0 +1,187 @@ + + + + + + + + submitDeleteEventually method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
submitDeleteEventually
+ +
+ +
+
+
+ +
+
+

submitDeleteEventually static method +

+ +
+ + +Future<ParseResponse?> +submitDeleteEventually(
  1. {ParseClient? client,
  2. +
  3. bool? autoSendSessionId}
  4. +
) + + + +
+ + + + +
+

Implementation

+
static Future<ParseResponse?> submitDeleteEventually(
+    {ParseClient? client, bool? autoSendSessionId}) async {
+  // preparation ParseCoreData
+  final CoreStore coreStore = ParseCoreData().getStore();
+
+  // delete
+  // get json parse saved objects
+  List<String>? listDeletes =
+      await coreStore.getStringList(keyParseStoreDeletes);
+
+  if (listDeletes != null) {
+    int firstLength = listDeletes.length;
+    List<String> elementsToRemove = [];
+    for (var element in listDeletes) {
+      // decode json
+      dynamic object = json.decode(element);
+
+      // crate parse object
+      ParseObject parseObject = ParseObject(object[keyVarClassName],
+              client: client, autoSendSessionId: autoSendSessionId)
+          .fromJson(object);
+
+      // delete parse object
+      ParseResponse deleteResponse = await parseObject.delete();
+
+      if (deleteResponse.success) {
+        // remove from list Deletes
+        elementsToRemove.add(element);
+      }
+    }
+
+    // Remove the elements after the loop
+    for (var elementToRemove in elementsToRemove) {
+      listDeletes.remove(elementToRemove);
+    }
+
+    // set new list deletes in coreStore
+    coreStore.setStringList(keyParseStoreDeletes, listDeletes);
+
+    bool success = true;
+    int statusCode = 200;
+
+    if (listDeletes.length == firstLength) {
+      // Nothing has been deleted
+      success = false;
+      statusCode = -1;
+    }
+
+    final ParseResponse response = ParseResponse()
+      ..success = success
+      ..results = <dynamic>[]
+      ..statusCode = statusCode;
+
+    return response;
+  }
+
+  return null;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/submitEventually.html b/dart/flutter_parse_sdk/ParseObject/submitEventually.html new file mode 100644 index 000000000..6bbd85370 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/submitEventually.html @@ -0,0 +1,138 @@ + + + + + + + + submitEventually method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
submitEventually
+ +
+ +
+
+
+ +
+
+

submitEventually static method +

+ +
+ + +Future<void> +submitEventually(
  1. {ParseClient? client,
  2. +
  3. bool? autoSendSessionId}
  4. +
) + + + +
+ + + + +
+

Implementation

+
static Future<void> submitEventually(
+    {ParseClient? client, bool? autoSendSessionId}) async {
+  await submitSaveEventually(
+      client: client, autoSendSessionId: autoSendSessionId);
+  await submitDeleteEventually(
+      client: client, autoSendSessionId: autoSendSessionId);
+
+  Parse.objectsExistForEventually = await checkObjectsExistForEventually();
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/submitSaveEventually.html b/dart/flutter_parse_sdk/ParseObject/submitSaveEventually.html new file mode 100644 index 000000000..9980aa016 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/submitSaveEventually.html @@ -0,0 +1,169 @@ + + + + + + + + submitSaveEventually method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
submitSaveEventually
+ +
+ +
+
+
+ +
+
+

submitSaveEventually static method +

+ +
+ + +Future<ParseResponse?> +submitSaveEventually(
  1. {ParseClient? client,
  2. +
  3. bool? autoSendSessionId}
  4. +
) + + + +
+ + + + +
+

Implementation

+
static Future<ParseResponse?> submitSaveEventually(
+    {ParseClient? client, bool? autoSendSessionId}) async {
+  // get client
+  ParseClient localClient = client ??
+      ParseCoreData().clientCreator(
+          sendSessionId:
+              autoSendSessionId ?? ParseCoreData().autoSendSessionId,
+          securityContext: ParseCoreData().securityContext);
+
+  // preparation ParseCoreData
+  final CoreStore coreStore = ParseCoreData().getStore();
+
+  // save
+  // get json parse saved objects
+  List<String>? listSaves =
+      await coreStore.getStringList(keyParseStoreObjects);
+
+  if (listSaves != null) {
+    List<ParseObject> parseObjectList = [];
+    for (var element in listSaves) {
+      // decode json
+      dynamic object = json.decode(element);
+      parseObjectList
+          .add(ParseObject(object[keyVarClassName]).fromJson(object));
+    }
+
+    // send parseObjects to server
+    ParseResponse response =
+        await ParseObject._saveChildren(parseObjectList, localClient);
+
+    // if success clear all objects
+    if (response.success) {
+      coreStore.setStringList(keyParseStoreObjects, []);
+    }
+
+    return response;
+  }
+
+  return null;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/unset.html b/dart/flutter_parse_sdk/ParseObject/unset.html new file mode 100644 index 000000000..2ae25dbc7 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/unset.html @@ -0,0 +1,175 @@ + + + + + + + + unset method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
unset
+ +
+ +
+
+
+ +
+
+

unset method +

+ +
+ + +Future<ParseResponse> +unset(
  1. String key,
  2. +
  3. {bool offlineOnly = false}
  4. +
) + + + +
+ +
+

Can be used set an objects variable to undefined rather than null

+

If object is not saved remotely, set offlineOnly to true to avoid api calls.

+
+ + + +
+

Implementation

+
Future<ParseResponse> unset(String key, {bool offlineOnly = false}) async {
+  final dynamic object = _objectData[key];
+  _objectData.remove(key);
+  _unsavedChanges.remove(key);
+  _savingChanges.remove(key);
+
+  if (offlineOnly) {
+    return ParseResponse()..success = true;
+  }
+
+  if (objectId == null) {
+    return ParseResponse()..success = false;
+  }
+
+  try {
+    final Uri url = getSanitisedUri(_client, '$_path/$objectId');
+
+    final String body = '{"$key":{"__op":"Delete"}}';
+
+    final ParseNetworkResponse result =
+        await _client.put(url.toString(), data: body);
+
+    final ParseResponse response = handleResponse<ParseObject>(
+        this, result, ParseApiRQ.unset, _debug, parseClassName);
+
+    if (response.success) {
+      return ParseResponse()..success = true;
+    } else {
+      _objectData[key] = object;
+      _unsavedChanges[key] = object;
+      _savingChanges[key] = object;
+
+      return response;
+    }
+  } on Exception catch (e) {
+    _objectData[key] = object;
+    _unsavedChanges[key] = object;
+    _savingChanges[key] = object;
+
+    return handleException(e, ParseApiRQ.unset, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObject/update.html b/dart/flutter_parse_sdk/ParseObject/update.html new file mode 100644 index 000000000..e28b20c9e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObject/update.html @@ -0,0 +1,171 @@ + + + + + + + + update method - ParseObject class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
update
+ +
+ +
+
+
+ +
+
+

update method +

+ +
+ + +Future<ParseResponse> +update(
  1. {dynamic context}
  2. +
) + + + +
+ +
+

Send the updated object to the server.

+

Will only send the dirty (modified) data and not the entire object

+

The object should hold an objectId in order to update it

+

Prefer using save over update

+
+ + + +
+

Implementation

+
Future<ParseResponse> update({dynamic context}) async {
+  assert(
+    objectId != null && (objectId?.isNotEmpty ?? false),
+    "Can't update a parse object while the objectId property is null or empty",
+  );
+
+  try {
+    final Uri url = getSanitisedUri(_client, '$_path/$objectId');
+    final String body = json.encode(toJson(forApiRQ: true));
+
+    _saveChanges();
+
+    final Map<String, String> headers = {
+      keyHeaderContentType: keyHeaderContentTypeJson,
+    };
+
+    if (context != null) {
+      headers
+          .addAll({keyHeaderCloudContext: json.encode(parseEncode(context))});
+    }
+
+    final ParseNetworkResponse result = await _client.put(url.toString(),
+        data: body, options: ParseNetworkOptions(headers: headers));
+
+    final response = handleResponse<ParseObject>(
+        this, result, ParseApiRQ.save, _debug, parseClassName);
+
+    if (!response.success) {
+      _notifyChildrenAboutErrorSaving();
+    }
+
+    return response;
+  } on Exception catch (e) {
+    _notifyChildrenAboutErrorSaving();
+    return handleException(e, ParseApiRQ.save, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseObjectConstructor.html b/dart/flutter_parse_sdk/ParseObjectConstructor.html new file mode 100644 index 000000000..d59bb00af --- /dev/null +++ b/dart/flutter_parse_sdk/ParseObjectConstructor.html @@ -0,0 +1,123 @@ + + + + + + + + ParseObjectConstructor typedef - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseObjectConstructor
+ +
+ +
+
+
+ +
+
+

ParseObjectConstructor typedef + +

+ +
+ ParseObjectConstructor = + ParseObject Function() + +
+ + + + +
+

Implementation

+
typedef ParseObjectConstructor = ParseObject Function();
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseOperationException-class-sidebar.html b/dart/flutter_parse_sdk/ParseOperationException-class-sidebar.html new file mode 100644 index 000000000..05e2f0a98 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseOperationException-class-sidebar.html @@ -0,0 +1,27 @@ +
    + +
  1. Constructors
  2. +
  3. ParseOperationException
  4. + + + +
  5. + Properties +
  6. +
  7. hashCode
  8. +
  9. message
  10. +
  11. runtimeType
  12. + +
  13. Methods
  14. +
  15. noSuchMethod
  16. +
  17. toString
  18. + +
  19. Operators
  20. +
  21. operator ==
  22. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseOperationException-class.html b/dart/flutter_parse_sdk/ParseOperationException-class.html new file mode 100644 index 000000000..d7ba3f071 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseOperationException-class.html @@ -0,0 +1,247 @@ + + + + + + + + ParseOperationException class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseOperationException
+ +
+ +
+
+
+ +
+
+

ParseOperationException class + +

+ + + + +
+
+ + + +
Implemented types
+
+ +
+ + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseOperationException([String? message]) +
+
+ +
const
+
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ message + String? + +
+
+ +
final
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
override
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseOperationException/ParseOperationException.html b/dart/flutter_parse_sdk/ParseOperationException/ParseOperationException.html new file mode 100644 index 000000000..d0f760394 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseOperationException/ParseOperationException.html @@ -0,0 +1,125 @@ + + + + + + + + ParseOperationException constructor - ParseOperationException - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseOperationException
+ +
+ +
+
+
+ +
+
+

ParseOperationException constructor +

+ +
+ const + ParseOperationException(
  1. [String? message]
  2. +
) +
+ + + + + +
+

Implementation

+
const ParseOperationException([this.message]);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseOperationException/message.html b/dart/flutter_parse_sdk/ParseOperationException/message.html new file mode 100644 index 000000000..8fd7b870a --- /dev/null +++ b/dart/flutter_parse_sdk/ParseOperationException/message.html @@ -0,0 +1,125 @@ + + + + + + + + message property - ParseOperationException class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
message
+ +
+ +
+
+
+ +
+
+

message property +

+ +
+ + String? + message +
final
+ +
+ + + +
+

Implementation

+
final String? message;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseOperationException/toString.html b/dart/flutter_parse_sdk/ParseOperationException/toString.html new file mode 100644 index 000000000..4cd95dc60 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseOperationException/toString.html @@ -0,0 +1,149 @@ + + + + + + + + toString method - ParseOperationException class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
toString
+ +
+ +
+
+
+ +
+
+

toString method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +String +toString() + +
override
+ +
+ +
+

A string representation of this object.

+

Some classes have a default textual representation, +often paired with a static parse function (like int.parse). +These classes will provide the textual representation as +their string representation.

+

Other classes have no meaningful textual representation +that a program will care about. +Such classes will typically override toString to provide +useful information when inspecting the object, +mainly for debugging or logging.

+
+ + + +
+

Implementation

+
@override
+String toString() {
+  if (message == null) return "ParseOperationException";
+  return "ParseOperationException: $message";
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseRelation-class-sidebar.html b/dart/flutter_parse_sdk/ParseRelation-class-sidebar.html new file mode 100644 index 000000000..235fa1694 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelation-class-sidebar.html @@ -0,0 +1,38 @@ +
    + +
  1. Constructors
  2. +
  3. ParseRelation
  4. +
  5. fromJson
  6. + + + +
  7. + Properties +
  8. +
  9. getTargetClass
  10. +
  11. hashCode
  12. +
  13. runtimeType
  14. +
  15. setTargetClass
  16. +
  17. targetClass
  18. + +
  19. Methods
  20. +
  21. add
  22. +
  23. addAll
  24. +
  25. getKey
  26. +
  27. getParent
  28. +
  29. getQuery
  30. +
  31. noSuchMethod
  32. +
  33. remove
  34. +
  35. removeAll
  36. +
  37. toJson
  38. +
  39. toString
  40. + +
  41. Operators
  42. +
  43. operator ==
  44. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseRelation-class.html b/dart/flutter_parse_sdk/ParseRelation-class.html new file mode 100644 index 000000000..f43d2a5b2 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelation-class.html @@ -0,0 +1,363 @@ + + + + + + + + ParseRelation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseRelation
+ +
+ +
+
+
+ +
+
+

ParseRelation<T extends ParseObject> class + abstract + +

+ + + + + + +
+

Constructors

+ +
+
+ ParseRelation({required ParseObject parent, required String key}) +
+
+ +
factory
+
+
+ ParseRelation.fromJson(Map<String, dynamic> map, {ParseObject? parent, String? key}) +
+
+ +
factory
+
+
+
+ +
+

Properties

+ +
+
+ getTargetClass + String + +
+
+ The className of the target objects. +
no setter
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ setTargetClass + String + +
+
+ Will work only if the current target class is null, otherwise will throw +ParseRelationException with the message: +The target class can not be modified if it is already set +
no getter
+ +
+ +
+ targetClass + String? + +
+
+ The className of the target objects. +
no setter
+ +
+ +
+
+ + +
+

Methods

+
+
+ add(T parseObject) + → void + + + +
+
+ Add object to this relation + + +
+ +
+ addAll(List<T> parseObjects) + → void + + + +
+
+ Add objects to this relation. + + +
+ +
+ getKey() + String + + + +
+
+ + + +
+ +
+ getParent() + ParseObject + + + +
+
+ + + +
+ +
+ getQuery() + QueryBuilder<ParseObject> + + + +
+
+ Gets a query that can be used to query the objects in this relation. + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ remove(T parseObject) + → void + + + +
+
+ Remove object from this relation + + +
+ +
+ removeAll(List<T> parseObjects) + → void + + + +
+
+ Remove objects from this relation + + +
+ +
+ toJson({bool full = false}) + Map<String, dynamic> + + + +
+
+ + + +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseRelation/ParseRelation.fromJson.html b/dart/flutter_parse_sdk/ParseRelation/ParseRelation.fromJson.html new file mode 100644 index 000000000..42f2893d6 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelation/ParseRelation.fromJson.html @@ -0,0 +1,133 @@ + + + + + + + + ParseRelation.fromJson constructor - ParseRelation - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseRelation.fromJson
+ +
+ +
+
+
+ +
+
+

ParseRelation<T extends ParseObject>.fromJson constructor +

+ +
+ + ParseRelation<T extends ParseObject>.fromJson(
  1. Map<String, dynamic> map,
  2. +
  3. {ParseObject? parent,
  4. +
  5. String? key}
  6. +
) +
+ + + + + +
+

Implementation

+
factory ParseRelation.fromJson(
+  Map<String, dynamic> map, {
+  ParseObject? parent,
+  String? key,
+}) {
+  return _ParseRelation.fromJson(map, parent: parent, key: key);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseRelation/ParseRelation.html b/dart/flutter_parse_sdk/ParseRelation/ParseRelation.html new file mode 100644 index 000000000..0cccadb9f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelation/ParseRelation.html @@ -0,0 +1,131 @@ + + + + + + + + ParseRelation constructor - ParseRelation - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseRelation
+ +
+ +
+
+
+ +
+
+

ParseRelation<T extends ParseObject> constructor +

+ +
+ + ParseRelation<T extends ParseObject>(
  1. {required ParseObject parent,
  2. +
  3. required String key}
  4. +
) +
+ + + + + +
+

Implementation

+
factory ParseRelation({
+  required ParseObject parent,
+  required String key,
+}) {
+  return _ParseRelation(parent: parent, key: key);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseRelation/add.html b/dart/flutter_parse_sdk/ParseRelation/add.html new file mode 100644 index 000000000..6db463e43 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelation/add.html @@ -0,0 +1,132 @@ + + + + + + + + add method - ParseRelation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
add
+ +
+ +
+
+
+ +
+
+

add abstract method +

+ +
+ + +void +add(
  1. T parseObject
  2. +
) + + + +
+ +
+

Add object to this relation

+
+ + + +
+

Implementation

+
void add(T parseObject);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseRelation/addAll.html b/dart/flutter_parse_sdk/ParseRelation/addAll.html new file mode 100644 index 000000000..cbdbc2e39 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelation/addAll.html @@ -0,0 +1,132 @@ + + + + + + + + addAll method - ParseRelation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
addAll
+ +
+ +
+
+
+ +
+
+

addAll abstract method +

+ +
+ + +void +addAll(
  1. List<T> parseObjects
  2. +
) + + + +
+ +
+

Add objects to this relation.

+
+ + + +
+

Implementation

+
void addAll(List<T> parseObjects);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseRelation/getKey.html b/dart/flutter_parse_sdk/ParseRelation/getKey.html new file mode 100644 index 000000000..3cb9546e0 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelation/getKey.html @@ -0,0 +1,128 @@ + + + + + + + + getKey method - ParseRelation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getKey
+ +
+ +
+
+
+ +
+
+

getKey abstract method +

+ +
+ + +String +getKey() + + + +
+ + + + +
+

Implementation

+
String getKey();
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseRelation/getParent.html b/dart/flutter_parse_sdk/ParseRelation/getParent.html new file mode 100644 index 000000000..6e17f0d58 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelation/getParent.html @@ -0,0 +1,128 @@ + + + + + + + + getParent method - ParseRelation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getParent
+ +
+ +
+
+
+ +
+
+

getParent abstract method +

+ +
+ + +ParseObject +getParent() + + + +
+ + + + +
+

Implementation

+
ParseObject getParent();
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseRelation/getQuery.html b/dart/flutter_parse_sdk/ParseRelation/getQuery.html new file mode 100644 index 000000000..9cd0926a5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelation/getQuery.html @@ -0,0 +1,132 @@ + + + + + + + + getQuery method - ParseRelation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getQuery
+ +
+ +
+
+
+ +
+
+

getQuery abstract method +

+ +
+ + +QueryBuilder<ParseObject> +getQuery() + + + +
+ +
+

Gets a query that can be used to query the objects in this relation.

+

Return a QueryBuilder that restricts the results to objects in this relation

+
+ + + +
+

Implementation

+
QueryBuilder getQuery();
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseRelation/getTargetClass.html b/dart/flutter_parse_sdk/ParseRelation/getTargetClass.html new file mode 100644 index 000000000..4ce66a978 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelation/getTargetClass.html @@ -0,0 +1,141 @@ + + + + + + + + getTargetClass property - ParseRelation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getTargetClass
+ +
+ +
+
+
+ +
+
+

getTargetClass property +

+ + + +
+ +
+ +
+
    +
  1. @Deprecated('use the targetClass getter')
  2. +
+
+ String + getTargetClass + + +
+ + +
+

The className of the target objects.

+
+ + +
+

Implementation

+
@Deprecated('use the targetClass getter')
+String get getTargetClass;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseRelation/remove.html b/dart/flutter_parse_sdk/ParseRelation/remove.html new file mode 100644 index 000000000..4f09ee894 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelation/remove.html @@ -0,0 +1,132 @@ + + + + + + + + remove method - ParseRelation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
remove
+ +
+ +
+
+
+ +
+
+

remove abstract method +

+ +
+ + +void +remove(
  1. T parseObject
  2. +
) + + + +
+ +
+

Remove object from this relation

+
+ + + +
+

Implementation

+
void remove(T parseObject);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseRelation/removeAll.html b/dart/flutter_parse_sdk/ParseRelation/removeAll.html new file mode 100644 index 000000000..b8abe2ac2 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelation/removeAll.html @@ -0,0 +1,132 @@ + + + + + + + + removeAll method - ParseRelation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
removeAll
+ +
+ +
+
+
+ +
+
+

removeAll abstract method +

+ +
+ + +void +removeAll(
  1. List<T> parseObjects
  2. +
) + + + +
+ +
+

Remove objects from this relation

+
+ + + +
+

Implementation

+
void removeAll(List<T> parseObjects);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseRelation/setTargetClass.html b/dart/flutter_parse_sdk/ParseRelation/setTargetClass.html new file mode 100644 index 000000000..d56641716 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelation/setTargetClass.html @@ -0,0 +1,137 @@ + + + + + + + + setTargetClass property - ParseRelation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setTargetClass
+ +
+ +
+
+
+ +
+
+

setTargetClass property +

+ + + + +
+ +
+ + void + setTargetClass=(String targetClass) + + +
+ + +
+

Will work only if the current target class is null, otherwise will throw +ParseRelationException with the message: +The target class can not be modified if it is already set

+
+ + +
+

Implementation

+
set setTargetClass(String targetClass);
+
+ +
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseRelation/targetClass.html b/dart/flutter_parse_sdk/ParseRelation/targetClass.html new file mode 100644 index 000000000..b0eeb2806 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelation/targetClass.html @@ -0,0 +1,135 @@ + + + + + + + + targetClass property - ParseRelation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
targetClass
+ +
+ +
+
+
+ +
+
+

targetClass property +

+ + + +
+ +
+ + String? + targetClass + + +
+ + +
+

The className of the target objects.

+
+ + +
+

Implementation

+
String? get targetClass;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseRelation/toJson.html b/dart/flutter_parse_sdk/ParseRelation/toJson.html new file mode 100644 index 000000000..4393049d2 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelation/toJson.html @@ -0,0 +1,129 @@ + + + + + + + + toJson method - ParseRelation class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
toJson
+ +
+ +
+
+
+ +
+
+

toJson abstract method +

+ +
+ + +Map<String, dynamic> +toJson(
  1. {bool full = false}
  2. +
) + + + +
+ + + + +
+

Implementation

+
Map<String, dynamic> toJson({bool full = false});
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseRelationException-class-sidebar.html b/dart/flutter_parse_sdk/ParseRelationException-class-sidebar.html new file mode 100644 index 000000000..9f30d43b9 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelationException-class-sidebar.html @@ -0,0 +1,27 @@ +
    + +
  1. Constructors
  2. +
  3. ParseRelationException
  4. + + + +
  5. + Properties +
  6. +
  7. hashCode
  8. +
  9. message
  10. +
  11. runtimeType
  12. + +
  13. Methods
  14. +
  15. noSuchMethod
  16. +
  17. toString
  18. + +
  19. Operators
  20. +
  21. operator ==
  22. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseRelationException-class.html b/dart/flutter_parse_sdk/ParseRelationException-class.html new file mode 100644 index 000000000..0c798fd88 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelationException-class.html @@ -0,0 +1,247 @@ + + + + + + + + ParseRelationException class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseRelationException
+ +
+ +
+
+
+ +
+
+

ParseRelationException class + +

+ + + + +
+
+ + + +
Implemented types
+
+ +
+ + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseRelationException([String? message]) +
+
+ +
const
+
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ message + String? + +
+
+ +
final
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
override
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseRelationException/ParseRelationException.html b/dart/flutter_parse_sdk/ParseRelationException/ParseRelationException.html new file mode 100644 index 000000000..6776114e9 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelationException/ParseRelationException.html @@ -0,0 +1,125 @@ + + + + + + + + ParseRelationException constructor - ParseRelationException - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseRelationException
+ +
+ +
+
+
+ +
+
+

ParseRelationException constructor +

+ +
+ const + ParseRelationException(
  1. [String? message]
  2. +
) +
+ + + + + +
+

Implementation

+
const ParseRelationException([this.message]);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseRelationException/message.html b/dart/flutter_parse_sdk/ParseRelationException/message.html new file mode 100644 index 000000000..0ffb9daa8 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelationException/message.html @@ -0,0 +1,125 @@ + + + + + + + + message property - ParseRelationException class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
message
+ +
+ +
+
+
+ +
+
+

message property +

+ +
+ + String? + message +
final
+ +
+ + + +
+

Implementation

+
final String? message;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseRelationException/toString.html b/dart/flutter_parse_sdk/ParseRelationException/toString.html new file mode 100644 index 000000000..fc8ef650e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseRelationException/toString.html @@ -0,0 +1,149 @@ + + + + + + + + toString method - ParseRelationException class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
toString
+ +
+ +
+
+
+ +
+
+

toString method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +String +toString() + +
override
+ +
+ +
+

A string representation of this object.

+

Some classes have a default textual representation, +often paired with a static parse function (like int.parse). +These classes will provide the textual representation as +their string representation.

+

Other classes have no meaningful textual representation +that a program will care about. +Such classes will typically override toString to provide +useful information when inspecting the object, +mainly for debugging or logging.

+
+ + + +
+

Implementation

+
@override
+String toString() {
+  if (message == null) return "ParseRelationException";
+  return "ParseRelationException: $message";
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseResponse-class-sidebar.html b/dart/flutter_parse_sdk/ParseResponse-class-sidebar.html new file mode 100644 index 000000000..50e6cf013 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseResponse-class-sidebar.html @@ -0,0 +1,32 @@ +
    + +
  1. Constructors
  2. +
  3. ParseResponse
  4. + + + +
  5. + Properties +
  6. +
  7. count
  8. +
  9. error
  10. +
  11. hashCode
  12. +
  13. result
  14. +
  15. results
  16. +
  17. runtimeType
  18. +
  19. statusCode
  20. +
  21. success
  22. + +
  23. Methods
  24. +
  25. noSuchMethod
  26. +
  27. toString
  28. + +
  29. Operators
  30. +
  31. operator ==
  32. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseResponse-class.html b/dart/flutter_parse_sdk/ParseResponse-class.html new file mode 100644 index 000000000..7d21ae2d5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseResponse-class.html @@ -0,0 +1,281 @@ + + + + + + + + ParseResponse class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseResponse
+ +
+ +
+
+
+ +
+
+

ParseResponse class + +

+ + + + + + +
+

Constructors

+ +
+
+ ParseResponse({ParseError? error}) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ count + int + +
+
+ +
getter/setter pair
+ +
+ +
+ error + ParseError? + +
+
+ +
getter/setter pair
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ result + ↔ dynamic + +
+
+ If result is a singular result, i.e. getByObjectID +
getter/setter pair
+ +
+ +
+ results + List? + +
+
+ All results stored as a list - Even if only one response is returned +
getter/setter pair
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ statusCode + int + +
+
+ +
getter/setter pair
+ +
+ +
+ success + bool + +
+
+ +
getter/setter pair
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseResponse/ParseResponse.html b/dart/flutter_parse_sdk/ParseResponse/ParseResponse.html new file mode 100644 index 000000000..8bdbdc87b --- /dev/null +++ b/dart/flutter_parse_sdk/ParseResponse/ParseResponse.html @@ -0,0 +1,127 @@ + + + + + + + + ParseResponse constructor - ParseResponse - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseResponse
+ +
+ +
+
+
+ +
+
+

ParseResponse constructor +

+ +
+ + ParseResponse(
  1. {ParseError? error}
  2. +
) +
+ + + + + +
+

Implementation

+
ParseResponse({
+  this.error,
+});
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseResponse/count.html b/dart/flutter_parse_sdk/ParseResponse/count.html new file mode 100644 index 000000000..0f169ce90 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseResponse/count.html @@ -0,0 +1,125 @@ + + + + + + + + count property - ParseResponse class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
count
+ +
+ +
+
+
+ +
+
+

count property +

+ +
+ + int + count +
getter/setter pair
+ +
+ + + +
+

Implementation

+
int count = 0;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseResponse/error.html b/dart/flutter_parse_sdk/ParseResponse/error.html new file mode 100644 index 000000000..0ba9b9196 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseResponse/error.html @@ -0,0 +1,125 @@ + + + + + + + + error property - ParseResponse class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
error
+ +
+ +
+
+
+ +
+
+

error property +

+ +
+ + ParseError? + error +
getter/setter pair
+ +
+ + + +
+

Implementation

+
ParseError? error;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseResponse/result.html b/dart/flutter_parse_sdk/ParseResponse/result.html new file mode 100644 index 000000000..f72bb32cf --- /dev/null +++ b/dart/flutter_parse_sdk/ParseResponse/result.html @@ -0,0 +1,130 @@ + + + + + + + + result property - ParseResponse class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
result
+ +
+ +
+
+
+ +
+
+

result property +

+ +
+ + dynamic + result +
getter/setter pair
+ +
+ +
+

If result is a singular result, i.e. getByObjectID

+

This is now deprecated - Please use results. This will contain a list of +results, no need to check if its a list or a list of elements anymore.

+
+ + +
+

Implementation

+
dynamic result;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseResponse/results.html b/dart/flutter_parse_sdk/ParseResponse/results.html new file mode 100644 index 000000000..de8666b0e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseResponse/results.html @@ -0,0 +1,129 @@ + + + + + + + + results property - ParseResponse class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
results
+ +
+ +
+
+
+ +
+
+

results property +

+ +
+ + List? + results +
getter/setter pair
+ +
+ +
+

All results stored as a list - Even if only one response is returned

+
+ + +
+

Implementation

+
// ignore: always_specify_types
+List? results;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseResponse/statusCode.html b/dart/flutter_parse_sdk/ParseResponse/statusCode.html new file mode 100644 index 000000000..8a74d42a4 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseResponse/statusCode.html @@ -0,0 +1,125 @@ + + + + + + + + statusCode property - ParseResponse class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
statusCode
+ +
+ +
+
+
+ +
+
+

statusCode property +

+ +
+ + int + statusCode +
getter/setter pair
+ +
+ + + +
+

Implementation

+
int statusCode = -1;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseResponse/success.html b/dart/flutter_parse_sdk/ParseResponse/success.html new file mode 100644 index 000000000..a00a8fb4d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseResponse/success.html @@ -0,0 +1,125 @@ + + + + + + + + success property - ParseResponse class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
success
+ +
+ +
+
+
+ +
+
+

success property +

+ +
+ + bool + success +
getter/setter pair
+ +
+ + + +
+

Implementation

+
bool success = false;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSession-class-sidebar.html b/dart/flutter_parse_sdk/ParseSession-class-sidebar.html new file mode 100644 index 000000000..b08f92ae4 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSession-class-sidebar.html @@ -0,0 +1,80 @@ +
    + +
  1. Constructors
  2. +
  3. ParseSession
  4. + + + +
  5. + Properties +
  6. +
  7. createdAt
  8. +
  9. createdWith
  10. +
  11. expiresAt
  12. +
  13. hashCode
  14. +
  15. installationId
  16. +
  17. objectId
  18. +
  19. parseClassName
  20. +
  21. restricted
  22. +
  23. runtimeType
  24. +
  25. sessionToken
  26. +
  27. updatedAt
  28. +
  29. user
  30. + +
  31. Methods
  32. +
  33. addRelation
  34. +
  35. clearUnsavedChanges
  36. +
  37. clone
  38. +
  39. containsKey
  40. +
  41. containsValue
  42. +
  43. copy
  44. +
  45. create
  46. +
  47. delete
  48. +
  49. deleteEventually
  50. +
  51. distinct
  52. +
  53. fetch
  54. +
  55. fromJson
  56. +
  57. fromJsonForManualObject
  58. +
  59. fromPin
  60. +
  61. get
  62. +
  63. getACL
  64. +
  65. getAll
  66. +
  67. getCurrentSessionFromServer
  68. +
  69. getObject
  70. +
  71. getRelation
  72. +
  73. isDirty
  74. +
  75. noSuchMethod
  76. +
  77. pin
  78. +
  79. query
  80. +
  81. removeRelation
  82. +
  83. save
  84. +
  85. saveEventually
  86. +
  87. saveInStorage
  88. +
  89. set
  90. +
  91. setACL
  92. +
  93. setAdd
  94. +
  95. setAddAll
  96. +
  97. setAddAllUnique
  98. +
  99. setAddUnique
  100. +
  101. setDecrement
  102. +
  103. setIncrement
  104. +
  105. setRemove
  106. +
  107. setRemoveAll
  108. +
  109. toJson
  110. +
  111. toPointer
  112. +
  113. toString
  114. +
  115. unpin
  116. +
  117. unset
  118. +
  119. update
  120. + +
  121. Operators
  122. +
  123. operator ==
  124. +
  125. operator []
  126. +
  127. operator []=
  128. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseSession-class.html b/dart/flutter_parse_sdk/ParseSession-class.html new file mode 100644 index 000000000..1cbae3e9f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSession-class.html @@ -0,0 +1,933 @@ + + + + + + + + ParseSession class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseSession
+ +
+ +
+
+
+ +
+
+

ParseSession class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + +
Implemented types
+
+ +
+ + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseSession({bool? debug, ParseClient? client}) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ createdAt + DateTime? + +
+
+ Returns DateTime createdAt +
no setterinherited
+ +
+ +
+ createdWith + Map<String, dynamic> + +
+
+ +
no setter
+ +
+ +
+ expiresAt + DateTime + +
+
+ +
no setter
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ installationId + String + +
+
+ +
getter/setter pair
+ +
+ +
+ objectId + String? + +
+
+ Returns String objectId +
getter/setter pairinherited
+ +
+ +
+ parseClassName + String + +
+
+ refers to the Table Name in your Parse Server +
getter/setter pairinherited
+ +
+ +
+ restricted + bool + +
+
+ +
no setter
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ sessionToken + String + +
+
+ +
no setter
+ +
+ +
+ updatedAt + DateTime? + +
+
+ Returns DateTime updatedAt +
no setterinherited
+ +
+ +
+ user + ParseObject + +
+
+ +
no setter
+ +
+ +
+
+ + +
+

Methods

+
+
+ addRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Add multiple objets to a relation associated with a given key +
inherited
+ +
+ +
+ clearUnsavedChanges() + → void + + + +
+
+ +
inherited
+ +
+ +
+ clone(Map<String, dynamic> map) + ParseSession + + + +
+
+ +
override
+ +
+ +
+ containsKey(String key) + bool + + + +
+
+ +
inherited
+ +
+ +
+ containsValue(Object value) + bool + + + +
+
+ +
inherited
+ +
+ +
+ copy() + → dynamic + + + +
+
+ Creates a copy of this class +
inherited
+ +
+ +
+ create({bool allowCustomObjectId = false, dynamic context}) + Future<ParseResponse> + + + +
+
+ Creates a new object and saves it online +
inherited
+ +
+ +
+ delete<T extends ParseObject>({String? id, String? path}) + Future<ParseResponse> + + + +
+
+ Deletes the current object locally and online +
inherited
+ +
+ +
+ deleteEventually() + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ distinct<T extends ParseObject>(String query) + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ fetch({List<String>? include}) + Future<ParseObject> + + + +
+
+ Fetches this object with the data from the server. +
inherited
+ +
+ +
+ fromJson(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromJsonForManualObject(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromPin(String objectId) + Future + + + +
+
+ Get item from value storage +
inherited
+ +
+ +
+ get<T>(String key, {T? defaultValue}) + → T? + + + +
+
+ Get a value of type T associated with a given key +
inherited
+ +
+ +
+ getACL() + ParseACL + + + +
+
+ Access the ParseACL governing this object. +
inherited
+ +
+ +
+ getAll() + Future<ParseResponse> + + + +
+
+ Gets all objects from this table - Limited response at the moment +
inherited
+ +
+ +
+ getCurrentSessionFromServer() + Future<ParseResponse> + + + +
+
+ + + +
+ +
+ getObject(String objectId, {List<String>? include}) + Future<ParseResponse> + + + +
+
+ Gets an object from the server using it's objectId +
inherited
+ +
+ +
+ getRelation<T extends ParseObject>(String key) + ParseRelation<T> + + + +
+
+ Get the instance of ParseRelation class associated with the given key +
inherited
+ +
+ +
+ isDirty({String? key}) + bool + + + +
+
+ +
inherited
+ +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ pin() + Future<bool> + + + +
+
+ Saves item to value storage +
inherited
+ +
+ +
+ query<T extends ParseObject>(String query, {ProgressCallback? progressCallback}) + Future<ParseResponse> + + + +
+
+ Can be used to create custom queries +
inherited
+ +
+ +
+ removeRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Remove multiple objets from a relation associated with a given key +
inherited
+ +
+ +
+ save({dynamic context}) + Future<ParseResponse> + + + +
+
+ Saves the current object online. +
inherited
+ +
+ +
+ saveEventually() + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ saveInStorage(String key) + Future<void> + + + +
+
+ Saves in storage +
inherited
+ +
+ +
+ set<T>(String key, T value, {bool forceUpdate = true}) + → void + + + +
+
+ Add a key-value pair to this object. +
inherited
+ +
+ +
+ setACL<ParseACL>(ParseACL acl) + → void + + + +
+
+ Set the ParseACL governing this object. +
inherited
+ +
+ +
+ setAdd<T>(String key, T element) + → void + + + +
+
+ Add an element to the end of the array associated with a given key +
inherited
+ +
+ +
+ setAddAll(String key, List elements) + → void + + + +
+
+ Add multiple elements to the end of the array +associated with a given key +
inherited
+ +
+ +
+ setAddAllUnique(String key, List elements) + → void + + + +
+
+ Add multiple elements to the array associated with a given key, only +adding elements which are not already present in the array. The position +of the insert is not guaranteed +
inherited
+ +
+ +
+ setAddUnique(String key, dynamic element) + → void + + + +
+
+ Add an element to the array associated with a given key, only if +it is not already present in the array. The position of the insert is not +guaranteed +
inherited
+ +
+ +
+ setDecrement(String key, num amount) + → void + + + +
+
+ Decrement a num value associated with a given key by the given amount +
inherited
+ +
+ +
+ setIncrement(String key, num amount) + → void + + + +
+
+ Increment a num value associated with a given key by the given amount +
inherited
+ +
+ +
+ setRemove(String key, dynamic element) + → void + + + +
+
+ Remove every instance of an element from an array +associated with a given key +
inherited
+ +
+ +
+ setRemoveAll(String key, List elements) + → void + + + +
+
+ Removes all instances of the elements contained in a List from the +array associated with a given key +
inherited
+ +
+ +
+ toJson({bool full = false, bool forApiRQ = false, bool allowCustomObjectId = false}) + Map<String, dynamic> + + + +
+
+ Converts object to String in JSON format +
inherited
+ +
+ +
+ toPointer() + Map<String, dynamic> + + + +
+
+ +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+ unpin({String? key}) + Future<bool> + + + +
+
+ Remove item from value storage +
inherited
+ +
+ +
+ unset(String key, {bool offlineOnly = false}) + Future<ParseResponse> + + + +
+
+ Can be used set an objects variable to undefined rather than null +
inherited
+ +
+ +
+ update({dynamic context}) + Future<ParseResponse> + + + +
+
+ Send the updated object to the server. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+ operator [](String key) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ operator []=(String key, dynamic value) + → void + + + +
+
+ +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSession/ParseSession.html b/dart/flutter_parse_sdk/ParseSession/ParseSession.html new file mode 100644 index 000000000..0a392eeda --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSession/ParseSession.html @@ -0,0 +1,133 @@ + + + + + + + + ParseSession constructor - ParseSession - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseSession
+ +
+ +
+
+
+ +
+
+

ParseSession constructor +

+ +
+ + ParseSession(
  1. {bool? debug,
  2. +
  3. ParseClient? client}
  4. +
) +
+ + + + + +
+

Implementation

+
ParseSession({
+  bool? debug,
+  ParseClient? client,
+}) : super(
+        keyClassSession,
+        client: client,
+        debug: debug,
+      );
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSession/clone.html b/dart/flutter_parse_sdk/ParseSession/clone.html new file mode 100644 index 000000000..395fc8c54 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSession/clone.html @@ -0,0 +1,137 @@ + + + + + + + + clone method - ParseSession class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
clone
+ +
+ +
+
+
+ +
+
+

clone method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +ParseSession +clone(
  1. Map<String, dynamic> map
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+ParseSession clone(Map<String, dynamic> map) {
+  return fromJson(map);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSession/createdWith.html b/dart/flutter_parse_sdk/ParseSession/createdWith.html new file mode 100644 index 000000000..cb64282b4 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSession/createdWith.html @@ -0,0 +1,133 @@ + + + + + + + + createdWith property - ParseSession class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
createdWith
+ +
+ +
+
+
+ +
+
+

createdWith property +

+ + + +
+ +
+ + Map<String, dynamic> + createdWith + + +
+ + + + +
+

Implementation

+
Map<String, dynamic> get createdWith =>
+    super.get<Map<String, dynamic>>(keyVarCreatedWith)!;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSession/expiresAt.html b/dart/flutter_parse_sdk/ParseSession/expiresAt.html new file mode 100644 index 000000000..e860fbc29 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSession/expiresAt.html @@ -0,0 +1,132 @@ + + + + + + + + expiresAt property - ParseSession class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
expiresAt
+ +
+ +
+
+
+ +
+
+

expiresAt property +

+ + + +
+ +
+ + DateTime + expiresAt + + +
+ + + + +
+

Implementation

+
DateTime get expiresAt => super.get<DateTime>(keyVarExpiresAt)!;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSession/getCurrentSessionFromServer.html b/dart/flutter_parse_sdk/ParseSession/getCurrentSessionFromServer.html new file mode 100644 index 000000000..9db797e81 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSession/getCurrentSessionFromServer.html @@ -0,0 +1,140 @@ + + + + + + + + getCurrentSessionFromServer method - ParseSession class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getCurrentSessionFromServer
+ +
+ +
+
+
+ +
+
+

getCurrentSessionFromServer method +

+ +
+ + +Future<ParseResponse> +getCurrentSessionFromServer() + + + +
+ + + + +
+

Implementation

+
Future<ParseResponse> getCurrentSessionFromServer() async {
+  try {
+    const String path = '$keyEndPointSessions/me';
+    final Uri url = getSanitisedUri(_client, path);
+
+    final ParseNetworkResponse response = await _client.get(url.toString());
+
+    return handleResponse<ParseSession>(
+        this, response, ParseApiRQ.logout, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(e, ParseApiRQ.logout, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSession/installationId.html b/dart/flutter_parse_sdk/ParseSession/installationId.html new file mode 100644 index 000000000..64117facd --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSession/installationId.html @@ -0,0 +1,154 @@ + + + + + + + + installationId property - ParseSession class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
installationId
+ +
+ +
+
+
+ +
+
+

installationId property +

+ + + +
+ +
+ + String + installationId + + +
+ + + + +
+

Implementation

+
String get installationId => super.get<String>(keyVarInstallationId)!;
+
+ +
+ + + +
+ +
+ + void + installationId=(String installationId) + + +
+ + + + +
+

Implementation

+
set installationId(String installationId) =>
+    set<String>(keyVarInstallationId, installationId);
+
+ +
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSession/restricted.html b/dart/flutter_parse_sdk/ParseSession/restricted.html new file mode 100644 index 000000000..58402f7d1 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSession/restricted.html @@ -0,0 +1,132 @@ + + + + + + + + restricted property - ParseSession class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
restricted
+ +
+ +
+
+
+ +
+
+

restricted property +

+ + + +
+ +
+ + bool + restricted + + +
+ + + + +
+

Implementation

+
bool get restricted => super.get<bool>(keyVarRestricted)!;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSession/sessionToken.html b/dart/flutter_parse_sdk/ParseSession/sessionToken.html new file mode 100644 index 000000000..f41dc0ca2 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSession/sessionToken.html @@ -0,0 +1,132 @@ + + + + + + + + sessionToken property - ParseSession class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
sessionToken
+ +
+ +
+
+
+ +
+
+

sessionToken property +

+ + + +
+ +
+ + String + sessionToken + + +
+ + + + +
+

Implementation

+
String get sessionToken => super.get<String>(keyVarSessionToken)!;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSession/user.html b/dart/flutter_parse_sdk/ParseSession/user.html new file mode 100644 index 000000000..2bb72db66 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSession/user.html @@ -0,0 +1,132 @@ + + + + + + + + user property - ParseSession class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
user
+ +
+ +
+
+
+ +
+
+

user property +

+ + + +
+ +
+ + ParseObject + user + + +
+ + + + +
+

Implementation

+
ParseObject get user => super.get<ParseObject>(keyVarUser)!;
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSubClassHandler-class-sidebar.html b/dart/flutter_parse_sdk/ParseSubClassHandler-class-sidebar.html new file mode 100644 index 000000000..94561ca76 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSubClassHandler-class-sidebar.html @@ -0,0 +1,34 @@ +
    + +
  1. Constructors
  2. +
  3. ParseSubClassHandler
  4. + + + +
  5. + Properties +
  6. +
  7. hashCode
  8. +
  9. runtimeType
  10. + +
  11. Methods
  12. +
  13. createFile
  14. +
  15. createObject
  16. +
  17. createParseUser
  18. +
  19. noSuchMethod
  20. +
  21. registerFileSubClass
  22. +
  23. registerSubClass
  24. +
  25. registerUserSubClass
  26. +
  27. toString
  28. + +
  29. Operators
  30. +
  31. operator ==
  32. + + + + + +
  33. Static methods
  34. +
  35. defaultParseFileConstructor
  36. + +
diff --git a/dart/flutter_parse_sdk/ParseSubClassHandler-class.html b/dart/flutter_parse_sdk/ParseSubClassHandler-class.html new file mode 100644 index 000000000..e22570c41 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSubClassHandler-class.html @@ -0,0 +1,311 @@ + + + + + + + + ParseSubClassHandler class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseSubClassHandler
+ +
+ +
+
+
+ +
+
+

ParseSubClassHandler class + +

+ + + + + + +
+

Constructors

+ +
+
+ ParseSubClassHandler({Map<String, ParseObjectConstructor>? registeredSubClassMap, ParseUserConstructor? parseUserConstructor, ParseFileConstructor? parseFileConstructor}) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ createFile({String? name, String? url}) + ParseFileBase + + + +
+
+ + + +
+ +
+ createObject(String classname) + ParseObject + + + +
+
+ + + +
+ +
+ createParseUser(String? username, String? password, String? emailAddress, {String? sessionToken, bool? debug, ParseClient? client}) + ParseUser + + + +
+
+ + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ registerFileSubClass(ParseFileConstructor parseFileConstructor) + → void + + + +
+
+ + + +
+ +
+ registerSubClass(String className, ParseObjectConstructor objectConstructor) + → void + + + +
+
+ + + +
+ +
+ registerUserSubClass(ParseUserConstructor parseUserConstructor) + → void + + + +
+
+ + + +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + +
+

Static Methods

+
+
+ defaultParseFileConstructor({String? name, String? url}) + ParseFileBase + + + +
+
+ + + +
+ +
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSubClassHandler/ParseSubClassHandler.html b/dart/flutter_parse_sdk/ParseSubClassHandler/ParseSubClassHandler.html new file mode 100644 index 000000000..bb6d01508 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSubClassHandler/ParseSubClassHandler.html @@ -0,0 +1,136 @@ + + + + + + + + ParseSubClassHandler constructor - ParseSubClassHandler - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseSubClassHandler
+ +
+ +
+
+
+ +
+
+

ParseSubClassHandler constructor +

+ +
+ + ParseSubClassHandler(
  1. {Map<String, ParseObjectConstructor>? registeredSubClassMap,
  2. +
  3. ParseUserConstructor? parseUserConstructor,
  4. +
  5. ParseFileConstructor? parseFileConstructor}
  6. +
) +
+ + + + + +
+

Implementation

+
ParseSubClassHandler(
+    {Map<String, ParseObjectConstructor>? registeredSubClassMap,
+    ParseUserConstructor? parseUserConstructor,
+    ParseFileConstructor? parseFileConstructor}) {
+  _subClassMap = registeredSubClassMap ?? <String, ParseObjectConstructor>{};
+  _parseUserConstructor = parseUserConstructor;
+  if (parseFileConstructor != null) {
+    _parseFileConstructor = parseFileConstructor;
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSubClassHandler/createFile.html b/dart/flutter_parse_sdk/ParseSubClassHandler/createFile.html new file mode 100644 index 000000000..9b0f0f8cd --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSubClassHandler/createFile.html @@ -0,0 +1,131 @@ + + + + + + + + createFile method - ParseSubClassHandler class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
createFile
+ +
+ +
+
+
+ +
+
+

createFile method +

+ +
+ + +ParseFileBase +createFile(
  1. {String? name,
  2. +
  3. String? url}
  4. +
) + + + +
+ + + + +
+

Implementation

+
ParseFileBase createFile({String? name, String? url}) =>
+    _parseFileConstructor(name: name, url: url);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSubClassHandler/createObject.html b/dart/flutter_parse_sdk/ParseSubClassHandler/createObject.html new file mode 100644 index 000000000..8b470e734 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSubClassHandler/createObject.html @@ -0,0 +1,137 @@ + + + + + + + + createObject method - ParseSubClassHandler class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
createObject
+ +
+ +
+
+
+ +
+
+

createObject method +

+ +
+ + +ParseObject +createObject(
  1. String classname
  2. +
) + + + +
+ + + + +
+

Implementation

+
ParseObject createObject(String classname) {
+  if (classname == keyClassUser) {
+    return createParseUser(null, null, null);
+  }
+  if (_subClassMap.containsKey(classname)) {
+    return _subClassMap[classname]!();
+  }
+  return ParseObject(classname);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSubClassHandler/createParseUser.html b/dart/flutter_parse_sdk/ParseSubClassHandler/createParseUser.html new file mode 100644 index 000000000..597afaa09 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSubClassHandler/createParseUser.html @@ -0,0 +1,142 @@ + + + + + + + + createParseUser method - ParseSubClassHandler class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
createParseUser
+ +
+ +
+
+
+ +
+
+

createParseUser method +

+ +
+ + +ParseUser +createParseUser(
  1. String? username,
  2. +
  3. String? password,
  4. +
  5. String? emailAddress,
  6. +
  7. {String? sessionToken,
  8. +
  9. bool? debug,
  10. +
  11. ParseClient? client}
  12. +
) + + + +
+ + + + +
+

Implementation

+
ParseUser createParseUser(
+    String? username, String? password, String? emailAddress,
+    {String? sessionToken, bool? debug, ParseClient? client}) {
+  return _parseUserConstructor != null
+      ? _parseUserConstructor!(username, password, emailAddress,
+          sessionToken: sessionToken, debug: debug, client: client)
+      : ParseUser(username, password, emailAddress,
+          sessionToken: sessionToken, debug: debug, client: client);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSubClassHandler/defaultParseFileConstructor.html b/dart/flutter_parse_sdk/ParseSubClassHandler/defaultParseFileConstructor.html new file mode 100644 index 000000000..b26bc60aa --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSubClassHandler/defaultParseFileConstructor.html @@ -0,0 +1,137 @@ + + + + + + + + defaultParseFileConstructor method - ParseSubClassHandler class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
defaultParseFileConstructor
+ +
+ +
+
+
+ +
+
+

defaultParseFileConstructor static method +

+ +
+ + +ParseFileBase +defaultParseFileConstructor(
  1. {String? name,
  2. +
  3. String? url}
  4. +
) + + + +
+ + + + +
+

Implementation

+
static ParseFileBase defaultParseFileConstructor(
+    {String? name, String? url}) {
+  if (parseIsWeb) {
+    return ParseWebFile(null, name: name!, url: url);
+  } else {
+    return ParseFile(null, name: name, url: url);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSubClassHandler/registerFileSubClass.html b/dart/flutter_parse_sdk/ParseSubClassHandler/registerFileSubClass.html new file mode 100644 index 000000000..a6b778d91 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSubClassHandler/registerFileSubClass.html @@ -0,0 +1,131 @@ + + + + + + + + registerFileSubClass method - ParseSubClassHandler class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
registerFileSubClass
+ +
+ +
+
+
+ +
+
+

registerFileSubClass method +

+ +
+ + +void +registerFileSubClass(
  1. ParseFileConstructor parseFileConstructor
  2. +
) + + + +
+ + + + +
+

Implementation

+
void registerFileSubClass(ParseFileConstructor parseFileConstructor) {
+  _parseFileConstructor = parseFileConstructor;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSubClassHandler/registerSubClass.html b/dart/flutter_parse_sdk/ParseSubClassHandler/registerSubClass.html new file mode 100644 index 000000000..fb84b493f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSubClassHandler/registerSubClass.html @@ -0,0 +1,138 @@ + + + + + + + + registerSubClass method - ParseSubClassHandler class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
registerSubClass
+ +
+ +
+
+
+ +
+
+

registerSubClass method +

+ +
+ + +void +registerSubClass(
  1. String className,
  2. +
  3. ParseObjectConstructor objectConstructor
  4. +
) + + + +
+ + + + +
+

Implementation

+
void registerSubClass(
+    String className, ParseObjectConstructor objectConstructor) {
+  if (className != keyClassUser &&
+      className != keyClassInstallation &&
+      className != keyClassSession &&
+      className != keyFileClassname) {
+    _subClassMap[className] = objectConstructor;
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseSubClassHandler/registerUserSubClass.html b/dart/flutter_parse_sdk/ParseSubClassHandler/registerUserSubClass.html new file mode 100644 index 000000000..9af801bb8 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseSubClassHandler/registerUserSubClass.html @@ -0,0 +1,131 @@ + + + + + + + + registerUserSubClass method - ParseSubClassHandler class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
registerUserSubClass
+ +
+ +
+
+
+ +
+
+

registerUserSubClass method +

+ +
+ + +void +registerUserSubClass(
  1. ParseUserConstructor parseUserConstructor
  2. +
) + + + +
+ + + + +
+

Implementation

+
void registerUserSubClass(ParseUserConstructor parseUserConstructor) {
+  _parseUserConstructor = parseUserConstructor;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser-class-sidebar.html b/dart/flutter_parse_sdk/ParseUser-class-sidebar.html new file mode 100644 index 000000000..92166ddc2 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser-class-sidebar.html @@ -0,0 +1,103 @@ +
    + +
  1. Constructors
  2. +
  3. ParseUser
  4. +
  5. clone
  6. +
  7. forQuery
  8. + + + +
  9. + Properties +
  10. +
  11. acl
  12. +
  13. authData
  14. +
  15. createdAt
  16. +
  17. emailAddress
  18. +
  19. emailVerified
  20. +
  21. hashCode
  22. +
  23. objectId
  24. +
  25. parseClassName
  26. +
  27. password
  28. +
  29. runtimeType
  30. +
  31. sessionToken
  32. +
  33. updatedAt
  34. +
  35. username
  36. + +
  37. Methods
  38. +
  39. addRelation
  40. +
  41. clearUnsavedChanges
  42. +
  43. clone
  44. +
  45. containsKey
  46. +
  47. containsValue
  48. +
  49. copy
  50. +
  51. create
  52. +
  53. delete
  54. +
  55. deleteEventually
  56. +
  57. deleteLocalUserData
  58. +
  59. destroy
  60. +
  61. distinct
  62. +
  63. fetch
  64. +
  65. forgetLocalSession
  66. +
  67. fromJson
  68. +
  69. fromJsonForManualObject
  70. +
  71. fromPin
  72. +
  73. get
  74. +
  75. getACL
  76. +
  77. getAll
  78. +
  79. getObject
  80. +
  81. getRelation
  82. +
  83. getUpdatedUser
  84. +
  85. isDirty
  86. +
  87. login
  88. +
  89. loginAnonymous
  90. +
  91. logout
  92. +
  93. noSuchMethod
  94. +
  95. pin
  96. +
  97. query
  98. +
  99. removeRelation
  100. +
  101. requestPasswordReset
  102. +
  103. save
  104. +
  105. saveEventually
  106. +
  107. saveInStorage
  108. +
  109. set
  110. +
  111. setACL
  112. +
  113. setAdd
  114. +
  115. setAddAll
  116. +
  117. setAddAllUnique
  118. +
  119. setAddUnique
  120. +
  121. setDecrement
  122. +
  123. setIncrement
  124. +
  125. setRemove
  126. +
  127. setRemoveAll
  128. +
  129. signUp
  130. +
  131. toJson
  132. +
  133. toPointer
  134. +
  135. toString
  136. +
  137. unpin
  138. +
  139. unset
  140. +
  141. update
  142. +
  143. verificationEmailRequest
  144. + +
  145. Operators
  146. +
  147. operator ==
  148. +
  149. operator []
  150. +
  151. operator []=
  152. + + + + + +
  153. Static methods
  154. +
  155. all
  156. +
  157. createUser
  158. +
  159. currentUser
  160. +
  161. getCurrentUserFromServer
  162. +
  163. loginWith
  164. + +
  165. Constants
  166. +
  167. keyEmailAddress
  168. +
  169. keyEmailVerified
  170. +
  171. keyUsername
  172. +
  173. path
  174. +
diff --git a/dart/flutter_parse_sdk/ParseUser-class.html b/dart/flutter_parse_sdk/ParseUser-class.html new file mode 100644 index 000000000..a08c0ecce --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser-class.html @@ -0,0 +1,1203 @@ + + + + + + + + ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseUser
+ +
+ +
+
+
+ +
+
+

ParseUser class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + +
Implemented types
+
+ +
+ + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseUser(String? username, String? password, String? emailAddress, {String? sessionToken, bool? debug, ParseClient? client}) +
+
+ Creates an instance of ParseUser +
+
+ ParseUser.clone(Map<String, dynamic> map) +
+
+ +
+
+ ParseUser.forQuery() +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ acl + Map<String, dynamic> + +
+
+ +
getter/setter pair
+ +
+ +
+ authData + Map<String, dynamic>? + +
+
+ +
getter/setter pair
+ +
+ +
+ createdAt + DateTime? + +
+
+ Returns DateTime createdAt +
no setterinherited
+ +
+ +
+ emailAddress + String? + +
+
+ +
getter/setter pair
+ +
+ +
+ emailVerified + bool? + +
+
+ +
getter/setter pair
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ objectId + String? + +
+
+ Returns String objectId +
getter/setter pairinherited
+ +
+ +
+ parseClassName + String + +
+
+ refers to the Table Name in your Parse Server +
getter/setter pairinherited
+ +
+ +
+ password + String? + +
+
+ +
getter/setter pair
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ sessionToken + String? + +
+
+ +
getter/setter pair
+ +
+ +
+ updatedAt + DateTime? + +
+
+ Returns DateTime updatedAt +
no setterinherited
+ +
+ +
+ username + String? + +
+
+ +
getter/setter pair
+ +
+ +
+
+ + +
+

Methods

+
+
+ addRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Add multiple objets to a relation associated with a given key +
inherited
+ +
+ +
+ clearUnsavedChanges() + → void + + + +
+
+ +
inherited
+ +
+ +
+ clone(Map<String, dynamic> map) + → dynamic + + + +
+
+ +
override
+ +
+ +
+ containsKey(String key) + bool + + + +
+
+ +
inherited
+ +
+ +
+ containsValue(Object value) + bool + + + +
+
+ +
inherited
+ +
+ +
+ copy() + → dynamic + + + +
+
+ Creates a copy of this class +
inherited
+ +
+ +
+ create({bool allowCustomObjectId = false, dynamic context}) + Future<ParseResponse> + + + +
+
+ Creates a new object and saves it online +
inherited
+ +
+ +
+ delete<T extends ParseObject>({String? id, String? path}) + Future<ParseResponse> + + + +
+
+ Deletes the current object locally and online +
inherited
+ +
+ +
+ deleteEventually() + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ deleteLocalUserData() + Future<void> + + + +
+
+ Delete the local user data. + + +
+ +
+ destroy() + Future<ParseResponse?> + + + +
+
+ Removes a user from Parse Server locally and online + + +
+ +
+ distinct<T extends ParseObject>(String query) + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ fetch({List<String>? include}) + Future<ParseObject> + + + +
+
+ Fetches this object with the data from the server. +
inherited
+ +
+ +
+ forgetLocalSession() + → void + + + +
+
+ + + +
+ +
+ fromJson(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromJsonForManualObject(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromPin(String objectId) + Future + + + +
+
+ Get item from value storage +
inherited
+ +
+ +
+ get<T>(String key, {T? defaultValue}) + → T? + + + +
+
+ Get a value of type T associated with a given key +
inherited
+ +
+ +
+ getACL() + ParseACL + + + +
+
+ Access the ParseACL governing this object. +
inherited
+ +
+ +
+ getAll() + Future<ParseResponse> + + + +
+
+ Gets all objects from this table - Limited response at the moment +
inherited
+ +
+ +
+ getObject(String objectId, {List<String>? include}) + Future<ParseResponse> + + + +
+
+ Gets an object from the server using it's objectId +
inherited
+ +
+ +
+ getRelation<T extends ParseObject>(String key) + ParseRelation<T> + + + +
+
+ Get the instance of ParseRelation class associated with the given key +
inherited
+ +
+ +
+ getUpdatedUser({bool? debug, ParseClient? client}) + Future<ParseResponse> + + + +
+
+ Get the updated version of the user from the server + + +
+ +
+ isDirty({String? key}) + bool + + + +
+
+ +
inherited
+ +
+ +
+ login({bool doNotSendInstallationID = false}) + Future<ParseResponse> + + + +
+
+ Logs a user in via Parse + + +
+ +
+ loginAnonymous({bool doNotSendInstallationID = false}) + Future<ParseResponse> + + + +
+
+ Logs in a user anonymously +Set doNotSendInstallationID to 'true' in order to prevent the SDK from sending the installationID to the Server. +This option is especially useful if you are running you application on web and you don't have permission to add 'X-Parse-Installation-Id' as an allowed header on your parse-server. + + +
+ +
+ logout({bool deleteLocalUserData = true}) + Future<ParseResponse> + + + +
+
+ Sends a request to delete the sessions token from the +server. Will also delete the local user data unless +deleteLocalUserData is false. + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ pin() + Future<bool> + + + +
+
+ Saves item to value storage +
inherited
+ +
+ +
+ query<T extends ParseObject>(String query, {ProgressCallback? progressCallback}) + Future<ParseResponse> + + + +
+
+ Can be used to create custom queries +
inherited
+ +
+ +
+ removeRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Remove multiple objets from a relation associated with a given key +
inherited
+ +
+ +
+ requestPasswordReset() + Future<ParseResponse> + + + +
+
+ Sends a password reset email to the users email address + + +
+ +
+ save({dynamic context}) + Future<ParseResponse> + + + +
+
+ Saves the current user +
override
+ +
+ +
+ saveEventually() + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ saveInStorage(String key) + Future<void> + + + +
+
+ Saves in storage +
inherited
+ +
+ +
+ set<T>(String key, T value, {bool forceUpdate = true}) + → void + + + +
+
+ Add a key-value pair to this object. +
inherited
+ +
+ +
+ setACL<ParseACL>(ParseACL acl) + → void + + + +
+
+ Set the ParseACL governing this object. +
inherited
+ +
+ +
+ setAdd<T>(String key, T element) + → void + + + +
+
+ Add an element to the end of the array associated with a given key +
inherited
+ +
+ +
+ setAddAll(String key, List elements) + → void + + + +
+
+ Add multiple elements to the end of the array +associated with a given key +
inherited
+ +
+ +
+ setAddAllUnique(String key, List elements) + → void + + + +
+
+ Add multiple elements to the array associated with a given key, only +adding elements which are not already present in the array. The position +of the insert is not guaranteed +
inherited
+ +
+ +
+ setAddUnique(String key, dynamic element) + → void + + + +
+
+ Add an element to the array associated with a given key, only if +it is not already present in the array. The position of the insert is not +guaranteed +
inherited
+ +
+ +
+ setDecrement(String key, num amount) + → void + + + +
+
+ Decrement a num value associated with a given key by the given amount +
inherited
+ +
+ +
+ setIncrement(String key, num amount) + → void + + + +
+
+ Increment a num value associated with a given key by the given amount +
inherited
+ +
+ +
+ setRemove(String key, dynamic element) + → void + + + +
+
+ Remove every instance of an element from an array +associated with a given key +
inherited
+ +
+ +
+ setRemoveAll(String key, List elements) + → void + + + +
+
+ Removes all instances of the elements contained in a List from the +array associated with a given key +
inherited
+ +
+ +
+ signUp({bool allowWithoutEmail = false, bool doNotSendInstallationID = false}) + Future<ParseResponse> + + + +
+
+ Registers a user on Parse Server + + +
+ +
+ toJson({bool full = false, bool forApiRQ = false, bool allowCustomObjectId = false}) + Map<String, dynamic> + + + +
+
+ Converts object to String in JSON format +
inherited
+ +
+ +
+ toPointer() + Map<String, dynamic> + + + +
+
+ +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+ unpin({String? key}) + Future<bool> + + + +
+
+ Remove item from value storage +
inherited
+ +
+ +
+ unset(String key, {bool offlineOnly = false}) + Future<ParseResponse> + + + +
+
+ Can be used set an objects variable to undefined rather than null +
inherited
+ +
+ +
+ update({dynamic context}) + Future<ParseResponse> + + + +
+
+ Send the updated object to the server. +
override
+ +
+ +
+ verificationEmailRequest() + Future<ParseResponse> + + + +
+
+ Sends a verification email to the users email address + + +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+ operator [](String key) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ operator []=(String key, dynamic value) + → void + + + +
+
+ +
inherited
+ +
+ +
+
+ + +
+

Static Methods

+
+
+ all({bool? debug, ParseClient? client}) + Future<ParseResponse> + + + +
+
+ Gets a list of all users (limited return) + + +
+ +
+ createUser([String? username, String? password, String? emailAddress]) + ParseUser + + + +
+
+ + + +
+ +
+ currentUser({ParseCloneable? customUserObject}) + Future + + + +
+
+ Gets the current user from storage + + +
+ +
+ getCurrentUserFromServer(String token, {bool? debug, ParseClient? client}) + Future<ParseResponse?> + + + +
+
+ Gets the current user from the server + + +
+ +
+ loginWith(String provider, Object authData, {bool doNotSendInstallationID = false, String? username, String? password, String? email}) + Future<ParseResponse> + + + +
+
+ Logs in a user using a service +Set doNotSendInstallationID to 'true' in order to prevent the SDK from sending the installationID to the Server. +This option is especially useful if you are running you application on web and you don't have permission to add 'X-Parse-Installation-Id' as an allowed header on your parse-server. + + +
+ +
+
+ + +
+

Constants

+ +
+
+ keyEmailAddress + → const String + + +
+
+ + + +
+ +
+ keyEmailVerified + → const String + + +
+
+ + + +
+ +
+ keyUsername + → const String + + +
+
+ + + +
+ +
+ path + → const String + + +
+
+ + + +
+ +
+
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/ParseUser.clone.html b/dart/flutter_parse_sdk/ParseUser/ParseUser.clone.html new file mode 100644 index 000000000..5a9100ced --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/ParseUser.clone.html @@ -0,0 +1,126 @@ + + + + + + + + ParseUser.clone constructor - ParseUser - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseUser.clone
+ +
+ +
+
+
+ +
+
+

ParseUser.clone constructor +

+ +
+ + ParseUser.clone(
  1. Map<String, dynamic> map
  2. +
) +
+ + + + + +
+

Implementation

+
ParseUser.clone(Map<String, dynamic> map)
+    : this(map[keyVarUsername], null, map[keyVarEmail]);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/ParseUser.forQuery.html b/dart/flutter_parse_sdk/ParseUser/ParseUser.forQuery.html new file mode 100644 index 000000000..3529ba390 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/ParseUser.forQuery.html @@ -0,0 +1,124 @@ + + + + + + + + ParseUser.forQuery constructor - ParseUser - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseUser.forQuery
+ +
+ +
+
+
+ +
+
+

ParseUser.forQuery constructor +

+ +
+ + ParseUser.forQuery() +
+ + + + + +
+

Implementation

+
ParseUser.forQuery() : super(keyClassUser);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/ParseUser.html b/dart/flutter_parse_sdk/ParseUser/ParseUser.html new file mode 100644 index 000000000..b2355ba3e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/ParseUser.html @@ -0,0 +1,156 @@ + + + + + + + + ParseUser constructor - ParseUser - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseUser
+ +
+ +
+
+
+ +
+
+

ParseUser constructor +

+ +
+ + ParseUser(
  1. String? username,
  2. +
  3. String? password,
  4. +
  5. String? emailAddress,
  6. +
  7. {String? sessionToken,
  8. +
  9. bool? debug,
  10. +
  11. ParseClient? client}
  12. +
) +
+ + +
+

Creates an instance of ParseUser

+

Users can set whether debug should be set on this class with a bool, +they can also create their own custom version of ParseHttpClient

+

Creates a new user locally

+

Requires String username, String password. String email address +is required as well to create a full new user object on ParseServer. Only +username and password is required to login

+
+ + + +
+

Implementation

+
ParseUser(
+  String? username,
+  String? password,
+  String? emailAddress, {
+  String? sessionToken,
+  bool? debug,
+  ParseClient? client,
+}) : super(
+        keyClassUser,
+        client: client,
+        autoSendSessionId: true,
+        debug: debug,
+      ) {
+  if (username != null) this.username = username;
+  if (emailAddress != null) this.emailAddress = emailAddress;
+  if (password != null) this.password = password;
+  if (sessionToken != null) this.sessionToken = sessionToken;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/acl.html b/dart/flutter_parse_sdk/ParseUser/acl.html new file mode 100644 index 000000000..2947427e2 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/acl.html @@ -0,0 +1,155 @@ + + + + + + + + acl property - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
acl
+ +
+ +
+
+
+ +
+
+

acl property +

+ + + +
+ +
+ + Map<String, dynamic> + acl + + +
+ + + + +
+

Implementation

+
Map<String, dynamic> get acl => super
+    .get<Map<String, dynamic>>(keyVarAcl, defaultValue: <String, dynamic>{})!;
+
+ +
+ + + +
+ +
+ + void + acl=(Map<String, dynamic> acl) + + +
+ + + + +
+

Implementation

+
set acl(Map<String, dynamic> acl) =>
+    set<Map<String, dynamic>>(keyVarAcl, acl);
+
+ +
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/all.html b/dart/flutter_parse_sdk/ParseUser/all.html new file mode 100644 index 000000000..734963943 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/all.html @@ -0,0 +1,152 @@ + + + + + + + + all method - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
all
+ +
+ +
+
+
+ +
+
+

all static method +

+ +
+ + +Future<ParseResponse> +all(
  1. {bool? debug,
  2. +
  3. ParseClient? client}
  4. +
) + + + +
+ +
+

Gets a list of all users (limited return)

+
+ + + +
+

Implementation

+
static Future<ParseResponse> all({bool? debug, ParseClient? client}) async {
+  final ParseUser emptyUser = _getEmptyUser();
+
+  final bool debugLocal = isDebugEnabled(objectLevelDebug: debug);
+  final ParseClient clientLocal = client ??
+      ParseCoreData().clientCreator(
+          sendSessionId: true,
+          securityContext: ParseCoreData().securityContext);
+
+  try {
+    final Uri url = getSanitisedUri(clientLocal, path);
+    final ParseNetworkResponse response =
+        await clientLocal.get(url.toString());
+    final ParseResponse parseResponse = handleResponse<ParseUser>(
+        emptyUser, response, ParseApiRQ.getAll, debugLocal, keyClassUser);
+    return parseResponse;
+  } on Exception catch (e) {
+    return handleException(e, ParseApiRQ.getAll, debugLocal, keyClassUser);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/authData.html b/dart/flutter_parse_sdk/ParseUser/authData.html new file mode 100644 index 000000000..707c713ae --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/authData.html @@ -0,0 +1,155 @@ + + + + + + + + authData property - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
authData
+ +
+ +
+
+
+ +
+
+

authData property +

+ + + +
+ +
+ + Map<String, dynamic>? + authData + + +
+ + + + +
+

Implementation

+
Map<String, dynamic>? get authData =>
+    super.get<Map<String, dynamic>>(keyVarAuthData);
+
+ +
+ + + +
+ +
+ + void + authData=(Map<String, dynamic>? authData) + + +
+ + + + +
+

Implementation

+
set authData(Map<String, dynamic>? authData) =>
+    set<Map<String, dynamic>?>(keyVarAuthData, authData);
+
+ +
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/clone.html b/dart/flutter_parse_sdk/ParseUser/clone.html new file mode 100644 index 000000000..74a3991f9 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/clone.html @@ -0,0 +1,136 @@ + + + + + + + + clone method - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
clone
+ +
+ +
+
+
+ +
+
+

clone method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +dynamic +clone(
  1. Map<String, dynamic> map
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+dynamic clone(Map<String, dynamic> map) =>
+    ParseUser.clone(map)..fromJson(map);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/createUser.html b/dart/flutter_parse_sdk/ParseUser/createUser.html new file mode 100644 index 000000000..f9056348f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/createUser.html @@ -0,0 +1,135 @@ + + + + + + + + createUser method - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
createUser
+ +
+ +
+
+
+ +
+
+

createUser static method +

+ +
+ + +ParseUser +createUser(
  1. [String? username,
  2. +
  3. String? password,
  4. +
  5. String? emailAddress]
  6. +
) + + + +
+ + + + +
+

Implementation

+
static ParseUser createUser(
+    [String? username, String? password, String? emailAddress]) {
+  return ParseCoreData.instance
+      .createParseUser(username, password, emailAddress);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/currentUser.html b/dart/flutter_parse_sdk/ParseUser/currentUser.html new file mode 100644 index 000000000..7aad91e94 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/currentUser.html @@ -0,0 +1,141 @@ + + + + + + + + currentUser method - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
currentUser
+ +
+ +
+
+
+ +
+
+

currentUser static method +

+ +
+ + +Future +currentUser(
  1. {ParseCloneable? customUserObject}
  2. +
) + + + +
+ +
+

Gets the current user from storage

+

Current user is stored locally, but in case of a server update bool +fromServer can be called and an updated version of the User object will be +returned

+
+ + + +
+

Implementation

+
static Future<dynamic> currentUser({ParseCloneable? customUserObject}) async {
+  if (customUserObject != null) {
+    return await _getUserFromLocalStore(cloneable: customUserObject);
+  } else {
+    return await _getUserFromLocalStore();
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/deleteLocalUserData.html b/dart/flutter_parse_sdk/ParseUser/deleteLocalUserData.html new file mode 100644 index 000000000..1199179f6 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/deleteLocalUserData.html @@ -0,0 +1,134 @@ + + + + + + + + deleteLocalUserData method - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
deleteLocalUserData
+ +
+ +
+
+
+ +
+
+

deleteLocalUserData method +

+ +
+ + +Future<void> +deleteLocalUserData() + + + +
+ +
+

Delete the local user data.

+
+ + + +
+

Implementation

+
Future<void> deleteLocalUserData() async {
+  await unpin(key: keyParseStoreUser);
+  _setObjectData(<String, dynamic>{});
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/destroy.html b/dart/flutter_parse_sdk/ParseUser/destroy.html new file mode 100644 index 000000000..8dc8e9870 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/destroy.html @@ -0,0 +1,145 @@ + + + + + + + + destroy method - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
destroy
+ +
+ +
+
+
+ +
+
+

destroy method +

+ +
+ + +Future<ParseResponse?> +destroy() + + + +
+ +
+

Removes a user from Parse Server locally and online

+
+ + + +
+

Implementation

+
Future<ParseResponse?> destroy() async {
+  if (objectId != null) {
+    try {
+      final Uri url = getSanitisedUri(_client, '$_path/$objectId');
+      final ParseNetworkResponse response =
+          await _client.delete(url.toString());
+      return await _handleResponse(
+          this, response, ParseApiRQ.destroy, _debug, parseClassName);
+    } on Exception catch (e) {
+      return handleException(e, ParseApiRQ.destroy, _debug, parseClassName);
+    }
+  }
+
+  return null;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/emailAddress.html b/dart/flutter_parse_sdk/ParseUser/emailAddress.html new file mode 100644 index 000000000..944d727d2 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/emailAddress.html @@ -0,0 +1,154 @@ + + + + + + + + emailAddress property - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
emailAddress
+ +
+ +
+
+
+ +
+
+

emailAddress property +

+ + + +
+ +
+ + String? + emailAddress + + +
+ + + + +
+

Implementation

+
String? get emailAddress => super.get<String>(keyVarEmail);
+
+ +
+ + + +
+ +
+ + void + emailAddress=(String? emailAddress) + + +
+ + + + +
+

Implementation

+
set emailAddress(String? emailAddress) =>
+    set<String?>(keyVarEmail, emailAddress);
+
+ +
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/emailVerified.html b/dart/flutter_parse_sdk/ParseUser/emailVerified.html new file mode 100644 index 000000000..0e6d24e97 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/emailVerified.html @@ -0,0 +1,154 @@ + + + + + + + + emailVerified property - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
emailVerified
+ +
+ +
+
+
+ +
+
+

emailVerified property +

+ + + +
+ +
+ + bool? + emailVerified + + +
+ + + + +
+

Implementation

+
bool? get emailVerified => super.get<bool>(keyEmailVerified);
+
+ +
+ + + +
+ +
+ + void + emailVerified=(bool? emailVerified) + + +
+ + + + +
+

Implementation

+
set emailVerified(bool? emailVerified) =>
+    set<bool?>(keyEmailVerified, emailVerified);
+
+ +
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/forgetLocalSession.html b/dart/flutter_parse_sdk/ParseUser/forgetLocalSession.html new file mode 100644 index 000000000..52f33304d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/forgetLocalSession.html @@ -0,0 +1,130 @@ + + + + + + + + forgetLocalSession method - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
forgetLocalSession
+ +
+ +
+
+
+ +
+
+

forgetLocalSession method +

+ +
+ + +void +forgetLocalSession() + + + +
+ + + + +
+

Implementation

+
void forgetLocalSession() {
+  ParseCoreData().sessionId = null;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/getCurrentUserFromServer.html b/dart/flutter_parse_sdk/ParseUser/getCurrentUserFromServer.html new file mode 100644 index 000000000..a0e9d0e88 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/getCurrentUserFromServer.html @@ -0,0 +1,143 @@ + + + + + + + + getCurrentUserFromServer method - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getCurrentUserFromServer
+ +
+ +
+
+
+ +
+
+

getCurrentUserFromServer static method +

+ +
+ + +Future<ParseResponse?> +getCurrentUserFromServer(
  1. String token,
  2. +
  3. {bool? debug,
  4. +
  5. ParseClient? client}
  6. +
) + + + +
+ +
+

Gets the current user from the server

+

Current user is stored locally, but in case of a server update bool +fromServer can be called and an updated version of the User object will be +returned.

+

NOTE: If using custom ParseUserObject create instance and user getUpdatedUser

+
+ + + +
+

Implementation

+
static Future<ParseResponse?> getCurrentUserFromServer(String token,
+    {bool? debug, ParseClient? client}) async {
+  final ParseUser user = _getEmptyUser();
+  user.sessionToken = token;
+  return user.getUpdatedUser(debug: debug, client: client);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/getUpdatedUser.html b/dart/flutter_parse_sdk/ParseUser/getUpdatedUser.html new file mode 100644 index 000000000..091c36106 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/getUpdatedUser.html @@ -0,0 +1,166 @@ + + + + + + + + getUpdatedUser method - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getUpdatedUser
+ +
+ +
+
+
+ +
+
+

getUpdatedUser method +

+ +
+ + +Future<ParseResponse> +getUpdatedUser(
  1. {bool? debug,
  2. +
  3. ParseClient? client}
  4. +
) + + + +
+ +
+

Get the updated version of the user from the server

+

Uses token to get the latest version of the user. Prefer this to getCurrentUserFromServer +if using custom ParseUser object

+
+ + + +
+

Implementation

+
Future<ParseResponse> getUpdatedUser(
+    {bool? debug, ParseClient? client}) async {
+  final bool debugLocal = isDebugEnabled(objectLevelDebug: debug);
+  final ParseClient clientLocal = client ??
+      ParseCoreData().clientCreator(
+          sendSessionId: true,
+          securityContext: ParseCoreData().securityContext);
+
+  // We can't get the current user and session without a sessionId
+  if ((ParseCoreData().sessionId == null) && (sessionToken == null)) {
+    ///return null;
+    throw 'can not get the current user and session without a sessionId';
+  }
+
+  final Map<String, String> headers = <String, String>{};
+  if (sessionToken != null) {
+    headers[keyHeaderSessionToken] = sessionToken!;
+  }
+
+  try {
+    final Uri url = getSanitisedUri(clientLocal, keyEndPointUserName);
+    final ParseNetworkResponse response = await clientLocal.get(
+      url.toString(),
+      options: ParseNetworkOptions(headers: headers),
+    );
+    return await _handleResponse(
+        this, response, ParseApiRQ.currentUser, debugLocal, parseClassName);
+  } on Exception catch (e) {
+    return handleException(
+        e, ParseApiRQ.currentUser, debugLocal, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/keyEmailAddress-constant.html b/dart/flutter_parse_sdk/ParseUser/keyEmailAddress-constant.html new file mode 100644 index 000000000..99b688f45 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/keyEmailAddress-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyEmailAddress constant - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyEmailAddress
+ +
+ +
+
+
+ +
+
+

keyEmailAddress constant +

+ +
+ + String + const keyEmailAddress + + +
+ + + +
+

Implementation

+
static const String keyEmailAddress = 'email';
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/keyEmailVerified-constant.html b/dart/flutter_parse_sdk/ParseUser/keyEmailVerified-constant.html new file mode 100644 index 000000000..548cb97cc --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/keyEmailVerified-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyEmailVerified constant - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyEmailVerified
+ +
+ +
+
+
+ +
+
+

keyEmailVerified constant +

+ +
+ + String + const keyEmailVerified + + +
+ + + +
+

Implementation

+
static const String keyEmailVerified = 'emailVerified';
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/keyUsername-constant.html b/dart/flutter_parse_sdk/ParseUser/keyUsername-constant.html new file mode 100644 index 000000000..795b4dabc --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/keyUsername-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyUsername constant - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyUsername
+ +
+ +
+
+
+ +
+
+

keyUsername constant +

+ +
+ + String + const keyUsername + + +
+ + + +
+

Implementation

+
static const String keyUsername = 'username';
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/login.html b/dart/flutter_parse_sdk/ParseUser/login.html new file mode 100644 index 000000000..2b29994ad --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/login.html @@ -0,0 +1,162 @@ + + + + + + + + login method - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
login
+ +
+ +
+
+
+ +
+
+

login method +

+ +
+ + +Future<ParseResponse> +login(
  1. {bool doNotSendInstallationID = false}
  2. +
) + + + +
+ +
+

Logs a user in via Parse

+

Once a user is created using Parse.create and a username and password is +provided, call this method to login. +Set doNotSendInstallationID to 'true' in order to prevent the SDK from sending the installationID to the Server. +This option is especially useful if you are running you application on web and you don't have permission to set 'X-Parse-Installation-Id' as an allowed header on your parse-server.

+
+ + + +
+

Implementation

+
Future<ParseResponse> login({bool doNotSendInstallationID = false}) async {
+  forgetLocalSession();
+
+  try {
+    final Map<String, dynamic> queryParams = <String, String>{
+      keyVarUsername: username!,
+      keyVarPassword: password!
+    };
+    final String? installationId = await _getInstallationId();
+    final Uri url = getSanitisedUri(_client, keyEndPointLogin);
+    _saveChanges();
+    final ParseNetworkResponse response = await _client.post(
+      url.toString(),
+      data: jsonEncode(queryParams),
+      options: ParseNetworkOptions(headers: <String, String>{
+        keyHeaderRevocableSession: '1',
+        if (installationId != null && !doNotSendInstallationID)
+          keyHeaderInstallationId: installationId,
+      }),
+    );
+
+    return await _handleResponse(
+        this, response, ParseApiRQ.login, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(e, ParseApiRQ.login, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/loginAnonymous.html b/dart/flutter_parse_sdk/ParseUser/loginAnonymous.html new file mode 100644 index 000000000..172fc458e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/loginAnonymous.html @@ -0,0 +1,162 @@ + + + + + + + + loginAnonymous method - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
loginAnonymous
+ +
+ +
+
+
+ +
+
+

loginAnonymous method +

+ +
+ + +Future<ParseResponse> +loginAnonymous(
  1. {bool doNotSendInstallationID = false}
  2. +
) + + + +
+ +
+

Logs in a user anonymously +Set doNotSendInstallationID to 'true' in order to prevent the SDK from sending the installationID to the Server. +This option is especially useful if you are running you application on web and you don't have permission to add 'X-Parse-Installation-Id' as an allowed header on your parse-server.

+
+ + + +
+

Implementation

+
Future<ParseResponse> loginAnonymous(
+    {bool doNotSendInstallationID = false}) async {
+  forgetLocalSession();
+  try {
+    final Uri url = getSanitisedUri(_client, keyEndPointUsers);
+    const Uuid uuid = Uuid();
+    final String? installationId = await _getInstallationId();
+
+    final ParseNetworkResponse response = await _client.post(
+      url.toString(),
+      options: ParseNetworkOptions(headers: <String, String>{
+        keyHeaderRevocableSession: '1',
+        if (installationId != null && !doNotSendInstallationID)
+          keyHeaderInstallationId: installationId,
+      }),
+      data: jsonEncode(<String, dynamic>{
+        'authData': <String, dynamic>{
+          'anonymous': <String, dynamic>{'id': uuid.v4()}
+        }
+      }),
+    );
+
+    return await _handleResponse(
+        this, response, ParseApiRQ.loginAnonymous, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(
+        e, ParseApiRQ.loginAnonymous, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/loginWith.html b/dart/flutter_parse_sdk/ParseUser/loginWith.html new file mode 100644 index 000000000..91c952f32 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/loginWith.html @@ -0,0 +1,148 @@ + + + + + + + + loginWith method - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
loginWith
+ +
+ +
+
+
+ +
+
+

loginWith static method +

+ +
+ + +Future<ParseResponse> +loginWith(
  1. String provider,
  2. +
  3. Object authData,
  4. +
  5. {bool doNotSendInstallationID = false,
  6. +
  7. String? username,
  8. +
  9. String? password,
  10. +
  11. String? email}
  12. +
) + + + +
+ +
+

Logs in a user using a service +Set doNotSendInstallationID to 'true' in order to prevent the SDK from sending the installationID to the Server. +This option is especially useful if you are running you application on web and you don't have permission to add 'X-Parse-Installation-Id' as an allowed header on your parse-server.

+
+ + + +
+

Implementation

+
static Future<ParseResponse> loginWith(String provider, Object authData,
+    {bool doNotSendInstallationID = false,
+    String? username,
+    String? password,
+    String? email}) async {
+  final ParseUser user = ParseUser.createUser(username, password, email);
+  final ParseResponse response = await user._loginWith(provider, authData,
+      doNotSendInstallationID: doNotSendInstallationID);
+  return response;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/logout.html b/dart/flutter_parse_sdk/ParseUser/logout.html new file mode 100644 index 000000000..8355cc500 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/logout.html @@ -0,0 +1,165 @@ + + + + + + + + logout method - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
logout
+ +
+ +
+
+
+ +
+
+

logout method +

+ +
+ + +Future<ParseResponse> +logout(
  1. {bool deleteLocalUserData = true}
  2. +
) + + + +
+ +
+

Sends a request to delete the sessions token from the +server. Will also delete the local user data unless +deleteLocalUserData is false.

+
+ + + +
+

Implementation

+
Future<ParseResponse> logout({bool deleteLocalUserData = true}) async {
+  final String? sessionId = ParseCoreData().sessionId;
+
+  if (sessionId == null) {
+    return await _handleResponse(
+        this,
+        ParseNetworkResponse(data: "{}", statusCode: 200),
+        ParseApiRQ.logout,
+        _debug,
+        parseClassName);
+  }
+
+  forgetLocalSession();
+
+  if (deleteLocalUserData == true) {
+    await this.deleteLocalUserData();
+  }
+
+  try {
+    final Uri url = getSanitisedUri(_client, keyEndPointLogout);
+    final ParseNetworkResponse response = await _client.post(
+      url.toString(),
+      options: ParseNetworkOptions(
+          headers: <String, String>{keyHeaderSessionToken: sessionId}),
+    );
+
+    return await _handleResponse(
+        this, response, ParseApiRQ.logout, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(e, ParseApiRQ.logout, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/password.html b/dart/flutter_parse_sdk/ParseUser/password.html new file mode 100644 index 000000000..859aadaf7 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/password.html @@ -0,0 +1,158 @@ + + + + + + + + password property - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
password
+ +
+ +
+
+
+ +
+
+

password property +

+ + + +
+ +
+ + String? + password + + +
+ + + + +
+

Implementation

+
String? get password => _password;
+
+ +
+ + + +
+ +
+ + void + password=(String? password) + + +
+ + + + +
+

Implementation

+
set password(String? password) {
+  if (_password != password) {
+    _password = password;
+    if (password != null) _unsavedChanges[keyVarPassword] = password;
+  }
+}
+
+ +
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/path-constant.html b/dart/flutter_parse_sdk/ParseUser/path-constant.html new file mode 100644 index 000000000..aa95cd040 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/path-constant.html @@ -0,0 +1,125 @@ + + + + + + + + path constant - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
path
+ +
+ +
+
+
+ +
+
+

path constant +

+ +
+ + String + const path + + +
+ + + +
+

Implementation

+
static const String path = '$keyEndPointClasses$keyClassUser';
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/requestPasswordReset.html b/dart/flutter_parse_sdk/ParseUser/requestPasswordReset.html new file mode 100644 index 000000000..047bf3de9 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/requestPasswordReset.html @@ -0,0 +1,143 @@ + + + + + + + + requestPasswordReset method - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
requestPasswordReset
+ +
+ +
+
+
+ +
+
+

requestPasswordReset method +

+ +
+ + +Future<ParseResponse> +requestPasswordReset() + + + +
+ +
+

Sends a password reset email to the users email address

+
+ + + +
+

Implementation

+
Future<ParseResponse> requestPasswordReset() async {
+  try {
+    final ParseNetworkResponse response = await _client.post(
+      '${ParseCoreData().serverUrl}$keyEndPointRequestPasswordReset',
+      data: json.encode(<String, dynamic>{keyVarEmail: emailAddress}),
+    );
+    return await _handleResponse(this, response,
+        ParseApiRQ.requestPasswordReset, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(
+        e, ParseApiRQ.requestPasswordReset, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/save.html b/dart/flutter_parse_sdk/ParseUser/save.html new file mode 100644 index 000000000..29f6d9687 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/save.html @@ -0,0 +1,150 @@ + + + + + + + + save method - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
save
+ +
+ +
+
+
+ +
+
+

save method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseResponse> +save(
  1. {dynamic context}
  2. +
) + +
override
+ +
+ +
+

Saves the current user

+

If changes are made to the current user, call save to sync them with +Parse Server

+
+ + + +
+

Implementation

+
@override
+Future<ParseResponse> save({dynamic context}) async {
+  if (objectId == null) {
+    return await signUp();
+  } else {
+    final ParseResponse response = await super.save();
+    if (response.success) {
+      await _onResponseSuccess();
+    }
+    return response;
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/sessionToken.html b/dart/flutter_parse_sdk/ParseUser/sessionToken.html new file mode 100644 index 000000000..6dbf8f398 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/sessionToken.html @@ -0,0 +1,154 @@ + + + + + + + + sessionToken property - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
sessionToken
+ +
+ +
+
+
+ +
+
+

sessionToken property +

+ + + +
+ +
+ + String? + sessionToken + + +
+ + + + +
+

Implementation

+
String? get sessionToken => super.get<String>(keyVarSessionToken);
+
+ +
+ + + +
+ +
+ + void + sessionToken=(String? sessionToken) + + +
+ + + + +
+

Implementation

+
set sessionToken(String? sessionToken) =>
+    set<String?>(keyVarSessionToken, sessionToken);
+
+ +
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/signUp.html b/dart/flutter_parse_sdk/ParseUser/signUp.html new file mode 100644 index 000000000..b7b21ec76 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/signUp.html @@ -0,0 +1,178 @@ + + + + + + + + signUp method - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
signUp
+ +
+ +
+
+
+ +
+
+

signUp method +

+ +
+ + +Future<ParseResponse> +signUp(
  1. {bool allowWithoutEmail = false,
  2. +
  3. bool doNotSendInstallationID = false}
  4. +
) + + + +
+ +
+

Registers a user on Parse Server

+

After creating a new user via Parse.create call this method to register +that user on Parse +By setting allowWithoutEmail to true, you can sign up without setting an email +Set doNotSendInstallationID to 'true' in order to prevent the SDK from sending the installationID to the Server. +This option is especially useful if you are running you application on web and you don't have permission to add 'X-Parse-Installation-Id' as an allowed header on your parse-server.

+
+ + + +
+

Implementation

+
Future<ParseResponse> signUp(
+    {bool allowWithoutEmail = false,
+    bool doNotSendInstallationID = false}) async {
+  forgetLocalSession();
+
+  try {
+    if (emailAddress == null) {
+      if (!allowWithoutEmail) {
+        assert(() {
+          print(
+              '`ParseUser().signUp()` failed, because the email is not set. If you want to allow signUp without a set email, you should run `ParseUser().signUp(allowWithoutEmail = true)`');
+          return true;
+        }());
+        throw '`signUp` failed, because `emailAddress` of ParseUser was not provided and `allowWithoutEmail` was `false`';
+      } else {
+        assert(() {
+          print(
+              'It is recommended to only allow user signUp with an email set.');
+          return true;
+        }());
+      }
+    }
+
+    final Uri url = getSanitisedUri(_client, path);
+    final String body = json.encode(toJson(forApiRQ: true));
+    _saveChanges();
+    final String? installationId = await _getInstallationId();
+    final ParseNetworkResponse response = await _client.post(url.toString(),
+        options: ParseNetworkOptions(headers: <String, String>{
+          keyHeaderRevocableSession: '1',
+          if (installationId != null && !doNotSendInstallationID)
+            keyHeaderInstallationId: installationId,
+        }),
+        data: body);
+
+    return await _handleResponse(
+        this, response, ParseApiRQ.signUp, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(e, ParseApiRQ.signUp, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/update.html b/dart/flutter_parse_sdk/ParseUser/update.html new file mode 100644 index 000000000..6e5511550 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/update.html @@ -0,0 +1,151 @@ + + + + + + + + update method - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
update
+ +
+ +
+
+
+ +
+
+

update method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseResponse> +update(
  1. {dynamic context}
  2. +
) + +
override
+ +
+ +
+

Send the updated object to the server.

+

Will only send the dirty (modified) data and not the entire object

+

The object should hold an objectId in order to update it

+

Prefer using save over update

+
+ + + +
+

Implementation

+
@override
+Future<ParseResponse> update({dynamic context}) async {
+  if (objectId == null) {
+    return await signUp();
+  } else {
+    final ParseResponse response = await super.update();
+    if (response.success) {
+      await _onResponseSuccess();
+    }
+    return response;
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/username.html b/dart/flutter_parse_sdk/ParseUser/username.html new file mode 100644 index 000000000..f1db63827 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/username.html @@ -0,0 +1,153 @@ + + + + + + + + username property - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
username
+ +
+ +
+
+
+ +
+
+

username property +

+ + + +
+ +
+ + String? + username + + +
+ + + + +
+

Implementation

+
String? get username => super.get<String>(keyVarUsername);
+
+ +
+ + + +
+ +
+ + void + username=(String? username) + + +
+ + + + +
+

Implementation

+
set username(String? username) => set<String?>(keyVarUsername, username);
+
+ +
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUser/verificationEmailRequest.html b/dart/flutter_parse_sdk/ParseUser/verificationEmailRequest.html new file mode 100644 index 000000000..994414c4f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUser/verificationEmailRequest.html @@ -0,0 +1,143 @@ + + + + + + + + verificationEmailRequest method - ParseUser class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
verificationEmailRequest
+ +
+ +
+
+
+ +
+
+

verificationEmailRequest method +

+ +
+ + +Future<ParseResponse> +verificationEmailRequest() + + + +
+ +
+

Sends a verification email to the users email address

+
+ + + +
+

Implementation

+
Future<ParseResponse> verificationEmailRequest() async {
+  try {
+    final ParseNetworkResponse response = await _client.post(
+      '${ParseCoreData().serverUrl}$keyEndPointVerificationEmail',
+      data: json.encode(<String, dynamic>{keyVarEmail: emailAddress}),
+    );
+    return await _handleResponse(this, response,
+        ParseApiRQ.verificationEmailRequest, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(
+        e, ParseApiRQ.verificationEmailRequest, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseUserConstructor.html b/dart/flutter_parse_sdk/ParseUserConstructor.html new file mode 100644 index 000000000..475814b49 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseUserConstructor.html @@ -0,0 +1,125 @@ + + + + + + + + ParseUserConstructor typedef - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseUserConstructor
+ +
+ +
+
+
+ +
+
+

ParseUserConstructor typedef + +

+ +
+ ParseUserConstructor = + ParseUser Function(String? username, String? password, String? emailAddress, {ParseClient? client, bool? debug, String? sessionToken}) + +
+ + + + +
+

Implementation

+
typedef ParseUserConstructor = ParseUser Function(
+    String? username, String? password, String? emailAddress,
+    {String? sessionToken, bool? debug, ParseClient? client});
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseWebFile-class-sidebar.html b/dart/flutter_parse_sdk/ParseWebFile-class-sidebar.html new file mode 100644 index 000000000..ea4b07df7 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseWebFile-class-sidebar.html @@ -0,0 +1,81 @@ +
    + +
  1. Constructors
  2. +
  3. ParseWebFile
  4. + + + +
  5. + Properties +
  6. +
  7. createdAt
  8. +
  9. file
  10. +
  11. hashCode
  12. +
  13. name
  14. +
  15. objectId
  16. +
  17. parseClassName
  18. +
  19. runtimeType
  20. +
  21. saved
  22. +
  23. updatedAt
  24. +
  25. url
  26. + +
  27. Methods
  28. +
  29. addRelation
  30. +
  31. cancel
  32. +
  33. clearUnsavedChanges
  34. +
  35. clone
  36. +
  37. containsKey
  38. +
  39. containsValue
  40. +
  41. copy
  42. +
  43. create
  44. +
  45. delete
  46. +
  47. deleteEventually
  48. +
  49. distinct
  50. +
  51. download
  52. +
  53. fetch
  54. +
  55. fromJson
  56. +
  57. fromJsonForManualObject
  58. +
  59. fromPin
  60. +
  61. get
  62. +
  63. getACL
  64. +
  65. getAll
  66. +
  67. getObject
  68. +
  69. getRelation
  70. +
  71. isDirty
  72. +
  73. noSuchMethod
  74. +
  75. pin
  76. +
  77. progressCallback
  78. +
  79. query
  80. +
  81. removeRelation
  82. +
  83. save
  84. +
  85. saveEventually
  86. +
  87. saveInStorage
  88. +
  89. set
  90. +
  91. setACL
  92. +
  93. setAdd
  94. +
  95. setAddAll
  96. +
  97. setAddAllUnique
  98. +
  99. setAddUnique
  100. +
  101. setDecrement
  102. +
  103. setIncrement
  104. +
  105. setRemove
  106. +
  107. setRemoveAll
  108. +
  109. toJson
  110. +
  111. toPointer
  112. +
  113. toString
  114. +
  115. unpin
  116. +
  117. unset
  118. +
  119. update
  120. +
  121. upload
  122. + +
  123. Operators
  124. +
  125. operator ==
  126. +
  127. operator []
  128. +
  129. operator []=
  130. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseWebFile-class.html b/dart/flutter_parse_sdk/ParseWebFile-class.html new file mode 100644 index 000000000..7bfc72395 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseWebFile-class.html @@ -0,0 +1,945 @@ + + + + + + + + ParseWebFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseWebFile
+ +
+ +
+
+
+ +
+
+

ParseWebFile class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseWebFile(Uint8List? file, {required String name, String? url, bool? debug, ParseClient? client, bool? autoSendSessionId}) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ createdAt + DateTime? + +
+
+ Returns DateTime createdAt +
no setterinherited
+ +
+ +
+ file + Uint8List? + +
+
+ +
getter/setter pair
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ name + String + +
+
+ +
getter/setter pairinherited
+ +
+ +
+ objectId + String? + +
+
+ Returns String objectId +
getter/setter pairinherited
+ +
+ +
+ parseClassName + String + +
+
+ refers to the Table Name in your Parse Server +
getter/setter pairinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ saved + bool + +
+
+ +
no setterinherited
+ +
+ +
+ updatedAt + DateTime? + +
+
+ Returns DateTime updatedAt +
no setterinherited
+ +
+ +
+ url + String? + +
+
+ +
getter/setter pairinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ addRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Add multiple objets to a relation associated with a given key +
inherited
+ +
+ +
+ cancel([dynamic reason]) + → void + + + +
+
+ Cancels the current request (upload or download of file). +
override
+ +
+ +
+ clearUnsavedChanges() + → void + + + +
+
+ +
inherited
+ +
+ +
+ clone(Map<String, dynamic> map) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ containsKey(String key) + bool + + + +
+
+ +
inherited
+ +
+ +
+ containsValue(Object value) + bool + + + +
+
+ +
inherited
+ +
+ +
+ copy() + → dynamic + + + +
+
+ Creates a copy of this class +
inherited
+ +
+ +
+ create({bool allowCustomObjectId = false, dynamic context}) + Future<ParseResponse> + + + +
+
+ Creates a new object and saves it online +
inherited
+ +
+ +
+ delete<T extends ParseObject>({String? id, String? path}) + Future<ParseResponse> + + + +
+
+ Deletes the current object locally and online +
inherited
+ +
+ +
+ deleteEventually() + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ distinct<T extends ParseObject>(String query) + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ download({ProgressCallback? progressCallback}) + Future<ParseWebFile> + + + +
+
+ +
override
+ +
+ +
+ fetch({List<String>? include}) + Future<ParseObject> + + + +
+
+ Fetches this object with the data from the server. +
inherited
+ +
+ +
+ fromJson(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromJsonForManualObject(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromPin(String objectId) + Future + + + +
+
+ Get item from value storage +
inherited
+ +
+ +
+ get<T>(String key, {T? defaultValue}) + → T? + + + +
+
+ Get a value of type T associated with a given key +
inherited
+ +
+ +
+ getACL() + ParseACL + + + +
+
+ Access the ParseACL governing this object. +
inherited
+ +
+ +
+ getAll() + Future<ParseResponse> + + + +
+
+ Gets all objects from this table - Limited response at the moment +
inherited
+ +
+ +
+ getObject(String objectId, {List<String>? include}) + Future<ParseResponse> + + + +
+
+ Gets an object from the server using it's objectId +
inherited
+ +
+ +
+ getRelation<T extends ParseObject>(String key) + ParseRelation<T> + + + +
+
+ Get the instance of ParseRelation class associated with the given key +
inherited
+ +
+ +
+ isDirty({String? key}) + bool + + + +
+
+ +
inherited
+ +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ pin() + Future<bool> + + + +
+
+ Saves item to value storage +
inherited
+ +
+ +
+ progressCallback(ProgressCallback progressCallback) + → void + + + +
+
+ Add Progress Callback +
override
+ +
+ +
+ query<T extends ParseObject>(String query, {ProgressCallback? progressCallback}) + Future<ParseResponse> + + + +
+
+ Can be used to create custom queries +
inherited
+ +
+ +
+ removeRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Remove multiple objets from a relation associated with a given key +
inherited
+ +
+ +
+ save({dynamic context}) + Future<ParseResponse> + + + +
+
+ Uploads a file to Parse Server +
inherited
+ +
+ +
+ saveEventually() + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ saveInStorage(String key) + Future<void> + + + +
+
+ Saves in storage +
inherited
+ +
+ +
+ set<T>(String key, T value, {bool forceUpdate = true}) + → void + + + +
+
+ Add a key-value pair to this object. +
inherited
+ +
+ +
+ setACL<ParseACL>(ParseACL acl) + → void + + + +
+
+ Set the ParseACL governing this object. +
inherited
+ +
+ +
+ setAdd<T>(String key, T element) + → void + + + +
+
+ Add an element to the end of the array associated with a given key +
inherited
+ +
+ +
+ setAddAll(String key, List elements) + → void + + + +
+
+ Add multiple elements to the end of the array +associated with a given key +
inherited
+ +
+ +
+ setAddAllUnique(String key, List elements) + → void + + + +
+
+ Add multiple elements to the array associated with a given key, only +adding elements which are not already present in the array. The position +of the insert is not guaranteed +
inherited
+ +
+ +
+ setAddUnique(String key, dynamic element) + → void + + + +
+
+ Add an element to the array associated with a given key, only if +it is not already present in the array. The position of the insert is not +guaranteed +
inherited
+ +
+ +
+ setDecrement(String key, num amount) + → void + + + +
+
+ Decrement a num value associated with a given key by the given amount +
inherited
+ +
+ +
+ setIncrement(String key, num amount) + → void + + + +
+
+ Increment a num value associated with a given key by the given amount +
inherited
+ +
+ +
+ setRemove(String key, dynamic element) + → void + + + +
+
+ Remove every instance of an element from an array +associated with a given key +
inherited
+ +
+ +
+ setRemoveAll(String key, List elements) + → void + + + +
+
+ Removes all instances of the elements contained in a List from the +array associated with a given key +
inherited
+ +
+ +
+ toJson({bool full = false, bool forApiRQ = false, bool allowCustomObjectId = false}) + Map<String, dynamic> + + + +
+
+ Converts object to String in JSON format +
inherited
+ +
+ +
+ toPointer() + Map<String, dynamic> + + + +
+
+ +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+ unpin({String? key}) + Future<bool> + + + +
+
+ Remove item from value storage +
inherited
+ +
+ +
+ unset(String key, {bool offlineOnly = false}) + Future<ParseResponse> + + + +
+
+ Can be used set an objects variable to undefined rather than null +
inherited
+ +
+ +
+ update({dynamic context}) + Future<ParseResponse> + + + +
+
+ Send the updated object to the server. +
inherited
+ +
+ +
+ upload({ProgressCallback? progressCallback}) + Future<ParseResponse> + + + +
+
+ Uploads a file to Parse Server +
override
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+ operator [](String key) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ operator []=(String key, dynamic value) + → void + + + +
+
+ +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseWebFile/ParseWebFile.html b/dart/flutter_parse_sdk/ParseWebFile/ParseWebFile.html new file mode 100644 index 000000000..9b82e9182 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseWebFile/ParseWebFile.html @@ -0,0 +1,142 @@ + + + + + + + + ParseWebFile constructor - ParseWebFile - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseWebFile
+ +
+ +
+
+
+ +
+
+

ParseWebFile constructor +

+ +
+ + ParseWebFile(
  1. Uint8List? file,
  2. +
  3. {required String name,
  4. +
  5. String? url,
  6. +
  7. bool? debug,
  8. +
  9. ParseClient? client,
  10. +
  11. bool? autoSendSessionId}
  12. +
) +
+ + + + + +
+

Implementation

+
ParseWebFile(this.file,
+    {required String name,
+    String? url,
+    bool? debug,
+    ParseClient? client,
+    bool? autoSendSessionId})
+    : super(
+        name: name,
+        url: url,
+        debug: debug,
+        client: client,
+        autoSendSessionId: autoSendSessionId,
+      );
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseWebFile/cancel.html b/dart/flutter_parse_sdk/ParseWebFile/cancel.html new file mode 100644 index 000000000..371a5f42f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseWebFile/cancel.html @@ -0,0 +1,141 @@ + + + + + + + + cancel method - ParseWebFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
cancel
+ +
+ +
+
+
+ +
+
+

cancel method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +void +cancel(
  1. [dynamic reason]
  2. +
) + +
override
+ +
+ +
+

Cancels the current request (upload or download of file).

+
+ + + +
+

Implementation

+
@override
+void cancel([dynamic reason]) {
+  _cancelToken?.cancel(reason);
+  _cancelToken = null;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseWebFile/download.html b/dart/flutter_parse_sdk/ParseWebFile/download.html new file mode 100644 index 000000000..0359a4601 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseWebFile/download.html @@ -0,0 +1,152 @@ + + + + + + + + download method - ParseWebFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
download
+ +
+ +
+
+
+ +
+
+

download method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseWebFile> +download(
  1. {ProgressCallback? progressCallback}
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<ParseWebFile> download({ProgressCallback? progressCallback}) async {
+  if (url == null) {
+    return this;
+  }
+
+  progressCallback ??= _progressCallback;
+
+  _cancelToken = CancelToken();
+
+  final ParseNetworkByteResponse response = await _client.getBytes(
+    url!,
+    onReceiveProgress: progressCallback,
+    cancelToken: _cancelToken,
+  );
+  file = response.bytes as Uint8List?;
+
+  return this;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseWebFile/file.html b/dart/flutter_parse_sdk/ParseWebFile/file.html new file mode 100644 index 000000000..574f42ec5 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseWebFile/file.html @@ -0,0 +1,125 @@ + + + + + + + + file property - ParseWebFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
file
+ +
+ +
+
+
+ +
+
+

file property +

+ +
+ + Uint8List? + file +
getter/setter pair
+ +
+ + + +
+

Implementation

+
Uint8List? file;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseWebFile/progressCallback.html b/dart/flutter_parse_sdk/ParseWebFile/progressCallback.html new file mode 100644 index 000000000..306ce2f58 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseWebFile/progressCallback.html @@ -0,0 +1,140 @@ + + + + + + + + progressCallback method - ParseWebFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
progressCallback
+ +
+ +
+
+
+ +
+
+

progressCallback method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +void +progressCallback(
  1. ProgressCallback progressCallback
  2. +
) + +
override
+ +
+ +
+

Add Progress Callback

+
+ + + +
+

Implementation

+
@override
+void progressCallback(ProgressCallback progressCallback) {
+  _progressCallback = progressCallback;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseWebFile/upload.html b/dart/flutter_parse_sdk/ParseWebFile/upload.html new file mode 100644 index 000000000..5e453eabe --- /dev/null +++ b/dart/flutter_parse_sdk/ParseWebFile/upload.html @@ -0,0 +1,180 @@ + + + + + + + + upload method - ParseWebFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
upload
+ +
+ +
+
+
+ +
+
+

upload method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseResponse> +upload(
  1. {ProgressCallback? progressCallback}
  2. +
) + +
override
+ +
+ +
+

Uploads a file to Parse Server

+
+ + + +
+

Implementation

+
@override
+Future<ParseResponse> upload({ProgressCallback? progressCallback}) async {
+  if (saved) {
+    //Creates a Fake Response to return the correct result
+    final Map<String, String> response = <String, String>{
+      'url': url!,
+      'name': name
+    };
+    return handleResponse<ParseWebFile>(
+        this,
+        ParseNetworkResponse(data: json.encode(response), statusCode: 201),
+        ParseApiRQ.upload,
+        _debug,
+        parseClassName);
+  }
+
+  progressCallback ??= _progressCallback;
+
+  _cancelToken = CancelToken();
+
+  final Map<String, String> headers = <String, String>{
+    HttpHeaders.contentTypeHeader:
+        lookupMimeType(url ?? name) ?? 'application/octet-stream',
+  };
+  try {
+    final String uri = ParseCoreData().serverUrl + _path;
+    final ParseNetworkResponse response = await _client.postBytes(
+      uri,
+      options: ParseNetworkOptions(headers: headers),
+      data: Stream<List<int>>.fromIterable(<List<int>>[file!]),
+      onSendProgress: progressCallback,
+      cancelToken: _cancelToken,
+    );
+    if (response.statusCode == 201) {
+      final Map<String, dynamic> map = json.decode(response.data);
+      url = map['url'].toString();
+      name = map['name'].toString();
+    }
+    return handleResponse<ParseWebFile>(
+        this, response, ParseApiRQ.upload, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(e, ParseApiRQ.upload, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseXFile-class-sidebar.html b/dart/flutter_parse_sdk/ParseXFile-class-sidebar.html new file mode 100644 index 000000000..1b1c45beb --- /dev/null +++ b/dart/flutter_parse_sdk/ParseXFile-class-sidebar.html @@ -0,0 +1,82 @@ +
    + +
  1. Constructors
  2. +
  3. ParseXFile
  4. + + + +
  5. + Properties +
  6. +
  7. createdAt
  8. +
  9. file
  10. +
  11. hashCode
  12. +
  13. name
  14. +
  15. objectId
  16. +
  17. parseClassName
  18. +
  19. runtimeType
  20. +
  21. saved
  22. +
  23. updatedAt
  24. +
  25. url
  26. + +
  27. Methods
  28. +
  29. addRelation
  30. +
  31. cancel
  32. +
  33. clearUnsavedChanges
  34. +
  35. clone
  36. +
  37. containsKey
  38. +
  39. containsValue
  40. +
  41. copy
  42. +
  43. create
  44. +
  45. delete
  46. +
  47. deleteEventually
  48. +
  49. distinct
  50. +
  51. download
  52. +
  53. fetch
  54. +
  55. fromJson
  56. +
  57. fromJsonForManualObject
  58. +
  59. fromPin
  60. +
  61. get
  62. +
  63. getACL
  64. +
  65. getAll
  66. +
  67. getObject
  68. +
  69. getRelation
  70. +
  71. isDirty
  72. +
  73. loadStorage
  74. +
  75. noSuchMethod
  76. +
  77. pin
  78. +
  79. progressCallback
  80. +
  81. query
  82. +
  83. removeRelation
  84. +
  85. save
  86. +
  87. saveEventually
  88. +
  89. saveInStorage
  90. +
  91. set
  92. +
  93. setACL
  94. +
  95. setAdd
  96. +
  97. setAddAll
  98. +
  99. setAddAllUnique
  100. +
  101. setAddUnique
  102. +
  103. setDecrement
  104. +
  105. setIncrement
  106. +
  107. setRemove
  108. +
  109. setRemoveAll
  110. +
  111. toJson
  112. +
  113. toPointer
  114. +
  115. toString
  116. +
  117. unpin
  118. +
  119. unset
  120. +
  121. update
  122. +
  123. upload
  124. + +
  125. Operators
  126. +
  127. operator ==
  128. +
  129. operator []
  130. +
  131. operator []=
  132. + + + + + + +
diff --git a/dart/flutter_parse_sdk/ParseXFile-class.html b/dart/flutter_parse_sdk/ParseXFile-class.html new file mode 100644 index 000000000..1f578ce2d --- /dev/null +++ b/dart/flutter_parse_sdk/ParseXFile-class.html @@ -0,0 +1,958 @@ + + + + + + + + ParseXFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseXFile
+ +
+ +
+
+
+ +
+
+

ParseXFile class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseXFile(XFile? file, {String? name, String? url, bool? debug, ParseClient? client, bool? autoSendSessionId}) +
+
+ Creates a new file base XFile +
+
+
+ +
+

Properties

+ +
+
+ createdAt + DateTime? + +
+
+ Returns DateTime createdAt +
no setterinherited
+ +
+ +
+ file + XFile? + +
+
+ +
getter/setter pair
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ name + String + +
+
+ +
getter/setter pairinherited
+ +
+ +
+ objectId + String? + +
+
+ Returns String objectId +
getter/setter pairinherited
+ +
+ +
+ parseClassName + String + +
+
+ refers to the Table Name in your Parse Server +
getter/setter pairinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ saved + bool + +
+
+ +
no setterinherited
+ +
+ +
+ updatedAt + DateTime? + +
+
+ Returns DateTime updatedAt +
no setterinherited
+ +
+ +
+ url + String? + +
+
+ +
getter/setter pairinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ addRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Add multiple objets to a relation associated with a given key +
inherited
+ +
+ +
+ cancel([dynamic reason]) + → void + + + +
+
+ Cancels the current request (upload or download of file). +
override
+ +
+ +
+ clearUnsavedChanges() + → void + + + +
+
+ +
inherited
+ +
+ +
+ clone(Map<String, dynamic> map) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ containsKey(String key) + bool + + + +
+
+ +
inherited
+ +
+ +
+ containsValue(Object value) + bool + + + +
+
+ +
inherited
+ +
+ +
+ copy() + → dynamic + + + +
+
+ Creates a copy of this class +
inherited
+ +
+ +
+ create({bool allowCustomObjectId = false, dynamic context}) + Future<ParseResponse> + + + +
+
+ Creates a new object and saves it online +
inherited
+ +
+ +
+ delete<T extends ParseObject>({String? id, String? path}) + Future<ParseResponse> + + + +
+
+ Deletes the current object locally and online +
inherited
+ +
+ +
+ deleteEventually() + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ distinct<T extends ParseObject>(String query) + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ download({ProgressCallback? progressCallback}) + Future<ParseXFile> + + + +
+
+ +
override
+ +
+ +
+ fetch({List<String>? include}) + Future<ParseObject> + + + +
+
+ Fetches this object with the data from the server. +
inherited
+ +
+ +
+ fromJson(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromJsonForManualObject(Map<String, dynamic> objectData) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ fromPin(String objectId) + Future + + + +
+
+ Get item from value storage +
inherited
+ +
+ +
+ get<T>(String key, {T? defaultValue}) + → T? + + + +
+
+ Get a value of type T associated with a given key +
inherited
+ +
+ +
+ getACL() + ParseACL + + + +
+
+ Access the ParseACL governing this object. +
inherited
+ +
+ +
+ getAll() + Future<ParseResponse> + + + +
+
+ Gets all objects from this table - Limited response at the moment +
inherited
+ +
+ +
+ getObject(String objectId, {List<String>? include}) + Future<ParseResponse> + + + +
+
+ Gets an object from the server using it's objectId +
inherited
+ +
+ +
+ getRelation<T extends ParseObject>(String key) + ParseRelation<T> + + + +
+
+ Get the instance of ParseRelation class associated with the given key +
inherited
+ +
+ +
+ isDirty({String? key}) + bool + + + +
+
+ +
inherited
+ +
+ +
+ loadStorage() + Future<ParseXFile> + + + +
+
+ + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ pin() + Future<bool> + + + +
+
+ Saves item to value storage +
inherited
+ +
+ +
+ progressCallback(ProgressCallback progressCallback) + → void + + + +
+
+ Add Progress Callback +
override
+ +
+ +
+ query<T extends ParseObject>(String query, {ProgressCallback? progressCallback}) + Future<ParseResponse> + + + +
+
+ Can be used to create custom queries +
inherited
+ +
+ +
+ removeRelation(String key, List<ParseObject> objets) + → void + + + +
+
+ Remove multiple objets from a relation associated with a given key +
inherited
+ +
+ +
+ save({dynamic context}) + Future<ParseResponse> + + + +
+
+ Uploads a file to Parse Server +
inherited
+ +
+ +
+ saveEventually() + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ saveInStorage(String key) + Future<void> + + + +
+
+ Saves in storage +
inherited
+ +
+ +
+ set<T>(String key, T value, {bool forceUpdate = true}) + → void + + + +
+
+ Add a key-value pair to this object. +
inherited
+ +
+ +
+ setACL<ParseACL>(ParseACL acl) + → void + + + +
+
+ Set the ParseACL governing this object. +
inherited
+ +
+ +
+ setAdd<T>(String key, T element) + → void + + + +
+
+ Add an element to the end of the array associated with a given key +
inherited
+ +
+ +
+ setAddAll(String key, List elements) + → void + + + +
+
+ Add multiple elements to the end of the array +associated with a given key +
inherited
+ +
+ +
+ setAddAllUnique(String key, List elements) + → void + + + +
+
+ Add multiple elements to the array associated with a given key, only +adding elements which are not already present in the array. The position +of the insert is not guaranteed +
inherited
+ +
+ +
+ setAddUnique(String key, dynamic element) + → void + + + +
+
+ Add an element to the array associated with a given key, only if +it is not already present in the array. The position of the insert is not +guaranteed +
inherited
+ +
+ +
+ setDecrement(String key, num amount) + → void + + + +
+
+ Decrement a num value associated with a given key by the given amount +
inherited
+ +
+ +
+ setIncrement(String key, num amount) + → void + + + +
+
+ Increment a num value associated with a given key by the given amount +
inherited
+ +
+ +
+ setRemove(String key, dynamic element) + → void + + + +
+
+ Remove every instance of an element from an array +associated with a given key +
inherited
+ +
+ +
+ setRemoveAll(String key, List elements) + → void + + + +
+
+ Removes all instances of the elements contained in a List from the +array associated with a given key +
inherited
+ +
+ +
+ toJson({bool full = false, bool forApiRQ = false, bool allowCustomObjectId = false}) + Map<String, dynamic> + + + +
+
+ Converts object to String in JSON format +
inherited
+ +
+ +
+ toPointer() + Map<String, dynamic> + + + +
+
+ +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+ unpin({String? key}) + Future<bool> + + + +
+
+ Remove item from value storage +
inherited
+ +
+ +
+ unset(String key, {bool offlineOnly = false}) + Future<ParseResponse> + + + +
+
+ Can be used set an objects variable to undefined rather than null +
inherited
+ +
+ +
+ update({dynamic context}) + Future<ParseResponse> + + + +
+
+ Send the updated object to the server. +
inherited
+ +
+ +
+ upload({ProgressCallback? progressCallback}) + Future<ParseResponse> + + + +
+
+ Uploads a file to Parse Server +
override
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+ operator [](String key) + → dynamic + + + +
+
+ +
inherited
+ +
+ +
+ operator []=(String key, dynamic value) + → void + + + +
+
+ +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseXFile/ParseXFile.html b/dart/flutter_parse_sdk/ParseXFile/ParseXFile.html new file mode 100644 index 000000000..f0326a289 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseXFile/ParseXFile.html @@ -0,0 +1,146 @@ + + + + + + + + ParseXFile constructor - ParseXFile - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseXFile
+ +
+ +
+
+
+ +
+
+

ParseXFile constructor +

+ +
+ + ParseXFile(
  1. XFile? file,
  2. +
  3. {String? name,
  4. +
  5. String? url,
  6. +
  7. bool? debug,
  8. +
  9. ParseClient? client,
  10. +
  11. bool? autoSendSessionId}
  12. +
) +
+ + +
+

Creates a new file base XFile

+

{https://docs.parseplatform.org/rest/guide/#files/}

+
+ + + +
+

Implementation

+
ParseXFile(this.file,
+    {String? name,
+    String? url,
+    bool? debug,
+    ParseClient? client,
+    bool? autoSendSessionId})
+    : super(
+        name: file != null ? path.basename(file.path) : name!,
+        url: url,
+        debug: debug,
+        client: client,
+        autoSendSessionId: autoSendSessionId,
+      );
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseXFile/cancel.html b/dart/flutter_parse_sdk/ParseXFile/cancel.html new file mode 100644 index 000000000..7bc2e8131 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseXFile/cancel.html @@ -0,0 +1,141 @@ + + + + + + + + cancel method - ParseXFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
cancel
+ +
+ +
+
+
+ +
+
+

cancel method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +void +cancel(
  1. [dynamic reason]
  2. +
) + +
override
+ +
+ +
+

Cancels the current request (upload or download of file).

+
+ + + +
+

Implementation

+
@override
+void cancel([dynamic reason]) {
+  _cancelToken?.cancel(reason);
+  _cancelToken = null;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseXFile/download.html b/dart/flutter_parse_sdk/ParseXFile/download.html new file mode 100644 index 000000000..e4d6dd974 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseXFile/download.html @@ -0,0 +1,167 @@ + + + + + + + + download method - ParseXFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
download
+ +
+ +
+
+
+ +
+
+

download method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseXFile> +download(
  1. {ProgressCallback? progressCallback}
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<ParseXFile> download({ProgressCallback? progressCallback}) async {
+  if (url == null) {
+    return this;
+  }
+
+  progressCallback ??= _progressCallback;
+
+  _cancelToken = CancelToken();
+
+  if (parseIsWeb) {
+    final ParseNetworkByteResponse response = await _client.getBytes(
+      url!,
+      onReceiveProgress: progressCallback,
+      cancelToken: _cancelToken,
+    );
+
+    if (response.bytes != null) {
+      file = XFile.fromData(response.bytes as Uint8List);
+    }
+  } else {
+    file = XFile('${ParseCoreData().fileDirectory}/$name');
+    await File(file!.path).create();
+
+    final ParseNetworkByteResponse response = await _client.getBytes(
+      url!,
+      onReceiveProgress: progressCallback,
+      cancelToken: _cancelToken,
+    );
+    await File(file!.path).writeAsBytes(response.bytes!);
+  }
+
+  return this;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseXFile/file.html b/dart/flutter_parse_sdk/ParseXFile/file.html new file mode 100644 index 000000000..8295dd87f --- /dev/null +++ b/dart/flutter_parse_sdk/ParseXFile/file.html @@ -0,0 +1,125 @@ + + + + + + + + file property - ParseXFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
file
+ +
+ +
+
+
+ +
+
+

file property +

+ +
+ + XFile? + file +
getter/setter pair
+ +
+ + + +
+

Implementation

+
XFile? file;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseXFile/loadStorage.html b/dart/flutter_parse_sdk/ParseXFile/loadStorage.html new file mode 100644 index 000000000..5e62fb96e --- /dev/null +++ b/dart/flutter_parse_sdk/ParseXFile/loadStorage.html @@ -0,0 +1,145 @@ + + + + + + + + loadStorage method - ParseXFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
loadStorage
+ +
+ +
+
+
+ +
+
+

loadStorage method +

+ +
+ + +Future<ParseXFile> +loadStorage() + + + +
+ + + + +
+

Implementation

+
Future<ParseXFile> loadStorage() async {
+  // Web not need load storage.
+  if (parseIsWeb) {
+    return this;
+  }
+
+  final XFile possibleFile = XFile('${ParseCoreData().fileDirectory}/$name');
+  // ignore: avoid_slow_async_io
+  final bool exists = await File(possibleFile.path).exists();
+
+  if (exists) {
+    file = possibleFile;
+  } else {
+    file = null;
+  }
+
+  return this;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseXFile/progressCallback.html b/dart/flutter_parse_sdk/ParseXFile/progressCallback.html new file mode 100644 index 000000000..4fdef0d72 --- /dev/null +++ b/dart/flutter_parse_sdk/ParseXFile/progressCallback.html @@ -0,0 +1,140 @@ + + + + + + + + progressCallback method - ParseXFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
progressCallback
+ +
+ +
+
+
+ +
+
+

progressCallback method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +void +progressCallback(
  1. ProgressCallback progressCallback
  2. +
) + +
override
+ +
+ +
+

Add Progress Callback

+
+ + + +
+

Implementation

+
@override
+void progressCallback(ProgressCallback progressCallback) {
+  _progressCallback = progressCallback;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ParseXFile/upload.html b/dart/flutter_parse_sdk/ParseXFile/upload.html new file mode 100644 index 000000000..401f204dd --- /dev/null +++ b/dart/flutter_parse_sdk/ParseXFile/upload.html @@ -0,0 +1,201 @@ + + + + + + + + upload method - ParseXFile class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
upload
+ +
+ +
+
+
+ +
+
+

upload method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseResponse> +upload(
  1. {ProgressCallback? progressCallback}
  2. +
) + +
override
+ +
+ +
+

Uploads a file to Parse Server

+
+ + + +
+

Implementation

+
@override
+Future<ParseResponse> upload({ProgressCallback? progressCallback}) async {
+  if (saved) {
+    //Creates a Fake Response to return the correct result
+    final Map<String, String> response = <String, String>{
+      'url': url!,
+      'name': name
+    };
+    return handleResponse<ParseXFile>(
+        this,
+        ParseNetworkResponse(data: json.encode(response), statusCode: 201),
+        ParseApiRQ.upload,
+        _debug,
+        parseClassName);
+  }
+
+  progressCallback ??= _progressCallback;
+
+  _cancelToken = CancelToken();
+  Map<String, String> headers;
+  if (parseIsWeb) {
+    headers = <String, String>{
+      HttpHeaders.contentTypeHeader: file?.mimeType ??
+          lookupMimeType(url ?? file?.name ?? name,
+              headerBytes: await file?.readAsBytes()) ??
+          'application/octet-stream',
+    };
+  } else {
+    headers = <String, String>{
+      HttpHeaders.contentTypeHeader: file?.mimeType ??
+          lookupMimeType(file!.path) ??
+          'application/octet-stream',
+      HttpHeaders.contentLengthHeader: '${await file!.length()}',
+    };
+  }
+
+  try {
+    final String uri = ParseCoreData().serverUrl + _path;
+
+    Stream<List<int>>? data;
+    if (parseIsWeb) {
+      data = Stream<List<int>>.fromIterable(
+          <List<int>>[await file!.readAsBytes()]);
+    } else {
+      data = file!.openRead();
+    }
+
+    final ParseNetworkResponse response = await _client.postBytes(
+      uri,
+      options: ParseNetworkOptions(headers: headers),
+      data: data,
+      onSendProgress: progressCallback,
+      cancelToken: _cancelToken,
+    );
+    if (response.statusCode == 201) {
+      final Map<String, dynamic> map = json.decode(response.data);
+      url = map['url'].toString();
+      name = map['name'].toString();
+    }
+    return handleResponse<ParseXFile>(
+        this, response, ParseApiRQ.upload, _debug, parseClassName);
+  } on Exception catch (e) {
+    return handleException(e, ParseApiRQ.upload, _debug, parseClassName);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/PathKey-class-sidebar.html b/dart/flutter_parse_sdk/PathKey-class-sidebar.html new file mode 100644 index 000000000..f763804bd --- /dev/null +++ b/dart/flutter_parse_sdk/PathKey-class-sidebar.html @@ -0,0 +1,28 @@ +
    + +
  1. Constructors
  2. +
  3. PathKey
  4. + + + +
  5. + Properties +
  6. +
  7. hashCode
  8. +
  9. key
  10. +
  11. runtimeType
  12. +
  13. subscription
  14. + +
  15. Methods
  16. +
  17. noSuchMethod
  18. +
  19. toString
  20. + +
  21. Operators
  22. +
  23. operator ==
  24. + + + + + + +
diff --git a/dart/flutter_parse_sdk/PathKey-class.html b/dart/flutter_parse_sdk/PathKey-class.html new file mode 100644 index 000000000..d39cb222b --- /dev/null +++ b/dart/flutter_parse_sdk/PathKey-class.html @@ -0,0 +1,237 @@ + + + + + + + + PathKey class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
PathKey
+ +
+ +
+
+
+ +
+
+

PathKey class + +

+ + + + + + +
+

Constructors

+ +
+
+ PathKey(String key, {Subscription<ParseObject>? subscription}) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ key + String + +
+
+ +
final
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+ subscription + Subscription<ParseObject>? + +
+
+ +
getter/setter pair
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
override
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/PathKey/PathKey.html b/dart/flutter_parse_sdk/PathKey/PathKey.html new file mode 100644 index 000000000..d89b30f03 --- /dev/null +++ b/dart/flutter_parse_sdk/PathKey/PathKey.html @@ -0,0 +1,126 @@ + + + + + + + + PathKey constructor - PathKey - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
PathKey
+ +
+ +
+
+
+ +
+
+

PathKey constructor +

+ +
+ + PathKey(
  1. String key,
  2. +
  3. {Subscription<ParseObject>? subscription}
  4. +
) +
+ + + + + +
+

Implementation

+
PathKey(this.key, {this.subscription});
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/PathKey/key.html b/dart/flutter_parse_sdk/PathKey/key.html new file mode 100644 index 000000000..c53a7340b --- /dev/null +++ b/dart/flutter_parse_sdk/PathKey/key.html @@ -0,0 +1,125 @@ + + + + + + + + key property - PathKey class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
key
+ +
+ +
+
+
+ +
+
+

key property +

+ +
+ + String + key +
final
+ +
+ + + +
+

Implementation

+
final String key;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/PathKey/subscription.html b/dart/flutter_parse_sdk/PathKey/subscription.html new file mode 100644 index 000000000..fa363abe7 --- /dev/null +++ b/dart/flutter_parse_sdk/PathKey/subscription.html @@ -0,0 +1,125 @@ + + + + + + + + subscription property - PathKey class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
subscription
+ +
+ +
+
+
+ +
+
+

subscription property +

+ +
+ + Subscription<ParseObject>? + subscription +
getter/setter pair
+ +
+ + + +
+

Implementation

+
Subscription<ParseObject>? subscription;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/PathKey/toString.html b/dart/flutter_parse_sdk/PathKey/toString.html new file mode 100644 index 000000000..2cd57562a --- /dev/null +++ b/dart/flutter_parse_sdk/PathKey/toString.html @@ -0,0 +1,148 @@ + + + + + + + + toString method - PathKey class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
toString
+ +
+ +
+
+
+ +
+
+

toString method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +String +toString() + +
override
+ +
+ +
+

A string representation of this object.

+

Some classes have a default textual representation, +often paired with a static parse function (like int.parse). +These classes will provide the textual representation as +their string representation.

+

Other classes have no meaningful textual representation +that a program will care about. +Such classes will typically override toString to provide +useful information when inspecting the object, +mainly for debugging or logging.

+
+ + + +
+

Implementation

+
@override
+String toString() {
+  return 'PathKey(key: $key, subscription: ${subscription?.requestId})';
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/ProgressCallback.html b/dart/flutter_parse_sdk/ProgressCallback.html new file mode 100644 index 000000000..6b4e63ac7 --- /dev/null +++ b/dart/flutter_parse_sdk/ProgressCallback.html @@ -0,0 +1,133 @@ + + + + + + + + ProgressCallback typedef - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ProgressCallback
+ +
+ +
+
+
+ +
+
+

ProgressCallback typedef + +

+ +
+ ProgressCallback = + void Function(int count, int total) + +
+ + +
+

Callback to listen the progress for sending/receiving data.

+

count is the length of the bytes have been sent/received.

+

total is the content length of the response/request body. +1.When receiving data: + total is the request body length. +2.When receiving data: + total will be -1 if the size of the response body is not known in advance, + for example: response data is compressed with gzip or no content-length header.

+
+ + +
+

Implementation

+
typedef ProgressCallback = void Function(int count, int total);
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder-class-sidebar.html b/dart/flutter_parse_sdk/QueryBuilder-class-sidebar.html new file mode 100644 index 000000000..2f71f90af --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder-class-sidebar.html @@ -0,0 +1,83 @@ +
    + +
  1. Constructors
  2. +
  3. QueryBuilder
  4. +
  5. and
  6. +
  7. copy
  8. +
  9. name
  10. +
  11. nor
  12. +
  13. or
  14. + + + +
  15. + Properties +
  16. +
  17. extraOptions
  18. +
  19. hashCode
  20. +
  21. limiters
  22. +
  23. object
  24. +
  25. queries
  26. +
  27. runtimeType
  28. + +
  29. Methods
  30. +
  31. buildQueries
  32. +
  33. buildQuery
  34. +
  35. count
  36. +
  37. distinct
  38. +
  39. dontSelectKeys
  40. +
  41. excludeKeys
  42. +
  43. find
  44. +
  45. first
  46. +
  47. getExtraOptions
  48. +
  49. getLimiters
  50. +
  51. getLimitersRelational
  52. +
  53. includeObject
  54. +
  55. keysToReturn
  56. +
  57. noSuchMethod
  58. +
  59. orderByAscending
  60. +
  61. orderByDescending
  62. +
  63. query
  64. +
  65. regEx
  66. +
  67. selectKeys
  68. +
  69. setAmountToSkip
  70. +
  71. setLimit
  72. +
  73. setRedirectClassNameForKey
  74. +
  75. toString
  76. +
  77. whereArrayContainsAll
  78. +
  79. whereContainedIn
  80. +
  81. whereContains
  82. +
  83. whereContainsWholeWord
  84. +
  85. whereDoesNotMatchKeyInQuery
  86. +
  87. whereDoesNotMatchQuery
  88. +
  89. whereEndsWith
  90. +
  91. whereEquals
  92. +
  93. whereEqualTo
  94. +
  95. whereGreaterThan
  96. +
  97. whereGreaterThanOrEqualsTo
  98. +
  99. whereLessThan
  100. +
  101. whereLessThanOrEqualTo
  102. +
  103. whereMatchesKeyInQuery
  104. +
  105. whereMatchesQuery
  106. +
  107. whereNear
  108. +
  109. whereNotContainedIn
  110. +
  111. whereNotEqualTo
  112. +
  113. wherePolygonContains
  114. +
  115. whereRelatedTo
  116. +
  117. whereStartsWith
  118. +
  119. whereValueExists
  120. +
  121. whereWithinGeoBox
  122. +
  123. whereWithinKilometers
  124. +
  125. whereWithinMiles
  126. +
  127. whereWithinPolygon
  128. +
  129. whereWithinRadians
  130. + +
  131. Operators
  132. +
  133. operator ==
  134. + + + + + + +
diff --git a/dart/flutter_parse_sdk/QueryBuilder-class.html b/dart/flutter_parse_sdk/QueryBuilder-class.html new file mode 100644 index 000000000..631328009 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder-class.html @@ -0,0 +1,934 @@ + + + + + + + + QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
QueryBuilder
+ +
+ +
+
+
+ +
+
+

QueryBuilder<T extends ParseObject> class + +

+ + +
+

Class to create complex queries

+
+ + + + +
+

Constructors

+ +
+
+ QueryBuilder(T object) +
+
+ Class to create complex queries +
+
+ QueryBuilder.and(T object, List<QueryBuilder<T>> list) +
+
+ +
+
+ QueryBuilder.copy(QueryBuilder<T> query) +
+
+ +
factory
+
+
+ QueryBuilder.name(String classname) +
+
+ +
factory
+
+
+ QueryBuilder.nor(T object, List<QueryBuilder<T>> list) +
+
+ +
+
+ QueryBuilder.or(T object, List<QueryBuilder<T>> list) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ extraOptions + Map<String, dynamic> + +
+
+ +
final
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ limiters + Map<String, dynamic> + +
+
+ +
final
+ +
+ +
+ object + ↔ T + +
+
+ +
getter/setter pair
+ +
+ +
+ queries + List<MapEntry<String, dynamic>> + +
+
+ +
getter/setter pair
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ buildQueries(List<MapEntry<String, dynamic>> queries) + String + + + +
+
+ Runs through all queries and adds them to a query string + + +
+ +
+ buildQuery() + String + + + +
+
+ Builds the query for Parse + + +
+ +
+ count() + Future<ParseResponse> + + + +
+
+ Counts the number of objects that match this query + + +
+ +
+ distinct<U extends ParseObject>(String className) + Future<ParseResponse> + + + +
+
+ + + +
+ +
+ dontSelectKeys(String column, dynamic value) + → void + + + +
+
+ Returns an object where the String column doesn't select + + +
+ +
+ excludeKeys(List<String> keys) + → void + + + +
+
+ Exclude specific fields from the returned query + + +
+ +
+ find() + Future<List<T>> + + + +
+
+ Find the objects that satisfy the query. +Returns an empty list if no objects are found. + + +
+ +
+ first() + Future<T?> + + + +
+
+ Find the first object that satisfies the query. +Returns null, if no object is found. + + +
+ +
+ getExtraOptions(Map<String, dynamic> map) + String + + + +
+
+ Adds extra options to the query + + +
+ +
+ getLimiters(Map<String, dynamic> map) + String + + + +
+
+ Adds the limiters to the query, i.e. skip=10, limit=10 + + +
+ +
+ getLimitersRelational(Map<String, dynamic> map) + String + + + +
+
+ Adds the limiters to the query relational, i.e. skip=10, limit=10 + + +
+ +
+ includeObject(List<String> objectTypes) + → void + + + +
+
+ Includes other ParseObjects stored as a Pointer + + +
+ +
+ keysToReturn(List<String> keys) + → void + + + +
+
+ Define which keys in an object to return. + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ orderByAscending(String order) + → void + + + +
+
+ Sorts the results in ascending order. + + +
+ +
+ orderByDescending(String order) + → void + + + +
+
+ Sorts the results descending order. + + +
+ +
+ query<U extends ParseObject>({ProgressCallback? progressCallback}) + Future<ParseResponse> + + + +
+
+ Finishes the query and calls the server + + +
+ +
+ regEx(String column, String value) + → void + + + +
+
+ Returns an object where the String column has a regEx performed on, +this can include ^StringsWith, or ^EndsWith. This can be manipulated to the users desire + + +
+ +
+ selectKeys(String column, dynamic value) + → void + + + +
+
+ Returns an object where the String column contains select + + +
+ +
+ setAmountToSkip(int skip) + → void + + + +
+
+ Useful for pagination, skips int amount of results + + +
+ +
+ setLimit(int limit) + → void + + + +
+
+ Adds a limit to amount of results return from Parse + + +
+ +
+ setRedirectClassNameForKey(String key) + → void + + + +
+
+ Used by ParseRelation getQuery() + + +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+ whereArrayContainsAll(String column, List value) + → void + + + +
+
+ Returns an object where the String column contains all + + +
+ +
+ whereContainedIn(String column, List value) + → void + + + +
+
+ Returns an object where the String column is containedIn + + +
+ +
+ whereContains(String column, String substring, {bool caseSensitive = false}) + → void + + + +
+
+ Add a constraint for finding String values that contain the provided +substring + + +
+ +
+ whereContainsWholeWord(String column, String searchTerm, {bool caseSensitive = false, bool orderByScore = true, bool diacriticSensitive = false}) + → void + + + +
+
+ Powerful search for containing whole words. This search is much quicker +than regex and can search for whole words including whether they are case +sensitive or not. This search can also order by the score of the search + + +
+ +
+ whereDoesNotMatchKeyInQuery<E extends ParseObject>(String column, String keyInQuery, QueryBuilder<E> query) + → void + + + +
+
+ Add a constraint to the query that requires a particular key's value does not match any value for a key in the results of another ParseQuery + + +
+ +
+ whereDoesNotMatchQuery<E extends ParseObject>(String column, QueryBuilder<E> query) + → void + + + +
+
+ Add a constraint to the query that requires a particular key's value does not match another QueryBuilder + + +
+ +
+ whereEndsWith(String column, String prefix, {bool caseSensitive = false}) + → void + + + +
+
+ Add a constraint for finding objects where the String value in column +ends with prefix + + +
+ +
+ whereEquals(String where) + → void + + + +
+
+ Creates a query based on where + + +
+ +
+ whereEqualTo(String column, dynamic value) + → void + + + +
+
+ Add a constraint to the query that requires a particular column's value +to be equal to the provided value + + +
+ +
+ whereGreaterThan(String column, dynamic value) + → void + + + +
+
+ Returns an object where the String column contains a value greater +than value + + +
+ +
+ whereGreaterThanOrEqualsTo(String column, dynamic value) + → void + + + +
+
+ Returns an object where the String column contains a value greater +than equal to value + + +
+ +
+ whereLessThan(String column, dynamic value) + → void + + + +
+
+ Returns an object where the String column contains a value less than +value + + +
+ +
+ whereLessThanOrEqualTo(String column, dynamic value) + → void + + + +
+
+ Returns an object where the String column contains a value less or equal +to than value + + +
+ +
+ whereMatchesKeyInQuery<E extends ParseObject>(String column, String keyInQuery, QueryBuilder<E> query) + → void + + + +
+
+ Add a constraint to the query that requires a particular key's value matches a value for a key in the results of another ParseQuery. + + +
+ +
+ whereMatchesQuery<E extends ParseObject>(String column, QueryBuilder<E> query) + → void + + + +
+
+ Add a constraint to the query that requires a particular key's value match another QueryBuilder + + +
+ +
+ whereNear(String column, ParseGeoPoint point) + → void + + + +
+
+ Returns an objects with key point values near the point given + + +
+ +
+ whereNotContainedIn(String column, List value) + → void + + + +
+
+ Returns an object where the String column is notContainedIn + + +
+ +
+ whereNotEqualTo(String column, dynamic value) + → void + + + +
+
+ Add a constraint to the query that requires a particular column's value +to be not equal to the provided value + + +
+ +
+ wherePolygonContains(String column, ParseGeoPoint point) + → void + + + +
+
+ Add a constraint to the query that requires a particular key's coordinates that contains a point + + +
+ +
+ whereRelatedTo(String column, String className, String objectId) + → void + + + +
+
+ Retrieves related objets where String column is a relation field to the class String className + + +
+ +
+ whereStartsWith(String column, String prefix, {bool caseSensitive = false}) + → void + + + +
+
+ Add a constraint for finding objects where the String value in column +starts with prefix + + +
+ +
+ whereValueExists(String column, bool value) + → void + + + +
+
+ Returns an object where the String column for the object has data correctly entered/saved + + +
+ +
+ whereWithinGeoBox(String column, ParseGeoPoint southwest, ParseGeoPoint northeast) + → void + + + +
+
+ Returns an object with key point values contained within a given rectangular geographic bounding box. + + +
+ +
+ whereWithinKilometers(String column, ParseGeoPoint point, double maxDistance) + → void + + + +
+
+ Returns an object with key point values near the point given and within the maximum distance given. + + +
+ +
+ whereWithinMiles(String column, ParseGeoPoint point, double maxDistance) + → void + + + +
+
+ Returns an object with key point values near the point given and within the maximum distance given. + + +
+ +
+ whereWithinPolygon(String column, List<ParseGeoPoint> points) + → void + + + +
+
+ Return an object with key coordinates be contained within and on the bounds of a given polygon. +Supports closed and open (last point is connected to first) paths +Polygon must have at least 3 points + + +
+ +
+ whereWithinRadians(String column, ParseGeoPoint point, double maxDistance) + → void + + + +
+
+ Returns an object with key point values near the point given and within the maximum distance given. + + +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/QueryBuilder.and.html b/dart/flutter_parse_sdk/QueryBuilder/QueryBuilder.and.html new file mode 100644 index 000000000..1c5f92343 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/QueryBuilder.and.html @@ -0,0 +1,128 @@ + + + + + + + + QueryBuilder.and constructor - QueryBuilder - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
QueryBuilder.and
+ +
+ +
+
+
+ +
+
+

QueryBuilder<T extends ParseObject>.and constructor +

+ +
+ + QueryBuilder<T extends ParseObject>.and(
  1. T object,
  2. +
  3. List<QueryBuilder<T>> list
  4. +
) +
+ + + + + +
+

Implementation

+
QueryBuilder.and(this.object, List<QueryBuilder<T>> list) {
+  _constructorInitializer(query: '"\$and":[', list: list);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/QueryBuilder.copy.html b/dart/flutter_parse_sdk/QueryBuilder/QueryBuilder.copy.html new file mode 100644 index 000000000..3cc8ae419 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/QueryBuilder.copy.html @@ -0,0 +1,134 @@ + + + + + + + + QueryBuilder.copy constructor - QueryBuilder - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
QueryBuilder.copy
+ +
+ +
+
+
+ +
+
+

QueryBuilder<T extends ParseObject>.copy constructor +

+ +
+ + QueryBuilder<T extends ParseObject>.copy(
  1. QueryBuilder<T> query
  2. +
) +
+ + + + + +
+

Implementation

+
factory QueryBuilder.copy(QueryBuilder<T> query) {
+  QueryBuilder<T> copy = QueryBuilder(query.object);
+  copy.queries = query.queries
+      .map((MapEntry<String, dynamic> entry) =>
+          MapEntry<String, dynamic>(entry.key, entry.value.toString()))
+      .toList();
+  query.limiters.forEach((String key, dynamic value) =>
+      copy.limiters.putIfAbsent(key, () => value.toString()));
+  return copy;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/QueryBuilder.html b/dart/flutter_parse_sdk/QueryBuilder/QueryBuilder.html new file mode 100644 index 000000000..148866054 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/QueryBuilder.html @@ -0,0 +1,128 @@ + + + + + + + + QueryBuilder constructor - QueryBuilder - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
QueryBuilder
+ +
+ +
+
+
+ +
+
+

QueryBuilder<T extends ParseObject> constructor +

+ +
+ + QueryBuilder<T extends ParseObject>(
  1. T object
  2. +
) +
+ + +
+

Class to create complex queries

+
+ + + +
+

Implementation

+
QueryBuilder(this.object) : super();
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/QueryBuilder.name.html b/dart/flutter_parse_sdk/QueryBuilder/QueryBuilder.name.html new file mode 100644 index 000000000..bcd27691d --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/QueryBuilder.name.html @@ -0,0 +1,127 @@ + + + + + + + + QueryBuilder.name constructor - QueryBuilder - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
QueryBuilder.name
+ +
+ +
+
+
+ +
+
+

QueryBuilder<T extends ParseObject>.name constructor +

+ +
+ + QueryBuilder<T extends ParseObject>.name(
  1. String classname
  2. +
) +
+ + + + + +
+

Implementation

+
factory QueryBuilder.name(String classname) {
+  return QueryBuilder(ParseCoreData.instance.createObject(classname) as T);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/QueryBuilder.nor.html b/dart/flutter_parse_sdk/QueryBuilder/QueryBuilder.nor.html new file mode 100644 index 000000000..88c27e664 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/QueryBuilder.nor.html @@ -0,0 +1,128 @@ + + + + + + + + QueryBuilder.nor constructor - QueryBuilder - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
QueryBuilder.nor
+ +
+ +
+
+
+ +
+
+

QueryBuilder<T extends ParseObject>.nor constructor +

+ +
+ + QueryBuilder<T extends ParseObject>.nor(
  1. T object,
  2. +
  3. List<QueryBuilder<T>> list
  4. +
) +
+ + + + + +
+

Implementation

+
QueryBuilder.nor(this.object, List<QueryBuilder<T>> list) {
+  _constructorInitializer(query: '"\$nor":[', list: list);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/QueryBuilder.or.html b/dart/flutter_parse_sdk/QueryBuilder/QueryBuilder.or.html new file mode 100644 index 000000000..d1a17e947 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/QueryBuilder.or.html @@ -0,0 +1,128 @@ + + + + + + + + QueryBuilder.or constructor - QueryBuilder - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
QueryBuilder.or
+ +
+ +
+
+
+ +
+
+

QueryBuilder<T extends ParseObject>.or constructor +

+ +
+ + QueryBuilder<T extends ParseObject>.or(
  1. T object,
  2. +
  3. List<QueryBuilder<T>> list
  4. +
) +
+ + + + + +
+

Implementation

+
QueryBuilder.or(this.object, List<QueryBuilder<T>> list) {
+  _constructorInitializer(query: '"\$or":[', list: list);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/buildQueries.html b/dart/flutter_parse_sdk/QueryBuilder/buildQueries.html new file mode 100644 index 000000000..485f1af6c --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/buildQueries.html @@ -0,0 +1,144 @@ + + + + + + + + buildQueries method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
buildQueries
+ +
+ +
+
+
+ +
+
+

buildQueries method +

+ +
+ + +String +buildQueries(
  1. List<MapEntry<String, dynamic>> queries
  2. +
) + + + +
+ +
+

Runs through all queries and adds them to a query string

+
+ + + +
+

Implementation

+
String buildQueries(List<MapEntry<String, dynamic>> queries) {
+  String queryBuilder = '';
+
+  for (final MapEntry<String, dynamic> item in queries) {
+    if (item == queries.first) {
+      queryBuilder += item.value;
+    } else {
+      queryBuilder += ',${item.value}';
+    }
+  }
+
+  return queryBuilder;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/buildQuery.html b/dart/flutter_parse_sdk/QueryBuilder/buildQuery.html new file mode 100644 index 000000000..7cba27e4e --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/buildQuery.html @@ -0,0 +1,134 @@ + + + + + + + + buildQuery method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
buildQuery
+ +
+ +
+
+
+ +
+
+

buildQuery method +

+ +
+ + +String +buildQuery() + + + +
+ +
+

Builds the query for Parse

+
+ + + +
+

Implementation

+
String buildQuery() {
+  queries = _checkForMultipleColumnInstances(queries);
+  return 'where={${buildQueries(queries)}}${getLimiters(limiters)}${getExtraOptions(extraOptions)}';
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/count.html b/dart/flutter_parse_sdk/QueryBuilder/count.html new file mode 100644 index 000000000..78853439f --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/count.html @@ -0,0 +1,133 @@ + + + + + + + + count method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
count
+ +
+ +
+
+
+ +
+
+

count method +

+ +
+ + +Future<ParseResponse> +count() + + + +
+ +
+

Counts the number of objects that match this query

+
+ + + +
+

Implementation

+
Future<ParseResponse> count() async {
+  return object.query(_buildQueryCount());
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/distinct.html b/dart/flutter_parse_sdk/QueryBuilder/distinct.html new file mode 100644 index 000000000..6e257c583 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/distinct.html @@ -0,0 +1,133 @@ + + + + + + + + distinct method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
distinct
+ +
+ +
+
+
+ +
+
+

distinct<U extends ParseObject> method +

+ +
+ + +Future<ParseResponse> +distinct<U extends ParseObject>(
  1. String className
  2. +
) + + + +
+ + + + +
+

Implementation

+
Future<ParseResponse> distinct<U extends ParseObject>(
+    String className) async {
+  final String queryString = 'distinct=$className';
+  return object.distinct<U>(queryString);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/dontSelectKeys.html b/dart/flutter_parse_sdk/QueryBuilder/dontSelectKeys.html new file mode 100644 index 000000000..3f3ab4f2f --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/dontSelectKeys.html @@ -0,0 +1,136 @@ + + + + + + + + dontSelectKeys method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
dontSelectKeys
+ +
+ +
+
+
+ +
+
+

dontSelectKeys method +

+ +
+ + +void +dontSelectKeys(
  1. String column,
  2. +
  3. dynamic value
  4. +
) + + + +
+ +
+

Returns an object where the String column doesn't select

+
+ + + +
+

Implementation

+
void dontSelectKeys(String column, dynamic value) {
+  queries.add(_buildQueryWithColumnValueAndOperator(
+      MapEntry<String, dynamic>(column, value), '\$dontSelect'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/excludeKeys.html b/dart/flutter_parse_sdk/QueryBuilder/excludeKeys.html new file mode 100644 index 000000000..2ed3b910d --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/excludeKeys.html @@ -0,0 +1,135 @@ + + + + + + + + excludeKeys method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
excludeKeys
+ +
+ +
+
+
+ +
+
+

excludeKeys method +

+ +
+ + +void +excludeKeys(
  1. List<String> keys
  2. +
) + + + +
+ +
+

Exclude specific fields from the returned query

+

String keys not will return the columns of a result you want the data for

+
+ + + +
+

Implementation

+
void excludeKeys(List<String> keys) {
+  limiters['excludeKeys'] = concatenateArray(keys);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/extraOptions.html b/dart/flutter_parse_sdk/QueryBuilder/extraOptions.html new file mode 100644 index 000000000..566291ef5 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/extraOptions.html @@ -0,0 +1,125 @@ + + + + + + + + extraOptions property - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
extraOptions
+ +
+ +
+
+
+ +
+
+

extraOptions property +

+ +
+ + Map<String, dynamic> + extraOptions +
final
+ +
+ + + +
+

Implementation

+
final Map<String, dynamic> extraOptions = <String, dynamic>{};
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/find.html b/dart/flutter_parse_sdk/QueryBuilder/find.html new file mode 100644 index 000000000..1283af7f1 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/find.html @@ -0,0 +1,138 @@ + + + + + + + + find method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
find
+ +
+ +
+
+
+ +
+
+

find method +

+ +
+ + +Future<List<T>> +find() + + + +
+ +
+

Find the objects that satisfy the query. +Returns an empty list if no objects are found.

+
+ + + +
+

Implementation

+
Future<List<T>> find() async {
+  ParseResponse parseResponse = await query();
+  if (parseResponse.success) {
+    return parseResponse.results?.map((e) => e as T).toList() ?? <T>[];
+  }
+  throw parseResponse.error ?? ParseError();
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/first.html b/dart/flutter_parse_sdk/QueryBuilder/first.html new file mode 100644 index 000000000..d12eaa205 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/first.html @@ -0,0 +1,139 @@ + + + + + + + + first method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
first
+ +
+ +
+
+
+ +
+
+

first method +

+ +
+ + +Future<T?> +first() + + + +
+ +
+

Find the first object that satisfies the query. +Returns null, if no object is found.

+
+ + + +
+

Implementation

+
Future<T?> first() async {
+  ParseResponse parseResponse =
+      await (QueryBuilder.copy(this)..setLimit(1)).query();
+  if (parseResponse.success) {
+    return parseResponse.results?.first;
+  }
+  throw parseResponse.error ?? ParseError();
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/getExtraOptions.html b/dart/flutter_parse_sdk/QueryBuilder/getExtraOptions.html new file mode 100644 index 000000000..e1b4e1e68 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/getExtraOptions.html @@ -0,0 +1,138 @@ + + + + + + + + getExtraOptions method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getExtraOptions
+ +
+ +
+
+
+ +
+
+

getExtraOptions method +

+ +
+ + +String +getExtraOptions(
  1. Map<String, dynamic> map
  2. +
) + + + +
+ +
+

Adds extra options to the query

+
+ + + +
+

Implementation

+
String getExtraOptions(Map<String, dynamic> map) {
+  String result = '';
+  map.forEach((String key, dynamic value) {
+    result = '$result&$key=$value';
+  });
+  return result;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/getLimiters.html b/dart/flutter_parse_sdk/QueryBuilder/getLimiters.html new file mode 100644 index 000000000..4cccd5fed --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/getLimiters.html @@ -0,0 +1,138 @@ + + + + + + + + getLimiters method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getLimiters
+ +
+ +
+
+
+ +
+
+

getLimiters method +

+ +
+ + +String +getLimiters(
  1. Map<String, dynamic> map
  2. +
) + + + +
+ +
+

Adds the limiters to the query, i.e. skip=10, limit=10

+
+ + + +
+

Implementation

+
String getLimiters(Map<String, dynamic> map) {
+  String result = '';
+  map.forEach((String key, dynamic value) {
+    result = '$result&$key=$value';
+  });
+  return result;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/getLimitersRelational.html b/dart/flutter_parse_sdk/QueryBuilder/getLimitersRelational.html new file mode 100644 index 000000000..4ac98dc89 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/getLimitersRelational.html @@ -0,0 +1,142 @@ + + + + + + + + getLimitersRelational method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getLimitersRelational
+ +
+ +
+
+
+ +
+
+

getLimitersRelational method +

+ +
+ + +String +getLimitersRelational(
  1. Map<String, dynamic> map
  2. +
) + + + +
+ +
+

Adds the limiters to the query relational, i.e. skip=10, limit=10

+
+ + + +
+

Implementation

+
String getLimitersRelational(Map<String, dynamic> map) {
+  String result = '';
+  map.forEach((String key, dynamic value) {
+    if (result.isNotEmpty) {
+      result = '$result,"$key":$value';
+    } else {
+      result = '"$key":$value';
+    }
+  });
+  return result;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/includeObject.html b/dart/flutter_parse_sdk/QueryBuilder/includeObject.html new file mode 100644 index 000000000..5afd851d0 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/includeObject.html @@ -0,0 +1,134 @@ + + + + + + + + includeObject method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
includeObject
+ +
+ +
+
+
+ +
+
+

includeObject method +

+ +
+ + +void +includeObject(
  1. List<String> objectTypes
  2. +
) + + + +
+ +
+

Includes other ParseObjects stored as a Pointer

+
+ + + +
+

Implementation

+
void includeObject(List<String> objectTypes) {
+  limiters['include'] = concatenateArray(objectTypes);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/keysToReturn.html b/dart/flutter_parse_sdk/QueryBuilder/keysToReturn.html new file mode 100644 index 000000000..e2751f50c --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/keysToReturn.html @@ -0,0 +1,136 @@ + + + + + + + + keysToReturn method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keysToReturn
+ +
+ +
+
+
+ +
+
+

keysToReturn method +

+ +
+ + +void +keysToReturn(
  1. List<String> keys
  2. +
) + + + +
+ +
+

Define which keys in an object to return.

+

String keys will only return the columns of a result you want the data for, +this is useful for large objects

+
+ + + +
+

Implementation

+
void keysToReturn(List<String> keys) {
+  limiters['keys'] = concatenateArray(keys);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/limiters.html b/dart/flutter_parse_sdk/QueryBuilder/limiters.html new file mode 100644 index 000000000..7543407f3 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/limiters.html @@ -0,0 +1,125 @@ + + + + + + + + limiters property - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
limiters
+ +
+ +
+
+
+ +
+
+

limiters property +

+ +
+ + Map<String, dynamic> + limiters +
final
+ +
+ + + +
+

Implementation

+
final Map<String, dynamic> limiters = <String, dynamic>{};
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/object.html b/dart/flutter_parse_sdk/QueryBuilder/object.html new file mode 100644 index 000000000..56f54e8fe --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/object.html @@ -0,0 +1,125 @@ + + + + + + + + object property - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
object
+ +
+ +
+
+
+ +
+
+

object property +

+ +
+ + T + object +
getter/setter pair
+ +
+ + + +
+

Implementation

+
T object;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/orderByAscending.html b/dart/flutter_parse_sdk/QueryBuilder/orderByAscending.html new file mode 100644 index 000000000..059846b00 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/orderByAscending.html @@ -0,0 +1,140 @@ + + + + + + + + orderByAscending method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
orderByAscending
+ +
+ +
+
+
+ +
+
+

orderByAscending method +

+ +
+ + +void +orderByAscending(
  1. String order
  2. +
) + + + +
+ +
+

Sorts the results in ascending order.

+

String order will be the column of the table that the results are +ordered by

+
+ + + +
+

Implementation

+
void orderByAscending(String order) {
+  if (!limiters.containsKey('order')) {
+    limiters['order'] = order;
+  } else {
+    limiters['order'] = limiters['order'] + ',' + order;
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/orderByDescending.html b/dart/flutter_parse_sdk/QueryBuilder/orderByDescending.html new file mode 100644 index 000000000..5daf4b60b --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/orderByDescending.html @@ -0,0 +1,140 @@ + + + + + + + + orderByDescending method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
orderByDescending
+ +
+ +
+
+
+ +
+
+

orderByDescending method +

+ +
+ + +void +orderByDescending(
  1. String order
  2. +
) + + + +
+ +
+

Sorts the results descending order.

+

String order will be the column of the table that the results are +ordered by

+
+ + + +
+

Implementation

+
void orderByDescending(String order) {
+  if (!limiters.containsKey('order')) {
+    limiters['order'] = '-$order';
+  } else {
+    limiters['order'] = limiters['order'] + ',' + '-$order';
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/queries.html b/dart/flutter_parse_sdk/QueryBuilder/queries.html new file mode 100644 index 000000000..4d97471f7 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/queries.html @@ -0,0 +1,125 @@ + + + + + + + + queries property - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
queries
+ +
+ +
+
+
+ +
+
+

queries property +

+ +
+ + List<MapEntry<String, dynamic>> + queries +
getter/setter pair
+ +
+ + + +
+

Implementation

+
List<MapEntry<String, dynamic>> queries = <MapEntry<String, dynamic>>[];
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/query.html b/dart/flutter_parse_sdk/QueryBuilder/query.html new file mode 100644 index 000000000..7770a11c0 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/query.html @@ -0,0 +1,139 @@ + + + + + + + + query method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
query
+ +
+ +
+
+
+ +
+
+

query<U extends ParseObject> method +

+ +
+ + +Future<ParseResponse> +query<U extends ParseObject>(
  1. {ProgressCallback? progressCallback}
  2. +
) + + + +
+ +
+

Finishes the query and calls the server

+

Make sure to call this after defining your queries

+
+ + + +
+

Implementation

+
Future<ParseResponse> query<U extends ParseObject>(
+    {ProgressCallback? progressCallback}) async {
+  return object.query<U>(
+    buildQuery(),
+    progressCallback: progressCallback,
+  );
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/regEx.html b/dart/flutter_parse_sdk/QueryBuilder/regEx.html new file mode 100644 index 000000000..f9d639e02 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/regEx.html @@ -0,0 +1,137 @@ + + + + + + + + regEx method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
regEx
+ +
+ +
+
+
+ +
+
+

regEx method +

+ +
+ + +void +regEx(
  1. String column,
  2. +
  3. String value
  4. +
) + + + +
+ +
+

Returns an object where the String column has a regEx performed on, +this can include ^StringsWith, or ^EndsWith. This can be manipulated to the users desire

+
+ + + +
+

Implementation

+
void regEx(String column, String value) {
+  queries.add(_buildQueryWithColumnValueAndOperator(
+      MapEntry<String, dynamic>(column, value), '\$regex'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/selectKeys.html b/dart/flutter_parse_sdk/QueryBuilder/selectKeys.html new file mode 100644 index 000000000..c9fa0b6ba --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/selectKeys.html @@ -0,0 +1,136 @@ + + + + + + + + selectKeys method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
selectKeys
+ +
+ +
+
+
+ +
+
+

selectKeys method +

+ +
+ + +void +selectKeys(
  1. String column,
  2. +
  3. dynamic value
  4. +
) + + + +
+ +
+

Returns an object where the String column contains select

+
+ + + +
+

Implementation

+
void selectKeys(String column, dynamic value) {
+  queries.add(_buildQueryWithColumnValueAndOperator(
+      MapEntry<String, dynamic>(column, value), '\$select'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/setAmountToSkip.html b/dart/flutter_parse_sdk/QueryBuilder/setAmountToSkip.html new file mode 100644 index 000000000..6b5e6f335 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/setAmountToSkip.html @@ -0,0 +1,134 @@ + + + + + + + + setAmountToSkip method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setAmountToSkip
+ +
+ +
+
+
+ +
+
+

setAmountToSkip method +

+ +
+ + +void +setAmountToSkip(
  1. int skip
  2. +
) + + + +
+ +
+

Useful for pagination, skips int amount of results

+
+ + + +
+

Implementation

+
void setAmountToSkip(int skip) {
+  limiters['skip'] = skip;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/setLimit.html b/dart/flutter_parse_sdk/QueryBuilder/setLimit.html new file mode 100644 index 000000000..93e2a64c6 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/setLimit.html @@ -0,0 +1,134 @@ + + + + + + + + setLimit method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setLimit
+ +
+ +
+
+
+ +
+
+

setLimit method +

+ +
+ + +void +setLimit(
  1. int limit
  2. +
) + + + +
+ +
+

Adds a limit to amount of results return from Parse

+
+ + + +
+

Implementation

+
void setLimit(int limit) {
+  limiters['limit'] = limit;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/setRedirectClassNameForKey.html b/dart/flutter_parse_sdk/QueryBuilder/setRedirectClassNameForKey.html new file mode 100644 index 000000000..7091e2325 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/setRedirectClassNameForKey.html @@ -0,0 +1,134 @@ + + + + + + + + setRedirectClassNameForKey method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setRedirectClassNameForKey
+ +
+ +
+
+
+ +
+
+

setRedirectClassNameForKey method +

+ +
+ + +void +setRedirectClassNameForKey(
  1. String key
  2. +
) + + + +
+ +
+

Used by ParseRelation getQuery()

+
+ + + +
+

Implementation

+
void setRedirectClassNameForKey(String key) {
+  extraOptions['redirectClassNameForKey'] = key;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereArrayContainsAll.html b/dart/flutter_parse_sdk/QueryBuilder/whereArrayContainsAll.html new file mode 100644 index 000000000..bb748d796 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereArrayContainsAll.html @@ -0,0 +1,136 @@ + + + + + + + + whereArrayContainsAll method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereArrayContainsAll
+ +
+ +
+
+
+ +
+
+

whereArrayContainsAll method +

+ +
+ + +void +whereArrayContainsAll(
  1. String column,
  2. +
  3. List value
  4. +
) + + + +
+ +
+

Returns an object where the String column contains all

+
+ + + +
+

Implementation

+
void whereArrayContainsAll(String column, List<dynamic> value) {
+  queries.add(_buildQueryWithColumnValueAndOperator(
+      MapEntry<String, dynamic>(column, value), '\$all'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereContainedIn.html b/dart/flutter_parse_sdk/QueryBuilder/whereContainedIn.html new file mode 100644 index 000000000..33c2c40d9 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereContainedIn.html @@ -0,0 +1,136 @@ + + + + + + + + whereContainedIn method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereContainedIn
+ +
+ +
+
+
+ +
+
+

whereContainedIn method +

+ +
+ + +void +whereContainedIn(
  1. String column,
  2. +
  3. List value
  4. +
) + + + +
+ +
+

Returns an object where the String column is containedIn

+
+ + + +
+

Implementation

+
void whereContainedIn(String column, List<dynamic> value) {
+  queries.add(_buildQueryWithColumnValueAndOperator(
+      MapEntry<String, dynamic>(column, value), '\$in'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereContains.html b/dart/flutter_parse_sdk/QueryBuilder/whereContains.html new file mode 100644 index 000000000..74ed6c405 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereContains.html @@ -0,0 +1,149 @@ + + + + + + + + whereContains method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereContains
+ +
+ +
+
+
+ +
+
+

whereContains method +

+ +
+ + +void +whereContains(
  1. String column,
  2. +
  3. String substring,
  4. +
  5. {bool caseSensitive = false}
  6. +
) + + + +
+ +
+

Add a constraint for finding String values that contain the provided +substring

+
+ + + +
+

Implementation

+
void whereContains(
+  String column,
+  String substring, {
+  bool caseSensitive = false,
+}) {
+  substring = Uri.encodeComponent(substring);
+
+  if (caseSensitive) {
+    queries.add(MapEntry<String, dynamic>(
+        _singleQuery, '"$column":{"\$regex": "$substring"}'));
+  } else {
+    queries.add(MapEntry<String, dynamic>(_singleQuery,
+        '"$column":{"\$regex": "$substring", "\$options": "i"}'));
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereContainsWholeWord.html b/dart/flutter_parse_sdk/QueryBuilder/whereContainsWholeWord.html new file mode 100644 index 000000000..690693373 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereContainsWholeWord.html @@ -0,0 +1,153 @@ + + + + + + + + whereContainsWholeWord method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereContainsWholeWord
+ +
+ +
+
+
+ +
+
+

whereContainsWholeWord method +

+ +
+ + +void +whereContainsWholeWord(
  1. String column,
  2. +
  3. String searchTerm,
  4. +
  5. {bool caseSensitive = false,
  6. +
  7. bool orderByScore = true,
  8. +
  9. bool diacriticSensitive = false}
  10. +
) + + + +
+ +
+

Powerful search for containing whole words. This search is much quicker +than regex and can search for whole words including whether they are case +sensitive or not. This search can also order by the score of the search

+
+ + + +
+

Implementation

+
void whereContainsWholeWord(
+  String column,
+  String searchTerm, {
+  bool caseSensitive = false,
+  bool orderByScore = true,
+  bool diacriticSensitive = false,
+}) {
+  searchTerm = Uri.encodeComponent(searchTerm);
+
+  queries.add(MapEntry<String, dynamic>(_singleQuery,
+      '"$column":{"\$text":{"\$search":{"\$term": "$searchTerm", "\$caseSensitive": $caseSensitive , "\$diacriticSensitive": $diacriticSensitive }}}'));
+  if (orderByScore) {
+    orderByAscending('\$score');
+    keysToReturn(['\$score']);
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereDoesNotMatchKeyInQuery.html b/dart/flutter_parse_sdk/QueryBuilder/whereDoesNotMatchKeyInQuery.html new file mode 100644 index 000000000..0017dcfce --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereDoesNotMatchKeyInQuery.html @@ -0,0 +1,151 @@ + + + + + + + + whereDoesNotMatchKeyInQuery method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereDoesNotMatchKeyInQuery
+ +
+ +
+
+
+ +
+
+

whereDoesNotMatchKeyInQuery<E extends ParseObject> method +

+ +
+ + +void +whereDoesNotMatchKeyInQuery<E extends ParseObject>(
  1. String column,
  2. +
  3. String keyInQuery,
  4. +
  5. QueryBuilder<E> query
  6. +
) + + + +
+ +
+

Add a constraint to the query that requires a particular key's value does not match any value for a key in the results of another ParseQuery

+
+ + + +
+

Implementation

+
void whereDoesNotMatchKeyInQuery<E extends ParseObject>(
+    String column, String keyInQuery, QueryBuilder<E> query) {
+  if (query.queries.isEmpty) {
+    throw ArgumentError('query conditions is required');
+  }
+  if (limiters.containsKey('order')) {
+    throw ArgumentError('order is not allowed');
+  }
+  if (limiters.containsKey('include')) {
+    throw ArgumentError('include is not allowed');
+  }
+
+  final String inQuery =
+      query._buildQueryRelationalKey(query.object.parseClassName, keyInQuery);
+
+  queries.add(MapEntry<String, dynamic>(
+      _singleQuery, '"$column":{"\$dontSelect":$inQuery}'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereDoesNotMatchQuery.html b/dart/flutter_parse_sdk/QueryBuilder/whereDoesNotMatchQuery.html new file mode 100644 index 000000000..e08fe9c71 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereDoesNotMatchQuery.html @@ -0,0 +1,140 @@ + + + + + + + + whereDoesNotMatchQuery method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereDoesNotMatchQuery
+ +
+ +
+
+
+ +
+
+

whereDoesNotMatchQuery<E extends ParseObject> method +

+ +
+ + +void +whereDoesNotMatchQuery<E extends ParseObject>(
  1. String column,
  2. +
  3. QueryBuilder<E> query
  4. +
) + + + +
+ +
+

Add a constraint to the query that requires a particular key's value does not match another QueryBuilder

+
+ + + +
+

Implementation

+
void whereDoesNotMatchQuery<E extends ParseObject>(
+    String column, QueryBuilder<E> query) {
+  final String inQuery =
+      query._buildQueryRelational(query.object.parseClassName);
+
+  queries.add(MapEntry<String, dynamic>(
+      _singleQuery, '"$column":{"\$notInQuery":$inQuery}'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereEndsWith.html b/dart/flutter_parse_sdk/QueryBuilder/whereEndsWith.html new file mode 100644 index 000000000..8c25a0a04 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereEndsWith.html @@ -0,0 +1,149 @@ + + + + + + + + whereEndsWith method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereEndsWith
+ +
+ +
+
+
+ +
+
+

whereEndsWith method +

+ +
+ + +void +whereEndsWith(
  1. String column,
  2. +
  3. String prefix,
  4. +
  5. {bool caseSensitive = false}
  6. +
) + + + +
+ +
+

Add a constraint for finding objects where the String value in column +ends with prefix

+
+ + + +
+

Implementation

+
void whereEndsWith(
+  String column,
+  String prefix, {
+  bool caseSensitive = false,
+}) {
+  prefix = Uri.encodeComponent(prefix);
+
+  if (caseSensitive) {
+    queries.add(MapEntry<String, dynamic>(
+        _singleQuery, '"$column":{"\$regex": "$prefix\$"}'));
+  } else {
+    queries.add(MapEntry<String, dynamic>(_singleQuery,
+        '"$column":{"\$regex": "$prefix\$", "\$options": "i"}'));
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereEqualTo.html b/dart/flutter_parse_sdk/QueryBuilder/whereEqualTo.html new file mode 100644 index 000000000..53d05f9e0 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereEqualTo.html @@ -0,0 +1,141 @@ + + + + + + + + whereEqualTo method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereEqualTo
+ +
+ +
+
+
+ +
+
+

whereEqualTo method +

+ +
+ + +void +whereEqualTo(
  1. String column,
  2. +
  3. dynamic value
  4. +
) + + + +
+ +
+

Add a constraint to the query that requires a particular column's value +to be equal to the provided value

+
+ + + +
+

Implementation

+
void whereEqualTo(String column, dynamic value) {
+  if (value is String) {
+    value = Uri.encodeComponent(value);
+  }
+
+  queries.add(_buildQueryWithColumnValueAndOperator(
+      MapEntry<String, dynamic>(column, value), _noOperatorNeeded));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereEquals.html b/dart/flutter_parse_sdk/QueryBuilder/whereEquals.html new file mode 100644 index 000000000..cebca9d8d --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereEquals.html @@ -0,0 +1,134 @@ + + + + + + + + whereEquals method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereEquals
+ +
+ +
+
+
+ +
+
+

whereEquals method +

+ +
+ + +void +whereEquals(
  1. String where
  2. +
) + + + +
+ +
+

Creates a query based on where

+
+ + + +
+

Implementation

+
void whereEquals(String where) {
+  limiters['where'] = where;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereGreaterThan.html b/dart/flutter_parse_sdk/QueryBuilder/whereGreaterThan.html new file mode 100644 index 000000000..a7a09ec66 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereGreaterThan.html @@ -0,0 +1,137 @@ + + + + + + + + whereGreaterThan method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereGreaterThan
+ +
+ +
+
+
+ +
+
+

whereGreaterThan method +

+ +
+ + +void +whereGreaterThan(
  1. String column,
  2. +
  3. dynamic value
  4. +
) + + + +
+ +
+

Returns an object where the String column contains a value greater +than value

+
+ + + +
+

Implementation

+
void whereGreaterThan(String column, dynamic value) {
+  queries.add(_buildQueryWithColumnValueAndOperator(
+      MapEntry<String, dynamic>(column, value), '\$gt'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereGreaterThanOrEqualsTo.html b/dart/flutter_parse_sdk/QueryBuilder/whereGreaterThanOrEqualsTo.html new file mode 100644 index 000000000..333eaa6f2 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereGreaterThanOrEqualsTo.html @@ -0,0 +1,137 @@ + + + + + + + + whereGreaterThanOrEqualsTo method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereGreaterThanOrEqualsTo
+ +
+ +
+
+
+ +
+
+

whereGreaterThanOrEqualsTo method +

+ +
+ + +void +whereGreaterThanOrEqualsTo(
  1. String column,
  2. +
  3. dynamic value
  4. +
) + + + +
+ +
+

Returns an object where the String column contains a value greater +than equal to value

+
+ + + +
+

Implementation

+
void whereGreaterThanOrEqualsTo(String column, dynamic value) {
+  queries.add(_buildQueryWithColumnValueAndOperator(
+      MapEntry<String, dynamic>(column, value), '\$gte'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereLessThan.html b/dart/flutter_parse_sdk/QueryBuilder/whereLessThan.html new file mode 100644 index 000000000..c5c9ee0a0 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereLessThan.html @@ -0,0 +1,137 @@ + + + + + + + + whereLessThan method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereLessThan
+ +
+ +
+
+
+ +
+
+

whereLessThan method +

+ +
+ + +void +whereLessThan(
  1. String column,
  2. +
  3. dynamic value
  4. +
) + + + +
+ +
+

Returns an object where the String column contains a value less than +value

+
+ + + +
+

Implementation

+
void whereLessThan(String column, dynamic value) {
+  queries.add(_buildQueryWithColumnValueAndOperator(
+      MapEntry<String, dynamic>(column, value), '\$lt'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereLessThanOrEqualTo.html b/dart/flutter_parse_sdk/QueryBuilder/whereLessThanOrEqualTo.html new file mode 100644 index 000000000..22d561b6b --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereLessThanOrEqualTo.html @@ -0,0 +1,137 @@ + + + + + + + + whereLessThanOrEqualTo method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereLessThanOrEqualTo
+ +
+ +
+
+
+ +
+
+

whereLessThanOrEqualTo method +

+ +
+ + +void +whereLessThanOrEqualTo(
  1. String column,
  2. +
  3. dynamic value
  4. +
) + + + +
+ +
+

Returns an object where the String column contains a value less or equal +to than value

+
+ + + +
+

Implementation

+
void whereLessThanOrEqualTo(String column, dynamic value) {
+  queries.add(_buildQueryWithColumnValueAndOperator(
+      MapEntry<String, dynamic>(column, value), '\$lte'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereMatchesKeyInQuery.html b/dart/flutter_parse_sdk/QueryBuilder/whereMatchesKeyInQuery.html new file mode 100644 index 000000000..e97d3a8e0 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereMatchesKeyInQuery.html @@ -0,0 +1,151 @@ + + + + + + + + whereMatchesKeyInQuery method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereMatchesKeyInQuery
+ +
+ +
+
+
+ +
+
+

whereMatchesKeyInQuery<E extends ParseObject> method +

+ +
+ + +void +whereMatchesKeyInQuery<E extends ParseObject>(
  1. String column,
  2. +
  3. String keyInQuery,
  4. +
  5. QueryBuilder<E> query
  6. +
) + + + +
+ +
+

Add a constraint to the query that requires a particular key's value matches a value for a key in the results of another ParseQuery.

+
+ + + +
+

Implementation

+
void whereMatchesKeyInQuery<E extends ParseObject>(
+    String column, String keyInQuery, QueryBuilder<E> query) {
+  if (query.queries.isEmpty) {
+    throw ArgumentError('query conditions is required');
+  }
+  if (limiters.containsKey('order')) {
+    throw ArgumentError('order is not allowed');
+  }
+  if (limiters.containsKey('include')) {
+    throw ArgumentError('include is not allowed');
+  }
+
+  final String inQuery =
+      query._buildQueryRelationalKey(query.object.parseClassName, keyInQuery);
+
+  queries.add(MapEntry<String, dynamic>(
+      _singleQuery, '"$column":{"\$select":$inQuery}'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereMatchesQuery.html b/dart/flutter_parse_sdk/QueryBuilder/whereMatchesQuery.html new file mode 100644 index 000000000..6f896f8ec --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereMatchesQuery.html @@ -0,0 +1,140 @@ + + + + + + + + whereMatchesQuery method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereMatchesQuery
+ +
+ +
+
+
+ +
+
+

whereMatchesQuery<E extends ParseObject> method +

+ +
+ + +void +whereMatchesQuery<E extends ParseObject>(
  1. String column,
  2. +
  3. QueryBuilder<E> query
  4. +
) + + + +
+ +
+

Add a constraint to the query that requires a particular key's value match another QueryBuilder

+
+ + + +
+

Implementation

+
void whereMatchesQuery<E extends ParseObject>(
+    String column, QueryBuilder<E> query) {
+  final String inQuery =
+      query._buildQueryRelational(query.object.parseClassName);
+
+  queries.add(MapEntry<String, dynamic>(
+      _singleQuery, '"$column":{"\$inQuery":$inQuery}'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereNear.html b/dart/flutter_parse_sdk/QueryBuilder/whereNear.html new file mode 100644 index 000000000..011c6f3b3 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereNear.html @@ -0,0 +1,138 @@ + + + + + + + + whereNear method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereNear
+ +
+ +
+
+
+ +
+
+

whereNear method +

+ +
+ + +void +whereNear(
  1. String column,
  2. +
  3. ParseGeoPoint point
  4. +
) + + + +
+ +
+

Returns an objects with key point values near the point given

+
+ + + +
+

Implementation

+
void whereNear(String column, ParseGeoPoint point) {
+  final double latitude = point.latitude;
+  final double longitude = point.longitude;
+  queries.add(MapEntry<String, dynamic>(_singleQuery,
+      '"$column":{"\$nearSphere":{"__type":"GeoPoint","latitude":$latitude,"longitude":$longitude}}'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereNotContainedIn.html b/dart/flutter_parse_sdk/QueryBuilder/whereNotContainedIn.html new file mode 100644 index 000000000..e4727536e --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereNotContainedIn.html @@ -0,0 +1,136 @@ + + + + + + + + whereNotContainedIn method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereNotContainedIn
+ +
+ +
+
+
+ +
+
+

whereNotContainedIn method +

+ +
+ + +void +whereNotContainedIn(
  1. String column,
  2. +
  3. List value
  4. +
) + + + +
+ +
+

Returns an object where the String column is notContainedIn

+
+ + + +
+

Implementation

+
void whereNotContainedIn(String column, List<dynamic> value) {
+  queries.add(_buildQueryWithColumnValueAndOperator(
+      MapEntry<String, dynamic>(column, value), '\$nin'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereNotEqualTo.html b/dart/flutter_parse_sdk/QueryBuilder/whereNotEqualTo.html new file mode 100644 index 000000000..56a0c61e0 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereNotEqualTo.html @@ -0,0 +1,141 @@ + + + + + + + + whereNotEqualTo method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereNotEqualTo
+ +
+ +
+
+
+ +
+
+

whereNotEqualTo method +

+ +
+ + +void +whereNotEqualTo(
  1. String column,
  2. +
  3. dynamic value
  4. +
) + + + +
+ +
+

Add a constraint to the query that requires a particular column's value +to be not equal to the provided value

+
+ + + +
+

Implementation

+
void whereNotEqualTo(String column, dynamic value) {
+  if (value is String) {
+    value = Uri.encodeComponent(value);
+  }
+
+  queries.add(_buildQueryWithColumnValueAndOperator(
+      MapEntry<String, dynamic>(column, value), '\$ne'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/wherePolygonContains.html b/dart/flutter_parse_sdk/QueryBuilder/wherePolygonContains.html new file mode 100644 index 000000000..c3609c6e6 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/wherePolygonContains.html @@ -0,0 +1,139 @@ + + + + + + + + wherePolygonContains method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
wherePolygonContains
+ +
+ +
+
+
+ +
+
+

wherePolygonContains method +

+ +
+ + +void +wherePolygonContains(
  1. String column,
  2. +
  3. ParseGeoPoint point
  4. +
) + + + +
+ +
+

Add a constraint to the query that requires a particular key's coordinates that contains a point

+
+ + + +
+

Implementation

+
void wherePolygonContains(String column, ParseGeoPoint point) {
+  final double latitude = point.latitude;
+  final double longitude = point.longitude;
+
+  queries.add(MapEntry<String, dynamic>(_singleQuery,
+      '"$column":{"\$geoIntersects":{"\$point":{"__type":"GeoPoint","latitude":$latitude,"longitude":$longitude}}}'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereRelatedTo.html b/dart/flutter_parse_sdk/QueryBuilder/whereRelatedTo.html new file mode 100644 index 000000000..012f13a9c --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereRelatedTo.html @@ -0,0 +1,137 @@ + + + + + + + + whereRelatedTo method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereRelatedTo
+ +
+ +
+
+
+ +
+
+

whereRelatedTo method +

+ +
+ + +void +whereRelatedTo(
  1. String column,
  2. +
  3. String className,
  4. +
  5. String objectId
  6. +
) + + + +
+ +
+

Retrieves related objets where String column is a relation field to the class String className

+
+ + + +
+

Implementation

+
void whereRelatedTo(String column, String className, String objectId) {
+  queries.add(MapEntry<String, dynamic>(_singleQuery,
+      '"\$relatedTo":{"object":{"__type":"Pointer","className":"$className","objectId":"$objectId"},"key":"$column"}'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereStartsWith.html b/dart/flutter_parse_sdk/QueryBuilder/whereStartsWith.html new file mode 100644 index 000000000..c17efccb1 --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereStartsWith.html @@ -0,0 +1,149 @@ + + + + + + + + whereStartsWith method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereStartsWith
+ +
+ +
+
+
+ +
+
+

whereStartsWith method +

+ +
+ + +void +whereStartsWith(
  1. String column,
  2. +
  3. String prefix,
  4. +
  5. {bool caseSensitive = false}
  6. +
) + + + +
+ +
+

Add a constraint for finding objects where the String value in column +starts with prefix

+
+ + + +
+

Implementation

+
void whereStartsWith(
+  String column,
+  String prefix, {
+  bool caseSensitive = false,
+}) {
+  prefix = Uri.encodeComponent(prefix);
+
+  if (caseSensitive) {
+    queries.add(MapEntry<String, dynamic>(
+        _singleQuery, '"$column":{"\$regex": "^$prefix"}'));
+  } else {
+    queries.add(MapEntry<String, dynamic>(
+        _singleQuery, '"$column":{"\$regex": "^$prefix", "\$options": "i"}'));
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereValueExists.html b/dart/flutter_parse_sdk/QueryBuilder/whereValueExists.html new file mode 100644 index 000000000..e9ec4888b --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereValueExists.html @@ -0,0 +1,136 @@ + + + + + + + + whereValueExists method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereValueExists
+ +
+ +
+
+
+ +
+
+

whereValueExists method +

+ +
+ + +void +whereValueExists(
  1. String column,
  2. +
  3. bool value
  4. +
) + + + +
+ +
+

Returns an object where the String column for the object has data correctly entered/saved

+
+ + + +
+

Implementation

+
void whereValueExists(String column, bool value) {
+  queries.add(_buildQueryWithColumnValueAndOperator(
+      MapEntry<String, dynamic>(column, value), '\$exists'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereWithinGeoBox.html b/dart/flutter_parse_sdk/QueryBuilder/whereWithinGeoBox.html new file mode 100644 index 000000000..a489f818c --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereWithinGeoBox.html @@ -0,0 +1,144 @@ + + + + + + + + whereWithinGeoBox method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereWithinGeoBox
+ +
+ +
+
+
+ +
+
+

whereWithinGeoBox method +

+ +
+ + +void +whereWithinGeoBox(
  1. String column,
  2. +
  3. ParseGeoPoint southwest,
  4. +
  5. ParseGeoPoint northeast
  6. +
) + + + +
+ +
+

Returns an object with key point values contained within a given rectangular geographic bounding box.

+
+ + + +
+

Implementation

+
void whereWithinGeoBox(
+    String column, ParseGeoPoint southwest, ParseGeoPoint northeast) {
+  final double latitudeS = southwest.latitude;
+  final double longitudeS = southwest.longitude;
+
+  final double latitudeN = northeast.latitude;
+  final double longitudeN = northeast.longitude;
+
+  queries.add(MapEntry<String, dynamic>(_singleQuery,
+      '"$column":{"\$within":{"\$box": [{"__type": "GeoPoint","latitude":$latitudeS,"longitude":$longitudeS},{"__type": "GeoPoint","latitude":$latitudeN,"longitude":$longitudeN}]}}'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereWithinKilometers.html b/dart/flutter_parse_sdk/QueryBuilder/whereWithinKilometers.html new file mode 100644 index 000000000..a31be540a --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereWithinKilometers.html @@ -0,0 +1,141 @@ + + + + + + + + whereWithinKilometers method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereWithinKilometers
+ +
+ +
+
+
+ +
+
+

whereWithinKilometers method +

+ +
+ + +void +whereWithinKilometers(
  1. String column,
  2. +
  3. ParseGeoPoint point,
  4. +
  5. double maxDistance
  6. +
) + + + +
+ +
+

Returns an object with key point values near the point given and within the maximum distance given.

+
+ + + +
+

Implementation

+
void whereWithinKilometers(
+    String column, ParseGeoPoint point, double maxDistance) {
+  final double latitude = point.latitude;
+  final double longitude = point.longitude;
+
+  queries.add(MapEntry<String, dynamic>(_singleQuery,
+      '"$column":{"\$nearSphere":{"__type":"GeoPoint","latitude":$latitude,"longitude":$longitude},"\$maxDistanceInKilometers":$maxDistance}'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereWithinMiles.html b/dart/flutter_parse_sdk/QueryBuilder/whereWithinMiles.html new file mode 100644 index 000000000..f04cf3b7d --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereWithinMiles.html @@ -0,0 +1,141 @@ + + + + + + + + whereWithinMiles method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereWithinMiles
+ +
+ +
+
+
+ +
+
+

whereWithinMiles method +

+ +
+ + +void +whereWithinMiles(
  1. String column,
  2. +
  3. ParseGeoPoint point,
  4. +
  5. double maxDistance
  6. +
) + + + +
+ +
+

Returns an object with key point values near the point given and within the maximum distance given.

+
+ + + +
+

Implementation

+
void whereWithinMiles(
+    String column, ParseGeoPoint point, double maxDistance) {
+  final double latitude = point.latitude;
+  final double longitude = point.longitude;
+
+  queries.add(MapEntry<String, dynamic>(_singleQuery,
+      '"$column":{"\$nearSphere":{"__type":"GeoPoint","latitude":$latitude,"longitude":$longitude},"\$maxDistanceInMiles":$maxDistance}'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereWithinPolygon.html b/dart/flutter_parse_sdk/QueryBuilder/whereWithinPolygon.html new file mode 100644 index 000000000..07d7d8e6f --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereWithinPolygon.html @@ -0,0 +1,144 @@ + + + + + + + + whereWithinPolygon method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereWithinPolygon
+ +
+ +
+
+
+ +
+
+

whereWithinPolygon method +

+ +
+ + +void +whereWithinPolygon(
  1. String column,
  2. +
  3. List<ParseGeoPoint> points
  4. +
) + + + +
+ +
+

Return an object with key coordinates be contained within and on the bounds of a given polygon. +Supports closed and open (last point is connected to first) paths +Polygon must have at least 3 points

+
+ + + +
+

Implementation

+
void whereWithinPolygon(String column, List<ParseGeoPoint> points) {
+  if (points.length < 3) {
+    throw ArgumentError('Polygon must have at least 3 points');
+  }
+  Map<String, dynamic> dictionary = <String, dynamic>{};
+  dictionary['\$polygon'] = points.map((e) => e.toJson()).toList();
+
+  queries.add(MapEntry<String, dynamic>(
+      _singleQuery, '"$column":{"\$geoWithin":${jsonEncode(dictionary)}}'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/QueryBuilder/whereWithinRadians.html b/dart/flutter_parse_sdk/QueryBuilder/whereWithinRadians.html new file mode 100644 index 000000000..47528291f --- /dev/null +++ b/dart/flutter_parse_sdk/QueryBuilder/whereWithinRadians.html @@ -0,0 +1,141 @@ + + + + + + + + whereWithinRadians method - QueryBuilder class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
whereWithinRadians
+ +
+ +
+
+
+ +
+
+

whereWithinRadians method +

+ +
+ + +void +whereWithinRadians(
  1. String column,
  2. +
  3. ParseGeoPoint point,
  4. +
  5. double maxDistance
  6. +
) + + + +
+ +
+

Returns an object with key point values near the point given and within the maximum distance given.

+
+ + + +
+

Implementation

+
void whereWithinRadians(
+    String column, ParseGeoPoint point, double maxDistance) {
+  final double latitude = point.latitude;
+  final double longitude = point.longitude;
+
+  queries.add(MapEntry<String, dynamic>(_singleQuery,
+      '"$column":{"\$nearSphere":{"__type":"GeoPoint","latitude":$latitude,"longitude":$longitude},"\$maxDistanceInRadians":$maxDistance}'));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/Subscription-class-sidebar.html b/dart/flutter_parse_sdk/Subscription-class-sidebar.html new file mode 100644 index 000000000..85e5f9c27 --- /dev/null +++ b/dart/flutter_parse_sdk/Subscription-class-sidebar.html @@ -0,0 +1,31 @@ +
    + +
  1. Constructors
  2. +
  3. Subscription
  4. + + + +
  5. + Properties +
  6. +
  7. copyObject
  8. +
  9. eventCallbacks
  10. +
  11. hashCode
  12. +
  13. query
  14. +
  15. requestId
  16. +
  17. runtimeType
  18. + +
  19. Methods
  20. +
  21. noSuchMethod
  22. +
  23. on
  24. +
  25. toString
  26. + +
  27. Operators
  28. +
  29. operator ==
  30. + + + + + + +
diff --git a/dart/flutter_parse_sdk/Subscription-class.html b/dart/flutter_parse_sdk/Subscription-class.html new file mode 100644 index 000000000..cbebe7736 --- /dev/null +++ b/dart/flutter_parse_sdk/Subscription-class.html @@ -0,0 +1,272 @@ + + + + + + + + Subscription class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
Subscription
+ +
+ +
+
+
+ +
+
+

Subscription<T extends ParseObject> class + +

+ + + + + + +
+

Constructors

+ +
+
+ Subscription(QueryBuilder<T> query, int requestId, {T? copyObject}) +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ copyObject + → T? + +
+
+ +
no setter
+ +
+ +
+ eventCallbacks + Map<String, Function> + +
+
+ +
getter/setter pair
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
no setterinherited
+ +
+ +
+ query + QueryBuilder<T> + +
+
+ +
getter/setter pair
+ +
+ +
+ requestId + int + +
+
+ +
getter/setter pair
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
no setterinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ on(LiveQueryEvent op, Function callback) + → void + + + +
+
+ + + +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/Subscription/Subscription.html b/dart/flutter_parse_sdk/Subscription/Subscription.html new file mode 100644 index 000000000..59335a3d8 --- /dev/null +++ b/dart/flutter_parse_sdk/Subscription/Subscription.html @@ -0,0 +1,129 @@ + + + + + + + + Subscription constructor - Subscription - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
Subscription
+ +
+ +
+
+
+ +
+
+

Subscription<T extends ParseObject> constructor +

+ +
+ + Subscription<T extends ParseObject>(
  1. QueryBuilder<T> query,
  2. +
  3. int requestId,
  4. +
  5. {T? copyObject}
  6. +
) +
+ + + + + +
+

Implementation

+
Subscription(this.query, this.requestId, {T? copyObject}) {
+  _copyObject = copyObject;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/Subscription/copyObject.html b/dart/flutter_parse_sdk/Subscription/copyObject.html new file mode 100644 index 000000000..9d315dea9 --- /dev/null +++ b/dart/flutter_parse_sdk/Subscription/copyObject.html @@ -0,0 +1,134 @@ + + + + + + + + copyObject property - Subscription class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
copyObject
+ +
+ +
+
+
+ +
+
+

copyObject property +

+ + + +
+ +
+ + T? + copyObject + + +
+ + + + +
+

Implementation

+
T? get copyObject {
+  return _copyObject;
+}
+
+ +
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/Subscription/eventCallbacks.html b/dart/flutter_parse_sdk/Subscription/eventCallbacks.html new file mode 100644 index 000000000..53fb94b7a --- /dev/null +++ b/dart/flutter_parse_sdk/Subscription/eventCallbacks.html @@ -0,0 +1,125 @@ + + + + + + + + eventCallbacks property - Subscription class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
eventCallbacks
+ +
+ +
+
+
+ +
+
+

eventCallbacks property +

+ +
+ + Map<String, Function> + eventCallbacks +
getter/setter pair
+ +
+ + + +
+

Implementation

+
Map<String, Function> eventCallbacks = <String, Function>{};
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/Subscription/on.html b/dart/flutter_parse_sdk/Subscription/on.html new file mode 100644 index 000000000..3292037e3 --- /dev/null +++ b/dart/flutter_parse_sdk/Subscription/on.html @@ -0,0 +1,132 @@ + + + + + + + + on method - Subscription class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
on
+ +
+ +
+
+
+ +
+
+

on method +

+ +
+ + +void +on(
  1. LiveQueryEvent op,
  2. +
  3. Function callback
  4. +
) + + + +
+ + + + +
+

Implementation

+
void on(LiveQueryEvent op, Function callback) {
+  eventCallbacks[_liveQueryEvent[op.index]] = callback;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/Subscription/query.html b/dart/flutter_parse_sdk/Subscription/query.html new file mode 100644 index 000000000..74d580d8a --- /dev/null +++ b/dart/flutter_parse_sdk/Subscription/query.html @@ -0,0 +1,125 @@ + + + + + + + + query property - Subscription class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
query
+ +
+ +
+
+
+ +
+
+

query property +

+ +
+ + QueryBuilder<T> + query +
getter/setter pair
+ +
+ + + +
+

Implementation

+
QueryBuilder<T> query;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/Subscription/requestId.html b/dart/flutter_parse_sdk/Subscription/requestId.html new file mode 100644 index 000000000..d1b1c3c0a --- /dev/null +++ b/dart/flutter_parse_sdk/Subscription/requestId.html @@ -0,0 +1,125 @@ + + + + + + + + requestId property - Subscription class - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
requestId
+ +
+ +
+
+
+ +
+
+

requestId property +

+ +
+ + int + requestId +
getter/setter pair
+ +
+ + + +
+

Implementation

+
int requestId;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/apple.html b/dart/flutter_parse_sdk/apple.html new file mode 100644 index 000000000..ce8d88124 --- /dev/null +++ b/dart/flutter_parse_sdk/apple.html @@ -0,0 +1,131 @@ + + + + + + + + apple function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
apple
+ +
+ +
+
+
+ +
+
+

apple function + +

+ +
+ + +Map<String, dynamic> +apple(
  1. String token,
  2. +
  3. String id
  4. +
) + + + +
+ + + + +
+

Implementation

+
Map<String, dynamic> apple(String token, String id) {
+  return <String, dynamic>{'token': token, 'id': id};
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/batchRequest.html b/dart/flutter_parse_sdk/batchRequest.html new file mode 100644 index 000000000..85abe89f2 --- /dev/null +++ b/dart/flutter_parse_sdk/batchRequest.html @@ -0,0 +1,150 @@ + + + + + + + + batchRequest function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
batchRequest
+ +
+ +
+
+
+ +
+
+

batchRequest function + +

+ +
+ + +Future<ParseResponse> +batchRequest(
  1. List requests,
  2. +
  3. List<ParseObject> objects,
  4. +
  5. {ParseClient? client,
  6. +
  7. bool? debug}
  8. +
) + + + +
+ + + + +
+

Implementation

+
Future<ParseResponse> batchRequest(
+    List<dynamic> requests, List<ParseObject> objects,
+    {ParseClient? client, bool? debug}) async {
+  debug = isDebugEnabled(objectLevelDebug: debug);
+  client = client ??
+      ParseCoreData().clientCreator(
+          sendSessionId: ParseCoreData().autoSendSessionId,
+          securityContext: ParseCoreData().securityContext);
+  try {
+    final Uri url = getSanitisedUri(client, '/batch');
+    final String body = json.encode(<String, dynamic>{'requests': requests});
+    final ParseNetworkResponse result =
+        await client.post(url.toString(), data: body);
+
+    return handleResponse<ParseObject>(
+        objects, result, ParseApiRQ.batch, debug, 'parse_utils');
+  } on Exception catch (e) {
+    return handleException(e, ParseApiRQ.batch, debug, 'parse_utils');
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/buildErrorResponse.html b/dart/flutter_parse_sdk/buildErrorResponse.html new file mode 100644 index 000000000..d6e195892 --- /dev/null +++ b/dart/flutter_parse_sdk/buildErrorResponse.html @@ -0,0 +1,144 @@ + + + + + + + + buildErrorResponse function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
buildErrorResponse
+ +
+ +
+
+
+ +
+
+

buildErrorResponse function + +

+ +
+ + +ParseResponse +buildErrorResponse(
  1. ParseResponse response,
  2. +
  3. ParseNetworkResponse apiResponse
  4. +
) + + + +
+ +
+

Handles any errors returned in response

+
+ + + +
+

Implementation

+
ParseResponse buildErrorResponse(
+    ParseResponse response, ParseNetworkResponse apiResponse) {
+  final Map<String, dynamic> responseData = json.decode(apiResponse.data);
+
+  response.error = ParseError(
+    code: responseData[keyCode] ?? ParseError.otherCause,
+    message: responseData[keyError].toString(),
+  );
+
+  response.statusCode = responseData[keyCode] ?? ParseError.otherCause;
+
+  return response;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/buildParseResponseWithException.html b/dart/flutter_parse_sdk/buildParseResponseWithException.html new file mode 100644 index 000000000..707f8a185 --- /dev/null +++ b/dart/flutter_parse_sdk/buildParseResponseWithException.html @@ -0,0 +1,154 @@ + + + + + + + + buildParseResponseWithException function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
buildParseResponseWithException
+ +
+ +
+
+
+ +
+
+

buildParseResponseWithException function + +

+ +
+ + +ParseResponse +buildParseResponseWithException(
  1. Exception exception
  2. +
) + + + +
+ +
+

Handles exception instead of throwing an exception

+
+ + + +
+

Implementation

+
ParseResponse buildParseResponseWithException(Exception exception) {
+  if (exception is DioException) {
+    Map<String, dynamic> errorResponse = {};
+    try {
+      errorResponse = json.decode(exception.response?.data?.toString() ?? '{}');
+    } on FormatException catch (_) {}
+
+    final errorMessage =
+        errorResponse['error']?.toString() ?? exception.response?.statusMessage;
+
+    final errorCode =
+        int.tryParse(errorResponse['code']) ?? exception.response?.statusCode;
+
+    return ParseResponse(
+        error: ParseError(
+      message: errorMessage ?? exception.toString(),
+      exception: exception,
+      code: errorCode ?? ParseError.otherCause,
+    ));
+  }
+
+  return ParseResponse(
+      error: ParseError(message: exception.toString(), exception: exception));
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/buildSuccessResponseWithNoResults.html b/dart/flutter_parse_sdk/buildSuccessResponseWithNoResults.html new file mode 100644 index 000000000..7ee766ad1 --- /dev/null +++ b/dart/flutter_parse_sdk/buildSuccessResponseWithNoResults.html @@ -0,0 +1,139 @@ + + + + + + + + buildSuccessResponseWithNoResults function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
buildSuccessResponseWithNoResults
+ +
+ +
+
+
+ +
+
+

buildSuccessResponseWithNoResults function + +

+ +
+ + +ParseResponse +buildSuccessResponseWithNoResults(
  1. ParseResponse response,
  2. +
  3. int code,
  4. +
  5. String value
  6. +
) + + + +
+ +
+

Handles successful responses with no results

+
+ + + +
+

Implementation

+
ParseResponse buildSuccessResponseWithNoResults(
+    ParseResponse response, int code, String value) {
+  response.success = true;
+  response.statusCode = 200;
+  response.error = ParseError(code: code, message: value);
+  return response;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/checkForSubmitEventually.html b/dart/flutter_parse_sdk/checkForSubmitEventually.html new file mode 100644 index 000000000..bf7d7e9ce --- /dev/null +++ b/dart/flutter_parse_sdk/checkForSubmitEventually.html @@ -0,0 +1,135 @@ + + + + + + + + checkForSubmitEventually function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
checkForSubmitEventually
+ +
+ +
+
+
+ +
+
+

checkForSubmitEventually function + +

+ +
+ + +Future<void> +checkForSubmitEventually() + + + +
+ + + + +
+

Implementation

+
Future<void> checkForSubmitEventually() async {
+  if (_inSubmitEventually) return;
+
+  if (Parse.objectsExistForEventually) {
+    _inSubmitEventually = true;
+    await ParseObject.submitEventually();
+    _inSubmitEventually = false;
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/checkObjectsExistForEventually.html b/dart/flutter_parse_sdk/checkObjectsExistForEventually.html new file mode 100644 index 000000000..68d2c06e5 --- /dev/null +++ b/dart/flutter_parse_sdk/checkObjectsExistForEventually.html @@ -0,0 +1,149 @@ + + + + + + + + checkObjectsExistForEventually function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
checkObjectsExistForEventually
+ +
+ +
+
+
+ +
+
+

checkObjectsExistForEventually function + +

+ +
+ + +Future<bool> +checkObjectsExistForEventually() + + + +
+ + + + +
+

Implementation

+
Future<bool> checkObjectsExistForEventually() async {
+  // preparation ParseCoreData
+  final CoreStore coreStore = ParseCoreData().getStore();
+
+  List<String>? listSaves = await coreStore.getStringList(keyParseStoreObjects);
+
+  if (listSaves != null) {
+    if (listSaves.isNotEmpty) {
+      return true;
+    }
+  }
+
+  List<String>? listDeletes =
+      await coreStore.getStringList(keyParseStoreDeletes);
+
+  if (listDeletes != null) {
+    if (listDeletes.isNotEmpty) {
+      return true;
+    }
+  }
+
+  return false;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/concatenateArray.html b/dart/flutter_parse_sdk/concatenateArray.html new file mode 100644 index 000000000..d9ebd9ce6 --- /dev/null +++ b/dart/flutter_parse_sdk/concatenateArray.html @@ -0,0 +1,143 @@ + + + + + + + + concatenateArray function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
concatenateArray
+ +
+ +
+
+
+ +
+
+

concatenateArray function + +

+ +
+ + +String +concatenateArray(
  1. List<String> list
  2. +
) + + + +
+ +
+

Convert list of strings to a string with commas

+
+ + + +
+

Implementation

+
String concatenateArray(List<String> list) {
+  String output = '';
+
+  for (final String item in list) {
+    if (item == list.first) {
+      output += item;
+    } else {
+      output += ',$item';
+    }
+  }
+
+  return output;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/convertValueToCorrectType.html b/dart/flutter_parse_sdk/convertValueToCorrectType.html new file mode 100644 index 000000000..e8197ca7d --- /dev/null +++ b/dart/flutter_parse_sdk/convertValueToCorrectType.html @@ -0,0 +1,142 @@ + + + + + + + + convertValueToCorrectType function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
convertValueToCorrectType
+ +
+ +
+
+
+ +
+
+

convertValueToCorrectType function + +

+ +
+ + +dynamic +convertValueToCorrectType(
  1. dynamic value
  2. +
) + + + +
+ +
+

Converts the object to the correct value for JSON,

+

Strings are wrapped with "" but integers and others are not

+
+ + + +
+

Implementation

+
dynamic convertValueToCorrectType(dynamic value) {
+  /*if (value is String && !value.contains('__type')) {
+    return '\"$value\"';
+  }*/
+
+  if (value is DateTime || value is ParseObject) {
+    return parseEncode(value);
+  } else {
+    return value;
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/dateTimeEncoder.html b/dart/flutter_parse_sdk/dateTimeEncoder.html new file mode 100644 index 000000000..e18297079 --- /dev/null +++ b/dart/flutter_parse_sdk/dateTimeEncoder.html @@ -0,0 +1,136 @@ + + + + + + + + dateTimeEncoder function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
dateTimeEncoder
+ +
+ +
+
+
+ +
+
+

dateTimeEncoder function + +

+ +
+ + +dynamic +dateTimeEncoder(
  1. dynamic item
  2. +
) + + + +
+ +
+

Custom encoder for DateTime

+
+ + + +
+

Implementation

+
dynamic dateTimeEncoder(dynamic item) {
+  if (item is DateTime) {
+    return _parseDateFormat.format(item);
+  }
+  return item;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/encodeObject.html b/dart/flutter_parse_sdk/encodeObject.html new file mode 100644 index 000000000..5168df2e1 --- /dev/null +++ b/dart/flutter_parse_sdk/encodeObject.html @@ -0,0 +1,135 @@ + + + + + + + + encodeObject function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
encodeObject
+ +
+ +
+
+
+ +
+
+

encodeObject function + +

+ +
+ + +Map<String, String> +encodeObject(
  1. String className,
  2. +
  3. String objectId
  4. +
) + + + +
+ + + + +
+

Implementation

+
Map<String, String> encodeObject(String className, String objectId) {
+  return <String, String>{
+    '__type': 'Pointer',
+    keyVarClassName: className,
+    keyVarObjectId: objectId
+  };
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/facebook.html b/dart/flutter_parse_sdk/facebook.html new file mode 100644 index 000000000..49f20f8e5 --- /dev/null +++ b/dart/flutter_parse_sdk/facebook.html @@ -0,0 +1,136 @@ + + + + + + + + facebook function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
facebook
+ +
+ +
+
+
+ +
+
+

facebook function + +

+ +
+ + +Map<String, dynamic> +facebook(
  1. String token,
  2. +
  3. String id,
  4. +
  5. DateTime expires
  6. +
) + + + +
+ + + + +
+

Implementation

+
Map<String, dynamic> facebook(String token, String id, DateTime expires) {
+  return <String, dynamic>{
+    'access_token': token,
+    'id': id,
+    'expiration_date': expires.toString()
+  };
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/flutter_parse_sdk-library-sidebar.html b/dart/flutter_parse_sdk/flutter_parse_sdk-library-sidebar.html new file mode 100644 index 000000000..2103e8b3f --- /dev/null +++ b/dart/flutter_parse_sdk/flutter_parse_sdk-library-sidebar.html @@ -0,0 +1,171 @@ +
    +
  1. Classes
  2. +
  3. CoreStore
  4. +
  5. CoreStoreMemoryImp
  6. +
  7. CoreStoreSembastImp
  8. +
  9. LiveQuery
  10. +
  11. LiveQueryClient
  12. +
  13. LiveQueryReconnectingController
  14. +
  15. Parse
  16. +
  17. ParseACL
  18. +
  19. ParseBase
  20. +
  21. ParseClient
  22. +
  23. ParseCloneable
  24. +
  25. ParseCloudFunction
  26. +
  27. ParseConfig
  28. +
  29. ParseConnectivityProvider
  30. +
  31. ParseCoreData
  32. +
  33. ParseDioClient
  34. +
  35. ParseError
  36. +
  37. ParseFile
  38. +
  39. ParseFileBase
  40. +
  41. ParseGeoPoint
  42. +
  43. ParseHTTPClient
  44. +
  45. ParseInstallation
  46. +
  47. ParseLiveElement
  48. +
  49. ParseLiveList
  50. +
  51. ParseLiveListAddEvent
  52. +
  53. ParseLiveListDeleteEvent
  54. +
  55. ParseLiveListElement
  56. +
  57. ParseLiveListElementSnapshot
  58. +
  59. ParseLiveListEvent
  60. +
  61. ParseLiveListUpdateEvent
  62. +
  63. ParseNetworkByteResponse
  64. +
  65. ParseNetworkOptions
  66. +
  67. ParseNetworkResponse
  68. +
  69. ParseObject
  70. +
  71. ParseRelation
  72. +
  73. ParseResponse
  74. +
  75. ParseSession
  76. +
  77. ParseSubClassHandler
  78. +
  79. ParseUser
  80. +
  81. ParseWebFile
  82. +
  83. ParseXFile
  84. +
  85. PathKey
  86. +
  87. QueryBuilder
  88. +
  89. Subscription
  90. + +
  91. Enums
  92. +
  93. LiveQueryClientEvent
  94. +
  95. LiveQueryEvent
  96. +
  97. ParseApiRQ
  98. +
  99. ParseConnectivityResult
  100. +
  101. ParseNetworkResponseType
  102. + + +
  103. Constants
  104. +
  105. keyAppIdentifier
  106. +
  107. keyAppName
  108. +
  109. keyAppVersion
  110. +
  111. keyClassInstallation
  112. +
  113. keyClassMain
  114. +
  115. keyClassSession
  116. +
  117. keyClassUser
  118. +
  119. keyCode
  120. +
  121. keyDeviceToken
  122. +
  123. keyDeviceType
  124. +
  125. keyEndPointAggregate
  126. +
  127. keyEndPointClasses
  128. +
  129. keyEndPointHealth
  130. +
  131. keyEndPointInstallations
  132. +
  133. keyEndPointLogin
  134. +
  135. keyEndPointLogout
  136. +
  137. keyEndPointRequestPasswordReset
  138. +
  139. keyEndPointSessions
  140. +
  141. keyEndPointUserName
  142. +
  143. keyEndPointUsers
  144. +
  145. keyEndPointVerificationEmail
  146. +
  147. keyError
  148. +
  149. keyFile
  150. +
  151. keyFileClassname
  152. +
  153. keyGeoPoint
  154. +
  155. keyHeaderApplicationId
  156. +
  157. keyHeaderClientKey
  158. +
  159. keyHeaderCloudContext
  160. +
  161. keyHeaderContentType
  162. +
  163. keyHeaderContentTypeJson
  164. +
  165. keyHeaderInstallationId
  166. +
  167. keyHeaderMasterKey
  168. +
  169. keyHeaderRevocableSession
  170. +
  171. keyHeaderSessionToken
  172. +
  173. keyHeaderUserAgent
  174. +
  175. keyInstallationId
  176. +
  177. keyLatitude
  178. +
  179. keyLibraryName
  180. +
  181. keyLocaleIdentifier
  182. +
  183. keyLongitude
  184. +
  185. keyNetworkError
  186. +
  187. keyParamSessionToken
  188. +
  189. keyParseStoreBase
  190. +
  191. keyParseStoreDeletes
  192. +
  193. keyParseStoreInstallation
  194. +
  195. keyParseStoreObjects
  196. +
  197. keyParseStoreUser
  198. +
  199. keyParseVersion
  200. +
  201. keyRelation
  202. +
  203. keySdkVersion
  204. +
  205. keyTimeZone
  206. +
  207. keyVarAcl
  208. +
  209. keyVarAuthData
  210. +
  211. keyVarClassName
  212. +
  213. keyVarCreatedAt
  214. +
  215. keyVarCreatedWith
  216. +
  217. keyVarEmail
  218. +
  219. keyVarExpiresAt
  220. +
  221. keyVarInstallationId
  222. +
  223. keyVarName
  224. +
  225. keyVarObjectId
  226. +
  227. keyVarPassword
  228. +
  229. keyVarRestricted
  230. +
  231. keyVarSessionToken
  232. +
  233. keyVarUpdatedAt
  234. +
  235. keyVarURL
  236. +
  237. keyVarUser
  238. +
  239. keyVarUsername
  240. +
  241. parseIsWeb
  242. + + +
  243. Functions
  244. +
  245. apple
  246. +
  247. batchRequest
  248. +
  249. buildErrorResponse
  250. +
  251. buildParseResponseWithException
  252. +
  253. buildSuccessResponseWithNoResults
  254. +
  255. checkForSubmitEventually
  256. +
  257. checkObjectsExistForEventually
  258. +
  259. concatenateArray
  260. +
  261. convertValueToCorrectType
  262. +
  263. dateTimeEncoder
  264. +
  265. encodeObject
  266. +
  267. facebook
  268. +
  269. getCustomUri
  270. +
  271. getSanitisedUri
  272. +
  273. getXXTeaSembastCodec
  274. +
  275. google
  276. +
  277. handleException
  278. +
  279. handleResponse
  280. +
  281. isDebugEnabled
  282. +
  283. isSuccessButNoResults
  284. +
  285. isUnsuccessfulResponse
  286. +
  287. logAPIResponse
  288. +
  289. logRequest
  290. +
  291. parseDecode
  292. +
  293. parseEncode
  294. +
  295. removeDuplicateParseObjectByObjectId
  296. +
  297. removeTrailingSlash
  298. +
  299. shouldReturnAsABaseResult
  300. + +
  301. Typedefs
  302. +
  303. ParseClientCreator
  304. +
  305. ParseFileConstructor
  306. +
  307. ParseObjectConstructor
  308. +
  309. ParseUserConstructor
  310. +
  311. ProgressCallback
  312. + +
  313. Exceptions
  314. +
  315. ParseException
  316. +
  317. ParseOperationException
  318. +
  319. ParseRelationException
  320. + + +
diff --git a/dart/flutter_parse_sdk/flutter_parse_sdk-library.html b/dart/flutter_parse_sdk/flutter_parse_sdk-library.html new file mode 100644 index 000000000..9d585fbf1 --- /dev/null +++ b/dart/flutter_parse_sdk/flutter_parse_sdk-library.html @@ -0,0 +1,1850 @@ + + + + + + + + flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
flutter_parse_sdk
+ +
+ +
+
+
+ +
+ +
+ + +

+ parse_server_sdk + library + + +

+
+ + + + +
+

Classes

+ +
+
+ CoreStore + +
+
+ +
+ +
+ CoreStoreMemoryImp + +
+
+ +
+ +
+ CoreStoreSembastImp + +
+
+ +
+ +
+ LiveQuery + +
+
+ +
+ +
+ LiveQueryClient + +
+
+ +
+ +
+ LiveQueryReconnectingController + +
+
+ +
+ +
+ Parse + +
+
+ +
+ +
+ ParseACL + +
+
+ ParseACL is used to control which users can access or modify a particular object +ParseObject can have its own ParseACL +You can grant read and write permissions separately to specific users + or you can grant permissions to "the public" so that, for example, any user could read a particular object but +only a particular set of users could write to that object +
+ +
+ ParseBase + +
+
+ +
+ +
+ ParseClient + +
+
+ +
+ +
+ ParseCloneable + +
+
+ Creates method which can be used to deep clone objects +
+ +
+ ParseCloudFunction + +
+
+ +
+ +
+ ParseConfig + +
+
+ +
+ +
+ ParseConnectivityProvider + +
+
+ +
+ +
+ ParseCoreData + +
+
+ Singleton class that defines all user keys and data +
+ +
+ ParseDioClient + +
+
+ +
+ +
+ ParseError + +
+
+ ParseException is used in ParseResult to inform the user of the exception +
+ +
+ ParseFile + +
+
+ +
+ +
+ ParseFileBase + +
+
+ +
+ +
+ ParseGeoPoint + +
+
+ +
+ +
+ ParseHTTPClient + +
+
+ +
+ +
+ ParseInstallation + +
+
+ +
+ +
+ ParseLiveElement<T extends ParseObject> + +
+
+ +
+ +
+ ParseLiveList<T extends ParseObject> + +
+
+ +
+ +
+ ParseLiveListAddEvent<T extends ParseObject> + +
+
+ +
+ +
+ ParseLiveListDeleteEvent<T extends ParseObject> + +
+
+ +
+ +
+ ParseLiveListElement<T extends ParseObject> + +
+
+ +
+ +
+ ParseLiveListElementSnapshot<T extends ParseObject> + +
+
+ +
+ +
+ ParseLiveListEvent<T extends ParseObject> + +
+
+ +
+ +
+ ParseLiveListUpdateEvent<T extends ParseObject> + +
+
+ +
+ +
+ ParseNetworkByteResponse + +
+
+ +
+ +
+ ParseNetworkOptions + +
+
+ +
+ +
+ ParseNetworkResponse + +
+
+ +
+ +
+ ParseObject + +
+
+ ParseObject is a local representation of data that can be saved and +retrieved from the Parse cloud. +
+ +
+ ParseRelation<T extends ParseObject> + +
+
+ +
+ +
+ ParseResponse + +
+
+ +
+ +
+ ParseSession + +
+
+ +
+ +
+ ParseSubClassHandler + +
+
+ +
+ +
+ ParseUser + +
+
+ +
+ +
+ ParseWebFile + +
+
+ +
+ +
+ ParseXFile + +
+
+ +
+ +
+ PathKey + +
+
+ +
+ +
+ QueryBuilder<T extends ParseObject> + +
+
+ Class to create complex queries +
+ +
+ Subscription<T extends ParseObject> + +
+
+ +
+ +
+
+ + + + +
+

Constants

+ +
+
+ keyAppIdentifier + → const String + + +
+
+ + + +
+ +
+ keyAppName + → const String + + +
+
+ + + +
+ +
+ keyAppVersion + → const String + + +
+
+ + + +
+ +
+ keyClassInstallation + → const String + + +
+
+ + + +
+ +
+ keyClassMain + → const String + + +
+
+ + + +
+ +
+ keyClassSession + → const String + + +
+
+ + + +
+ +
+ keyClassUser + → const String + + +
+
+ + + +
+ +
+ keyCode + → const String + + +
+
+ + + +
+ +
+ keyDeviceToken + → const String + + +
+
+ + + +
+ +
+ keyDeviceType + → const String + + +
+
+ + + +
+ +
+ keyEndPointAggregate + → const String + + +
+
+ + + +
+ +
+ keyEndPointClasses + → const String + + +
+
+ + + +
+ +
+ keyEndPointHealth + → const String + + +
+
+ + + +
+ +
+ keyEndPointInstallations + → const String + + +
+
+ + + +
+ +
+ keyEndPointLogin + → const String + + +
+
+ + + +
+ +
+ keyEndPointLogout + → const String + + +
+
+ + + +
+ +
+ keyEndPointRequestPasswordReset + → const String + + +
+
+ + + +
+ +
+ keyEndPointSessions + → const String + + +
+
+ + + +
+ +
+ keyEndPointUserName + → const String + + +
+
+ + + +
+ +
+ keyEndPointUsers + → const String + + +
+
+ + + +
+ +
+ keyEndPointVerificationEmail + → const String + + +
+
+ + + +
+ +
+ keyError + → const String + + +
+
+ + + +
+ +
+ keyFile + → const String + + +
+
+ + + +
+ +
+ keyFileClassname + → const String + + +
+
+ + + +
+ +
+ keyGeoPoint + → const String + + +
+
+ + + +
+ +
+ keyHeaderApplicationId + → const String + + +
+
+ + + +
+ +
+ keyHeaderClientKey + → const String + + +
+
+ + + +
+ +
+ keyHeaderCloudContext + → const String + + +
+
+ + + +
+ +
+ keyHeaderContentType + → const String + + +
+
+ + + +
+ +
+ keyHeaderContentTypeJson + → const String + + +
+
+ + + +
+ +
+ keyHeaderInstallationId + → const String + + +
+
+ + + +
+ +
+ keyHeaderMasterKey + → const String + + +
+
+ + + +
+ +
+ keyHeaderRevocableSession + → const String + + +
+
+ + + +
+ +
+ keyHeaderSessionToken + → const String + + +
+
+ + + +
+ +
+ keyHeaderUserAgent + → const String + + +
+
+ + + +
+ +
+ keyInstallationId + → const String + + +
+
+ + + +
+ +
+ keyLatitude + → const String + + +
+
+ + + +
+ +
+ keyLibraryName + → const String + + +
+
+ + + +
+ +
+ keyLocaleIdentifier + → const String + + +
+
+ + + +
+ +
+ keyLongitude + → const String + + +
+
+ + + +
+ +
+ keyNetworkError + → const String + + +
+
+ + + +
+ +
+ keyParamSessionToken + → const String + + +
+
+ + + +
+ +
+ keyParseStoreBase + → const String + + +
+
+ + + +
+ +
+ keyParseStoreDeletes + → const String + + +
+
+ + + +
+ +
+ keyParseStoreInstallation + → const String + + +
+
+ + + +
+ +
+ keyParseStoreObjects + → const String + + +
+
+ + + +
+ +
+ keyParseStoreUser + → const String + + +
+
+ + + +
+ +
+ keyParseVersion + → const String + + +
+
+ + + +
+ +
+ keyRelation + → const String + + +
+
+ + + +
+ +
+ keySdkVersion + → const String + + +
+
+ + + +
+ +
+ keyTimeZone + → const String + + +
+
+ + + +
+ +
+ keyVarAcl + → const String + + +
+
+ + + +
+ +
+ keyVarAuthData + → const String + + +
+
+ + + +
+ +
+ keyVarClassName + → const String + + +
+
+ + + +
+ +
+ keyVarCreatedAt + → const String + + +
+
+ + + +
+ +
+ keyVarCreatedWith + → const String + + +
+
+ + + +
+ +
+ keyVarEmail + → const String + + +
+
+ + + +
+ +
+ keyVarExpiresAt + → const String + + +
+
+ + + +
+ +
+ keyVarInstallationId + → const String + + +
+
+ + + +
+ +
+ keyVarName + → const String + + +
+
+ + + +
+ +
+ keyVarObjectId + → const String + + +
+
+ + + +
+ +
+ keyVarPassword + → const String + + +
+
+ + + +
+ +
+ keyVarRestricted + → const String + + +
+
+ + + +
+ +
+ keyVarSessionToken + → const String + + +
+
+ + + +
+ +
+ keyVarUpdatedAt + → const String + + +
+
+ + + +
+ +
+ keyVarURL + → const String + + +
+
+ + + +
+ +
+ keyVarUser + → const String + + +
+
+ + + +
+ +
+ keyVarUsername + → const String + + +
+
+ + + +
+ +
+ parseIsWeb + → const bool + + +
+
+ + + +
+ +
+
+ + +
+

Functions

+ +
+
+ apple(String token, String id) + Map<String, dynamic> + + + +
+
+ + + +
+ +
+ batchRequest(List requests, List<ParseObject> objects, {ParseClient? client, bool? debug}) + Future<ParseResponse> + + + +
+
+ + + +
+ +
+ buildErrorResponse(ParseResponse response, ParseNetworkResponse apiResponse) + ParseResponse + + + +
+
+ Handles any errors returned in response + + +
+ +
+ buildParseResponseWithException(Exception exception) + ParseResponse + + + +
+
+ Handles exception instead of throwing an exception + + +
+ +
+ buildSuccessResponseWithNoResults(ParseResponse response, int code, String value) + ParseResponse + + + +
+
+ Handles successful responses with no results + + +
+ +
+ checkForSubmitEventually() + Future<void> + + + +
+
+ + + +
+ +
+ checkObjectsExistForEventually() + Future<bool> + + + +
+
+ + + +
+ +
+ concatenateArray(List<String> list) + String + + + +
+
+ Convert list of strings to a string with commas + + +
+ +
+ convertValueToCorrectType(dynamic value) + → dynamic + + + +
+
+ Converts the object to the correct value for JSON, + + +
+ +
+ dateTimeEncoder(dynamic item) + → dynamic + + + +
+
+ Custom encoder for DateTime + + +
+ +
+ encodeObject(String className, String objectId) + Map<String, String> + + + +
+
+ + + +
+ +
+ facebook(String token, String id, DateTime expires) + Map<String, dynamic> + + + +
+
+ + + +
+ +
+ getCustomUri(ParseClient client, String path, {Map<String, dynamic>? queryParams, String? query}) + Uri + + + +
+
+ Sanitises a url + + +
+ +
+ getSanitisedUri(ParseClient client, String pathToAppend, {Map<String, dynamic>? queryParams, String? query}) + Uri + + + +
+
+ Sanitises a url + + +
+ +
+ getXXTeaSembastCodec({required String password}) + SembastCodec + + + +
+
+ Create a codec to use when opening an encrypted sembast database + + +
+ +
+ google(String token, String id, String idToken) + Map<String, dynamic> + + + +
+
+ + + +
+ +
+ handleException(Exception exception, ParseApiRQ type, bool debug, String className) + ParseResponse + + + +
+
+ Handles an API response and logs data if bool debug is enabled + + +
+ +
+ handleResponse<T>(dynamic object, ParseNetworkResponse response, ParseApiRQ type, bool debug, String className) + ParseResponse + + + +
+
+ Handles an API response and logs data if bool debug is enabled + + +
+ +
+ isDebugEnabled({bool? objectLevelDebug}) + bool + + + +
+
+ Checks whether debug is enabled + + +
+ +
+ isSuccessButNoResults(ParseNetworkResponse apiResponse) + bool + + + +
+
+ + + +
+ +
+ isUnsuccessfulResponse(ParseNetworkResponse apiResponse) + bool + + + +
+
+ + + +
+ +
+ logAPIResponse(String className, String type, ParseResponse parseResponse) + → void + + + +
+
+ + + +
+ +
+ logRequest(String? appName, String className, String type, String uri, String body) + → void + + + +
+
+ + + +
+ +
+ parseDecode(dynamic value) + → dynamic + + + +
+
+ Decode any type value + + +
+ +
+ parseEncode(dynamic value, {bool full = false}) + → dynamic + + + +
+
+ Custom json encoder for types related to parse + + +
+ +
+ removeDuplicateParseObjectByObjectId(Iterable iterable) + List + + + +
+
+ + + +
+ +
+ removeTrailingSlash(String serverUrl) + String + + + +
+
+ Removes unncessary / + + +
+ +
+ shouldReturnAsABaseResult(ParseApiRQ type) + bool + + + +
+
+ + + +
+ +
+
+ +
+

Enums

+ +
+
+ LiveQueryClientEvent + +
+
+ +
+ +
+ LiveQueryEvent + +
+
+ +
+ +
+ ParseApiRQ + +
+
+ Used to define the API calls made in ParseObject logs +
+ +
+ ParseConnectivityResult + +
+
+ Connection status check result. +
+ +
+ ParseNetworkResponseType + +
+
+ +
+ +
+
+ +
+

Typedefs

+ +
+ +
+ ParseClientCreator + = ParseClient Function({SecurityContext? securityContext, required bool sendSessionId}) + + + +
+
+ + + +
+ + +
+ ParseFileConstructor + = ParseFileBase Function({String? name, String? url}) + + + +
+
+ + + +
+ + +
+ ParseObjectConstructor + = ParseObject Function() + + + +
+
+ + + +
+ + +
+ ParseUserConstructor + = ParseUser Function(String? username, String? password, String? emailAddress, {ParseClient? client, bool? debug, String? sessionToken}) + + + +
+
+ + + +
+ + +
+ ProgressCallback + = void Function(int count, int total) + + + +
+
+ Callback to listen the progress for sending/receiving data. + + +
+ +
+
+ +
+

Exceptions / Errors

+ +
+
+ ParseException + +
+
+ +
+ +
+ ParseOperationException + +
+
+ +
+ +
+ ParseRelationException + +
+
+ +
+ +
+
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/getCustomUri.html b/dart/flutter_parse_sdk/getCustomUri.html new file mode 100644 index 000000000..2e79961ee --- /dev/null +++ b/dart/flutter_parse_sdk/getCustomUri.html @@ -0,0 +1,147 @@ + + + + + + + + getCustomUri function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getCustomUri
+ +
+ +
+
+
+ +
+
+

getCustomUri function + +

+ +
+ + +Uri +getCustomUri(
  1. ParseClient client,
  2. +
  3. String path,
  4. +
  5. {Map<String, dynamic>? queryParams,
  6. +
  7. String? query}
  8. +
) + + + +
+ +
+

Sanitises a url

+
+ + + +
+

Implementation

+
Uri getCustomUri(ParseClient client, String path,
+    {Map<String, dynamic>? queryParams, String? query}) {
+  final Uri tempUri = Uri.parse(ParseCoreData().serverUrl);
+
+  final Uri url = Uri(
+      scheme: tempUri.scheme,
+      host: tempUri.host,
+      port: tempUri.port,
+      path: path,
+      queryParameters: queryParams,
+      query: query);
+
+  return url;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/getSanitisedUri.html b/dart/flutter_parse_sdk/getSanitisedUri.html new file mode 100644 index 000000000..87b7a35d4 --- /dev/null +++ b/dart/flutter_parse_sdk/getSanitisedUri.html @@ -0,0 +1,147 @@ + + + + + + + + getSanitisedUri function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getSanitisedUri
+ +
+ +
+
+
+ +
+
+

getSanitisedUri function + +

+ +
+ + +Uri +getSanitisedUri(
  1. ParseClient client,
  2. +
  3. String pathToAppend,
  4. +
  5. {Map<String, dynamic>? queryParams,
  6. +
  7. String? query}
  8. +
) + + + +
+ +
+

Sanitises a url

+
+ + + +
+

Implementation

+
Uri getSanitisedUri(ParseClient client, String pathToAppend,
+    {Map<String, dynamic>? queryParams, String? query}) {
+  final Uri tempUri = Uri.parse(ParseCoreData().serverUrl);
+
+  final Uri url = Uri(
+      scheme: tempUri.scheme,
+      host: tempUri.host,
+      port: tempUri.port,
+      path: '${tempUri.path}$pathToAppend',
+      queryParameters: queryParams,
+      query: query);
+
+  return url;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/getXXTeaSembastCodec.html b/dart/flutter_parse_sdk/getXXTeaSembastCodec.html new file mode 100644 index 000000000..e02421c25 --- /dev/null +++ b/dart/flutter_parse_sdk/getXXTeaSembastCodec.html @@ -0,0 +1,140 @@ + + + + + + + + getXXTeaSembastCodec function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getXXTeaSembastCodec
+ +
+ +
+
+
+ +
+
+

getXXTeaSembastCodec function + +

+ +
+ + +SembastCodec +getXXTeaSembastCodec(
  1. {required String password}
  2. +
) + + + +
+ +
+

Create a codec to use when opening an encrypted sembast database

+

The usage is then

+
// Initialize the encryption codec with a user password
+var codec = getXXTeaSembastCodec(password: '[your_user_password]');
+// Open the database with the codec
+Database db = await factory.openDatabase(dbPath, codec: codec);
+
+// ...your database is ready to use as encrypted
+
+
+ + + +
+

Implementation

+
SembastCodec getXXTeaSembastCodec({required String password}) =>
+    SembastCodec(signature: 'xxtea', codec: _XXTeaCodec(password));
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/google.html b/dart/flutter_parse_sdk/google.html new file mode 100644 index 000000000..3bb37bf1a --- /dev/null +++ b/dart/flutter_parse_sdk/google.html @@ -0,0 +1,136 @@ + + + + + + + + google function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
google
+ +
+ +
+
+
+ +
+
+

google function + +

+ +
+ + +Map<String, dynamic> +google(
  1. String token,
  2. +
  3. String id,
  4. +
  5. String idToken
  6. +
) + + + +
+ + + + +
+

Implementation

+
Map<String, dynamic> google(String token, String id, String idToken) {
+  return <String, dynamic>{
+    'access_token': token,
+    'id': id,
+    'id_token': idToken
+  };
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/handleException.html b/dart/flutter_parse_sdk/handleException.html new file mode 100644 index 000000000..8d000ea23 --- /dev/null +++ b/dart/flutter_parse_sdk/handleException.html @@ -0,0 +1,150 @@ + + + + + + + + handleException function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
handleException
+ +
+ +
+
+
+ +
+
+

handleException function + +

+ +
+ +
+
    +
  1. @protected
  2. +
+
+ +ParseResponse +handleException(
  1. Exception exception,
  2. +
  3. ParseApiRQ type,
  4. +
  5. bool debug,
  6. +
  7. String className
  8. +
) + + + +
+ +
+

Handles an API response and logs data if bool debug is enabled

+
+ + + +
+

Implementation

+
@protected
+ParseResponse handleException(
+    Exception exception, ParseApiRQ type, bool debug, String className) {
+  final ParseResponse parseResponse =
+      buildParseResponseWithException(exception);
+
+  if (debug) {
+    logAPIResponse(className, type.toString(), parseResponse);
+  }
+
+  return parseResponse;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/handleResponse.html b/dart/flutter_parse_sdk/handleResponse.html new file mode 100644 index 000000000..f6056a726 --- /dev/null +++ b/dart/flutter_parse_sdk/handleResponse.html @@ -0,0 +1,151 @@ + + + + + + + + handleResponse function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
handleResponse
+ +
+ +
+
+
+ +
+
+

handleResponse<T> function + +

+ +
+ +
+
    +
  1. @protected
  2. +
+
+ +ParseResponse +handleResponse<T>(
  1. dynamic object,
  2. +
  3. ParseNetworkResponse response,
  4. +
  5. ParseApiRQ type,
  6. +
  7. bool debug,
  8. +
  9. String className
  10. +
) + + + +
+ +
+

Handles an API response and logs data if bool debug is enabled

+
+ + + +
+

Implementation

+
@protected
+ParseResponse handleResponse<T>(dynamic object, ParseNetworkResponse response,
+    ParseApiRQ type, bool debug, String className) {
+  final ParseResponse parseResponse =
+      _ParseResponseBuilder().handleResponse<T>(object, response, type);
+
+  if (debug) {
+    logAPIResponse(className, type.toString(), parseResponse);
+  }
+
+  return parseResponse;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/isDebugEnabled.html b/dart/flutter_parse_sdk/isDebugEnabled.html new file mode 100644 index 000000000..698e589a3 --- /dev/null +++ b/dart/flutter_parse_sdk/isDebugEnabled.html @@ -0,0 +1,135 @@ + + + + + + + + isDebugEnabled function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
isDebugEnabled
+ +
+ +
+
+
+ +
+
+

isDebugEnabled function + +

+ +
+ + +bool +isDebugEnabled(
  1. {bool? objectLevelDebug}
  2. +
) + + + +
+ +
+

Checks whether debug is enabled

+

Debug can be set in 2 places, one global param in the Parse.initialize, and +then can be overwritten class by class

+
+ + + +
+

Implementation

+
bool isDebugEnabled({bool? objectLevelDebug}) {
+  return objectLevelDebug ?? ParseCoreData().debug;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/isSuccessButNoResults.html b/dart/flutter_parse_sdk/isSuccessButNoResults.html new file mode 100644 index 000000000..dd84756c8 --- /dev/null +++ b/dart/flutter_parse_sdk/isSuccessButNoResults.html @@ -0,0 +1,142 @@ + + + + + + + + isSuccessButNoResults function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
isSuccessButNoResults
+ +
+ +
+
+
+ +
+
+

isSuccessButNoResults function + +

+ +
+ + +bool +isSuccessButNoResults(
  1. ParseNetworkResponse apiResponse
  2. +
) + + + +
+ + + + +
+

Implementation

+
bool isSuccessButNoResults(ParseNetworkResponse apiResponse) {
+  final dynamic decodedResponse = jsonDecode(apiResponse.data);
+  List<dynamic>? results;
+  if (decodedResponse is Map<String, dynamic>) {
+    results = decodedResponse['results'];
+  } else if (decodedResponse is List<dynamic>) {
+    results = decodedResponse;
+  }
+
+  if (results == null) {
+    return false;
+  }
+
+  return results.isEmpty;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/isUnsuccessfulResponse.html b/dart/flutter_parse_sdk/isUnsuccessfulResponse.html new file mode 100644 index 000000000..f8d8067f5 --- /dev/null +++ b/dart/flutter_parse_sdk/isUnsuccessfulResponse.html @@ -0,0 +1,129 @@ + + + + + + + + isUnsuccessfulResponse function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
isUnsuccessfulResponse
+ +
+ +
+
+
+ +
+
+

isUnsuccessfulResponse function + +

+ +
+ + +bool +isUnsuccessfulResponse(
  1. ParseNetworkResponse apiResponse
  2. +
) + + + +
+ + + + +
+

Implementation

+
bool isUnsuccessfulResponse(ParseNetworkResponse apiResponse) =>
+    apiResponse.statusCode != 200 && apiResponse.statusCode != 201;
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyAppIdentifier-constant.html b/dart/flutter_parse_sdk/keyAppIdentifier-constant.html new file mode 100644 index 000000000..77eff04ff --- /dev/null +++ b/dart/flutter_parse_sdk/keyAppIdentifier-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyAppIdentifier constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyAppIdentifier
+ +
+ +
+
+
+ +
+
+

keyAppIdentifier top-level constant + +

+ +
+ + String + const keyAppIdentifier + + +
+ + + +
+

Implementation

+
const String keyAppIdentifier = 'appIdentifier';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyAppName-constant.html b/dart/flutter_parse_sdk/keyAppName-constant.html new file mode 100644 index 000000000..c00edfe96 --- /dev/null +++ b/dart/flutter_parse_sdk/keyAppName-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyAppName constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyAppName
+ +
+ +
+
+
+ +
+
+

keyAppName top-level constant + +

+ +
+ + String + const keyAppName + + +
+ + + +
+

Implementation

+
const String keyAppName = 'appName';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyAppVersion-constant.html b/dart/flutter_parse_sdk/keyAppVersion-constant.html new file mode 100644 index 000000000..3a79aed7b --- /dev/null +++ b/dart/flutter_parse_sdk/keyAppVersion-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyAppVersion constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyAppVersion
+ +
+ +
+
+
+ +
+
+

keyAppVersion top-level constant + +

+ +
+ + String + const keyAppVersion + + +
+ + + +
+

Implementation

+
const String keyAppVersion = 'appVersion';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyClassInstallation-constant.html b/dart/flutter_parse_sdk/keyClassInstallation-constant.html new file mode 100644 index 000000000..d16ae6a32 --- /dev/null +++ b/dart/flutter_parse_sdk/keyClassInstallation-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyClassInstallation constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyClassInstallation
+ +
+ +
+
+
+ +
+
+

keyClassInstallation top-level constant + +

+ +
+ + String + const keyClassInstallation + + +
+ + + +
+

Implementation

+
const String keyClassInstallation = '_Installation';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyClassMain-constant.html b/dart/flutter_parse_sdk/keyClassMain-constant.html new file mode 100644 index 000000000..50cebfe7e --- /dev/null +++ b/dart/flutter_parse_sdk/keyClassMain-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyClassMain constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyClassMain
+ +
+ +
+
+
+ +
+
+

keyClassMain top-level constant + +

+ +
+ + String + const keyClassMain + + +
+ + + +
+

Implementation

+
const String keyClassMain = 'ParseMain';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyClassSession-constant.html b/dart/flutter_parse_sdk/keyClassSession-constant.html new file mode 100644 index 000000000..a0818f781 --- /dev/null +++ b/dart/flutter_parse_sdk/keyClassSession-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyClassSession constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyClassSession
+ +
+ +
+
+
+ +
+
+

keyClassSession top-level constant + +

+ +
+ + String + const keyClassSession + + +
+ + + +
+

Implementation

+
const String keyClassSession = '_Session';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyClassUser-constant.html b/dart/flutter_parse_sdk/keyClassUser-constant.html new file mode 100644 index 000000000..d809eb368 --- /dev/null +++ b/dart/flutter_parse_sdk/keyClassUser-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyClassUser constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyClassUser
+ +
+ +
+
+
+ +
+
+

keyClassUser top-level constant + +

+ +
+ + String + const keyClassUser + + +
+ + + +
+

Implementation

+
const String keyClassUser = '_User';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyCode-constant.html b/dart/flutter_parse_sdk/keyCode-constant.html new file mode 100644 index 000000000..99892f7b9 --- /dev/null +++ b/dart/flutter_parse_sdk/keyCode-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyCode constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyCode
+ +
+ +
+
+
+ +
+
+

keyCode top-level constant + +

+ +
+ + String + const keyCode + + +
+ + + +
+

Implementation

+
const String keyCode = 'code';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyDeviceToken-constant.html b/dart/flutter_parse_sdk/keyDeviceToken-constant.html new file mode 100644 index 000000000..7ecdb8043 --- /dev/null +++ b/dart/flutter_parse_sdk/keyDeviceToken-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyDeviceToken constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyDeviceToken
+ +
+ +
+
+
+ +
+
+

keyDeviceToken top-level constant + +

+ +
+ + String + const keyDeviceToken + + +
+ + + +
+

Implementation

+
const String keyDeviceToken = 'deviceToken';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyDeviceType-constant.html b/dart/flutter_parse_sdk/keyDeviceType-constant.html new file mode 100644 index 000000000..8587ef408 --- /dev/null +++ b/dart/flutter_parse_sdk/keyDeviceType-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyDeviceType constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyDeviceType
+ +
+ +
+
+
+ +
+
+

keyDeviceType top-level constant + +

+ +
+ + String + const keyDeviceType + + +
+ + + +
+

Implementation

+
const String keyDeviceType = 'deviceType';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyEndPointAggregate-constant.html b/dart/flutter_parse_sdk/keyEndPointAggregate-constant.html new file mode 100644 index 000000000..0390b7469 --- /dev/null +++ b/dart/flutter_parse_sdk/keyEndPointAggregate-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyEndPointAggregate constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyEndPointAggregate
+ +
+ +
+
+
+ +
+
+

keyEndPointAggregate top-level constant + +

+ +
+ + String + const keyEndPointAggregate + + +
+ + + +
+

Implementation

+
const String keyEndPointAggregate = '/aggregate/';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyEndPointClasses-constant.html b/dart/flutter_parse_sdk/keyEndPointClasses-constant.html new file mode 100644 index 000000000..6456e1ccc --- /dev/null +++ b/dart/flutter_parse_sdk/keyEndPointClasses-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyEndPointClasses constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyEndPointClasses
+ +
+ +
+
+
+ +
+
+

keyEndPointClasses top-level constant + +

+ +
+ + String + const keyEndPointClasses + + +
+ + + +
+

Implementation

+
const String keyEndPointClasses = '/classes/';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyEndPointHealth-constant.html b/dart/flutter_parse_sdk/keyEndPointHealth-constant.html new file mode 100644 index 000000000..08f59720c --- /dev/null +++ b/dart/flutter_parse_sdk/keyEndPointHealth-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyEndPointHealth constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyEndPointHealth
+ +
+ +
+
+
+ +
+
+

keyEndPointHealth top-level constant + +

+ +
+ + String + const keyEndPointHealth + + +
+ + + +
+

Implementation

+
const String keyEndPointHealth = '/health';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyEndPointInstallations-constant.html b/dart/flutter_parse_sdk/keyEndPointInstallations-constant.html new file mode 100644 index 000000000..e70e0e7a0 --- /dev/null +++ b/dart/flutter_parse_sdk/keyEndPointInstallations-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyEndPointInstallations constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyEndPointInstallations
+ +
+ +
+
+
+ +
+
+

keyEndPointInstallations top-level constant + +

+ +
+ + String + const keyEndPointInstallations + + +
+ + + +
+

Implementation

+
const String keyEndPointInstallations = '/installations';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyEndPointLogin-constant.html b/dart/flutter_parse_sdk/keyEndPointLogin-constant.html new file mode 100644 index 000000000..15da897ff --- /dev/null +++ b/dart/flutter_parse_sdk/keyEndPointLogin-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyEndPointLogin constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyEndPointLogin
+ +
+ +
+
+
+ +
+
+

keyEndPointLogin top-level constant + +

+ +
+ + String + const keyEndPointLogin + + +
+ + + +
+

Implementation

+
const String keyEndPointLogin = '/login';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyEndPointLogout-constant.html b/dart/flutter_parse_sdk/keyEndPointLogout-constant.html new file mode 100644 index 000000000..cd3832ff3 --- /dev/null +++ b/dart/flutter_parse_sdk/keyEndPointLogout-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyEndPointLogout constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyEndPointLogout
+ +
+ +
+
+
+ +
+
+

keyEndPointLogout top-level constant + +

+ +
+ + String + const keyEndPointLogout + + +
+ + + +
+

Implementation

+
const String keyEndPointLogout = '/logout';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyEndPointRequestPasswordReset-constant.html b/dart/flutter_parse_sdk/keyEndPointRequestPasswordReset-constant.html new file mode 100644 index 000000000..cd140ac99 --- /dev/null +++ b/dart/flutter_parse_sdk/keyEndPointRequestPasswordReset-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyEndPointRequestPasswordReset constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyEndPointRequestPasswordReset
+ +
+ +
+
+
+ +
+
+

keyEndPointRequestPasswordReset top-level constant + +

+ +
+ + String + const keyEndPointRequestPasswordReset + + +
+ + + +
+

Implementation

+
const String keyEndPointRequestPasswordReset = '/requestPasswordReset';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyEndPointSessions-constant.html b/dart/flutter_parse_sdk/keyEndPointSessions-constant.html new file mode 100644 index 000000000..f22d9035f --- /dev/null +++ b/dart/flutter_parse_sdk/keyEndPointSessions-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyEndPointSessions constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyEndPointSessions
+ +
+ +
+
+
+ +
+
+

keyEndPointSessions top-level constant + +

+ +
+ + String + const keyEndPointSessions + + +
+ + + +
+

Implementation

+
const String keyEndPointSessions = '/sessions';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyEndPointUserName-constant.html b/dart/flutter_parse_sdk/keyEndPointUserName-constant.html new file mode 100644 index 000000000..2ced604a2 --- /dev/null +++ b/dart/flutter_parse_sdk/keyEndPointUserName-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyEndPointUserName constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyEndPointUserName
+ +
+ +
+
+
+ +
+
+

keyEndPointUserName top-level constant + +

+ +
+ + String + const keyEndPointUserName + + +
+ + + +
+

Implementation

+
const String keyEndPointUserName = '/users/me';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyEndPointUsers-constant.html b/dart/flutter_parse_sdk/keyEndPointUsers-constant.html new file mode 100644 index 000000000..a21bb691e --- /dev/null +++ b/dart/flutter_parse_sdk/keyEndPointUsers-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyEndPointUsers constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyEndPointUsers
+ +
+ +
+
+
+ +
+
+

keyEndPointUsers top-level constant + +

+ +
+ + String + const keyEndPointUsers + + +
+ + + +
+

Implementation

+
const String keyEndPointUsers = '/users';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyEndPointVerificationEmail-constant.html b/dart/flutter_parse_sdk/keyEndPointVerificationEmail-constant.html new file mode 100644 index 000000000..b6db4e97f --- /dev/null +++ b/dart/flutter_parse_sdk/keyEndPointVerificationEmail-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyEndPointVerificationEmail constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyEndPointVerificationEmail
+ +
+ +
+
+
+ +
+
+

keyEndPointVerificationEmail top-level constant + +

+ +
+ + String + const keyEndPointVerificationEmail + + +
+ + + +
+

Implementation

+
const String keyEndPointVerificationEmail = '/verificationEmailRequest';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyError-constant.html b/dart/flutter_parse_sdk/keyError-constant.html new file mode 100644 index 000000000..9b518dd5d --- /dev/null +++ b/dart/flutter_parse_sdk/keyError-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyError constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyError
+ +
+ +
+
+
+ +
+
+

keyError top-level constant + +

+ +
+ + String + const keyError + + +
+ + + +
+

Implementation

+
const String keyError = 'error';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyFile-constant.html b/dart/flutter_parse_sdk/keyFile-constant.html new file mode 100644 index 000000000..77a51274c --- /dev/null +++ b/dart/flutter_parse_sdk/keyFile-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyFile constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyFile
+ +
+ +
+
+
+ +
+
+

keyFile top-level constant + +

+ +
+ + String + const keyFile + + +
+ + + +
+

Implementation

+
const String keyFile = 'File';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyFileClassname-constant.html b/dart/flutter_parse_sdk/keyFileClassname-constant.html new file mode 100644 index 000000000..4368bd3b2 --- /dev/null +++ b/dart/flutter_parse_sdk/keyFileClassname-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyFileClassname constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyFileClassname
+ +
+ +
+
+
+ +
+
+

keyFileClassname top-level constant + +

+ +
+ + String + const keyFileClassname + + +
+ + + +
+

Implementation

+
const String keyFileClassname = 'ParseFile';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyGeoPoint-constant.html b/dart/flutter_parse_sdk/keyGeoPoint-constant.html new file mode 100644 index 000000000..2f1bae932 --- /dev/null +++ b/dart/flutter_parse_sdk/keyGeoPoint-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyGeoPoint constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyGeoPoint
+ +
+ +
+
+
+ +
+
+

keyGeoPoint top-level constant + +

+ +
+ + String + const keyGeoPoint + + +
+ + + +
+

Implementation

+
const String keyGeoPoint = 'GeoPoint';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyHeaderApplicationId-constant.html b/dart/flutter_parse_sdk/keyHeaderApplicationId-constant.html new file mode 100644 index 000000000..3496a0f71 --- /dev/null +++ b/dart/flutter_parse_sdk/keyHeaderApplicationId-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyHeaderApplicationId constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyHeaderApplicationId
+ +
+ +
+
+
+ +
+
+

keyHeaderApplicationId top-level constant + +

+ +
+ + String + const keyHeaderApplicationId + + +
+ + + +
+

Implementation

+
const String keyHeaderApplicationId = 'X-Parse-Application-Id';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyHeaderClientKey-constant.html b/dart/flutter_parse_sdk/keyHeaderClientKey-constant.html new file mode 100644 index 000000000..ff2ea60f7 --- /dev/null +++ b/dart/flutter_parse_sdk/keyHeaderClientKey-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyHeaderClientKey constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyHeaderClientKey
+ +
+ +
+
+
+ +
+
+

keyHeaderClientKey top-level constant + +

+ +
+ + String + const keyHeaderClientKey + + +
+ + + +
+

Implementation

+
const String keyHeaderClientKey = 'X-Parse-Client-Key';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyHeaderCloudContext-constant.html b/dart/flutter_parse_sdk/keyHeaderCloudContext-constant.html new file mode 100644 index 000000000..2f4785c1b --- /dev/null +++ b/dart/flutter_parse_sdk/keyHeaderCloudContext-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyHeaderCloudContext constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyHeaderCloudContext
+ +
+ +
+
+
+ +
+
+

keyHeaderCloudContext top-level constant + +

+ +
+ + String + const keyHeaderCloudContext + + +
+ + + +
+

Implementation

+
const String keyHeaderCloudContext = 'X-Parse-Cloud-Context';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyHeaderContentType-constant.html b/dart/flutter_parse_sdk/keyHeaderContentType-constant.html new file mode 100644 index 000000000..b5fb16a27 --- /dev/null +++ b/dart/flutter_parse_sdk/keyHeaderContentType-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyHeaderContentType constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyHeaderContentType
+ +
+ +
+
+
+ +
+
+

keyHeaderContentType top-level constant + +

+ +
+ + String + const keyHeaderContentType + + +
+ + + +
+

Implementation

+
const String keyHeaderContentType = 'content-type';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyHeaderContentTypeJson-constant.html b/dart/flutter_parse_sdk/keyHeaderContentTypeJson-constant.html new file mode 100644 index 000000000..facbe46da --- /dev/null +++ b/dart/flutter_parse_sdk/keyHeaderContentTypeJson-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyHeaderContentTypeJson constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyHeaderContentTypeJson
+ +
+ +
+
+
+ +
+
+

keyHeaderContentTypeJson top-level constant + +

+ +
+ + String + const keyHeaderContentTypeJson + + +
+ + + +
+

Implementation

+
const String keyHeaderContentTypeJson = 'application/json';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyHeaderInstallationId-constant.html b/dart/flutter_parse_sdk/keyHeaderInstallationId-constant.html new file mode 100644 index 000000000..9b64c3cba --- /dev/null +++ b/dart/flutter_parse_sdk/keyHeaderInstallationId-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyHeaderInstallationId constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyHeaderInstallationId
+ +
+ +
+
+
+ +
+
+

keyHeaderInstallationId top-level constant + +

+ +
+ + String + const keyHeaderInstallationId + + +
+ + + +
+

Implementation

+
const String keyHeaderInstallationId = 'X-Parse-Installation-Id';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyHeaderMasterKey-constant.html b/dart/flutter_parse_sdk/keyHeaderMasterKey-constant.html new file mode 100644 index 000000000..d818595bf --- /dev/null +++ b/dart/flutter_parse_sdk/keyHeaderMasterKey-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyHeaderMasterKey constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyHeaderMasterKey
+ +
+ +
+
+
+ +
+
+

keyHeaderMasterKey top-level constant + +

+ +
+ + String + const keyHeaderMasterKey + + +
+ + + +
+

Implementation

+
const String keyHeaderMasterKey = 'X-Parse-Master-Key';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyHeaderRevocableSession-constant.html b/dart/flutter_parse_sdk/keyHeaderRevocableSession-constant.html new file mode 100644 index 000000000..282e65cc3 --- /dev/null +++ b/dart/flutter_parse_sdk/keyHeaderRevocableSession-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyHeaderRevocableSession constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyHeaderRevocableSession
+ +
+ +
+
+
+ +
+
+

keyHeaderRevocableSession top-level constant + +

+ +
+ + String + const keyHeaderRevocableSession + + +
+ + + +
+

Implementation

+
const String keyHeaderRevocableSession = 'X-Parse-Revocable-Session';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyHeaderSessionToken-constant.html b/dart/flutter_parse_sdk/keyHeaderSessionToken-constant.html new file mode 100644 index 000000000..fadf5014a --- /dev/null +++ b/dart/flutter_parse_sdk/keyHeaderSessionToken-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyHeaderSessionToken constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyHeaderSessionToken
+ +
+ +
+
+
+ +
+
+

keyHeaderSessionToken top-level constant + +

+ +
+ + String + const keyHeaderSessionToken + + +
+ + + +
+

Implementation

+
const String keyHeaderSessionToken = 'X-Parse-Session-Token';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyHeaderUserAgent-constant.html b/dart/flutter_parse_sdk/keyHeaderUserAgent-constant.html new file mode 100644 index 000000000..3c9d84bc7 --- /dev/null +++ b/dart/flutter_parse_sdk/keyHeaderUserAgent-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyHeaderUserAgent constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyHeaderUserAgent
+ +
+ +
+
+
+ +
+
+

keyHeaderUserAgent top-level constant + +

+ +
+ + String + const keyHeaderUserAgent + + +
+ + + +
+

Implementation

+
const String keyHeaderUserAgent = 'user-agent';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyInstallationId-constant.html b/dart/flutter_parse_sdk/keyInstallationId-constant.html new file mode 100644 index 000000000..c1f7b8305 --- /dev/null +++ b/dart/flutter_parse_sdk/keyInstallationId-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyInstallationId constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyInstallationId
+ +
+ +
+
+
+ +
+
+

keyInstallationId top-level constant + +

+ +
+ + String + const keyInstallationId + + +
+ + + +
+

Implementation

+
const String keyInstallationId = 'installationId';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyLatitude-constant.html b/dart/flutter_parse_sdk/keyLatitude-constant.html new file mode 100644 index 000000000..21b33fb20 --- /dev/null +++ b/dart/flutter_parse_sdk/keyLatitude-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyLatitude constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyLatitude
+ +
+ +
+
+
+ +
+
+

keyLatitude top-level constant + +

+ +
+ + String + const keyLatitude + + +
+ + + +
+

Implementation

+
const String keyLatitude = 'latitude';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyLibraryName-constant.html b/dart/flutter_parse_sdk/keyLibraryName-constant.html new file mode 100644 index 000000000..cd121445d --- /dev/null +++ b/dart/flutter_parse_sdk/keyLibraryName-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyLibraryName constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyLibraryName
+ +
+ +
+
+
+ +
+
+

keyLibraryName top-level constant + +

+ +
+ + String + const keyLibraryName + + +
+ + + +
+

Implementation

+
const String keyLibraryName = 'Flutter Parse SDK';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyLocaleIdentifier-constant.html b/dart/flutter_parse_sdk/keyLocaleIdentifier-constant.html new file mode 100644 index 000000000..c11373f38 --- /dev/null +++ b/dart/flutter_parse_sdk/keyLocaleIdentifier-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyLocaleIdentifier constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyLocaleIdentifier
+ +
+ +
+
+
+ +
+
+

keyLocaleIdentifier top-level constant + +

+ +
+ + String + const keyLocaleIdentifier + + +
+ + + +
+

Implementation

+
const String keyLocaleIdentifier = 'localeIdentifier';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyLongitude-constant.html b/dart/flutter_parse_sdk/keyLongitude-constant.html new file mode 100644 index 000000000..84a54bd3a --- /dev/null +++ b/dart/flutter_parse_sdk/keyLongitude-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyLongitude constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyLongitude
+ +
+ +
+
+
+ +
+
+

keyLongitude top-level constant + +

+ +
+ + String + const keyLongitude + + +
+ + + +
+

Implementation

+
const String keyLongitude = 'longitude';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyNetworkError-constant.html b/dart/flutter_parse_sdk/keyNetworkError-constant.html new file mode 100644 index 000000000..7a42e552d --- /dev/null +++ b/dart/flutter_parse_sdk/keyNetworkError-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyNetworkError constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyNetworkError
+ +
+ +
+
+
+ +
+
+

keyNetworkError top-level constant + +

+ +
+ + String + const keyNetworkError + + +
+ + + +
+

Implementation

+
const String keyNetworkError = 'NetworkError';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyParamSessionToken-constant.html b/dart/flutter_parse_sdk/keyParamSessionToken-constant.html new file mode 100644 index 000000000..6672a2664 --- /dev/null +++ b/dart/flutter_parse_sdk/keyParamSessionToken-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyParamSessionToken constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyParamSessionToken
+ +
+ +
+
+
+ +
+
+

keyParamSessionToken top-level constant + +

+ +
+ + String + const keyParamSessionToken + + +
+ + + +
+

Implementation

+
const String keyParamSessionToken = 'sessionToken';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyParseStoreBase-constant.html b/dart/flutter_parse_sdk/keyParseStoreBase-constant.html new file mode 100644 index 000000000..ee2c7e26a --- /dev/null +++ b/dart/flutter_parse_sdk/keyParseStoreBase-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyParseStoreBase constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyParseStoreBase
+ +
+ +
+
+
+ +
+
+

keyParseStoreBase top-level constant + +

+ +
+ + String + const keyParseStoreBase + + +
+ + + +
+

Implementation

+
const String keyParseStoreBase = 'flutter_parse_sdk_';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyParseStoreDeletes-constant.html b/dart/flutter_parse_sdk/keyParseStoreDeletes-constant.html new file mode 100644 index 000000000..05ec18c30 --- /dev/null +++ b/dart/flutter_parse_sdk/keyParseStoreDeletes-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyParseStoreDeletes constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyParseStoreDeletes
+ +
+ +
+
+
+ +
+
+

keyParseStoreDeletes top-level constant + +

+ +
+ + String + const keyParseStoreDeletes + + +
+ + + +
+

Implementation

+
const String keyParseStoreDeletes = '${keyParseStoreBase}deletes';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyParseStoreInstallation-constant.html b/dart/flutter_parse_sdk/keyParseStoreInstallation-constant.html new file mode 100644 index 000000000..36d14b0c2 --- /dev/null +++ b/dart/flutter_parse_sdk/keyParseStoreInstallation-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyParseStoreInstallation constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyParseStoreInstallation
+ +
+ +
+
+
+ +
+
+

keyParseStoreInstallation top-level constant + +

+ +
+ + String + const keyParseStoreInstallation + + +
+ + + +
+

Implementation

+
const String keyParseStoreInstallation = '${keyParseStoreBase}installation';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyParseStoreObjects-constant.html b/dart/flutter_parse_sdk/keyParseStoreObjects-constant.html new file mode 100644 index 000000000..635988795 --- /dev/null +++ b/dart/flutter_parse_sdk/keyParseStoreObjects-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyParseStoreObjects constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyParseStoreObjects
+ +
+ +
+
+
+ +
+
+

keyParseStoreObjects top-level constant + +

+ +
+ + String + const keyParseStoreObjects + + +
+ + + +
+

Implementation

+
const String keyParseStoreObjects = '${keyParseStoreBase}objects';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyParseStoreUser-constant.html b/dart/flutter_parse_sdk/keyParseStoreUser-constant.html new file mode 100644 index 000000000..13d876a83 --- /dev/null +++ b/dart/flutter_parse_sdk/keyParseStoreUser-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyParseStoreUser constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyParseStoreUser
+ +
+ +
+
+
+ +
+
+

keyParseStoreUser top-level constant + +

+ +
+ + String + const keyParseStoreUser + + +
+ + + +
+

Implementation

+
const String keyParseStoreUser = '${keyParseStoreBase}user';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyParseVersion-constant.html b/dart/flutter_parse_sdk/keyParseVersion-constant.html new file mode 100644 index 000000000..7402ff920 --- /dev/null +++ b/dart/flutter_parse_sdk/keyParseVersion-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyParseVersion constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyParseVersion
+ +
+ +
+
+
+ +
+
+

keyParseVersion top-level constant + +

+ +
+ + String + const keyParseVersion + + +
+ + + +
+

Implementation

+
const String keyParseVersion = 'parseVersion';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyRelation-constant.html b/dart/flutter_parse_sdk/keyRelation-constant.html new file mode 100644 index 000000000..c12aef36c --- /dev/null +++ b/dart/flutter_parse_sdk/keyRelation-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyRelation constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyRelation
+ +
+ +
+
+
+ +
+
+

keyRelation top-level constant + +

+ +
+ + String + const keyRelation + + +
+ + + +
+

Implementation

+
const String keyRelation = 'Relation';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keySdkVersion-constant.html b/dart/flutter_parse_sdk/keySdkVersion-constant.html new file mode 100644 index 000000000..10962803b --- /dev/null +++ b/dart/flutter_parse_sdk/keySdkVersion-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keySdkVersion constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keySdkVersion
+ +
+ +
+
+
+ +
+
+

keySdkVersion top-level constant + +

+ +
+ + String + const keySdkVersion + + +
+ + + +
+

Implementation

+
const String keySdkVersion = '6.4.0';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyTimeZone-constant.html b/dart/flutter_parse_sdk/keyTimeZone-constant.html new file mode 100644 index 000000000..4b42cdf18 --- /dev/null +++ b/dart/flutter_parse_sdk/keyTimeZone-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyTimeZone constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyTimeZone
+ +
+ +
+
+
+ +
+
+

keyTimeZone top-level constant + +

+ +
+ + String + const keyTimeZone + + +
+ + + +
+

Implementation

+
const String keyTimeZone = 'timeZone';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyVarAcl-constant.html b/dart/flutter_parse_sdk/keyVarAcl-constant.html new file mode 100644 index 000000000..db65cce9f --- /dev/null +++ b/dart/flutter_parse_sdk/keyVarAcl-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyVarAcl constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyVarAcl
+ +
+ +
+
+
+ +
+
+

keyVarAcl top-level constant + +

+ +
+ + String + const keyVarAcl + + +
+ + + +
+

Implementation

+
const String keyVarAcl = 'ACL';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyVarAuthData-constant.html b/dart/flutter_parse_sdk/keyVarAuthData-constant.html new file mode 100644 index 000000000..a7aaf40fe --- /dev/null +++ b/dart/flutter_parse_sdk/keyVarAuthData-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyVarAuthData constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyVarAuthData
+ +
+ +
+
+
+ +
+
+

keyVarAuthData top-level constant + +

+ +
+ + String + const keyVarAuthData + + +
+ + + +
+

Implementation

+
const String keyVarAuthData = 'authData';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyVarClassName-constant.html b/dart/flutter_parse_sdk/keyVarClassName-constant.html new file mode 100644 index 000000000..701ecdda7 --- /dev/null +++ b/dart/flutter_parse_sdk/keyVarClassName-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyVarClassName constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyVarClassName
+ +
+ +
+
+
+ +
+
+

keyVarClassName top-level constant + +

+ +
+ + String + const keyVarClassName + + +
+ + + +
+

Implementation

+
const String keyVarClassName = 'className';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyVarCreatedAt-constant.html b/dart/flutter_parse_sdk/keyVarCreatedAt-constant.html new file mode 100644 index 000000000..0ca50371c --- /dev/null +++ b/dart/flutter_parse_sdk/keyVarCreatedAt-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyVarCreatedAt constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyVarCreatedAt
+ +
+ +
+
+
+ +
+
+

keyVarCreatedAt top-level constant + +

+ +
+ + String + const keyVarCreatedAt + + +
+ + + +
+

Implementation

+
const String keyVarCreatedAt = 'createdAt';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyVarCreatedWith-constant.html b/dart/flutter_parse_sdk/keyVarCreatedWith-constant.html new file mode 100644 index 000000000..b1a304231 --- /dev/null +++ b/dart/flutter_parse_sdk/keyVarCreatedWith-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyVarCreatedWith constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyVarCreatedWith
+ +
+ +
+
+
+ +
+
+

keyVarCreatedWith top-level constant + +

+ +
+ + String + const keyVarCreatedWith + + +
+ + + +
+

Implementation

+
const String keyVarCreatedWith = 'createdWith';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyVarEmail-constant.html b/dart/flutter_parse_sdk/keyVarEmail-constant.html new file mode 100644 index 000000000..7095e4d51 --- /dev/null +++ b/dart/flutter_parse_sdk/keyVarEmail-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyVarEmail constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyVarEmail
+ +
+ +
+
+
+ +
+
+

keyVarEmail top-level constant + +

+ +
+ + String + const keyVarEmail + + +
+ + + +
+

Implementation

+
const String keyVarEmail = 'email';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyVarExpiresAt-constant.html b/dart/flutter_parse_sdk/keyVarExpiresAt-constant.html new file mode 100644 index 000000000..cf01dd806 --- /dev/null +++ b/dart/flutter_parse_sdk/keyVarExpiresAt-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyVarExpiresAt constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyVarExpiresAt
+ +
+ +
+
+
+ +
+
+

keyVarExpiresAt top-level constant + +

+ +
+ + String + const keyVarExpiresAt + + +
+ + + +
+

Implementation

+
const String keyVarExpiresAt = 'expiresAt';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyVarInstallationId-constant.html b/dart/flutter_parse_sdk/keyVarInstallationId-constant.html new file mode 100644 index 000000000..6fb816d34 --- /dev/null +++ b/dart/flutter_parse_sdk/keyVarInstallationId-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyVarInstallationId constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyVarInstallationId
+ +
+ +
+
+
+ +
+
+

keyVarInstallationId top-level constant + +

+ +
+ + String + const keyVarInstallationId + + +
+ + + +
+

Implementation

+
const String keyVarInstallationId = 'installationId';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyVarName-constant.html b/dart/flutter_parse_sdk/keyVarName-constant.html new file mode 100644 index 000000000..2d454de85 --- /dev/null +++ b/dart/flutter_parse_sdk/keyVarName-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyVarName constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyVarName
+ +
+ +
+
+
+ +
+
+

keyVarName top-level constant + +

+ +
+ + String + const keyVarName + + +
+ + + +
+

Implementation

+
const String keyVarName = 'name';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyVarObjectId-constant.html b/dart/flutter_parse_sdk/keyVarObjectId-constant.html new file mode 100644 index 000000000..ff6cd1d92 --- /dev/null +++ b/dart/flutter_parse_sdk/keyVarObjectId-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyVarObjectId constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyVarObjectId
+ +
+ +
+
+
+ +
+
+

keyVarObjectId top-level constant + +

+ +
+ + String + const keyVarObjectId + + +
+ + + +
+

Implementation

+
const String keyVarObjectId = 'objectId';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyVarPassword-constant.html b/dart/flutter_parse_sdk/keyVarPassword-constant.html new file mode 100644 index 000000000..a2b214519 --- /dev/null +++ b/dart/flutter_parse_sdk/keyVarPassword-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyVarPassword constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyVarPassword
+ +
+ +
+
+
+ +
+
+

keyVarPassword top-level constant + +

+ +
+ + String + const keyVarPassword + + +
+ + + +
+

Implementation

+
const String keyVarPassword = 'password';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyVarRestricted-constant.html b/dart/flutter_parse_sdk/keyVarRestricted-constant.html new file mode 100644 index 000000000..88523807f --- /dev/null +++ b/dart/flutter_parse_sdk/keyVarRestricted-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyVarRestricted constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyVarRestricted
+ +
+ +
+
+
+ +
+
+

keyVarRestricted top-level constant + +

+ +
+ + String + const keyVarRestricted + + +
+ + + +
+

Implementation

+
const String keyVarRestricted = 'restricted';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyVarSessionToken-constant.html b/dart/flutter_parse_sdk/keyVarSessionToken-constant.html new file mode 100644 index 000000000..66907ee8d --- /dev/null +++ b/dart/flutter_parse_sdk/keyVarSessionToken-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyVarSessionToken constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyVarSessionToken
+ +
+ +
+
+
+ +
+
+

keyVarSessionToken top-level constant + +

+ +
+ + String + const keyVarSessionToken + + +
+ + + +
+

Implementation

+
const String keyVarSessionToken = 'sessionToken';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyVarURL-constant.html b/dart/flutter_parse_sdk/keyVarURL-constant.html new file mode 100644 index 000000000..e719995c8 --- /dev/null +++ b/dart/flutter_parse_sdk/keyVarURL-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyVarURL constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyVarURL
+ +
+ +
+
+
+ +
+
+

keyVarURL top-level constant + +

+ +
+ + String + const keyVarURL + + +
+ + + +
+

Implementation

+
const String keyVarURL = 'url';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyVarUpdatedAt-constant.html b/dart/flutter_parse_sdk/keyVarUpdatedAt-constant.html new file mode 100644 index 000000000..ada758f26 --- /dev/null +++ b/dart/flutter_parse_sdk/keyVarUpdatedAt-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyVarUpdatedAt constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyVarUpdatedAt
+ +
+ +
+
+
+ +
+
+

keyVarUpdatedAt top-level constant + +

+ +
+ + String + const keyVarUpdatedAt + + +
+ + + +
+

Implementation

+
const String keyVarUpdatedAt = 'updatedAt';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyVarUser-constant.html b/dart/flutter_parse_sdk/keyVarUser-constant.html new file mode 100644 index 000000000..5791633a8 --- /dev/null +++ b/dart/flutter_parse_sdk/keyVarUser-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyVarUser constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyVarUser
+ +
+ +
+
+
+ +
+
+

keyVarUser top-level constant + +

+ +
+ + String + const keyVarUser + + +
+ + + +
+

Implementation

+
const String keyVarUser = 'user';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/keyVarUsername-constant.html b/dart/flutter_parse_sdk/keyVarUsername-constant.html new file mode 100644 index 000000000..5d81e4a10 --- /dev/null +++ b/dart/flutter_parse_sdk/keyVarUsername-constant.html @@ -0,0 +1,125 @@ + + + + + + + + keyVarUsername constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyVarUsername
+ +
+ +
+
+
+ +
+
+

keyVarUsername top-level constant + +

+ +
+ + String + const keyVarUsername + + +
+ + + +
+

Implementation

+
const String keyVarUsername = 'username';
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/logAPIResponse.html b/dart/flutter_parse_sdk/logAPIResponse.html new file mode 100644 index 000000000..93d97e638 --- /dev/null +++ b/dart/flutter_parse_sdk/logAPIResponse.html @@ -0,0 +1,159 @@ + + + + + + + + logAPIResponse function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
logAPIResponse
+ +
+ +
+
+
+ +
+
+

logAPIResponse function + +

+ +
+ + +void +logAPIResponse(
  1. String className,
  2. +
  3. String type,
  4. +
  5. ParseResponse parseResponse
  6. +
) + + + +
+ + + + +
+

Implementation

+
void logAPIResponse(
+    String className, String type, ParseResponse parseResponse) {
+  const String spacer = ' \n';
+  String responseString = '';
+
+  responseString += '╭-- Parse Response';
+  responseString += '\nClass: $className';
+  responseString += '\nFunction: $type';
+
+  if (parseResponse.success) {
+    responseString += '\nStatus Code: ${parseResponse.statusCode}';
+    if (parseResponse.result != null) {
+      responseString += '\nPayload: ${parseResponse.result.toString()}';
+    } else {
+      responseString += '\nReponse: OK';
+    }
+  } else if (!parseResponse.success) {
+    responseString += '\nStatus Code: ${parseResponse.error!.code}';
+    responseString += '\nType: ${parseResponse.error!.type}';
+
+    final String errorOrException =
+        parseResponse.error!.exception != null ? 'Exception' : 'Error';
+
+    responseString += '\n$errorOrException: ${parseResponse.error!.message}';
+  }
+
+  responseString += '\n╰-- \n';
+  responseString += spacer;
+  print(responseString);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/logRequest.html b/dart/flutter_parse_sdk/logRequest.html new file mode 100644 index 000000000..82055b068 --- /dev/null +++ b/dart/flutter_parse_sdk/logRequest.html @@ -0,0 +1,142 @@ + + + + + + + + logRequest function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
logRequest
+ +
+ +
+
+
+ +
+
+

logRequest function + +

+ +
+ + +void +logRequest(
  1. String? appName,
  2. +
  3. String className,
  4. +
  5. String type,
  6. +
  7. String uri,
  8. +
  9. String body
  10. +
) + + + +
+ + + + +
+

Implementation

+
void logRequest(
+    String? appName, String className, String type, String uri, String body) {
+  String requestString = ' \n';
+  final String name = appName != null ? '$appName ' : '';
+  requestString += '----\n${name}API Request ($className : $type) :';
+  requestString += '\nUri: $uri';
+  requestString += '\nBody: $body';
+
+  requestString += '\n----\n';
+  print(requestString);
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/parseDecode.html b/dart/flutter_parse_sdk/parseDecode.html new file mode 100644 index 000000000..513164683 --- /dev/null +++ b/dart/flutter_parse_sdk/parseDecode.html @@ -0,0 +1,217 @@ + + + + + + + + parseDecode function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
parseDecode
+ +
+ +
+
+
+ +
+
+

parseDecode function + +

+ +
+ + +dynamic +parseDecode(
  1. dynamic value
  2. +
) + + + +
+ +
+

Decode any type value

+
+ + + +
+

Implementation

+
dynamic parseDecode(dynamic value) {
+  if (value is List) {
+    return _convertJSONArrayToList(value);
+  }
+
+  if (value is bool) {
+    return value;
+  }
+
+  if (value is int) {
+    return value.toInt();
+  }
+
+  if (value is double) {
+    return value.toDouble();
+  }
+
+  if (value is num) {
+    return value;
+  }
+
+  if (value is! Map) {
+    return value;
+  }
+
+  final Map<String, dynamic> map = value as Map<String, dynamic>;
+
+  if (!map.containsKey('__type') && !map.containsKey('className')) {
+    return _convertJSONObjectToMap(map);
+  }
+
+  /// Decoding from Api Response
+  if (map.containsKey('__type')) {
+    switch (map['__type']) {
+      case 'Date':
+        final String iso = map['iso'];
+        return _parseDateFormat.parse(iso);
+      case 'Bytes':
+        final String val = map['base64'];
+        return base64.decode(val);
+      case 'Pointer':
+      case 'Object':
+        final String className = map['className'];
+        return ParseCoreData.instance.createObject(className).fromJson(map);
+      case 'File':
+        return ParseCoreData.instance
+            .createFile(url: map['url'], name: map['name'])
+            .fromJson(map);
+      case 'GeoPoint':
+        final num latitude = map['latitude'] ?? 0.0;
+        final num longitude = map['longitude'] ?? 0.0;
+        return ParseGeoPoint(
+            latitude: latitude.toDouble(), longitude: longitude.toDouble());
+      case 'Relation':
+        return ParseRelation.fromJson(map);
+    }
+  }
+
+  /// Decoding from locally cached JSON
+  if (map.containsKey('className')) {
+    switch (map['className']) {
+      case 'GeoPoint':
+        final num latitude = map['latitude'] ?? 0.0;
+        final num longitude = map['longitude'] ?? 0.0;
+        return ParseGeoPoint(
+          latitude: latitude.toDouble(),
+          longitude: longitude.toDouble(),
+        );
+
+      case 'ParseArray':
+        return _ParseArray.fromFullJson(map);
+
+      case 'ParseNumber':
+        return _ParseNumber.fromFullJson(map);
+
+      case 'ParseRelation':
+        return _ParseRelation.fromFullJson(map);
+
+      default:
+        return ParseCoreData.instance
+            .createObject(map['className'])
+            .fromJson(map);
+    }
+  }
+
+  return null;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/parseEncode.html b/dart/flutter_parse_sdk/parseEncode.html new file mode 100644 index 000000000..f142440e8 --- /dev/null +++ b/dart/flutter_parse_sdk/parseEncode.html @@ -0,0 +1,190 @@ + + + + + + + + parseEncode function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
parseEncode
+ +
+ +
+
+
+ +
+
+

parseEncode function + +

+ +
+ + +dynamic +parseEncode(
  1. dynamic value,
  2. +
  3. {bool full = false}
  4. +
) + + + +
+ +
+

Custom json encoder for types related to parse

+
+ + + +
+

Implementation

+
dynamic parseEncode(dynamic value, {bool full = false}) {
+  if (value is Uint8List) {
+    return _encodeUint8List(value);
+  }
+
+  if (value is DateTime) {
+    return _encodeDate(value);
+  }
+
+  if (value is Iterable) {
+    return value.map<dynamic>((dynamic value) {
+      return parseEncode(value, full: full);
+    }).toList();
+  }
+
+  if (value is _ParseArray) {
+    return value.toJson(full: full);
+  }
+
+  if (value is _ParseNumber) {
+    return value.toJson(full: full);
+  }
+
+  if (value is _ParseOperation) {
+    return value.toJson(full: full);
+  }
+
+  if (value is Map) {
+    value.forEach((dynamic k, dynamic v) {
+      value[k] = parseEncode(v, full: full);
+    });
+  }
+
+  if (value is ParseGeoPoint) {
+    return value.toJson(full: full);
+  }
+
+  if (value is ParseFileBase) {
+    return value.toJson(full: full);
+  }
+
+  if (value is ParseRelation) {
+    return value.toJson(full: full);
+  }
+
+  if (value is ParseObject) {
+    if (full) {
+      return value.toJson(full: full);
+    } else {
+      return value.toPointer();
+    }
+  }
+
+  if (value is ParseACL) {
+    return value.toJson();
+  }
+
+  return value;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/parseIsWeb-constant.html b/dart/flutter_parse_sdk/parseIsWeb-constant.html new file mode 100644 index 000000000..a97332d31 --- /dev/null +++ b/dart/flutter_parse_sdk/parseIsWeb-constant.html @@ -0,0 +1,125 @@ + + + + + + + + parseIsWeb constant - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
parseIsWeb
+ +
+ +
+
+
+ +
+
+

parseIsWeb top-level constant + +

+ +
+ + bool + const parseIsWeb + + +
+ + + +
+

Implementation

+
const bool parseIsWeb = identical(0, 0.0);
+
+ + + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/removeDuplicateParseObjectByObjectId.html b/dart/flutter_parse_sdk/removeDuplicateParseObjectByObjectId.html new file mode 100644 index 000000000..9311f72c7 --- /dev/null +++ b/dart/flutter_parse_sdk/removeDuplicateParseObjectByObjectId.html @@ -0,0 +1,149 @@ + + + + + + + + removeDuplicateParseObjectByObjectId function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
removeDuplicateParseObjectByObjectId
+ +
+ +
+
+
+ +
+
+

removeDuplicateParseObjectByObjectId function + +

+ +
+ + +List +removeDuplicateParseObjectByObjectId(
  1. Iterable iterable
  2. +
) + + + +
+ + + + +
+

Implementation

+
List removeDuplicateParseObjectByObjectId(Iterable iterable) {
+  final list = iterable.toList();
+
+  final foldedGroupedByObjectId = list
+      .whereType<ParseObject>()
+      .where((e) => e.objectId != null)
+      .groupFoldBy(
+        (e) => e.objectId!,
+        (previous, element) => element,
+      );
+
+  list.removeWhere(
+    (e) {
+      return e is ParseObject &&
+          foldedGroupedByObjectId.keys.contains(e.objectId);
+    },
+  );
+
+  list.addAll(foldedGroupedByObjectId.values);
+
+  return list;
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/removeTrailingSlash.html b/dart/flutter_parse_sdk/removeTrailingSlash.html new file mode 100644 index 000000000..efe792177 --- /dev/null +++ b/dart/flutter_parse_sdk/removeTrailingSlash.html @@ -0,0 +1,138 @@ + + + + + + + + removeTrailingSlash function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
removeTrailingSlash
+ +
+ +
+
+
+ +
+
+

removeTrailingSlash function + +

+ +
+ + +String +removeTrailingSlash(
  1. String serverUrl
  2. +
) + + + +
+ +
+

Removes unncessary /

+
+ + + +
+

Implementation

+
String removeTrailingSlash(String serverUrl) {
+  if (serverUrl.isNotEmpty &&
+      serverUrl.substring(serverUrl.length - 1) == '/') {
+    return serverUrl.substring(0, serverUrl.length - 1);
+  } else {
+    return serverUrl;
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/flutter_parse_sdk/shouldReturnAsABaseResult.html b/dart/flutter_parse_sdk/shouldReturnAsABaseResult.html new file mode 100644 index 000000000..2b3f69e36 --- /dev/null +++ b/dart/flutter_parse_sdk/shouldReturnAsABaseResult.html @@ -0,0 +1,144 @@ + + + + + + + + shouldReturnAsABaseResult function - flutter_parse_sdk library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
shouldReturnAsABaseResult
+ +
+ +
+
+
+ +
+
+

shouldReturnAsABaseResult function + +

+ +
+ + +bool +shouldReturnAsABaseResult(
  1. ParseApiRQ type
  2. +
) + + + +
+ + + + +
+

Implementation

+
bool shouldReturnAsABaseResult(ParseApiRQ type) {
+  if (type == ParseApiRQ.healthCheck ||
+      type == ParseApiRQ.execute ||
+      type == ParseApiRQ.add ||
+      type == ParseApiRQ.addAll ||
+      type == ParseApiRQ.addUnique ||
+      type == ParseApiRQ.remove ||
+      type == ParseApiRQ.removeAll ||
+      type == ParseApiRQ.increment ||
+      type == ParseApiRQ.decrement ||
+      type == ParseApiRQ.getConfigs ||
+      type == ParseApiRQ.addConfig) {
+    return true;
+  } else {
+    return false;
+  }
+}
+
+ + +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/index.html b/dart/index.html new file mode 100644 index 000000000..cfcdbf953 --- /dev/null +++ b/dart/index.html @@ -0,0 +1,176 @@ + + + + + + + + + parse_server_sdk - Dart API docs + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
parse_server_sdk
+ +
+ +
+
+
+ +
+ +
+ parse-repository-header-sdk-dart +
+

Build Status +Coverage

+

pub package

+

Forum +Backers on Open Collective +Sponsors on Open Collective +Twitter Follow +Chat

+
+

This library gives you access to the powerful Parse Server backend from your Dart app. For more information on Parse Platform and its features, visit parseplatform.org.

+
+ +
+

Compatibility

+

The Parse Dart SDK is continuously tested with the most recent release of the Dart framework to ensure compatibility. To give developers time to upgrade their app to a newer Dart framework, previous Dart framework releases are supported for at least 1 year after the release date of the next higher significant version.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VersionLatest VersionEnd of SupportCompatible
Dart 3.13.1.2Sep 2024✅ Yes
Dart 3.03.0.7May 2024✅ Yes
Dart 2.192.19.6Mar 2024✅ Yes
+

Getting Started

+

To install, add the Parse Dart SDK as a dependency in your pubspec.yaml file.

+

Documentation

+

Find the full documentation in the Parse Dart SDK guide.

+

Contributing

+

We want to make contributing to this project as easy and transparent as possible. Please refer to the Contribution Guidelines.

+
+ + +
+

Libraries

+
+
+ parse_server_sdk + +
+
+
+ +
+
+ +
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/index.json b/dart/index.json new file mode 100644 index 000000000..d4283afa8 --- /dev/null +++ b/dart/index.json @@ -0,0 +1 @@ +[{"name":"flutter_parse_sdk","qualifiedName":"flutter_parse_sdk","href":"flutter_parse_sdk/flutter_parse_sdk-library.html","kind":9,"overriddenDepth":0,"packageRank":0,"desc":""},{"name":"CoreStore","qualifiedName":"flutter_parse_sdk.CoreStore","href":"flutter_parse_sdk/CoreStore-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"CoreStore","qualifiedName":"flutter_parse_sdk.CoreStore.CoreStore","href":"flutter_parse_sdk/CoreStore/CoreStore.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStore","kind":3,"href":"flutter_parse_sdk/CoreStore-class.html"}},{"name":"clear","qualifiedName":"flutter_parse_sdk.CoreStore.clear","href":"flutter_parse_sdk/CoreStore/clear.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStore","kind":3,"href":"flutter_parse_sdk/CoreStore-class.html"}},{"name":"containsKey","qualifiedName":"flutter_parse_sdk.CoreStore.containsKey","href":"flutter_parse_sdk/CoreStore/containsKey.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStore","kind":3,"href":"flutter_parse_sdk/CoreStore-class.html"}},{"name":"get","qualifiedName":"flutter_parse_sdk.CoreStore.get","href":"flutter_parse_sdk/CoreStore/get.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStore","kind":3,"href":"flutter_parse_sdk/CoreStore-class.html"}},{"name":"getBool","qualifiedName":"flutter_parse_sdk.CoreStore.getBool","href":"flutter_parse_sdk/CoreStore/getBool.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStore","kind":3,"href":"flutter_parse_sdk/CoreStore-class.html"}},{"name":"getDouble","qualifiedName":"flutter_parse_sdk.CoreStore.getDouble","href":"flutter_parse_sdk/CoreStore/getDouble.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStore","kind":3,"href":"flutter_parse_sdk/CoreStore-class.html"}},{"name":"getInt","qualifiedName":"flutter_parse_sdk.CoreStore.getInt","href":"flutter_parse_sdk/CoreStore/getInt.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStore","kind":3,"href":"flutter_parse_sdk/CoreStore-class.html"}},{"name":"getString","qualifiedName":"flutter_parse_sdk.CoreStore.getString","href":"flutter_parse_sdk/CoreStore/getString.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStore","kind":3,"href":"flutter_parse_sdk/CoreStore-class.html"}},{"name":"getStringList","qualifiedName":"flutter_parse_sdk.CoreStore.getStringList","href":"flutter_parse_sdk/CoreStore/getStringList.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStore","kind":3,"href":"flutter_parse_sdk/CoreStore-class.html"}},{"name":"remove","qualifiedName":"flutter_parse_sdk.CoreStore.remove","href":"flutter_parse_sdk/CoreStore/remove.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStore","kind":3,"href":"flutter_parse_sdk/CoreStore-class.html"}},{"name":"setBool","qualifiedName":"flutter_parse_sdk.CoreStore.setBool","href":"flutter_parse_sdk/CoreStore/setBool.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStore","kind":3,"href":"flutter_parse_sdk/CoreStore-class.html"}},{"name":"setDouble","qualifiedName":"flutter_parse_sdk.CoreStore.setDouble","href":"flutter_parse_sdk/CoreStore/setDouble.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStore","kind":3,"href":"flutter_parse_sdk/CoreStore-class.html"}},{"name":"setInt","qualifiedName":"flutter_parse_sdk.CoreStore.setInt","href":"flutter_parse_sdk/CoreStore/setInt.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStore","kind":3,"href":"flutter_parse_sdk/CoreStore-class.html"}},{"name":"setString","qualifiedName":"flutter_parse_sdk.CoreStore.setString","href":"flutter_parse_sdk/CoreStore/setString.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStore","kind":3,"href":"flutter_parse_sdk/CoreStore-class.html"}},{"name":"setStringList","qualifiedName":"flutter_parse_sdk.CoreStore.setStringList","href":"flutter_parse_sdk/CoreStore/setStringList.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStore","kind":3,"href":"flutter_parse_sdk/CoreStore-class.html"}},{"name":"CoreStoreMemoryImp","qualifiedName":"flutter_parse_sdk.CoreStoreMemoryImp","href":"flutter_parse_sdk/CoreStoreMemoryImp-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"CoreStoreMemoryImp","qualifiedName":"flutter_parse_sdk.CoreStoreMemoryImp.CoreStoreMemoryImp","href":"flutter_parse_sdk/CoreStoreMemoryImp/CoreStoreMemoryImp.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreMemoryImp","kind":3,"href":"flutter_parse_sdk/CoreStoreMemoryImp-class.html"}},{"name":"clear","qualifiedName":"flutter_parse_sdk.CoreStoreMemoryImp.clear","href":"flutter_parse_sdk/CoreStoreMemoryImp/clear.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreMemoryImp","kind":3,"href":"flutter_parse_sdk/CoreStoreMemoryImp-class.html"}},{"name":"containsKey","qualifiedName":"flutter_parse_sdk.CoreStoreMemoryImp.containsKey","href":"flutter_parse_sdk/CoreStoreMemoryImp/containsKey.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreMemoryImp","kind":3,"href":"flutter_parse_sdk/CoreStoreMemoryImp-class.html"}},{"name":"get","qualifiedName":"flutter_parse_sdk.CoreStoreMemoryImp.get","href":"flutter_parse_sdk/CoreStoreMemoryImp/get.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreMemoryImp","kind":3,"href":"flutter_parse_sdk/CoreStoreMemoryImp-class.html"}},{"name":"getBool","qualifiedName":"flutter_parse_sdk.CoreStoreMemoryImp.getBool","href":"flutter_parse_sdk/CoreStoreMemoryImp/getBool.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreMemoryImp","kind":3,"href":"flutter_parse_sdk/CoreStoreMemoryImp-class.html"}},{"name":"getDouble","qualifiedName":"flutter_parse_sdk.CoreStoreMemoryImp.getDouble","href":"flutter_parse_sdk/CoreStoreMemoryImp/getDouble.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreMemoryImp","kind":3,"href":"flutter_parse_sdk/CoreStoreMemoryImp-class.html"}},{"name":"getInt","qualifiedName":"flutter_parse_sdk.CoreStoreMemoryImp.getInt","href":"flutter_parse_sdk/CoreStoreMemoryImp/getInt.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreMemoryImp","kind":3,"href":"flutter_parse_sdk/CoreStoreMemoryImp-class.html"}},{"name":"getString","qualifiedName":"flutter_parse_sdk.CoreStoreMemoryImp.getString","href":"flutter_parse_sdk/CoreStoreMemoryImp/getString.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreMemoryImp","kind":3,"href":"flutter_parse_sdk/CoreStoreMemoryImp-class.html"}},{"name":"getStringList","qualifiedName":"flutter_parse_sdk.CoreStoreMemoryImp.getStringList","href":"flutter_parse_sdk/CoreStoreMemoryImp/getStringList.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreMemoryImp","kind":3,"href":"flutter_parse_sdk/CoreStoreMemoryImp-class.html"}},{"name":"remove","qualifiedName":"flutter_parse_sdk.CoreStoreMemoryImp.remove","href":"flutter_parse_sdk/CoreStoreMemoryImp/remove.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreMemoryImp","kind":3,"href":"flutter_parse_sdk/CoreStoreMemoryImp-class.html"}},{"name":"setBool","qualifiedName":"flutter_parse_sdk.CoreStoreMemoryImp.setBool","href":"flutter_parse_sdk/CoreStoreMemoryImp/setBool.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreMemoryImp","kind":3,"href":"flutter_parse_sdk/CoreStoreMemoryImp-class.html"}},{"name":"setDouble","qualifiedName":"flutter_parse_sdk.CoreStoreMemoryImp.setDouble","href":"flutter_parse_sdk/CoreStoreMemoryImp/setDouble.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreMemoryImp","kind":3,"href":"flutter_parse_sdk/CoreStoreMemoryImp-class.html"}},{"name":"setInt","qualifiedName":"flutter_parse_sdk.CoreStoreMemoryImp.setInt","href":"flutter_parse_sdk/CoreStoreMemoryImp/setInt.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreMemoryImp","kind":3,"href":"flutter_parse_sdk/CoreStoreMemoryImp-class.html"}},{"name":"setString","qualifiedName":"flutter_parse_sdk.CoreStoreMemoryImp.setString","href":"flutter_parse_sdk/CoreStoreMemoryImp/setString.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreMemoryImp","kind":3,"href":"flutter_parse_sdk/CoreStoreMemoryImp-class.html"}},{"name":"setStringList","qualifiedName":"flutter_parse_sdk.CoreStoreMemoryImp.setStringList","href":"flutter_parse_sdk/CoreStoreMemoryImp/setStringList.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreMemoryImp","kind":3,"href":"flutter_parse_sdk/CoreStoreMemoryImp-class.html"}},{"name":"CoreStoreSembastImp","qualifiedName":"flutter_parse_sdk.CoreStoreSembastImp","href":"flutter_parse_sdk/CoreStoreSembastImp-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"clear","qualifiedName":"flutter_parse_sdk.CoreStoreSembastImp.clear","href":"flutter_parse_sdk/CoreStoreSembastImp/clear.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreSembastImp","kind":3,"href":"flutter_parse_sdk/CoreStoreSembastImp-class.html"}},{"name":"containsKey","qualifiedName":"flutter_parse_sdk.CoreStoreSembastImp.containsKey","href":"flutter_parse_sdk/CoreStoreSembastImp/containsKey.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreSembastImp","kind":3,"href":"flutter_parse_sdk/CoreStoreSembastImp-class.html"}},{"name":"get","qualifiedName":"flutter_parse_sdk.CoreStoreSembastImp.get","href":"flutter_parse_sdk/CoreStoreSembastImp/get.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreSembastImp","kind":3,"href":"flutter_parse_sdk/CoreStoreSembastImp-class.html"}},{"name":"getBool","qualifiedName":"flutter_parse_sdk.CoreStoreSembastImp.getBool","href":"flutter_parse_sdk/CoreStoreSembastImp/getBool.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreSembastImp","kind":3,"href":"flutter_parse_sdk/CoreStoreSembastImp-class.html"}},{"name":"getDouble","qualifiedName":"flutter_parse_sdk.CoreStoreSembastImp.getDouble","href":"flutter_parse_sdk/CoreStoreSembastImp/getDouble.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreSembastImp","kind":3,"href":"flutter_parse_sdk/CoreStoreSembastImp-class.html"}},{"name":"getInstance","qualifiedName":"flutter_parse_sdk.CoreStoreSembastImp.getInstance","href":"flutter_parse_sdk/CoreStoreSembastImp/getInstance.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreSembastImp","kind":3,"href":"flutter_parse_sdk/CoreStoreSembastImp-class.html"}},{"name":"getInt","qualifiedName":"flutter_parse_sdk.CoreStoreSembastImp.getInt","href":"flutter_parse_sdk/CoreStoreSembastImp/getInt.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreSembastImp","kind":3,"href":"flutter_parse_sdk/CoreStoreSembastImp-class.html"}},{"name":"getString","qualifiedName":"flutter_parse_sdk.CoreStoreSembastImp.getString","href":"flutter_parse_sdk/CoreStoreSembastImp/getString.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreSembastImp","kind":3,"href":"flutter_parse_sdk/CoreStoreSembastImp-class.html"}},{"name":"getStringList","qualifiedName":"flutter_parse_sdk.CoreStoreSembastImp.getStringList","href":"flutter_parse_sdk/CoreStoreSembastImp/getStringList.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreSembastImp","kind":3,"href":"flutter_parse_sdk/CoreStoreSembastImp-class.html"}},{"name":"remove","qualifiedName":"flutter_parse_sdk.CoreStoreSembastImp.remove","href":"flutter_parse_sdk/CoreStoreSembastImp/remove.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreSembastImp","kind":3,"href":"flutter_parse_sdk/CoreStoreSembastImp-class.html"}},{"name":"setBool","qualifiedName":"flutter_parse_sdk.CoreStoreSembastImp.setBool","href":"flutter_parse_sdk/CoreStoreSembastImp/setBool.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreSembastImp","kind":3,"href":"flutter_parse_sdk/CoreStoreSembastImp-class.html"}},{"name":"setDouble","qualifiedName":"flutter_parse_sdk.CoreStoreSembastImp.setDouble","href":"flutter_parse_sdk/CoreStoreSembastImp/setDouble.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreSembastImp","kind":3,"href":"flutter_parse_sdk/CoreStoreSembastImp-class.html"}},{"name":"setInt","qualifiedName":"flutter_parse_sdk.CoreStoreSembastImp.setInt","href":"flutter_parse_sdk/CoreStoreSembastImp/setInt.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreSembastImp","kind":3,"href":"flutter_parse_sdk/CoreStoreSembastImp-class.html"}},{"name":"setString","qualifiedName":"flutter_parse_sdk.CoreStoreSembastImp.setString","href":"flutter_parse_sdk/CoreStoreSembastImp/setString.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreSembastImp","kind":3,"href":"flutter_parse_sdk/CoreStoreSembastImp-class.html"}},{"name":"setStringList","qualifiedName":"flutter_parse_sdk.CoreStoreSembastImp.setStringList","href":"flutter_parse_sdk/CoreStoreSembastImp/setStringList.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"CoreStoreSembastImp","kind":3,"href":"flutter_parse_sdk/CoreStoreSembastImp-class.html"}},{"name":"LiveQuery","qualifiedName":"flutter_parse_sdk.LiveQuery","href":"flutter_parse_sdk/LiveQuery-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"LiveQuery","qualifiedName":"flutter_parse_sdk.LiveQuery.LiveQuery","href":"flutter_parse_sdk/LiveQuery/LiveQuery.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"LiveQuery","kind":3,"href":"flutter_parse_sdk/LiveQuery-class.html"}},{"name":"client","qualifiedName":"flutter_parse_sdk.LiveQuery.client","href":"flutter_parse_sdk/LiveQuery/client.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"LiveQuery","kind":3,"href":"flutter_parse_sdk/LiveQuery-class.html"}},{"name":"LiveQueryClient","qualifiedName":"flutter_parse_sdk.LiveQueryClient","href":"flutter_parse_sdk/LiveQueryClient-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"LiveQueryClient","qualifiedName":"flutter_parse_sdk.LiveQueryClient.LiveQueryClient","href":"flutter_parse_sdk/LiveQueryClient/LiveQueryClient.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"LiveQueryClient","kind":3,"href":"flutter_parse_sdk/LiveQueryClient-class.html"}},{"name":"chanelStream","qualifiedName":"flutter_parse_sdk.LiveQueryClient.chanelStream","href":"flutter_parse_sdk/LiveQueryClient/chanelStream.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"LiveQueryClient","kind":3,"href":"flutter_parse_sdk/LiveQueryClient-class.html"}},{"name":"disconnect","qualifiedName":"flutter_parse_sdk.LiveQueryClient.disconnect","href":"flutter_parse_sdk/LiveQueryClient/disconnect.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"LiveQueryClient","kind":3,"href":"flutter_parse_sdk/LiveQueryClient-class.html"}},{"name":"getClientEventStream","qualifiedName":"flutter_parse_sdk.LiveQueryClient.getClientEventStream","href":"flutter_parse_sdk/LiveQueryClient/getClientEventStream.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"LiveQueryClient","kind":3,"href":"flutter_parse_sdk/LiveQueryClient-class.html"}},{"name":"instance","qualifiedName":"flutter_parse_sdk.LiveQueryClient.instance","href":"flutter_parse_sdk/LiveQueryClient/instance.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"LiveQueryClient","kind":3,"href":"flutter_parse_sdk/LiveQueryClient-class.html"}},{"name":"readyState","qualifiedName":"flutter_parse_sdk.LiveQueryClient.readyState","href":"flutter_parse_sdk/LiveQueryClient/readyState.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"LiveQueryClient","kind":3,"href":"flutter_parse_sdk/LiveQueryClient-class.html"}},{"name":"reconnect","qualifiedName":"flutter_parse_sdk.LiveQueryClient.reconnect","href":"flutter_parse_sdk/LiveQueryClient/reconnect.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"LiveQueryClient","kind":3,"href":"flutter_parse_sdk/LiveQueryClient-class.html"}},{"name":"reconnectingController","qualifiedName":"flutter_parse_sdk.LiveQueryClient.reconnectingController","href":"flutter_parse_sdk/LiveQueryClient/reconnectingController.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"LiveQueryClient","kind":3,"href":"flutter_parse_sdk/LiveQueryClient-class.html"}},{"name":"subscribe","qualifiedName":"flutter_parse_sdk.LiveQueryClient.subscribe","href":"flutter_parse_sdk/LiveQueryClient/subscribe.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"LiveQueryClient","kind":3,"href":"flutter_parse_sdk/LiveQueryClient-class.html"}},{"name":"unSubscribe","qualifiedName":"flutter_parse_sdk.LiveQueryClient.unSubscribe","href":"flutter_parse_sdk/LiveQueryClient/unSubscribe.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"LiveQueryClient","kind":3,"href":"flutter_parse_sdk/LiveQueryClient-class.html"}},{"name":"LiveQueryClientEvent","qualifiedName":"flutter_parse_sdk.LiveQueryClientEvent","href":"flutter_parse_sdk/LiveQueryClientEvent.html","kind":5,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"LiveQueryClientEvent","qualifiedName":"flutter_parse_sdk.LiveQueryClientEvent.LiveQueryClientEvent","href":"flutter_parse_sdk/LiveQueryClientEvent/LiveQueryClientEvent.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"LiveQueryClientEvent","kind":5,"href":"flutter_parse_sdk/LiveQueryClientEvent.html"}},{"name":"values","qualifiedName":"flutter_parse_sdk.LiveQueryClientEvent.values","href":"flutter_parse_sdk/LiveQueryClientEvent/values-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"A constant List of the values in this enum, in order of their declaration.","enclosedBy":{"name":"LiveQueryClientEvent","kind":5,"href":"flutter_parse_sdk/LiveQueryClientEvent.html"}},{"name":"LiveQueryEvent","qualifiedName":"flutter_parse_sdk.LiveQueryEvent","href":"flutter_parse_sdk/LiveQueryEvent.html","kind":5,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"LiveQueryEvent","qualifiedName":"flutter_parse_sdk.LiveQueryEvent.LiveQueryEvent","href":"flutter_parse_sdk/LiveQueryEvent/LiveQueryEvent.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"LiveQueryEvent","kind":5,"href":"flutter_parse_sdk/LiveQueryEvent.html"}},{"name":"values","qualifiedName":"flutter_parse_sdk.LiveQueryEvent.values","href":"flutter_parse_sdk/LiveQueryEvent/values-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"A constant List of the values in this enum, in order of their declaration.","enclosedBy":{"name":"LiveQueryEvent","kind":5,"href":"flutter_parse_sdk/LiveQueryEvent.html"}},{"name":"LiveQueryReconnectingController","qualifiedName":"flutter_parse_sdk.LiveQueryReconnectingController","href":"flutter_parse_sdk/LiveQueryReconnectingController-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"LiveQueryReconnectingController","qualifiedName":"flutter_parse_sdk.LiveQueryReconnectingController.LiveQueryReconnectingController","href":"flutter_parse_sdk/LiveQueryReconnectingController/LiveQueryReconnectingController.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"LiveQueryReconnectingController","kind":3,"href":"flutter_parse_sdk/LiveQueryReconnectingController-class.html"}},{"name":"debug","qualifiedName":"flutter_parse_sdk.LiveQueryReconnectingController.debug","href":"flutter_parse_sdk/LiveQueryReconnectingController/debug.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"LiveQueryReconnectingController","kind":3,"href":"flutter_parse_sdk/LiveQueryReconnectingController-class.html"}},{"name":"debugTag","qualifiedName":"flutter_parse_sdk.LiveQueryReconnectingController.debugTag","href":"flutter_parse_sdk/LiveQueryReconnectingController/debugTag-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"LiveQueryReconnectingController","kind":3,"href":"flutter_parse_sdk/LiveQueryReconnectingController-class.html"}},{"name":"retryInterval","qualifiedName":"flutter_parse_sdk.LiveQueryReconnectingController.retryInterval","href":"flutter_parse_sdk/LiveQueryReconnectingController/retryInterval.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"LiveQueryReconnectingController","kind":3,"href":"flutter_parse_sdk/LiveQueryReconnectingController-class.html"}},{"name":"Parse","qualifiedName":"flutter_parse_sdk.Parse","href":"flutter_parse_sdk/Parse-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"Parse","qualifiedName":"flutter_parse_sdk.Parse.Parse","href":"flutter_parse_sdk/Parse/Parse.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"Parse","kind":3,"href":"flutter_parse_sdk/Parse-class.html"}},{"name":"hasParseBeenInitialized","qualifiedName":"flutter_parse_sdk.Parse.hasParseBeenInitialized","href":"flutter_parse_sdk/Parse/hasParseBeenInitialized.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"Parse","kind":3,"href":"flutter_parse_sdk/Parse-class.html"}},{"name":"healthCheck","qualifiedName":"flutter_parse_sdk.Parse.healthCheck","href":"flutter_parse_sdk/Parse/healthCheck.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"Parse","kind":3,"href":"flutter_parse_sdk/Parse-class.html"}},{"name":"initialize","qualifiedName":"flutter_parse_sdk.Parse.initialize","href":"flutter_parse_sdk/Parse/initialize.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"To initialize Parse Server in your application","enclosedBy":{"name":"Parse","kind":3,"href":"flutter_parse_sdk/Parse-class.html"}},{"name":"objectsExistForEventually","qualifiedName":"flutter_parse_sdk.Parse.objectsExistForEventually","href":"flutter_parse_sdk/Parse/objectsExistForEventually.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"Parse","kind":3,"href":"flutter_parse_sdk/Parse-class.html"}},{"name":"ParseACL","qualifiedName":"flutter_parse_sdk.ParseACL","href":"flutter_parse_sdk/ParseACL-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"ParseACL is used to control which users can access or modify a particular object\nParseObject can have its own ParseACL\nYou can grant read and write permissions separately to specific users\n or you can grant permissions to \"the public\" so that, for example, any user could read a particular object but\nonly a particular set of users could write to that object","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseACL","qualifiedName":"flutter_parse_sdk.ParseACL.ParseACL","href":"flutter_parse_sdk/ParseACL/ParseACL.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Creates an ACL where only the provided user has access.\nowner The only user that can read or write objects governed by this ACL.","enclosedBy":{"name":"ParseACL","kind":3,"href":"flutter_parse_sdk/ParseACL-class.html"}},{"name":"fromJson","qualifiedName":"flutter_parse_sdk.ParseACL.fromJson","href":"flutter_parse_sdk/ParseACL/fromJson.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseACL","kind":3,"href":"flutter_parse_sdk/ParseACL-class.html"}},{"name":"getPublicReadAccess","qualifiedName":"flutter_parse_sdk.ParseACL.getPublicReadAccess","href":"flutter_parse_sdk/ParseACL/getPublicReadAccess.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Get whether the public is allowed to read this object.","enclosedBy":{"name":"ParseACL","kind":3,"href":"flutter_parse_sdk/ParseACL-class.html"}},{"name":"getPublicWriteAccess","qualifiedName":"flutter_parse_sdk.ParseACL.getPublicWriteAccess","href":"flutter_parse_sdk/ParseACL/getPublicWriteAccess.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Set whether the public is allowed to write this object.","enclosedBy":{"name":"ParseACL","kind":3,"href":"flutter_parse_sdk/ParseACL-class.html"}},{"name":"getReadAccess","qualifiedName":"flutter_parse_sdk.ParseACL.getReadAccess","href":"flutter_parse_sdk/ParseACL/getReadAccess.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Get whether the given user id is explicitly allowed to read this object. Even if this returns\nfalse, the user may still be able to access it if getPublicReadAccess returns\ntrue or a role that the user belongs to has read access.","enclosedBy":{"name":"ParseACL","kind":3,"href":"flutter_parse_sdk/ParseACL-class.html"}},{"name":"getWriteAccess","qualifiedName":"flutter_parse_sdk.ParseACL.getWriteAccess","href":"flutter_parse_sdk/ParseACL/getWriteAccess.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Get whether the given user id is explicitly allowed to write this object. Even if this\nreturns false, the user may still be able to write it if getPublicWriteAccess returns\ntrue or a role that the user belongs to has write access.","enclosedBy":{"name":"ParseACL","kind":3,"href":"flutter_parse_sdk/ParseACL-class.html"}},{"name":"setPublicReadAccess","qualifiedName":"flutter_parse_sdk.ParseACL.setPublicReadAccess","href":"flutter_parse_sdk/ParseACL/setPublicReadAccess.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Set whether the public is allowed to read this object.","enclosedBy":{"name":"ParseACL","kind":3,"href":"flutter_parse_sdk/ParseACL-class.html"}},{"name":"setPublicWriteAccess","qualifiedName":"flutter_parse_sdk.ParseACL.setPublicWriteAccess","href":"flutter_parse_sdk/ParseACL/setPublicWriteAccess.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Set whether the public is allowed to write this object.","enclosedBy":{"name":"ParseACL","kind":3,"href":"flutter_parse_sdk/ParseACL-class.html"}},{"name":"setReadAccess","qualifiedName":"flutter_parse_sdk.ParseACL.setReadAccess","href":"flutter_parse_sdk/ParseACL/setReadAccess.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Set whether the given user id is allowed to read this object.","enclosedBy":{"name":"ParseACL","kind":3,"href":"flutter_parse_sdk/ParseACL-class.html"}},{"name":"setWriteAccess","qualifiedName":"flutter_parse_sdk.ParseACL.setWriteAccess","href":"flutter_parse_sdk/ParseACL/setWriteAccess.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Set whether the given user id is allowed to write this object.","enclosedBy":{"name":"ParseACL","kind":3,"href":"flutter_parse_sdk/ParseACL-class.html"}},{"name":"toJson","qualifiedName":"flutter_parse_sdk.ParseACL.toJson","href":"flutter_parse_sdk/ParseACL/toJson.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseACL","kind":3,"href":"flutter_parse_sdk/ParseACL-class.html"}},{"name":"toString","qualifiedName":"flutter_parse_sdk.ParseACL.toString","href":"flutter_parse_sdk/ParseACL/toString.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"A string representation of this object.","enclosedBy":{"name":"ParseACL","kind":3,"href":"flutter_parse_sdk/ParseACL-class.html"}},{"name":"ParseApiRQ","qualifiedName":"flutter_parse_sdk.ParseApiRQ","href":"flutter_parse_sdk/ParseApiRQ.html","kind":5,"overriddenDepth":0,"packageRank":0,"desc":"Used to define the API calls made in ParseObject logs","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseApiRQ","qualifiedName":"flutter_parse_sdk.ParseApiRQ.ParseApiRQ","href":"flutter_parse_sdk/ParseApiRQ/ParseApiRQ.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseApiRQ","kind":5,"href":"flutter_parse_sdk/ParseApiRQ.html"}},{"name":"values","qualifiedName":"flutter_parse_sdk.ParseApiRQ.values","href":"flutter_parse_sdk/ParseApiRQ/values-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"A constant List of the values in this enum, in order of their declaration.","enclosedBy":{"name":"ParseApiRQ","kind":5,"href":"flutter_parse_sdk/ParseApiRQ.html"}},{"name":"ParseBase","qualifiedName":"flutter_parse_sdk.ParseBase","href":"flutter_parse_sdk/ParseBase-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseBase","qualifiedName":"flutter_parse_sdk.ParseBase.ParseBase","href":"flutter_parse_sdk/ParseBase/ParseBase.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"operator []","qualifiedName":"flutter_parse_sdk.ParseBase.[]","href":"flutter_parse_sdk/ParseBase/operator_get.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"operator []=","qualifiedName":"flutter_parse_sdk.ParseBase.[]=","href":"flutter_parse_sdk/ParseBase/operator_put.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"clearUnsavedChanges","qualifiedName":"flutter_parse_sdk.ParseBase.clearUnsavedChanges","href":"flutter_parse_sdk/ParseBase/clearUnsavedChanges.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"containsKey","qualifiedName":"flutter_parse_sdk.ParseBase.containsKey","href":"flutter_parse_sdk/ParseBase/containsKey.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"containsValue","qualifiedName":"flutter_parse_sdk.ParseBase.containsValue","href":"flutter_parse_sdk/ParseBase/containsValue.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"copy","qualifiedName":"flutter_parse_sdk.ParseBase.copy","href":"flutter_parse_sdk/ParseBase/copy.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Creates a copy of this class","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"createdAt","qualifiedName":"flutter_parse_sdk.ParseBase.createdAt","href":"flutter_parse_sdk/ParseBase/createdAt.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Returns DateTime createdAt","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"fromJson","qualifiedName":"flutter_parse_sdk.ParseBase.fromJson","href":"flutter_parse_sdk/ParseBase/fromJson.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"fromJsonForManualObject","qualifiedName":"flutter_parse_sdk.ParseBase.fromJsonForManualObject","href":"flutter_parse_sdk/ParseBase/fromJsonForManualObject.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"fromPin","qualifiedName":"flutter_parse_sdk.ParseBase.fromPin","href":"flutter_parse_sdk/ParseBase/fromPin.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Get item from value storage","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"get","qualifiedName":"flutter_parse_sdk.ParseBase.get","href":"flutter_parse_sdk/ParseBase/get.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Get a value of type T associated with a given key","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"getACL","qualifiedName":"flutter_parse_sdk.ParseBase.getACL","href":"flutter_parse_sdk/ParseBase/getACL.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Access the ParseACL governing this object.","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"isDirty","qualifiedName":"flutter_parse_sdk.ParseBase.isDirty","href":"flutter_parse_sdk/ParseBase/isDirty.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"objectId","qualifiedName":"flutter_parse_sdk.ParseBase.objectId","href":"flutter_parse_sdk/ParseBase/objectId.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Returns String objectId","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"parseClassName","qualifiedName":"flutter_parse_sdk.ParseBase.parseClassName","href":"flutter_parse_sdk/ParseBase/parseClassName.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"refers to the Table Name in your Parse Server","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"pin","qualifiedName":"flutter_parse_sdk.ParseBase.pin","href":"flutter_parse_sdk/ParseBase/pin.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Saves item to value storage","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"saveInStorage","qualifiedName":"flutter_parse_sdk.ParseBase.saveInStorage","href":"flutter_parse_sdk/ParseBase/saveInStorage.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Saves in storage","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"set","qualifiedName":"flutter_parse_sdk.ParseBase.set","href":"flutter_parse_sdk/ParseBase/set.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Add a key-value pair to this object.","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"setACL","qualifiedName":"flutter_parse_sdk.ParseBase.setACL","href":"flutter_parse_sdk/ParseBase/setACL.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Set the ParseACL governing this object.","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"toJson","qualifiedName":"flutter_parse_sdk.ParseBase.toJson","href":"flutter_parse_sdk/ParseBase/toJson.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Converts object to String in JSON format","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"toPointer","qualifiedName":"flutter_parse_sdk.ParseBase.toPointer","href":"flutter_parse_sdk/ParseBase/toPointer.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"toString","qualifiedName":"flutter_parse_sdk.ParseBase.toString","href":"flutter_parse_sdk/ParseBase/toString.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"A string representation of this object.","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"unpin","qualifiedName":"flutter_parse_sdk.ParseBase.unpin","href":"flutter_parse_sdk/ParseBase/unpin.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Remove item from value storage","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"updatedAt","qualifiedName":"flutter_parse_sdk.ParseBase.updatedAt","href":"flutter_parse_sdk/ParseBase/updatedAt.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Returns DateTime updatedAt","enclosedBy":{"name":"ParseBase","kind":3,"href":"flutter_parse_sdk/ParseBase-class.html"}},{"name":"ParseClient","qualifiedName":"flutter_parse_sdk.ParseClient","href":"flutter_parse_sdk/ParseClient-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseClient","qualifiedName":"flutter_parse_sdk.ParseClient.ParseClient","href":"flutter_parse_sdk/ParseClient/ParseClient.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseClient","kind":3,"href":"flutter_parse_sdk/ParseClient-class.html"}},{"name":"data","qualifiedName":"flutter_parse_sdk.ParseClient.data","href":"flutter_parse_sdk/ParseClient/data.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseClient","kind":3,"href":"flutter_parse_sdk/ParseClient-class.html"}},{"name":"delete","qualifiedName":"flutter_parse_sdk.ParseClient.delete","href":"flutter_parse_sdk/ParseClient/delete.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseClient","kind":3,"href":"flutter_parse_sdk/ParseClient-class.html"}},{"name":"get","qualifiedName":"flutter_parse_sdk.ParseClient.get","href":"flutter_parse_sdk/ParseClient/get.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseClient","kind":3,"href":"flutter_parse_sdk/ParseClient-class.html"}},{"name":"getBytes","qualifiedName":"flutter_parse_sdk.ParseClient.getBytes","href":"flutter_parse_sdk/ParseClient/getBytes.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseClient","kind":3,"href":"flutter_parse_sdk/ParseClient-class.html"}},{"name":"post","qualifiedName":"flutter_parse_sdk.ParseClient.post","href":"flutter_parse_sdk/ParseClient/post.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseClient","kind":3,"href":"flutter_parse_sdk/ParseClient-class.html"}},{"name":"postBytes","qualifiedName":"flutter_parse_sdk.ParseClient.postBytes","href":"flutter_parse_sdk/ParseClient/postBytes.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseClient","kind":3,"href":"flutter_parse_sdk/ParseClient-class.html"}},{"name":"put","qualifiedName":"flutter_parse_sdk.ParseClient.put","href":"flutter_parse_sdk/ParseClient/put.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseClient","kind":3,"href":"flutter_parse_sdk/ParseClient-class.html"}},{"name":"ParseClientCreator","qualifiedName":"flutter_parse_sdk.ParseClientCreator","href":"flutter_parse_sdk/ParseClientCreator.html","kind":21,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseCloneable","qualifiedName":"flutter_parse_sdk.ParseCloneable","href":"flutter_parse_sdk/ParseCloneable-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"Creates method which can be used to deep clone objects","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseCloneable","qualifiedName":"flutter_parse_sdk.ParseCloneable.ParseCloneable","href":"flutter_parse_sdk/ParseCloneable/ParseCloneable.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCloneable","kind":3,"href":"flutter_parse_sdk/ParseCloneable-class.html"}},{"name":"clone","qualifiedName":"flutter_parse_sdk.ParseCloneable.clone","href":"flutter_parse_sdk/ParseCloneable/clone.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCloneable","kind":3,"href":"flutter_parse_sdk/ParseCloneable-class.html"}},{"name":"ParseCloudFunction","qualifiedName":"flutter_parse_sdk.ParseCloudFunction","href":"flutter_parse_sdk/ParseCloudFunction-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseCloudFunction","qualifiedName":"flutter_parse_sdk.ParseCloudFunction.ParseCloudFunction","href":"flutter_parse_sdk/ParseCloudFunction/ParseCloudFunction.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Creates a new cloud function object","enclosedBy":{"name":"ParseCloudFunction","kind":3,"href":"flutter_parse_sdk/ParseCloudFunction-class.html"}},{"name":"execute","qualifiedName":"flutter_parse_sdk.ParseCloudFunction.execute","href":"flutter_parse_sdk/ParseCloudFunction/execute.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Executes a cloud function","enclosedBy":{"name":"ParseCloudFunction","kind":3,"href":"flutter_parse_sdk/ParseCloudFunction-class.html"}},{"name":"executeObjectFunction","qualifiedName":"flutter_parse_sdk.ParseCloudFunction.executeObjectFunction","href":"flutter_parse_sdk/ParseCloudFunction/executeObjectFunction.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Executes a cloud function that returns a ParseObject type","enclosedBy":{"name":"ParseCloudFunction","kind":3,"href":"flutter_parse_sdk/ParseCloudFunction-class.html"}},{"name":"functionName","qualifiedName":"flutter_parse_sdk.ParseCloudFunction.functionName","href":"flutter_parse_sdk/ParseCloudFunction/functionName.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCloudFunction","kind":3,"href":"flutter_parse_sdk/ParseCloudFunction-class.html"}},{"name":"ParseConfig","qualifiedName":"flutter_parse_sdk.ParseConfig","href":"flutter_parse_sdk/ParseConfig-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseConfig","qualifiedName":"flutter_parse_sdk.ParseConfig.ParseConfig","href":"flutter_parse_sdk/ParseConfig/ParseConfig.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Creates an instance of ParseConfig so that you can grab all configs from the server","enclosedBy":{"name":"ParseConfig","kind":3,"href":"flutter_parse_sdk/ParseConfig-class.html"}},{"name":"addConfig","qualifiedName":"flutter_parse_sdk.ParseConfig.addConfig","href":"flutter_parse_sdk/ParseConfig/addConfig.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Adds a new config","enclosedBy":{"name":"ParseConfig","kind":3,"href":"flutter_parse_sdk/ParseConfig-class.html"}},{"name":"getConfigs","qualifiedName":"flutter_parse_sdk.ParseConfig.getConfigs","href":"flutter_parse_sdk/ParseConfig/getConfigs.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Gets all configs from the server","enclosedBy":{"name":"ParseConfig","kind":3,"href":"flutter_parse_sdk/ParseConfig-class.html"}},{"name":"ParseConnectivityProvider","qualifiedName":"flutter_parse_sdk.ParseConnectivityProvider","href":"flutter_parse_sdk/ParseConnectivityProvider-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseConnectivityProvider","qualifiedName":"flutter_parse_sdk.ParseConnectivityProvider.ParseConnectivityProvider","href":"flutter_parse_sdk/ParseConnectivityProvider/ParseConnectivityProvider.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseConnectivityProvider","kind":3,"href":"flutter_parse_sdk/ParseConnectivityProvider-class.html"}},{"name":"checkConnectivity","qualifiedName":"flutter_parse_sdk.ParseConnectivityProvider.checkConnectivity","href":"flutter_parse_sdk/ParseConnectivityProvider/checkConnectivity.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseConnectivityProvider","kind":3,"href":"flutter_parse_sdk/ParseConnectivityProvider-class.html"}},{"name":"connectivityStream","qualifiedName":"flutter_parse_sdk.ParseConnectivityProvider.connectivityStream","href":"flutter_parse_sdk/ParseConnectivityProvider/connectivityStream.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseConnectivityProvider","kind":3,"href":"flutter_parse_sdk/ParseConnectivityProvider-class.html"}},{"name":"ParseConnectivityResult","qualifiedName":"flutter_parse_sdk.ParseConnectivityResult","href":"flutter_parse_sdk/ParseConnectivityResult.html","kind":5,"overriddenDepth":0,"packageRank":0,"desc":"Connection status check result.","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseConnectivityResult","qualifiedName":"flutter_parse_sdk.ParseConnectivityResult.ParseConnectivityResult","href":"flutter_parse_sdk/ParseConnectivityResult/ParseConnectivityResult.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseConnectivityResult","kind":5,"href":"flutter_parse_sdk/ParseConnectivityResult.html"}},{"name":"values","qualifiedName":"flutter_parse_sdk.ParseConnectivityResult.values","href":"flutter_parse_sdk/ParseConnectivityResult/values-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"A constant List of the values in this enum, in order of their declaration.","enclosedBy":{"name":"ParseConnectivityResult","kind":5,"href":"flutter_parse_sdk/ParseConnectivityResult.html"}},{"name":"ParseCoreData","qualifiedName":"flutter_parse_sdk.ParseCoreData","href":"flutter_parse_sdk/ParseCoreData-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"Singleton class that defines all user keys and data","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseCoreData","qualifiedName":"flutter_parse_sdk.ParseCoreData.ParseCoreData","href":"flutter_parse_sdk/ParseCoreData/ParseCoreData.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"appName","qualifiedName":"flutter_parse_sdk.ParseCoreData.appName","href":"flutter_parse_sdk/ParseCoreData/appName.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"appPackageName","qualifiedName":"flutter_parse_sdk.ParseCoreData.appPackageName","href":"flutter_parse_sdk/ParseCoreData/appPackageName.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"appResumedStream","qualifiedName":"flutter_parse_sdk.ParseCoreData.appResumedStream","href":"flutter_parse_sdk/ParseCoreData/appResumedStream.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"appVersion","qualifiedName":"flutter_parse_sdk.ParseCoreData.appVersion","href":"flutter_parse_sdk/ParseCoreData/appVersion.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"applicationId","qualifiedName":"flutter_parse_sdk.ParseCoreData.applicationId","href":"flutter_parse_sdk/ParseCoreData/applicationId.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"autoSendSessionId","qualifiedName":"flutter_parse_sdk.ParseCoreData.autoSendSessionId","href":"flutter_parse_sdk/ParseCoreData/autoSendSessionId.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"clientCreator","qualifiedName":"flutter_parse_sdk.ParseCoreData.clientCreator","href":"flutter_parse_sdk/ParseCoreData/clientCreator.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"clientKey","qualifiedName":"flutter_parse_sdk.ParseCoreData.clientKey","href":"flutter_parse_sdk/ParseCoreData/clientKey.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"connectivityProvider","qualifiedName":"flutter_parse_sdk.ParseCoreData.connectivityProvider","href":"flutter_parse_sdk/ParseCoreData/connectivityProvider.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"createFile","qualifiedName":"flutter_parse_sdk.ParseCoreData.createFile","href":"flutter_parse_sdk/ParseCoreData/createFile.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"createObject","qualifiedName":"flutter_parse_sdk.ParseCoreData.createObject","href":"flutter_parse_sdk/ParseCoreData/createObject.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"createParseUser","qualifiedName":"flutter_parse_sdk.ParseCoreData.createParseUser","href":"flutter_parse_sdk/ParseCoreData/createParseUser.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"debug","qualifiedName":"flutter_parse_sdk.ParseCoreData.debug","href":"flutter_parse_sdk/ParseCoreData/debug.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"fileDirectory","qualifiedName":"flutter_parse_sdk.ParseCoreData.fileDirectory","href":"flutter_parse_sdk/ParseCoreData/fileDirectory.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"getStore","qualifiedName":"flutter_parse_sdk.ParseCoreData.getStore","href":"flutter_parse_sdk/ParseCoreData/getStore.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"init","qualifiedName":"flutter_parse_sdk.ParseCoreData.init","href":"flutter_parse_sdk/ParseCoreData/init.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Creates an instance of Parse Server","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"instance","qualifiedName":"flutter_parse_sdk.ParseCoreData.instance","href":"flutter_parse_sdk/ParseCoreData/instance.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"liveListRetryIntervals","qualifiedName":"flutter_parse_sdk.ParseCoreData.liveListRetryIntervals","href":"flutter_parse_sdk/ParseCoreData/liveListRetryIntervals.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"liveQueryURL","qualifiedName":"flutter_parse_sdk.ParseCoreData.liveQueryURL","href":"flutter_parse_sdk/ParseCoreData/liveQueryURL.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"locale","qualifiedName":"flutter_parse_sdk.ParseCoreData.locale","href":"flutter_parse_sdk/ParseCoreData/locale.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"masterKey","qualifiedName":"flutter_parse_sdk.ParseCoreData.masterKey","href":"flutter_parse_sdk/ParseCoreData/masterKey.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"registerFileSubClass","qualifiedName":"flutter_parse_sdk.ParseCoreData.registerFileSubClass","href":"flutter_parse_sdk/ParseCoreData/registerFileSubClass.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"registerSubClass","qualifiedName":"flutter_parse_sdk.ParseCoreData.registerSubClass","href":"flutter_parse_sdk/ParseCoreData/registerSubClass.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"registerUserSubClass","qualifiedName":"flutter_parse_sdk.ParseCoreData.registerUserSubClass","href":"flutter_parse_sdk/ParseCoreData/registerUserSubClass.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"securityContext","qualifiedName":"flutter_parse_sdk.ParseCoreData.securityContext","href":"flutter_parse_sdk/ParseCoreData/securityContext.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"serverUrl","qualifiedName":"flutter_parse_sdk.ParseCoreData.serverUrl","href":"flutter_parse_sdk/ParseCoreData/serverUrl.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"sessionId","qualifiedName":"flutter_parse_sdk.ParseCoreData.sessionId","href":"flutter_parse_sdk/ParseCoreData/sessionId.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"setSessionId","qualifiedName":"flutter_parse_sdk.ParseCoreData.setSessionId","href":"flutter_parse_sdk/ParseCoreData/setSessionId.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Sets the current sessionId.","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"storage","qualifiedName":"flutter_parse_sdk.ParseCoreData.storage","href":"flutter_parse_sdk/ParseCoreData/storage.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"toString","qualifiedName":"flutter_parse_sdk.ParseCoreData.toString","href":"flutter_parse_sdk/ParseCoreData/toString.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"A string representation of this object.","enclosedBy":{"name":"ParseCoreData","kind":3,"href":"flutter_parse_sdk/ParseCoreData-class.html"}},{"name":"ParseDioClient","qualifiedName":"flutter_parse_sdk.ParseDioClient","href":"flutter_parse_sdk/ParseDioClient-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseDioClient","qualifiedName":"flutter_parse_sdk.ParseDioClient.ParseDioClient","href":"flutter_parse_sdk/ParseDioClient/ParseDioClient.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseDioClient","kind":3,"href":"flutter_parse_sdk/ParseDioClient-class.html"}},{"name":"delete","qualifiedName":"flutter_parse_sdk.ParseDioClient.delete","href":"flutter_parse_sdk/ParseDioClient/delete.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseDioClient","kind":3,"href":"flutter_parse_sdk/ParseDioClient-class.html"}},{"name":"get","qualifiedName":"flutter_parse_sdk.ParseDioClient.get","href":"flutter_parse_sdk/ParseDioClient/get.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseDioClient","kind":3,"href":"flutter_parse_sdk/ParseDioClient-class.html"}},{"name":"getBytes","qualifiedName":"flutter_parse_sdk.ParseDioClient.getBytes","href":"flutter_parse_sdk/ParseDioClient/getBytes.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseDioClient","kind":3,"href":"flutter_parse_sdk/ParseDioClient-class.html"}},{"name":"post","qualifiedName":"flutter_parse_sdk.ParseDioClient.post","href":"flutter_parse_sdk/ParseDioClient/post.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseDioClient","kind":3,"href":"flutter_parse_sdk/ParseDioClient-class.html"}},{"name":"postBytes","qualifiedName":"flutter_parse_sdk.ParseDioClient.postBytes","href":"flutter_parse_sdk/ParseDioClient/postBytes.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseDioClient","kind":3,"href":"flutter_parse_sdk/ParseDioClient-class.html"}},{"name":"put","qualifiedName":"flutter_parse_sdk.ParseDioClient.put","href":"flutter_parse_sdk/ParseDioClient/put.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseDioClient","kind":3,"href":"flutter_parse_sdk/ParseDioClient-class.html"}},{"name":"ParseError","qualifiedName":"flutter_parse_sdk.ParseError","href":"flutter_parse_sdk/ParseError-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"ParseException is used in ParseResult to inform the user of the exception","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseError","qualifiedName":"flutter_parse_sdk.ParseError.ParseError","href":"flutter_parse_sdk/ParseError/ParseError.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"accountAlreadyLinked","qualifiedName":"flutter_parse_sdk.ParseError.accountAlreadyLinked","href":"flutter_parse_sdk/ParseError/accountAlreadyLinked-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that an an account being linked is already linked\nto another user.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"aggregateError","qualifiedName":"flutter_parse_sdk.ParseError.aggregateError","href":"flutter_parse_sdk/ParseError/aggregateError-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that there were multiple errors. Aggregate errors\nhave an \"errors\" property, which is an array of error objects with more\ndetail about each error that occurred.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"cacheMiss","qualifiedName":"flutter_parse_sdk.ParseError.cacheMiss","href":"flutter_parse_sdk/ParseError/cacheMiss-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating the result was not found in the cache.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"code","qualifiedName":"flutter_parse_sdk.ParseError.code","href":"flutter_parse_sdk/ParseError/code.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"commandUnavailable","qualifiedName":"flutter_parse_sdk.ParseError.commandUnavailable","href":"flutter_parse_sdk/ParseError/commandUnavailable-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that the feature you tried to access is only\navailable internally for testing purposes.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"connectionFailed","qualifiedName":"flutter_parse_sdk.ParseError.connectionFailed","href":"flutter_parse_sdk/ParseError/connectionFailed-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating the connection to the Parse servers failed.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"duplicateRequest","qualifiedName":"flutter_parse_sdk.ParseError.duplicateRequest","href":"flutter_parse_sdk/ParseError/duplicateRequest-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that the request was a duplicate and has been discarded due to\nidempotency rules.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"duplicateValue","qualifiedName":"flutter_parse_sdk.ParseError.duplicateValue","href":"flutter_parse_sdk/ParseError/duplicateValue-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that a unique field was given a value that is\nalready taken.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"emailMissing","qualifiedName":"flutter_parse_sdk.ParseError.emailMissing","href":"flutter_parse_sdk/ParseError/emailMissing-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that the email is missing, but must be specified.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"emailNotFound","qualifiedName":"flutter_parse_sdk.ParseError.emailNotFound","href":"flutter_parse_sdk/ParseError/emailNotFound-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that a user with the specified email was not found.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"emailTaken","qualifiedName":"flutter_parse_sdk.ParseError.emailTaken","href":"flutter_parse_sdk/ParseError/emailTaken-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that the email has already been taken.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"exceededQuota","qualifiedName":"flutter_parse_sdk.ParseError.exceededQuota","href":"flutter_parse_sdk/ParseError/exceededQuota-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that an application quota was exceeded. Upgrade to\nresolve.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"exception","qualifiedName":"flutter_parse_sdk.ParseError.exception","href":"flutter_parse_sdk/ParseError/exception.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"fileDeleteError","qualifiedName":"flutter_parse_sdk.ParseError.fileDeleteError","href":"flutter_parse_sdk/ParseError/fileDeleteError-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating an error deleting a file.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"fileDeleteUnnamedError","qualifiedName":"flutter_parse_sdk.ParseError.fileDeleteUnnamedError","href":"flutter_parse_sdk/ParseError/fileDeleteUnnamedError-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating an error deleting an unnamed file.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"fileReadError","qualifiedName":"flutter_parse_sdk.ParseError.fileReadError","href":"flutter_parse_sdk/ParseError/fileReadError-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating the client was unable to read an input file.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"fileSaveError","qualifiedName":"flutter_parse_sdk.ParseError.fileSaveError","href":"flutter_parse_sdk/ParseError/fileSaveError-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating an error saving a file.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"fileTooLarge","qualifiedName":"flutter_parse_sdk.ParseError.fileTooLarge","href":"flutter_parse_sdk/ParseError/fileTooLarge-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating a file that was too large.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"incorrectType","qualifiedName":"flutter_parse_sdk.ParseError.incorrectType","href":"flutter_parse_sdk/ParseError/incorrectType-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that a field was set to an inconsistent type.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"internalServerError","qualifiedName":"flutter_parse_sdk.ParseError.internalServerError","href":"flutter_parse_sdk/ParseError/internalServerError-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that something has gone wrong with the server.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidAcl","qualifiedName":"flutter_parse_sdk.ParseError.invalidAcl","href":"flutter_parse_sdk/ParseError/invalidAcl-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating an invalid ACL was provided.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidChannelName","qualifiedName":"flutter_parse_sdk.ParseError.invalidChannelName","href":"flutter_parse_sdk/ParseError/invalidChannelName-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating an invalid channel name. A channel name is either\nan empty string (the broadcast channel) or contains only a-zA-Z0-9_\ncharacters and starts with a letter.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidClassName","qualifiedName":"flutter_parse_sdk.ParseError.invalidClassName","href":"flutter_parse_sdk/ParseError/invalidClassName-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating a missing or invalid classname. Classnames are\ncase-sensitive. They must start with a letter, and a-zA-Z0-9_ are the\nonly valid characters.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidContentLength","qualifiedName":"flutter_parse_sdk.ParseError.invalidContentLength","href":"flutter_parse_sdk/ParseError/invalidContentLength-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating an invalid content length.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidEmailAddress","qualifiedName":"flutter_parse_sdk.ParseError.invalidEmailAddress","href":"flutter_parse_sdk/ParseError/invalidEmailAddress-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that the email address was invalid.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidEventName","qualifiedName":"flutter_parse_sdk.ParseError.invalidEventName","href":"flutter_parse_sdk/ParseError/invalidEventName-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating an invalid event name.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidFileName","qualifiedName":"flutter_parse_sdk.ParseError.invalidFileName","href":"flutter_parse_sdk/ParseError/invalidFileName-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that an invalid filename was used for ParseFile.\nA valid file name contains only a-zA-Z0-9_. characters and is between 1\nand 128 characters.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidImageData","qualifiedName":"flutter_parse_sdk.ParseError.invalidImageData","href":"flutter_parse_sdk/ParseError/invalidImageData-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that invalid image data was provided.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidJson","qualifiedName":"flutter_parse_sdk.ParseError.invalidJson","href":"flutter_parse_sdk/ParseError/invalidJson-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that badly formed JSON was received upstream. This\neither indicates you have done something unusual with modifying how\nthings encode to JSON, or the network is failing badly.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidKeyName","qualifiedName":"flutter_parse_sdk.ParseError.invalidKeyName","href":"flutter_parse_sdk/ParseError/invalidKeyName-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating an invalid key name. Keys are case-sensitive. They\nmust start with a letter, and a-zA-Z0-9_ are the only valid characters.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidLinkedSession","qualifiedName":"flutter_parse_sdk.ParseError.invalidLinkedSession","href":"flutter_parse_sdk/ParseError/invalidLinkedSession-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that a user with a linked (e.g. Facebook) account\nhas an invalid session.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidNestedKey","qualifiedName":"flutter_parse_sdk.ParseError.invalidNestedKey","href":"flutter_parse_sdk/ParseError/invalidNestedKey-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that an invalid key was used in a nested\nJSONObject.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidPointer","qualifiedName":"flutter_parse_sdk.ParseError.invalidPointer","href":"flutter_parse_sdk/ParseError/invalidPointer-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating a malformed pointer. You should not see this unless\nyou have been mucking about changing internal Parse code.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidPushTimeError","qualifiedName":"flutter_parse_sdk.ParseError.invalidPushTimeError","href":"flutter_parse_sdk/ParseError/invalidPushTimeError-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating an invalid push time.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidQuery","qualifiedName":"flutter_parse_sdk.ParseError.invalidQuery","href":"flutter_parse_sdk/ParseError/invalidQuery-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating you tried to query with a datatype that doesn't\nsupport it, like exact matching an array or object.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidRoleName","qualifiedName":"flutter_parse_sdk.ParseError.invalidRoleName","href":"flutter_parse_sdk/ParseError/invalidRoleName-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that a role's name is invalid.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidSchemaOperation","qualifiedName":"flutter_parse_sdk.ParseError.invalidSchemaOperation","href":"flutter_parse_sdk/ParseError/invalidSchemaOperation-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating an invalid operation occured on schema","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidSessionToken","qualifiedName":"flutter_parse_sdk.ParseError.invalidSessionToken","href":"flutter_parse_sdk/ParseError/invalidSessionToken-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that the current session token is invalid.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"invalidValue","qualifiedName":"flutter_parse_sdk.ParseError.invalidValue","href":"flutter_parse_sdk/ParseError/invalidValue-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that a field had an invalid value.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"linkedIdMissing","qualifiedName":"flutter_parse_sdk.ParseError.linkedIdMissing","href":"flutter_parse_sdk/ParseError/linkedIdMissing-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that a user cannot be linked to an account because\nthat account's id could not be found.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"message","qualifiedName":"flutter_parse_sdk.ParseError.message","href":"flutter_parse_sdk/ParseError/message.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"mfaError","qualifiedName":"flutter_parse_sdk.ParseError.mfaError","href":"flutter_parse_sdk/ParseError/mfaError-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating an error enabling or verifying MFA","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"mfaTokenRequired","qualifiedName":"flutter_parse_sdk.ParseError.mfaTokenRequired","href":"flutter_parse_sdk/ParseError/mfaTokenRequired-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that a valid MFA token must be provided","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"missingContentLength","qualifiedName":"flutter_parse_sdk.ParseError.missingContentLength","href":"flutter_parse_sdk/ParseError/missingContentLength-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating a missing content length.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"missingContentType","qualifiedName":"flutter_parse_sdk.ParseError.missingContentType","href":"flutter_parse_sdk/ParseError/missingContentType-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating a missing content type.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"missingObjectId","qualifiedName":"flutter_parse_sdk.ParseError.missingObjectId","href":"flutter_parse_sdk/ParseError/missingObjectId-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating an unspecified object id.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"mustCreateUserThroughSignup","qualifiedName":"flutter_parse_sdk.ParseError.mustCreateUserThroughSignup","href":"flutter_parse_sdk/ParseError/mustCreateUserThroughSignup-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that a user can only be created through signup.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"notInitialized","qualifiedName":"flutter_parse_sdk.ParseError.notInitialized","href":"flutter_parse_sdk/ParseError/notInitialized-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"You must call Parse().initialize before using the Parse library.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"objectNotFound","qualifiedName":"flutter_parse_sdk.ParseError.objectNotFound","href":"flutter_parse_sdk/ParseError/objectNotFound-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating the specified object doesn't exist.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"objectTooLarge","qualifiedName":"flutter_parse_sdk.ParseError.objectTooLarge","href":"flutter_parse_sdk/ParseError/objectTooLarge-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that the object is too large.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"operationForbidden","qualifiedName":"flutter_parse_sdk.ParseError.operationForbidden","href":"flutter_parse_sdk/ParseError/operationForbidden-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that the operation isn't allowed for clients.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"otherCause","qualifiedName":"flutter_parse_sdk.ParseError.otherCause","href":"flutter_parse_sdk/ParseError/otherCause-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating some error other than those enumerated here.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"passwordMissing","qualifiedName":"flutter_parse_sdk.ParseError.passwordMissing","href":"flutter_parse_sdk/ParseError/passwordMissing-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that the password is missing or empty.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"pushMisconfigured","qualifiedName":"flutter_parse_sdk.ParseError.pushMisconfigured","href":"flutter_parse_sdk/ParseError/pushMisconfigured-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that push is misconfigured.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"requestLimitExceeded","qualifiedName":"flutter_parse_sdk.ParseError.requestLimitExceeded","href":"flutter_parse_sdk/ParseError/requestLimitExceeded-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that the application has exceeded its request\nlimit.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"scriptFailed","qualifiedName":"flutter_parse_sdk.ParseError.scriptFailed","href":"flutter_parse_sdk/ParseError/scriptFailed-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that a Cloud Code script failed.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"sessionMissing","qualifiedName":"flutter_parse_sdk.ParseError.sessionMissing","href":"flutter_parse_sdk/ParseError/sessionMissing-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that a user object without a valid session could\nnot be altered.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"timeout","qualifiedName":"flutter_parse_sdk.ParseError.timeout","href":"flutter_parse_sdk/ParseError/timeout-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that the request timed out on the server. Typically\nthis indicates that the request is too expensive to run.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"toString","qualifiedName":"flutter_parse_sdk.ParseError.toString","href":"flutter_parse_sdk/ParseError/toString.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"A string representation of this object.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"type","qualifiedName":"flutter_parse_sdk.ParseError.type","href":"flutter_parse_sdk/ParseError/type.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"unsavedFileError","qualifiedName":"flutter_parse_sdk.ParseError.unsavedFileError","href":"flutter_parse_sdk/ParseError/unsavedFileError-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating an unsaved file.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"unsupportedService","qualifiedName":"flutter_parse_sdk.ParseError.unsupportedService","href":"flutter_parse_sdk/ParseError/unsupportedService-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that a service being linked (e.g. Facebook or\nTwitter) is unsupported.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"usernameMissing","qualifiedName":"flutter_parse_sdk.ParseError.usernameMissing","href":"flutter_parse_sdk/ParseError/usernameMissing-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that the username is missing or empty.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"usernameTaken","qualifiedName":"flutter_parse_sdk.ParseError.usernameTaken","href":"flutter_parse_sdk/ParseError/usernameTaken-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that the username has already been taken.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"validationError","qualifiedName":"flutter_parse_sdk.ParseError.validationError","href":"flutter_parse_sdk/ParseError/validationError-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating that a Cloud Code validation failed.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"xDomainRequest","qualifiedName":"flutter_parse_sdk.ParseError.xDomainRequest","href":"flutter_parse_sdk/ParseError/xDomainRequest-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"Error code indicating a real error code is unavailable because\nwe had to use an XDomainRequest object to allow CORS requests in\nInternet Explorer, which strips the body from HTTP responses that have\na non-2XX status code.","enclosedBy":{"name":"ParseError","kind":3,"href":"flutter_parse_sdk/ParseError-class.html"}},{"name":"ParseException","qualifiedName":"flutter_parse_sdk.ParseException","href":"flutter_parse_sdk/ParseException-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseException","qualifiedName":"flutter_parse_sdk.ParseException.ParseException","href":"flutter_parse_sdk/ParseException/ParseException.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseException","kind":3,"href":"flutter_parse_sdk/ParseException-class.html"}},{"name":"ParseFile","qualifiedName":"flutter_parse_sdk.ParseFile","href":"flutter_parse_sdk/ParseFile-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseFile","qualifiedName":"flutter_parse_sdk.ParseFile.ParseFile","href":"flutter_parse_sdk/ParseFile/ParseFile.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Creates a new file","enclosedBy":{"name":"ParseFile","kind":3,"href":"flutter_parse_sdk/ParseFile-class.html"}},{"name":"cancel","qualifiedName":"flutter_parse_sdk.ParseFile.cancel","href":"flutter_parse_sdk/ParseFile/cancel.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Cancels the current request (upload or download of file).","enclosedBy":{"name":"ParseFile","kind":3,"href":"flutter_parse_sdk/ParseFile-class.html"}},{"name":"download","qualifiedName":"flutter_parse_sdk.ParseFile.download","href":"flutter_parse_sdk/ParseFile/download.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseFile","kind":3,"href":"flutter_parse_sdk/ParseFile-class.html"}},{"name":"file","qualifiedName":"flutter_parse_sdk.ParseFile.file","href":"flutter_parse_sdk/ParseFile/file.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseFile","kind":3,"href":"flutter_parse_sdk/ParseFile-class.html"}},{"name":"loadStorage","qualifiedName":"flutter_parse_sdk.ParseFile.loadStorage","href":"flutter_parse_sdk/ParseFile/loadStorage.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseFile","kind":3,"href":"flutter_parse_sdk/ParseFile-class.html"}},{"name":"progressCallback","qualifiedName":"flutter_parse_sdk.ParseFile.progressCallback","href":"flutter_parse_sdk/ParseFile/progressCallback.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Add Progress Callback","enclosedBy":{"name":"ParseFile","kind":3,"href":"flutter_parse_sdk/ParseFile-class.html"}},{"name":"upload","qualifiedName":"flutter_parse_sdk.ParseFile.upload","href":"flutter_parse_sdk/ParseFile/upload.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Uploads a file to Parse Server","enclosedBy":{"name":"ParseFile","kind":3,"href":"flutter_parse_sdk/ParseFile-class.html"}},{"name":"ParseFileBase","qualifiedName":"flutter_parse_sdk.ParseFileBase","href":"flutter_parse_sdk/ParseFileBase-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseFileBase","qualifiedName":"flutter_parse_sdk.ParseFileBase.ParseFileBase","href":"flutter_parse_sdk/ParseFileBase/ParseFileBase.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Creates a new file","enclosedBy":{"name":"ParseFileBase","kind":3,"href":"flutter_parse_sdk/ParseFileBase-class.html"}},{"name":"cancel","qualifiedName":"flutter_parse_sdk.ParseFileBase.cancel","href":"flutter_parse_sdk/ParseFileBase/cancel.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseFileBase","kind":3,"href":"flutter_parse_sdk/ParseFileBase-class.html"}},{"name":"download","qualifiedName":"flutter_parse_sdk.ParseFileBase.download","href":"flutter_parse_sdk/ParseFileBase/download.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseFileBase","kind":3,"href":"flutter_parse_sdk/ParseFileBase-class.html"}},{"name":"name","qualifiedName":"flutter_parse_sdk.ParseFileBase.name","href":"flutter_parse_sdk/ParseFileBase/name.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseFileBase","kind":3,"href":"flutter_parse_sdk/ParseFileBase-class.html"}},{"name":"progressCallback","qualifiedName":"flutter_parse_sdk.ParseFileBase.progressCallback","href":"flutter_parse_sdk/ParseFileBase/progressCallback.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseFileBase","kind":3,"href":"flutter_parse_sdk/ParseFileBase-class.html"}},{"name":"save","qualifiedName":"flutter_parse_sdk.ParseFileBase.save","href":"flutter_parse_sdk/ParseFileBase/save.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Uploads a file to Parse Server","enclosedBy":{"name":"ParseFileBase","kind":3,"href":"flutter_parse_sdk/ParseFileBase-class.html"}},{"name":"saved","qualifiedName":"flutter_parse_sdk.ParseFileBase.saved","href":"flutter_parse_sdk/ParseFileBase/saved.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseFileBase","kind":3,"href":"flutter_parse_sdk/ParseFileBase-class.html"}},{"name":"toJson","qualifiedName":"flutter_parse_sdk.ParseFileBase.toJson","href":"flutter_parse_sdk/ParseFileBase/toJson.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Converts object to String in JSON format","enclosedBy":{"name":"ParseFileBase","kind":3,"href":"flutter_parse_sdk/ParseFileBase-class.html"}},{"name":"toString","qualifiedName":"flutter_parse_sdk.ParseFileBase.toString","href":"flutter_parse_sdk/ParseFileBase/toString.html","kind":10,"overriddenDepth":2,"packageRank":0,"desc":"A string representation of this object.","enclosedBy":{"name":"ParseFileBase","kind":3,"href":"flutter_parse_sdk/ParseFileBase-class.html"}},{"name":"upload","qualifiedName":"flutter_parse_sdk.ParseFileBase.upload","href":"flutter_parse_sdk/ParseFileBase/upload.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Uploads a file to Parse Server","enclosedBy":{"name":"ParseFileBase","kind":3,"href":"flutter_parse_sdk/ParseFileBase-class.html"}},{"name":"url","qualifiedName":"flutter_parse_sdk.ParseFileBase.url","href":"flutter_parse_sdk/ParseFileBase/url.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseFileBase","kind":3,"href":"flutter_parse_sdk/ParseFileBase-class.html"}},{"name":"ParseFileConstructor","qualifiedName":"flutter_parse_sdk.ParseFileConstructor","href":"flutter_parse_sdk/ParseFileConstructor.html","kind":21,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseGeoPoint","qualifiedName":"flutter_parse_sdk.ParseGeoPoint","href":"flutter_parse_sdk/ParseGeoPoint-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseGeoPoint","qualifiedName":"flutter_parse_sdk.ParseGeoPoint.ParseGeoPoint","href":"flutter_parse_sdk/ParseGeoPoint/ParseGeoPoint.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Creates a Parse Object of type GeoPoint","enclosedBy":{"name":"ParseGeoPoint","kind":3,"href":"flutter_parse_sdk/ParseGeoPoint-class.html"}},{"name":"latitude","qualifiedName":"flutter_parse_sdk.ParseGeoPoint.latitude","href":"flutter_parse_sdk/ParseGeoPoint/latitude.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseGeoPoint","kind":3,"href":"flutter_parse_sdk/ParseGeoPoint-class.html"}},{"name":"longitude","qualifiedName":"flutter_parse_sdk.ParseGeoPoint.longitude","href":"flutter_parse_sdk/ParseGeoPoint/longitude.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseGeoPoint","kind":3,"href":"flutter_parse_sdk/ParseGeoPoint-class.html"}},{"name":"toJson","qualifiedName":"flutter_parse_sdk.ParseGeoPoint.toJson","href":"flutter_parse_sdk/ParseGeoPoint/toJson.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseGeoPoint","kind":3,"href":"flutter_parse_sdk/ParseGeoPoint-class.html"}},{"name":"toString","qualifiedName":"flutter_parse_sdk.ParseGeoPoint.toString","href":"flutter_parse_sdk/ParseGeoPoint/toString.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"A string representation of this object.","enclosedBy":{"name":"ParseGeoPoint","kind":3,"href":"flutter_parse_sdk/ParseGeoPoint-class.html"}},{"name":"ParseHTTPClient","qualifiedName":"flutter_parse_sdk.ParseHTTPClient","href":"flutter_parse_sdk/ParseHTTPClient-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseHTTPClient","qualifiedName":"flutter_parse_sdk.ParseHTTPClient.ParseHTTPClient","href":"flutter_parse_sdk/ParseHTTPClient/ParseHTTPClient.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseHTTPClient","kind":3,"href":"flutter_parse_sdk/ParseHTTPClient-class.html"}},{"name":"additionalHeaders","qualifiedName":"flutter_parse_sdk.ParseHTTPClient.additionalHeaders","href":"flutter_parse_sdk/ParseHTTPClient/additionalHeaders.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseHTTPClient","kind":3,"href":"flutter_parse_sdk/ParseHTTPClient-class.html"}},{"name":"delete","qualifiedName":"flutter_parse_sdk.ParseHTTPClient.delete","href":"flutter_parse_sdk/ParseHTTPClient/delete.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseHTTPClient","kind":3,"href":"flutter_parse_sdk/ParseHTTPClient-class.html"}},{"name":"get","qualifiedName":"flutter_parse_sdk.ParseHTTPClient.get","href":"flutter_parse_sdk/ParseHTTPClient/get.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseHTTPClient","kind":3,"href":"flutter_parse_sdk/ParseHTTPClient-class.html"}},{"name":"getBytes","qualifiedName":"flutter_parse_sdk.ParseHTTPClient.getBytes","href":"flutter_parse_sdk/ParseHTTPClient/getBytes.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseHTTPClient","kind":3,"href":"flutter_parse_sdk/ParseHTTPClient-class.html"}},{"name":"post","qualifiedName":"flutter_parse_sdk.ParseHTTPClient.post","href":"flutter_parse_sdk/ParseHTTPClient/post.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseHTTPClient","kind":3,"href":"flutter_parse_sdk/ParseHTTPClient-class.html"}},{"name":"postBytes","qualifiedName":"flutter_parse_sdk.ParseHTTPClient.postBytes","href":"flutter_parse_sdk/ParseHTTPClient/postBytes.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseHTTPClient","kind":3,"href":"flutter_parse_sdk/ParseHTTPClient-class.html"}},{"name":"put","qualifiedName":"flutter_parse_sdk.ParseHTTPClient.put","href":"flutter_parse_sdk/ParseHTTPClient/put.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseHTTPClient","kind":3,"href":"flutter_parse_sdk/ParseHTTPClient-class.html"}},{"name":"ParseInstallation","qualifiedName":"flutter_parse_sdk.ParseInstallation","href":"flutter_parse_sdk/ParseInstallation-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseInstallation","qualifiedName":"flutter_parse_sdk.ParseInstallation.ParseInstallation","href":"flutter_parse_sdk/ParseInstallation/ParseInstallation.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Creates an instance of ParseInstallation","enclosedBy":{"name":"ParseInstallation","kind":3,"href":"flutter_parse_sdk/ParseInstallation-class.html"}},{"name":"acl","qualifiedName":"flutter_parse_sdk.ParseInstallation.acl","href":"flutter_parse_sdk/ParseInstallation/acl.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseInstallation","kind":3,"href":"flutter_parse_sdk/ParseInstallation-class.html"}},{"name":"appIdentifier","qualifiedName":"flutter_parse_sdk.ParseInstallation.appIdentifier","href":"flutter_parse_sdk/ParseInstallation/appIdentifier.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseInstallation","kind":3,"href":"flutter_parse_sdk/ParseInstallation-class.html"}},{"name":"appName","qualifiedName":"flutter_parse_sdk.ParseInstallation.appName","href":"flutter_parse_sdk/ParseInstallation/appName.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseInstallation","kind":3,"href":"flutter_parse_sdk/ParseInstallation-class.html"}},{"name":"appVersion","qualifiedName":"flutter_parse_sdk.ParseInstallation.appVersion","href":"flutter_parse_sdk/ParseInstallation/appVersion.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseInstallation","kind":3,"href":"flutter_parse_sdk/ParseInstallation-class.html"}},{"name":"create","qualifiedName":"flutter_parse_sdk.ParseInstallation.create","href":"flutter_parse_sdk/ParseInstallation/create.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Creates a new object and saves it online","enclosedBy":{"name":"ParseInstallation","kind":3,"href":"flutter_parse_sdk/ParseInstallation-class.html"}},{"name":"currentInstallation","qualifiedName":"flutter_parse_sdk.ParseInstallation.currentInstallation","href":"flutter_parse_sdk/ParseInstallation/currentInstallation.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Gets the current installation from storage","enclosedBy":{"name":"ParseInstallation","kind":3,"href":"flutter_parse_sdk/ParseInstallation-class.html"}},{"name":"deviceToken","qualifiedName":"flutter_parse_sdk.ParseInstallation.deviceToken","href":"flutter_parse_sdk/ParseInstallation/deviceToken.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseInstallation","kind":3,"href":"flutter_parse_sdk/ParseInstallation-class.html"}},{"name":"deviceType","qualifiedName":"flutter_parse_sdk.ParseInstallation.deviceType","href":"flutter_parse_sdk/ParseInstallation/deviceType.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseInstallation","kind":3,"href":"flutter_parse_sdk/ParseInstallation-class.html"}},{"name":"ParseInstallation.forQuery","qualifiedName":"flutter_parse_sdk.ParseInstallation.forQuery","href":"flutter_parse_sdk/ParseInstallation/ParseInstallation.forQuery.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseInstallation","kind":3,"href":"flutter_parse_sdk/ParseInstallation-class.html"}},{"name":"getSubscribedChannels","qualifiedName":"flutter_parse_sdk.ParseInstallation.getSubscribedChannels","href":"flutter_parse_sdk/ParseInstallation/getSubscribedChannels.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Returns an <List> containing all the channel names this device is subscribed to.","enclosedBy":{"name":"ParseInstallation","kind":3,"href":"flutter_parse_sdk/ParseInstallation-class.html"}},{"name":"installationId","qualifiedName":"flutter_parse_sdk.ParseInstallation.installationId","href":"flutter_parse_sdk/ParseInstallation/installationId.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseInstallation","kind":3,"href":"flutter_parse_sdk/ParseInstallation-class.html"}},{"name":"isCurrent","qualifiedName":"flutter_parse_sdk.ParseInstallation.isCurrent","href":"flutter_parse_sdk/ParseInstallation/isCurrent.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseInstallation","kind":3,"href":"flutter_parse_sdk/ParseInstallation-class.html"}},{"name":"parseVersion","qualifiedName":"flutter_parse_sdk.ParseInstallation.parseVersion","href":"flutter_parse_sdk/ParseInstallation/parseVersion.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseInstallation","kind":3,"href":"flutter_parse_sdk/ParseInstallation-class.html"}},{"name":"readOnlyKeys","qualifiedName":"flutter_parse_sdk.ParseInstallation.readOnlyKeys","href":"flutter_parse_sdk/ParseInstallation/readOnlyKeys.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseInstallation","kind":3,"href":"flutter_parse_sdk/ParseInstallation-class.html"}},{"name":"save","qualifiedName":"flutter_parse_sdk.ParseInstallation.save","href":"flutter_parse_sdk/ParseInstallation/save.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Saves the current installation","enclosedBy":{"name":"ParseInstallation","kind":3,"href":"flutter_parse_sdk/ParseInstallation-class.html"}},{"name":"subscribeToChannel","qualifiedName":"flutter_parse_sdk.ParseInstallation.subscribeToChannel","href":"flutter_parse_sdk/ParseInstallation/subscribeToChannel.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Subscribes the device to a channel of push notifications.","enclosedBy":{"name":"ParseInstallation","kind":3,"href":"flutter_parse_sdk/ParseInstallation-class.html"}},{"name":"unsubscribeFromChannel","qualifiedName":"flutter_parse_sdk.ParseInstallation.unsubscribeFromChannel","href":"flutter_parse_sdk/ParseInstallation/unsubscribeFromChannel.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Unsubscribes the device to a channel of push notifications.","enclosedBy":{"name":"ParseInstallation","kind":3,"href":"flutter_parse_sdk/ParseInstallation-class.html"}},{"name":"ParseLiveElement","qualifiedName":"flutter_parse_sdk.ParseLiveElement","href":"flutter_parse_sdk/ParseLiveElement-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseLiveElement","qualifiedName":"flutter_parse_sdk.ParseLiveElement.ParseLiveElement","href":"flutter_parse_sdk/ParseLiveElement/ParseLiveElement.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveElement","kind":3,"href":"flutter_parse_sdk/ParseLiveElement-class.html"}},{"name":"dispose","qualifiedName":"flutter_parse_sdk.ParseLiveElement.dispose","href":"flutter_parse_sdk/ParseLiveElement/dispose.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveElement","kind":3,"href":"flutter_parse_sdk/ParseLiveElement-class.html"}},{"name":"queryBuilder","qualifiedName":"flutter_parse_sdk.ParseLiveElement.queryBuilder","href":"flutter_parse_sdk/ParseLiveElement/queryBuilder.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveElement","kind":3,"href":"flutter_parse_sdk/ParseLiveElement-class.html"}},{"name":"ParseLiveList","qualifiedName":"flutter_parse_sdk.ParseLiveList","href":"flutter_parse_sdk/ParseLiveList-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"after","qualifiedName":"flutter_parse_sdk.ParseLiveList.after","href":"flutter_parse_sdk/ParseLiveList/after.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"is object1 listed after object2?","enclosedBy":{"name":"ParseLiveList","kind":3,"href":"flutter_parse_sdk/ParseLiveList-class.html"}},{"name":"create","qualifiedName":"flutter_parse_sdk.ParseLiveList.create","href":"flutter_parse_sdk/ParseLiveList/create.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveList","kind":3,"href":"flutter_parse_sdk/ParseLiveList-class.html"}},{"name":"dispose","qualifiedName":"flutter_parse_sdk.ParseLiveList.dispose","href":"flutter_parse_sdk/ParseLiveList/dispose.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveList","kind":3,"href":"flutter_parse_sdk/ParseLiveList-class.html"}},{"name":"getAt","qualifiedName":"flutter_parse_sdk.ParseLiveList.getAt","href":"flutter_parse_sdk/ParseLiveList/getAt.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveList","kind":3,"href":"flutter_parse_sdk/ParseLiveList-class.html"}},{"name":"getIdentifier","qualifiedName":"flutter_parse_sdk.ParseLiveList.getIdentifier","href":"flutter_parse_sdk/ParseLiveList/getIdentifier.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveList","kind":3,"href":"flutter_parse_sdk/ParseLiveList-class.html"}},{"name":"getLoadedAt","qualifiedName":"flutter_parse_sdk.ParseLiveList.getLoadedAt","href":"flutter_parse_sdk/ParseLiveList/getLoadedAt.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveList","kind":3,"href":"flutter_parse_sdk/ParseLiveList-class.html"}},{"name":"getPreLoadedAt","qualifiedName":"flutter_parse_sdk.ParseLiveList.getPreLoadedAt","href":"flutter_parse_sdk/ParseLiveList/getPreLoadedAt.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveList","kind":3,"href":"flutter_parse_sdk/ParseLiveList-class.html"}},{"name":"idOf","qualifiedName":"flutter_parse_sdk.ParseLiveList.idOf","href":"flutter_parse_sdk/ParseLiveList/idOf.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveList","kind":3,"href":"flutter_parse_sdk/ParseLiveList-class.html"}},{"name":"includes","qualifiedName":"flutter_parse_sdk.ParseLiveList.includes","href":"flutter_parse_sdk/ParseLiveList/includes.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveList","kind":3,"href":"flutter_parse_sdk/ParseLiveList-class.html"}},{"name":"nextID","qualifiedName":"flutter_parse_sdk.ParseLiveList.nextID","href":"flutter_parse_sdk/ParseLiveList/nextID.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveList","kind":3,"href":"flutter_parse_sdk/ParseLiveList-class.html"}},{"name":"size","qualifiedName":"flutter_parse_sdk.ParseLiveList.size","href":"flutter_parse_sdk/ParseLiveList/size.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveList","kind":3,"href":"flutter_parse_sdk/ParseLiveList-class.html"}},{"name":"stream","qualifiedName":"flutter_parse_sdk.ParseLiveList.stream","href":"flutter_parse_sdk/ParseLiveList/stream.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveList","kind":3,"href":"flutter_parse_sdk/ParseLiveList-class.html"}},{"name":"ParseLiveListAddEvent","qualifiedName":"flutter_parse_sdk.ParseLiveListAddEvent","href":"flutter_parse_sdk/ParseLiveListAddEvent-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseLiveListAddEvent","qualifiedName":"flutter_parse_sdk.ParseLiveListAddEvent.ParseLiveListAddEvent","href":"flutter_parse_sdk/ParseLiveListAddEvent/ParseLiveListAddEvent.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListAddEvent","kind":3,"href":"flutter_parse_sdk/ParseLiveListAddEvent-class.html"}},{"name":"ParseLiveListDeleteEvent","qualifiedName":"flutter_parse_sdk.ParseLiveListDeleteEvent","href":"flutter_parse_sdk/ParseLiveListDeleteEvent-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseLiveListDeleteEvent","qualifiedName":"flutter_parse_sdk.ParseLiveListDeleteEvent.ParseLiveListDeleteEvent","href":"flutter_parse_sdk/ParseLiveListDeleteEvent/ParseLiveListDeleteEvent.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListDeleteEvent","kind":3,"href":"flutter_parse_sdk/ParseLiveListDeleteEvent-class.html"}},{"name":"ParseLiveListElement","qualifiedName":"flutter_parse_sdk.ParseLiveListElement","href":"flutter_parse_sdk/ParseLiveListElement-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseLiveListElement","qualifiedName":"flutter_parse_sdk.ParseLiveListElement.ParseLiveListElement","href":"flutter_parse_sdk/ParseLiveListElement/ParseLiveListElement.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListElement","kind":3,"href":"flutter_parse_sdk/ParseLiveListElement-class.html"}},{"name":"dispose","qualifiedName":"flutter_parse_sdk.ParseLiveListElement.dispose","href":"flutter_parse_sdk/ParseLiveListElement/dispose.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListElement","kind":3,"href":"flutter_parse_sdk/ParseLiveListElement-class.html"}},{"name":"loaded","qualifiedName":"flutter_parse_sdk.ParseLiveListElement.loaded","href":"flutter_parse_sdk/ParseLiveListElement/loaded.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListElement","kind":3,"href":"flutter_parse_sdk/ParseLiveListElement-class.html"}},{"name":"object","qualifiedName":"flutter_parse_sdk.ParseLiveListElement.object","href":"flutter_parse_sdk/ParseLiveListElement/object.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListElement","kind":3,"href":"flutter_parse_sdk/ParseLiveListElement-class.html"}},{"name":"reconnected","qualifiedName":"flutter_parse_sdk.ParseLiveListElement.reconnected","href":"flutter_parse_sdk/ParseLiveListElement/reconnected.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListElement","kind":3,"href":"flutter_parse_sdk/ParseLiveListElement-class.html"}},{"name":"stream","qualifiedName":"flutter_parse_sdk.ParseLiveListElement.stream","href":"flutter_parse_sdk/ParseLiveListElement/stream.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListElement","kind":3,"href":"flutter_parse_sdk/ParseLiveListElement-class.html"}},{"name":"ParseLiveListElementSnapshot","qualifiedName":"flutter_parse_sdk.ParseLiveListElementSnapshot","href":"flutter_parse_sdk/ParseLiveListElementSnapshot-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseLiveListElementSnapshot","qualifiedName":"flutter_parse_sdk.ParseLiveListElementSnapshot.ParseLiveListElementSnapshot","href":"flutter_parse_sdk/ParseLiveListElementSnapshot/ParseLiveListElementSnapshot.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListElementSnapshot","kind":3,"href":"flutter_parse_sdk/ParseLiveListElementSnapshot-class.html"}},{"name":"error","qualifiedName":"flutter_parse_sdk.ParseLiveListElementSnapshot.error","href":"flutter_parse_sdk/ParseLiveListElementSnapshot/error.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListElementSnapshot","kind":3,"href":"flutter_parse_sdk/ParseLiveListElementSnapshot-class.html"}},{"name":"failed","qualifiedName":"flutter_parse_sdk.ParseLiveListElementSnapshot.failed","href":"flutter_parse_sdk/ParseLiveListElementSnapshot/failed.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListElementSnapshot","kind":3,"href":"flutter_parse_sdk/ParseLiveListElementSnapshot-class.html"}},{"name":"hasData","qualifiedName":"flutter_parse_sdk.ParseLiveListElementSnapshot.hasData","href":"flutter_parse_sdk/ParseLiveListElementSnapshot/hasData.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListElementSnapshot","kind":3,"href":"flutter_parse_sdk/ParseLiveListElementSnapshot-class.html"}},{"name":"hasPreLoadedData","qualifiedName":"flutter_parse_sdk.ParseLiveListElementSnapshot.hasPreLoadedData","href":"flutter_parse_sdk/ParseLiveListElementSnapshot/hasPreLoadedData.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListElementSnapshot","kind":3,"href":"flutter_parse_sdk/ParseLiveListElementSnapshot-class.html"}},{"name":"loadedData","qualifiedName":"flutter_parse_sdk.ParseLiveListElementSnapshot.loadedData","href":"flutter_parse_sdk/ParseLiveListElementSnapshot/loadedData.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListElementSnapshot","kind":3,"href":"flutter_parse_sdk/ParseLiveListElementSnapshot-class.html"}},{"name":"preLoadedData","qualifiedName":"flutter_parse_sdk.ParseLiveListElementSnapshot.preLoadedData","href":"flutter_parse_sdk/ParseLiveListElementSnapshot/preLoadedData.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListElementSnapshot","kind":3,"href":"flutter_parse_sdk/ParseLiveListElementSnapshot-class.html"}},{"name":"ParseLiveListEvent","qualifiedName":"flutter_parse_sdk.ParseLiveListEvent","href":"flutter_parse_sdk/ParseLiveListEvent-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseLiveListEvent","qualifiedName":"flutter_parse_sdk.ParseLiveListEvent.ParseLiveListEvent","href":"flutter_parse_sdk/ParseLiveListEvent/ParseLiveListEvent.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListEvent","kind":3,"href":"flutter_parse_sdk/ParseLiveListEvent-class.html"}},{"name":"index","qualifiedName":"flutter_parse_sdk.ParseLiveListEvent.index","href":"flutter_parse_sdk/ParseLiveListEvent/index.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListEvent","kind":3,"href":"flutter_parse_sdk/ParseLiveListEvent-class.html"}},{"name":"object","qualifiedName":"flutter_parse_sdk.ParseLiveListEvent.object","href":"flutter_parse_sdk/ParseLiveListEvent/object.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListEvent","kind":3,"href":"flutter_parse_sdk/ParseLiveListEvent-class.html"}},{"name":"ParseLiveListUpdateEvent","qualifiedName":"flutter_parse_sdk.ParseLiveListUpdateEvent","href":"flutter_parse_sdk/ParseLiveListUpdateEvent-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseLiveListUpdateEvent","qualifiedName":"flutter_parse_sdk.ParseLiveListUpdateEvent.ParseLiveListUpdateEvent","href":"flutter_parse_sdk/ParseLiveListUpdateEvent/ParseLiveListUpdateEvent.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseLiveListUpdateEvent","kind":3,"href":"flutter_parse_sdk/ParseLiveListUpdateEvent-class.html"}},{"name":"ParseNetworkByteResponse","qualifiedName":"flutter_parse_sdk.ParseNetworkByteResponse","href":"flutter_parse_sdk/ParseNetworkByteResponse-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseNetworkByteResponse","qualifiedName":"flutter_parse_sdk.ParseNetworkByteResponse.ParseNetworkByteResponse","href":"flutter_parse_sdk/ParseNetworkByteResponse/ParseNetworkByteResponse.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseNetworkByteResponse","kind":3,"href":"flutter_parse_sdk/ParseNetworkByteResponse-class.html"}},{"name":"bytes","qualifiedName":"flutter_parse_sdk.ParseNetworkByteResponse.bytes","href":"flutter_parse_sdk/ParseNetworkByteResponse/bytes.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseNetworkByteResponse","kind":3,"href":"flutter_parse_sdk/ParseNetworkByteResponse-class.html"}},{"name":"ParseNetworkOptions","qualifiedName":"flutter_parse_sdk.ParseNetworkOptions","href":"flutter_parse_sdk/ParseNetworkOptions-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseNetworkOptions","qualifiedName":"flutter_parse_sdk.ParseNetworkOptions.ParseNetworkOptions","href":"flutter_parse_sdk/ParseNetworkOptions/ParseNetworkOptions.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseNetworkOptions","kind":3,"href":"flutter_parse_sdk/ParseNetworkOptions-class.html"}},{"name":"headers","qualifiedName":"flutter_parse_sdk.ParseNetworkOptions.headers","href":"flutter_parse_sdk/ParseNetworkOptions/headers.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseNetworkOptions","kind":3,"href":"flutter_parse_sdk/ParseNetworkOptions-class.html"}},{"name":"ParseNetworkResponse","qualifiedName":"flutter_parse_sdk.ParseNetworkResponse","href":"flutter_parse_sdk/ParseNetworkResponse-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseNetworkResponse","qualifiedName":"flutter_parse_sdk.ParseNetworkResponse.ParseNetworkResponse","href":"flutter_parse_sdk/ParseNetworkResponse/ParseNetworkResponse.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseNetworkResponse","kind":3,"href":"flutter_parse_sdk/ParseNetworkResponse-class.html"}},{"name":"data","qualifiedName":"flutter_parse_sdk.ParseNetworkResponse.data","href":"flutter_parse_sdk/ParseNetworkResponse/data.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseNetworkResponse","kind":3,"href":"flutter_parse_sdk/ParseNetworkResponse-class.html"}},{"name":"statusCode","qualifiedName":"flutter_parse_sdk.ParseNetworkResponse.statusCode","href":"flutter_parse_sdk/ParseNetworkResponse/statusCode.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseNetworkResponse","kind":3,"href":"flutter_parse_sdk/ParseNetworkResponse-class.html"}},{"name":"ParseNetworkResponseType","qualifiedName":"flutter_parse_sdk.ParseNetworkResponseType","href":"flutter_parse_sdk/ParseNetworkResponseType.html","kind":5,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseNetworkResponseType","qualifiedName":"flutter_parse_sdk.ParseNetworkResponseType.ParseNetworkResponseType","href":"flutter_parse_sdk/ParseNetworkResponseType/ParseNetworkResponseType.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseNetworkResponseType","kind":5,"href":"flutter_parse_sdk/ParseNetworkResponseType.html"}},{"name":"values","qualifiedName":"flutter_parse_sdk.ParseNetworkResponseType.values","href":"flutter_parse_sdk/ParseNetworkResponseType/values-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"A constant List of the values in this enum, in order of their declaration.","enclosedBy":{"name":"ParseNetworkResponseType","kind":5,"href":"flutter_parse_sdk/ParseNetworkResponseType.html"}},{"name":"ParseObject","qualifiedName":"flutter_parse_sdk.ParseObject","href":"flutter_parse_sdk/ParseObject-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"ParseObject is a local representation of data that can be saved and\nretrieved from the Parse cloud.","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseObject","qualifiedName":"flutter_parse_sdk.ParseObject.ParseObject","href":"flutter_parse_sdk/ParseObject/ParseObject.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Creates a new Parse Object","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"addRelation","qualifiedName":"flutter_parse_sdk.ParseObject.addRelation","href":"flutter_parse_sdk/ParseObject/addRelation.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Add multiple objets to a relation associated with a given key","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"ParseObject.clone","qualifiedName":"flutter_parse_sdk.ParseObject.clone","href":"flutter_parse_sdk/ParseObject/ParseObject.clone.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"clone","qualifiedName":"flutter_parse_sdk.ParseObject.clone","href":"flutter_parse_sdk/ParseObject/clone.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"create","qualifiedName":"flutter_parse_sdk.ParseObject.create","href":"flutter_parse_sdk/ParseObject/create.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Creates a new object and saves it online","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"delete","qualifiedName":"flutter_parse_sdk.ParseObject.delete","href":"flutter_parse_sdk/ParseObject/delete.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Deletes the current object locally and online","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"deleteEventually","qualifiedName":"flutter_parse_sdk.ParseObject.deleteEventually","href":"flutter_parse_sdk/ParseObject/deleteEventually.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"distinct","qualifiedName":"flutter_parse_sdk.ParseObject.distinct","href":"flutter_parse_sdk/ParseObject/distinct.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"fetch","qualifiedName":"flutter_parse_sdk.ParseObject.fetch","href":"flutter_parse_sdk/ParseObject/fetch.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Fetches this object with the data from the server.","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"getAll","qualifiedName":"flutter_parse_sdk.ParseObject.getAll","href":"flutter_parse_sdk/ParseObject/getAll.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Gets all objects from this table - Limited response at the moment","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"getObject","qualifiedName":"flutter_parse_sdk.ParseObject.getObject","href":"flutter_parse_sdk/ParseObject/getObject.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Gets an object from the server using it's objectId","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"getRelation","qualifiedName":"flutter_parse_sdk.ParseObject.getRelation","href":"flutter_parse_sdk/ParseObject/getRelation.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Get the instance of ParseRelation class associated with the given key","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"query","qualifiedName":"flutter_parse_sdk.ParseObject.query","href":"flutter_parse_sdk/ParseObject/query.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Can be used to create custom queries","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"removeRelation","qualifiedName":"flutter_parse_sdk.ParseObject.removeRelation","href":"flutter_parse_sdk/ParseObject/removeRelation.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Remove multiple objets from a relation associated with a given key","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"save","qualifiedName":"flutter_parse_sdk.ParseObject.save","href":"flutter_parse_sdk/ParseObject/save.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Saves the current object online.","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"saveEventually","qualifiedName":"flutter_parse_sdk.ParseObject.saveEventually","href":"flutter_parse_sdk/ParseObject/saveEventually.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"setAdd","qualifiedName":"flutter_parse_sdk.ParseObject.setAdd","href":"flutter_parse_sdk/ParseObject/setAdd.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Add an element to the end of the array associated with a given key","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"setAddAll","qualifiedName":"flutter_parse_sdk.ParseObject.setAddAll","href":"flutter_parse_sdk/ParseObject/setAddAll.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Add multiple elements to the end of the array\nassociated with a given key","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"setAddAllUnique","qualifiedName":"flutter_parse_sdk.ParseObject.setAddAllUnique","href":"flutter_parse_sdk/ParseObject/setAddAllUnique.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Add multiple elements to the array associated with a given key, only\nadding elements which are not already present in the array. The position\nof the insert is not guaranteed","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"setAddUnique","qualifiedName":"flutter_parse_sdk.ParseObject.setAddUnique","href":"flutter_parse_sdk/ParseObject/setAddUnique.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Add an element to the array associated with a given key, only if\nit is not already present in the array. The position of the insert is not\nguaranteed","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"setDecrement","qualifiedName":"flutter_parse_sdk.ParseObject.setDecrement","href":"flutter_parse_sdk/ParseObject/setDecrement.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Decrement a num value associated with a given key by the given amount","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"setIncrement","qualifiedName":"flutter_parse_sdk.ParseObject.setIncrement","href":"flutter_parse_sdk/ParseObject/setIncrement.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Increment a num value associated with a given key by the given amount","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"setRemove","qualifiedName":"flutter_parse_sdk.ParseObject.setRemove","href":"flutter_parse_sdk/ParseObject/setRemove.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Remove every instance of an element from an array\nassociated with a given key","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"setRemoveAll","qualifiedName":"flutter_parse_sdk.ParseObject.setRemoveAll","href":"flutter_parse_sdk/ParseObject/setRemoveAll.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Removes all instances of the elements contained in a List from the\narray associated with a given key","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"submitDeleteEventually","qualifiedName":"flutter_parse_sdk.ParseObject.submitDeleteEventually","href":"flutter_parse_sdk/ParseObject/submitDeleteEventually.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"submitEventually","qualifiedName":"flutter_parse_sdk.ParseObject.submitEventually","href":"flutter_parse_sdk/ParseObject/submitEventually.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"submitSaveEventually","qualifiedName":"flutter_parse_sdk.ParseObject.submitSaveEventually","href":"flutter_parse_sdk/ParseObject/submitSaveEventually.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"unset","qualifiedName":"flutter_parse_sdk.ParseObject.unset","href":"flutter_parse_sdk/ParseObject/unset.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Can be used set an objects variable to undefined rather than null","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"update","qualifiedName":"flutter_parse_sdk.ParseObject.update","href":"flutter_parse_sdk/ParseObject/update.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Send the updated object to the server.","enclosedBy":{"name":"ParseObject","kind":3,"href":"flutter_parse_sdk/ParseObject-class.html"}},{"name":"ParseObjectConstructor","qualifiedName":"flutter_parse_sdk.ParseObjectConstructor","href":"flutter_parse_sdk/ParseObjectConstructor.html","kind":21,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseOperationException","qualifiedName":"flutter_parse_sdk.ParseOperationException","href":"flutter_parse_sdk/ParseOperationException-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseOperationException","qualifiedName":"flutter_parse_sdk.ParseOperationException.ParseOperationException","href":"flutter_parse_sdk/ParseOperationException/ParseOperationException.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseOperationException","kind":3,"href":"flutter_parse_sdk/ParseOperationException-class.html"}},{"name":"message","qualifiedName":"flutter_parse_sdk.ParseOperationException.message","href":"flutter_parse_sdk/ParseOperationException/message.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseOperationException","kind":3,"href":"flutter_parse_sdk/ParseOperationException-class.html"}},{"name":"toString","qualifiedName":"flutter_parse_sdk.ParseOperationException.toString","href":"flutter_parse_sdk/ParseOperationException/toString.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"A string representation of this object.","enclosedBy":{"name":"ParseOperationException","kind":3,"href":"flutter_parse_sdk/ParseOperationException-class.html"}},{"name":"ParseRelation","qualifiedName":"flutter_parse_sdk.ParseRelation","href":"flutter_parse_sdk/ParseRelation-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseRelation","qualifiedName":"flutter_parse_sdk.ParseRelation.ParseRelation","href":"flutter_parse_sdk/ParseRelation/ParseRelation.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseRelation","kind":3,"href":"flutter_parse_sdk/ParseRelation-class.html"}},{"name":"add","qualifiedName":"flutter_parse_sdk.ParseRelation.add","href":"flutter_parse_sdk/ParseRelation/add.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Add object to this relation","enclosedBy":{"name":"ParseRelation","kind":3,"href":"flutter_parse_sdk/ParseRelation-class.html"}},{"name":"addAll","qualifiedName":"flutter_parse_sdk.ParseRelation.addAll","href":"flutter_parse_sdk/ParseRelation/addAll.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Add objects to this relation.","enclosedBy":{"name":"ParseRelation","kind":3,"href":"flutter_parse_sdk/ParseRelation-class.html"}},{"name":"ParseRelation.fromJson","qualifiedName":"flutter_parse_sdk.ParseRelation.fromJson","href":"flutter_parse_sdk/ParseRelation/ParseRelation.fromJson.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseRelation","kind":3,"href":"flutter_parse_sdk/ParseRelation-class.html"}},{"name":"getKey","qualifiedName":"flutter_parse_sdk.ParseRelation.getKey","href":"flutter_parse_sdk/ParseRelation/getKey.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseRelation","kind":3,"href":"flutter_parse_sdk/ParseRelation-class.html"}},{"name":"getParent","qualifiedName":"flutter_parse_sdk.ParseRelation.getParent","href":"flutter_parse_sdk/ParseRelation/getParent.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseRelation","kind":3,"href":"flutter_parse_sdk/ParseRelation-class.html"}},{"name":"getQuery","qualifiedName":"flutter_parse_sdk.ParseRelation.getQuery","href":"flutter_parse_sdk/ParseRelation/getQuery.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Gets a query that can be used to query the objects in this relation.","enclosedBy":{"name":"ParseRelation","kind":3,"href":"flutter_parse_sdk/ParseRelation-class.html"}},{"name":"getTargetClass","qualifiedName":"flutter_parse_sdk.ParseRelation.getTargetClass","href":"flutter_parse_sdk/ParseRelation/getTargetClass.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"The className of the target objects.","enclosedBy":{"name":"ParseRelation","kind":3,"href":"flutter_parse_sdk/ParseRelation-class.html"}},{"name":"remove","qualifiedName":"flutter_parse_sdk.ParseRelation.remove","href":"flutter_parse_sdk/ParseRelation/remove.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Remove object from this relation","enclosedBy":{"name":"ParseRelation","kind":3,"href":"flutter_parse_sdk/ParseRelation-class.html"}},{"name":"removeAll","qualifiedName":"flutter_parse_sdk.ParseRelation.removeAll","href":"flutter_parse_sdk/ParseRelation/removeAll.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Remove objects from this relation","enclosedBy":{"name":"ParseRelation","kind":3,"href":"flutter_parse_sdk/ParseRelation-class.html"}},{"name":"setTargetClass","qualifiedName":"flutter_parse_sdk.ParseRelation.setTargetClass","href":"flutter_parse_sdk/ParseRelation/setTargetClass.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"Will work only if the current target class is null, otherwise will throw\nParseRelationException with the message:\nThe target class can not be modified if it is already set","enclosedBy":{"name":"ParseRelation","kind":3,"href":"flutter_parse_sdk/ParseRelation-class.html"}},{"name":"targetClass","qualifiedName":"flutter_parse_sdk.ParseRelation.targetClass","href":"flutter_parse_sdk/ParseRelation/targetClass.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"The className of the target objects.","enclosedBy":{"name":"ParseRelation","kind":3,"href":"flutter_parse_sdk/ParseRelation-class.html"}},{"name":"toJson","qualifiedName":"flutter_parse_sdk.ParseRelation.toJson","href":"flutter_parse_sdk/ParseRelation/toJson.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseRelation","kind":3,"href":"flutter_parse_sdk/ParseRelation-class.html"}},{"name":"ParseRelationException","qualifiedName":"flutter_parse_sdk.ParseRelationException","href":"flutter_parse_sdk/ParseRelationException-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseRelationException","qualifiedName":"flutter_parse_sdk.ParseRelationException.ParseRelationException","href":"flutter_parse_sdk/ParseRelationException/ParseRelationException.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseRelationException","kind":3,"href":"flutter_parse_sdk/ParseRelationException-class.html"}},{"name":"message","qualifiedName":"flutter_parse_sdk.ParseRelationException.message","href":"flutter_parse_sdk/ParseRelationException/message.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseRelationException","kind":3,"href":"flutter_parse_sdk/ParseRelationException-class.html"}},{"name":"toString","qualifiedName":"flutter_parse_sdk.ParseRelationException.toString","href":"flutter_parse_sdk/ParseRelationException/toString.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"A string representation of this object.","enclosedBy":{"name":"ParseRelationException","kind":3,"href":"flutter_parse_sdk/ParseRelationException-class.html"}},{"name":"ParseResponse","qualifiedName":"flutter_parse_sdk.ParseResponse","href":"flutter_parse_sdk/ParseResponse-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseResponse","qualifiedName":"flutter_parse_sdk.ParseResponse.ParseResponse","href":"flutter_parse_sdk/ParseResponse/ParseResponse.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseResponse","kind":3,"href":"flutter_parse_sdk/ParseResponse-class.html"}},{"name":"count","qualifiedName":"flutter_parse_sdk.ParseResponse.count","href":"flutter_parse_sdk/ParseResponse/count.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseResponse","kind":3,"href":"flutter_parse_sdk/ParseResponse-class.html"}},{"name":"error","qualifiedName":"flutter_parse_sdk.ParseResponse.error","href":"flutter_parse_sdk/ParseResponse/error.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseResponse","kind":3,"href":"flutter_parse_sdk/ParseResponse-class.html"}},{"name":"result","qualifiedName":"flutter_parse_sdk.ParseResponse.result","href":"flutter_parse_sdk/ParseResponse/result.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"If result is a singular result, i.e. getByObjectID","enclosedBy":{"name":"ParseResponse","kind":3,"href":"flutter_parse_sdk/ParseResponse-class.html"}},{"name":"results","qualifiedName":"flutter_parse_sdk.ParseResponse.results","href":"flutter_parse_sdk/ParseResponse/results.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"All results stored as a list - Even if only one response is returned","enclosedBy":{"name":"ParseResponse","kind":3,"href":"flutter_parse_sdk/ParseResponse-class.html"}},{"name":"statusCode","qualifiedName":"flutter_parse_sdk.ParseResponse.statusCode","href":"flutter_parse_sdk/ParseResponse/statusCode.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseResponse","kind":3,"href":"flutter_parse_sdk/ParseResponse-class.html"}},{"name":"success","qualifiedName":"flutter_parse_sdk.ParseResponse.success","href":"flutter_parse_sdk/ParseResponse/success.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseResponse","kind":3,"href":"flutter_parse_sdk/ParseResponse-class.html"}},{"name":"ParseSession","qualifiedName":"flutter_parse_sdk.ParseSession","href":"flutter_parse_sdk/ParseSession-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseSession","qualifiedName":"flutter_parse_sdk.ParseSession.ParseSession","href":"flutter_parse_sdk/ParseSession/ParseSession.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseSession","kind":3,"href":"flutter_parse_sdk/ParseSession-class.html"}},{"name":"clone","qualifiedName":"flutter_parse_sdk.ParseSession.clone","href":"flutter_parse_sdk/ParseSession/clone.html","kind":10,"overriddenDepth":2,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseSession","kind":3,"href":"flutter_parse_sdk/ParseSession-class.html"}},{"name":"createdWith","qualifiedName":"flutter_parse_sdk.ParseSession.createdWith","href":"flutter_parse_sdk/ParseSession/createdWith.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseSession","kind":3,"href":"flutter_parse_sdk/ParseSession-class.html"}},{"name":"expiresAt","qualifiedName":"flutter_parse_sdk.ParseSession.expiresAt","href":"flutter_parse_sdk/ParseSession/expiresAt.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseSession","kind":3,"href":"flutter_parse_sdk/ParseSession-class.html"}},{"name":"getCurrentSessionFromServer","qualifiedName":"flutter_parse_sdk.ParseSession.getCurrentSessionFromServer","href":"flutter_parse_sdk/ParseSession/getCurrentSessionFromServer.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseSession","kind":3,"href":"flutter_parse_sdk/ParseSession-class.html"}},{"name":"installationId","qualifiedName":"flutter_parse_sdk.ParseSession.installationId","href":"flutter_parse_sdk/ParseSession/installationId.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseSession","kind":3,"href":"flutter_parse_sdk/ParseSession-class.html"}},{"name":"restricted","qualifiedName":"flutter_parse_sdk.ParseSession.restricted","href":"flutter_parse_sdk/ParseSession/restricted.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseSession","kind":3,"href":"flutter_parse_sdk/ParseSession-class.html"}},{"name":"sessionToken","qualifiedName":"flutter_parse_sdk.ParseSession.sessionToken","href":"flutter_parse_sdk/ParseSession/sessionToken.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseSession","kind":3,"href":"flutter_parse_sdk/ParseSession-class.html"}},{"name":"user","qualifiedName":"flutter_parse_sdk.ParseSession.user","href":"flutter_parse_sdk/ParseSession/user.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseSession","kind":3,"href":"flutter_parse_sdk/ParseSession-class.html"}},{"name":"ParseSubClassHandler","qualifiedName":"flutter_parse_sdk.ParseSubClassHandler","href":"flutter_parse_sdk/ParseSubClassHandler-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseSubClassHandler","qualifiedName":"flutter_parse_sdk.ParseSubClassHandler.ParseSubClassHandler","href":"flutter_parse_sdk/ParseSubClassHandler/ParseSubClassHandler.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseSubClassHandler","kind":3,"href":"flutter_parse_sdk/ParseSubClassHandler-class.html"}},{"name":"createFile","qualifiedName":"flutter_parse_sdk.ParseSubClassHandler.createFile","href":"flutter_parse_sdk/ParseSubClassHandler/createFile.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseSubClassHandler","kind":3,"href":"flutter_parse_sdk/ParseSubClassHandler-class.html"}},{"name":"createObject","qualifiedName":"flutter_parse_sdk.ParseSubClassHandler.createObject","href":"flutter_parse_sdk/ParseSubClassHandler/createObject.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseSubClassHandler","kind":3,"href":"flutter_parse_sdk/ParseSubClassHandler-class.html"}},{"name":"createParseUser","qualifiedName":"flutter_parse_sdk.ParseSubClassHandler.createParseUser","href":"flutter_parse_sdk/ParseSubClassHandler/createParseUser.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseSubClassHandler","kind":3,"href":"flutter_parse_sdk/ParseSubClassHandler-class.html"}},{"name":"defaultParseFileConstructor","qualifiedName":"flutter_parse_sdk.ParseSubClassHandler.defaultParseFileConstructor","href":"flutter_parse_sdk/ParseSubClassHandler/defaultParseFileConstructor.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseSubClassHandler","kind":3,"href":"flutter_parse_sdk/ParseSubClassHandler-class.html"}},{"name":"registerFileSubClass","qualifiedName":"flutter_parse_sdk.ParseSubClassHandler.registerFileSubClass","href":"flutter_parse_sdk/ParseSubClassHandler/registerFileSubClass.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseSubClassHandler","kind":3,"href":"flutter_parse_sdk/ParseSubClassHandler-class.html"}},{"name":"registerSubClass","qualifiedName":"flutter_parse_sdk.ParseSubClassHandler.registerSubClass","href":"flutter_parse_sdk/ParseSubClassHandler/registerSubClass.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseSubClassHandler","kind":3,"href":"flutter_parse_sdk/ParseSubClassHandler-class.html"}},{"name":"registerUserSubClass","qualifiedName":"flutter_parse_sdk.ParseSubClassHandler.registerUserSubClass","href":"flutter_parse_sdk/ParseSubClassHandler/registerUserSubClass.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseSubClassHandler","kind":3,"href":"flutter_parse_sdk/ParseSubClassHandler-class.html"}},{"name":"ParseUser","qualifiedName":"flutter_parse_sdk.ParseUser","href":"flutter_parse_sdk/ParseUser-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseUser","qualifiedName":"flutter_parse_sdk.ParseUser.ParseUser","href":"flutter_parse_sdk/ParseUser/ParseUser.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Creates an instance of ParseUser","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"acl","qualifiedName":"flutter_parse_sdk.ParseUser.acl","href":"flutter_parse_sdk/ParseUser/acl.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"all","qualifiedName":"flutter_parse_sdk.ParseUser.all","href":"flutter_parse_sdk/ParseUser/all.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Gets a list of all users (limited return)","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"authData","qualifiedName":"flutter_parse_sdk.ParseUser.authData","href":"flutter_parse_sdk/ParseUser/authData.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"ParseUser.clone","qualifiedName":"flutter_parse_sdk.ParseUser.clone","href":"flutter_parse_sdk/ParseUser/ParseUser.clone.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"clone","qualifiedName":"flutter_parse_sdk.ParseUser.clone","href":"flutter_parse_sdk/ParseUser/clone.html","kind":10,"overriddenDepth":2,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"createUser","qualifiedName":"flutter_parse_sdk.ParseUser.createUser","href":"flutter_parse_sdk/ParseUser/createUser.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"currentUser","qualifiedName":"flutter_parse_sdk.ParseUser.currentUser","href":"flutter_parse_sdk/ParseUser/currentUser.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Gets the current user from storage","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"deleteLocalUserData","qualifiedName":"flutter_parse_sdk.ParseUser.deleteLocalUserData","href":"flutter_parse_sdk/ParseUser/deleteLocalUserData.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Delete the local user data.","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"destroy","qualifiedName":"flutter_parse_sdk.ParseUser.destroy","href":"flutter_parse_sdk/ParseUser/destroy.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Removes a user from Parse Server locally and online","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"emailAddress","qualifiedName":"flutter_parse_sdk.ParseUser.emailAddress","href":"flutter_parse_sdk/ParseUser/emailAddress.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"emailVerified","qualifiedName":"flutter_parse_sdk.ParseUser.emailVerified","href":"flutter_parse_sdk/ParseUser/emailVerified.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"ParseUser.forQuery","qualifiedName":"flutter_parse_sdk.ParseUser.forQuery","href":"flutter_parse_sdk/ParseUser/ParseUser.forQuery.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"forgetLocalSession","qualifiedName":"flutter_parse_sdk.ParseUser.forgetLocalSession","href":"flutter_parse_sdk/ParseUser/forgetLocalSession.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"getCurrentUserFromServer","qualifiedName":"flutter_parse_sdk.ParseUser.getCurrentUserFromServer","href":"flutter_parse_sdk/ParseUser/getCurrentUserFromServer.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Gets the current user from the server","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"getUpdatedUser","qualifiedName":"flutter_parse_sdk.ParseUser.getUpdatedUser","href":"flutter_parse_sdk/ParseUser/getUpdatedUser.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Get the updated version of the user from the server","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"keyEmailAddress","qualifiedName":"flutter_parse_sdk.ParseUser.keyEmailAddress","href":"flutter_parse_sdk/ParseUser/keyEmailAddress-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"keyEmailVerified","qualifiedName":"flutter_parse_sdk.ParseUser.keyEmailVerified","href":"flutter_parse_sdk/ParseUser/keyEmailVerified-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"keyUsername","qualifiedName":"flutter_parse_sdk.ParseUser.keyUsername","href":"flutter_parse_sdk/ParseUser/keyUsername-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"login","qualifiedName":"flutter_parse_sdk.ParseUser.login","href":"flutter_parse_sdk/ParseUser/login.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Logs a user in via Parse","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"loginAnonymous","qualifiedName":"flutter_parse_sdk.ParseUser.loginAnonymous","href":"flutter_parse_sdk/ParseUser/loginAnonymous.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Logs in a user anonymously\nSet doNotSendInstallationID to 'true' in order to prevent the SDK from sending the installationID to the Server.\nThis option is especially useful if you are running you application on web and you don't have permission to add 'X-Parse-Installation-Id' as an allowed header on your parse-server.","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"loginWith","qualifiedName":"flutter_parse_sdk.ParseUser.loginWith","href":"flutter_parse_sdk/ParseUser/loginWith.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Logs in a user using a service\nSet doNotSendInstallationID to 'true' in order to prevent the SDK from sending the installationID to the Server.\nThis option is especially useful if you are running you application on web and you don't have permission to add 'X-Parse-Installation-Id' as an allowed header on your parse-server.","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"logout","qualifiedName":"flutter_parse_sdk.ParseUser.logout","href":"flutter_parse_sdk/ParseUser/logout.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Sends a request to delete the sessions token from the\nserver. Will also delete the local user data unless\ndeleteLocalUserData is false.","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"password","qualifiedName":"flutter_parse_sdk.ParseUser.password","href":"flutter_parse_sdk/ParseUser/password.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"path","qualifiedName":"flutter_parse_sdk.ParseUser.path","href":"flutter_parse_sdk/ParseUser/path-constant.html","kind":1,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"requestPasswordReset","qualifiedName":"flutter_parse_sdk.ParseUser.requestPasswordReset","href":"flutter_parse_sdk/ParseUser/requestPasswordReset.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Sends a password reset email to the users email address","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"save","qualifiedName":"flutter_parse_sdk.ParseUser.save","href":"flutter_parse_sdk/ParseUser/save.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Saves the current user","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"sessionToken","qualifiedName":"flutter_parse_sdk.ParseUser.sessionToken","href":"flutter_parse_sdk/ParseUser/sessionToken.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"signUp","qualifiedName":"flutter_parse_sdk.ParseUser.signUp","href":"flutter_parse_sdk/ParseUser/signUp.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Registers a user on Parse Server","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"update","qualifiedName":"flutter_parse_sdk.ParseUser.update","href":"flutter_parse_sdk/ParseUser/update.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Send the updated object to the server.","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"username","qualifiedName":"flutter_parse_sdk.ParseUser.username","href":"flutter_parse_sdk/ParseUser/username.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"verificationEmailRequest","qualifiedName":"flutter_parse_sdk.ParseUser.verificationEmailRequest","href":"flutter_parse_sdk/ParseUser/verificationEmailRequest.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Sends a verification email to the users email address","enclosedBy":{"name":"ParseUser","kind":3,"href":"flutter_parse_sdk/ParseUser-class.html"}},{"name":"ParseUserConstructor","qualifiedName":"flutter_parse_sdk.ParseUserConstructor","href":"flutter_parse_sdk/ParseUserConstructor.html","kind":21,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseWebFile","qualifiedName":"flutter_parse_sdk.ParseWebFile","href":"flutter_parse_sdk/ParseWebFile-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseWebFile","qualifiedName":"flutter_parse_sdk.ParseWebFile.ParseWebFile","href":"flutter_parse_sdk/ParseWebFile/ParseWebFile.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseWebFile","kind":3,"href":"flutter_parse_sdk/ParseWebFile-class.html"}},{"name":"cancel","qualifiedName":"flutter_parse_sdk.ParseWebFile.cancel","href":"flutter_parse_sdk/ParseWebFile/cancel.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Cancels the current request (upload or download of file).","enclosedBy":{"name":"ParseWebFile","kind":3,"href":"flutter_parse_sdk/ParseWebFile-class.html"}},{"name":"download","qualifiedName":"flutter_parse_sdk.ParseWebFile.download","href":"flutter_parse_sdk/ParseWebFile/download.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseWebFile","kind":3,"href":"flutter_parse_sdk/ParseWebFile-class.html"}},{"name":"file","qualifiedName":"flutter_parse_sdk.ParseWebFile.file","href":"flutter_parse_sdk/ParseWebFile/file.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseWebFile","kind":3,"href":"flutter_parse_sdk/ParseWebFile-class.html"}},{"name":"progressCallback","qualifiedName":"flutter_parse_sdk.ParseWebFile.progressCallback","href":"flutter_parse_sdk/ParseWebFile/progressCallback.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Add Progress Callback","enclosedBy":{"name":"ParseWebFile","kind":3,"href":"flutter_parse_sdk/ParseWebFile-class.html"}},{"name":"upload","qualifiedName":"flutter_parse_sdk.ParseWebFile.upload","href":"flutter_parse_sdk/ParseWebFile/upload.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Uploads a file to Parse Server","enclosedBy":{"name":"ParseWebFile","kind":3,"href":"flutter_parse_sdk/ParseWebFile-class.html"}},{"name":"ParseXFile","qualifiedName":"flutter_parse_sdk.ParseXFile","href":"flutter_parse_sdk/ParseXFile-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"ParseXFile","qualifiedName":"flutter_parse_sdk.ParseXFile.ParseXFile","href":"flutter_parse_sdk/ParseXFile/ParseXFile.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Creates a new file base XFile","enclosedBy":{"name":"ParseXFile","kind":3,"href":"flutter_parse_sdk/ParseXFile-class.html"}},{"name":"cancel","qualifiedName":"flutter_parse_sdk.ParseXFile.cancel","href":"flutter_parse_sdk/ParseXFile/cancel.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Cancels the current request (upload or download of file).","enclosedBy":{"name":"ParseXFile","kind":3,"href":"flutter_parse_sdk/ParseXFile-class.html"}},{"name":"download","qualifiedName":"flutter_parse_sdk.ParseXFile.download","href":"flutter_parse_sdk/ParseXFile/download.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseXFile","kind":3,"href":"flutter_parse_sdk/ParseXFile-class.html"}},{"name":"file","qualifiedName":"flutter_parse_sdk.ParseXFile.file","href":"flutter_parse_sdk/ParseXFile/file.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseXFile","kind":3,"href":"flutter_parse_sdk/ParseXFile-class.html"}},{"name":"loadStorage","qualifiedName":"flutter_parse_sdk.ParseXFile.loadStorage","href":"flutter_parse_sdk/ParseXFile/loadStorage.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"ParseXFile","kind":3,"href":"flutter_parse_sdk/ParseXFile-class.html"}},{"name":"progressCallback","qualifiedName":"flutter_parse_sdk.ParseXFile.progressCallback","href":"flutter_parse_sdk/ParseXFile/progressCallback.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Add Progress Callback","enclosedBy":{"name":"ParseXFile","kind":3,"href":"flutter_parse_sdk/ParseXFile-class.html"}},{"name":"upload","qualifiedName":"flutter_parse_sdk.ParseXFile.upload","href":"flutter_parse_sdk/ParseXFile/upload.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"Uploads a file to Parse Server","enclosedBy":{"name":"ParseXFile","kind":3,"href":"flutter_parse_sdk/ParseXFile-class.html"}},{"name":"PathKey","qualifiedName":"flutter_parse_sdk.PathKey","href":"flutter_parse_sdk/PathKey-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"PathKey","qualifiedName":"flutter_parse_sdk.PathKey.PathKey","href":"flutter_parse_sdk/PathKey/PathKey.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"PathKey","kind":3,"href":"flutter_parse_sdk/PathKey-class.html"}},{"name":"key","qualifiedName":"flutter_parse_sdk.PathKey.key","href":"flutter_parse_sdk/PathKey/key.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"PathKey","kind":3,"href":"flutter_parse_sdk/PathKey-class.html"}},{"name":"subscription","qualifiedName":"flutter_parse_sdk.PathKey.subscription","href":"flutter_parse_sdk/PathKey/subscription.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"PathKey","kind":3,"href":"flutter_parse_sdk/PathKey-class.html"}},{"name":"toString","qualifiedName":"flutter_parse_sdk.PathKey.toString","href":"flutter_parse_sdk/PathKey/toString.html","kind":10,"overriddenDepth":1,"packageRank":0,"desc":"A string representation of this object.","enclosedBy":{"name":"PathKey","kind":3,"href":"flutter_parse_sdk/PathKey-class.html"}},{"name":"ProgressCallback","qualifiedName":"flutter_parse_sdk.ProgressCallback","href":"flutter_parse_sdk/ProgressCallback.html","kind":21,"overriddenDepth":0,"packageRank":0,"desc":"Callback to listen the progress for sending/receiving data.","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"QueryBuilder","qualifiedName":"flutter_parse_sdk.QueryBuilder","href":"flutter_parse_sdk/QueryBuilder-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"Class to create complex queries","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"QueryBuilder","qualifiedName":"flutter_parse_sdk.QueryBuilder.QueryBuilder","href":"flutter_parse_sdk/QueryBuilder/QueryBuilder.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"Class to create complex queries","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"QueryBuilder.and","qualifiedName":"flutter_parse_sdk.QueryBuilder.and","href":"flutter_parse_sdk/QueryBuilder/QueryBuilder.and.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"buildQueries","qualifiedName":"flutter_parse_sdk.QueryBuilder.buildQueries","href":"flutter_parse_sdk/QueryBuilder/buildQueries.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Runs through all queries and adds them to a query string","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"buildQuery","qualifiedName":"flutter_parse_sdk.QueryBuilder.buildQuery","href":"flutter_parse_sdk/QueryBuilder/buildQuery.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Builds the query for Parse","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"QueryBuilder.copy","qualifiedName":"flutter_parse_sdk.QueryBuilder.copy","href":"flutter_parse_sdk/QueryBuilder/QueryBuilder.copy.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"count","qualifiedName":"flutter_parse_sdk.QueryBuilder.count","href":"flutter_parse_sdk/QueryBuilder/count.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Counts the number of objects that match this query","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"distinct","qualifiedName":"flutter_parse_sdk.QueryBuilder.distinct","href":"flutter_parse_sdk/QueryBuilder/distinct.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"dontSelectKeys","qualifiedName":"flutter_parse_sdk.QueryBuilder.dontSelectKeys","href":"flutter_parse_sdk/QueryBuilder/dontSelectKeys.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Returns an object where the String column doesn't select","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"excludeKeys","qualifiedName":"flutter_parse_sdk.QueryBuilder.excludeKeys","href":"flutter_parse_sdk/QueryBuilder/excludeKeys.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Exclude specific fields from the returned query","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"extraOptions","qualifiedName":"flutter_parse_sdk.QueryBuilder.extraOptions","href":"flutter_parse_sdk/QueryBuilder/extraOptions.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"find","qualifiedName":"flutter_parse_sdk.QueryBuilder.find","href":"flutter_parse_sdk/QueryBuilder/find.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Find the objects that satisfy the query.\nReturns an empty list if no objects are found.","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"first","qualifiedName":"flutter_parse_sdk.QueryBuilder.first","href":"flutter_parse_sdk/QueryBuilder/first.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Find the first object that satisfies the query.\nReturns null, if no object is found.","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"getExtraOptions","qualifiedName":"flutter_parse_sdk.QueryBuilder.getExtraOptions","href":"flutter_parse_sdk/QueryBuilder/getExtraOptions.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Adds extra options to the query","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"getLimiters","qualifiedName":"flutter_parse_sdk.QueryBuilder.getLimiters","href":"flutter_parse_sdk/QueryBuilder/getLimiters.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Adds the limiters to the query, i.e. skip=10, limit=10","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"getLimitersRelational","qualifiedName":"flutter_parse_sdk.QueryBuilder.getLimitersRelational","href":"flutter_parse_sdk/QueryBuilder/getLimitersRelational.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Adds the limiters to the query relational, i.e. skip=10, limit=10","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"includeObject","qualifiedName":"flutter_parse_sdk.QueryBuilder.includeObject","href":"flutter_parse_sdk/QueryBuilder/includeObject.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Includes other ParseObjects stored as a Pointer","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"keysToReturn","qualifiedName":"flutter_parse_sdk.QueryBuilder.keysToReturn","href":"flutter_parse_sdk/QueryBuilder/keysToReturn.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Define which keys in an object to return.","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"limiters","qualifiedName":"flutter_parse_sdk.QueryBuilder.limiters","href":"flutter_parse_sdk/QueryBuilder/limiters.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"QueryBuilder.name","qualifiedName":"flutter_parse_sdk.QueryBuilder.name","href":"flutter_parse_sdk/QueryBuilder/QueryBuilder.name.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"QueryBuilder.nor","qualifiedName":"flutter_parse_sdk.QueryBuilder.nor","href":"flutter_parse_sdk/QueryBuilder/QueryBuilder.nor.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"object","qualifiedName":"flutter_parse_sdk.QueryBuilder.object","href":"flutter_parse_sdk/QueryBuilder/object.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"QueryBuilder.or","qualifiedName":"flutter_parse_sdk.QueryBuilder.or","href":"flutter_parse_sdk/QueryBuilder/QueryBuilder.or.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"orderByAscending","qualifiedName":"flutter_parse_sdk.QueryBuilder.orderByAscending","href":"flutter_parse_sdk/QueryBuilder/orderByAscending.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Sorts the results in ascending order.","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"orderByDescending","qualifiedName":"flutter_parse_sdk.QueryBuilder.orderByDescending","href":"flutter_parse_sdk/QueryBuilder/orderByDescending.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Sorts the results descending order.","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"queries","qualifiedName":"flutter_parse_sdk.QueryBuilder.queries","href":"flutter_parse_sdk/QueryBuilder/queries.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"query","qualifiedName":"flutter_parse_sdk.QueryBuilder.query","href":"flutter_parse_sdk/QueryBuilder/query.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Finishes the query and calls the server","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"regEx","qualifiedName":"flutter_parse_sdk.QueryBuilder.regEx","href":"flutter_parse_sdk/QueryBuilder/regEx.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Returns an object where the String column has a regEx performed on,\nthis can include ^StringsWith, or ^EndsWith. This can be manipulated to the users desire","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"selectKeys","qualifiedName":"flutter_parse_sdk.QueryBuilder.selectKeys","href":"flutter_parse_sdk/QueryBuilder/selectKeys.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Returns an object where the String column contains select","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"setAmountToSkip","qualifiedName":"flutter_parse_sdk.QueryBuilder.setAmountToSkip","href":"flutter_parse_sdk/QueryBuilder/setAmountToSkip.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Useful for pagination, skips int amount of results","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"setLimit","qualifiedName":"flutter_parse_sdk.QueryBuilder.setLimit","href":"flutter_parse_sdk/QueryBuilder/setLimit.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Adds a limit to amount of results return from Parse","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"setRedirectClassNameForKey","qualifiedName":"flutter_parse_sdk.QueryBuilder.setRedirectClassNameForKey","href":"flutter_parse_sdk/QueryBuilder/setRedirectClassNameForKey.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Used by ParseRelation getQuery()","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereArrayContainsAll","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereArrayContainsAll","href":"flutter_parse_sdk/QueryBuilder/whereArrayContainsAll.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Returns an object where the String column contains all","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereContainedIn","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereContainedIn","href":"flutter_parse_sdk/QueryBuilder/whereContainedIn.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Returns an object where the String column is containedIn","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereContains","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereContains","href":"flutter_parse_sdk/QueryBuilder/whereContains.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Add a constraint for finding String values that contain the provided\nsubstring","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereContainsWholeWord","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereContainsWholeWord","href":"flutter_parse_sdk/QueryBuilder/whereContainsWholeWord.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Powerful search for containing whole words. This search is much quicker\nthan regex and can search for whole words including whether they are case\nsensitive or not. This search can also order by the score of the search","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereDoesNotMatchKeyInQuery","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereDoesNotMatchKeyInQuery","href":"flutter_parse_sdk/QueryBuilder/whereDoesNotMatchKeyInQuery.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Add a constraint to the query that requires a particular key's value does not match any value for a key in the results of another ParseQuery","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereDoesNotMatchQuery","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereDoesNotMatchQuery","href":"flutter_parse_sdk/QueryBuilder/whereDoesNotMatchQuery.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Add a constraint to the query that requires a particular key's value does not match another QueryBuilder","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereEndsWith","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereEndsWith","href":"flutter_parse_sdk/QueryBuilder/whereEndsWith.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Add a constraint for finding objects where the String value in column\nends with prefix","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereEqualTo","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereEqualTo","href":"flutter_parse_sdk/QueryBuilder/whereEqualTo.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Add a constraint to the query that requires a particular column's value\nto be equal to the provided value","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereEquals","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereEquals","href":"flutter_parse_sdk/QueryBuilder/whereEquals.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Creates a query based on where","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereGreaterThan","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereGreaterThan","href":"flutter_parse_sdk/QueryBuilder/whereGreaterThan.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Returns an object where the String column contains a value greater\nthan value","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereGreaterThanOrEqualsTo","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereGreaterThanOrEqualsTo","href":"flutter_parse_sdk/QueryBuilder/whereGreaterThanOrEqualsTo.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Returns an object where the String column contains a value greater\nthan equal to value","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereLessThan","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereLessThan","href":"flutter_parse_sdk/QueryBuilder/whereLessThan.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Returns an object where the String column contains a value less than\nvalue","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereLessThanOrEqualTo","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereLessThanOrEqualTo","href":"flutter_parse_sdk/QueryBuilder/whereLessThanOrEqualTo.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Returns an object where the String column contains a value less or equal\nto than value","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereMatchesKeyInQuery","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereMatchesKeyInQuery","href":"flutter_parse_sdk/QueryBuilder/whereMatchesKeyInQuery.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Add a constraint to the query that requires a particular key's value matches a value for a key in the results of another ParseQuery.","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereMatchesQuery","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereMatchesQuery","href":"flutter_parse_sdk/QueryBuilder/whereMatchesQuery.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Add a constraint to the query that requires a particular key's value match another QueryBuilder","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereNear","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereNear","href":"flutter_parse_sdk/QueryBuilder/whereNear.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Returns an objects with key point values near the point given","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereNotContainedIn","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereNotContainedIn","href":"flutter_parse_sdk/QueryBuilder/whereNotContainedIn.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Returns an object where the String column is notContainedIn","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereNotEqualTo","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereNotEqualTo","href":"flutter_parse_sdk/QueryBuilder/whereNotEqualTo.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Add a constraint to the query that requires a particular column's value\nto be not equal to the provided value","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"wherePolygonContains","qualifiedName":"flutter_parse_sdk.QueryBuilder.wherePolygonContains","href":"flutter_parse_sdk/QueryBuilder/wherePolygonContains.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Add a constraint to the query that requires a particular key's coordinates that contains a point","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereRelatedTo","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereRelatedTo","href":"flutter_parse_sdk/QueryBuilder/whereRelatedTo.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Retrieves related objets where String column is a relation field to the class String className","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereStartsWith","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereStartsWith","href":"flutter_parse_sdk/QueryBuilder/whereStartsWith.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Add a constraint for finding objects where the String value in column\nstarts with prefix","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereValueExists","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereValueExists","href":"flutter_parse_sdk/QueryBuilder/whereValueExists.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Returns an object where the String column for the object has data correctly entered/saved","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereWithinGeoBox","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereWithinGeoBox","href":"flutter_parse_sdk/QueryBuilder/whereWithinGeoBox.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Returns an object with key point values contained within a given rectangular geographic bounding box.","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereWithinKilometers","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereWithinKilometers","href":"flutter_parse_sdk/QueryBuilder/whereWithinKilometers.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Returns an object with key point values near the point given and within the maximum distance given.","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereWithinMiles","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereWithinMiles","href":"flutter_parse_sdk/QueryBuilder/whereWithinMiles.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Returns an object with key point values near the point given and within the maximum distance given.","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereWithinPolygon","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereWithinPolygon","href":"flutter_parse_sdk/QueryBuilder/whereWithinPolygon.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Return an object with key coordinates be contained within and on the bounds of a given polygon.\nSupports closed and open (last point is connected to first) paths\nPolygon must have at least 3 points","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"whereWithinRadians","qualifiedName":"flutter_parse_sdk.QueryBuilder.whereWithinRadians","href":"flutter_parse_sdk/QueryBuilder/whereWithinRadians.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"Returns an object with key point values near the point given and within the maximum distance given.","enclosedBy":{"name":"QueryBuilder","kind":3,"href":"flutter_parse_sdk/QueryBuilder-class.html"}},{"name":"Subscription","qualifiedName":"flutter_parse_sdk.Subscription","href":"flutter_parse_sdk/Subscription-class.html","kind":3,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"Subscription","qualifiedName":"flutter_parse_sdk.Subscription.Subscription","href":"flutter_parse_sdk/Subscription/Subscription.html","kind":2,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"Subscription","kind":3,"href":"flutter_parse_sdk/Subscription-class.html"}},{"name":"copyObject","qualifiedName":"flutter_parse_sdk.Subscription.copyObject","href":"flutter_parse_sdk/Subscription/copyObject.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"Subscription","kind":3,"href":"flutter_parse_sdk/Subscription-class.html"}},{"name":"eventCallbacks","qualifiedName":"flutter_parse_sdk.Subscription.eventCallbacks","href":"flutter_parse_sdk/Subscription/eventCallbacks.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"Subscription","kind":3,"href":"flutter_parse_sdk/Subscription-class.html"}},{"name":"on","qualifiedName":"flutter_parse_sdk.Subscription.on","href":"flutter_parse_sdk/Subscription/on.html","kind":10,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"Subscription","kind":3,"href":"flutter_parse_sdk/Subscription-class.html"}},{"name":"query","qualifiedName":"flutter_parse_sdk.Subscription.query","href":"flutter_parse_sdk/Subscription/query.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"Subscription","kind":3,"href":"flutter_parse_sdk/Subscription-class.html"}},{"name":"requestId","qualifiedName":"flutter_parse_sdk.Subscription.requestId","href":"flutter_parse_sdk/Subscription/requestId.html","kind":16,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"Subscription","kind":3,"href":"flutter_parse_sdk/Subscription-class.html"}},{"name":"apple","qualifiedName":"flutter_parse_sdk.apple","href":"flutter_parse_sdk/apple.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"batchRequest","qualifiedName":"flutter_parse_sdk.batchRequest","href":"flutter_parse_sdk/batchRequest.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"buildErrorResponse","qualifiedName":"flutter_parse_sdk.buildErrorResponse","href":"flutter_parse_sdk/buildErrorResponse.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"Handles any errors returned in response","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"buildParseResponseWithException","qualifiedName":"flutter_parse_sdk.buildParseResponseWithException","href":"flutter_parse_sdk/buildParseResponseWithException.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"Handles exception instead of throwing an exception","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"buildSuccessResponseWithNoResults","qualifiedName":"flutter_parse_sdk.buildSuccessResponseWithNoResults","href":"flutter_parse_sdk/buildSuccessResponseWithNoResults.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"Handles successful responses with no results","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"checkForSubmitEventually","qualifiedName":"flutter_parse_sdk.checkForSubmitEventually","href":"flutter_parse_sdk/checkForSubmitEventually.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"checkObjectsExistForEventually","qualifiedName":"flutter_parse_sdk.checkObjectsExistForEventually","href":"flutter_parse_sdk/checkObjectsExistForEventually.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"concatenateArray","qualifiedName":"flutter_parse_sdk.concatenateArray","href":"flutter_parse_sdk/concatenateArray.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"Convert list of strings to a string with commas","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"convertValueToCorrectType","qualifiedName":"flutter_parse_sdk.convertValueToCorrectType","href":"flutter_parse_sdk/convertValueToCorrectType.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"Converts the object to the correct value for JSON,","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"dateTimeEncoder","qualifiedName":"flutter_parse_sdk.dateTimeEncoder","href":"flutter_parse_sdk/dateTimeEncoder.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"Custom encoder for DateTime","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"encodeObject","qualifiedName":"flutter_parse_sdk.encodeObject","href":"flutter_parse_sdk/encodeObject.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"facebook","qualifiedName":"flutter_parse_sdk.facebook","href":"flutter_parse_sdk/facebook.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"getCustomUri","qualifiedName":"flutter_parse_sdk.getCustomUri","href":"flutter_parse_sdk/getCustomUri.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"Sanitises a url","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"getSanitisedUri","qualifiedName":"flutter_parse_sdk.getSanitisedUri","href":"flutter_parse_sdk/getSanitisedUri.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"Sanitises a url","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"getXXTeaSembastCodec","qualifiedName":"flutter_parse_sdk.getXXTeaSembastCodec","href":"flutter_parse_sdk/getXXTeaSembastCodec.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"Create a codec to use when opening an encrypted sembast database","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"google","qualifiedName":"flutter_parse_sdk.google","href":"flutter_parse_sdk/google.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"handleException","qualifiedName":"flutter_parse_sdk.handleException","href":"flutter_parse_sdk/handleException.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"Handles an API response and logs data if bool debug is enabled","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"handleResponse","qualifiedName":"flutter_parse_sdk.handleResponse","href":"flutter_parse_sdk/handleResponse.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"Handles an API response and logs data if bool debug is enabled","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"isDebugEnabled","qualifiedName":"flutter_parse_sdk.isDebugEnabled","href":"flutter_parse_sdk/isDebugEnabled.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"Checks whether debug is enabled","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"isSuccessButNoResults","qualifiedName":"flutter_parse_sdk.isSuccessButNoResults","href":"flutter_parse_sdk/isSuccessButNoResults.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"isUnsuccessfulResponse","qualifiedName":"flutter_parse_sdk.isUnsuccessfulResponse","href":"flutter_parse_sdk/isUnsuccessfulResponse.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyAppIdentifier","qualifiedName":"flutter_parse_sdk.keyAppIdentifier","href":"flutter_parse_sdk/keyAppIdentifier-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyAppName","qualifiedName":"flutter_parse_sdk.keyAppName","href":"flutter_parse_sdk/keyAppName-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyAppVersion","qualifiedName":"flutter_parse_sdk.keyAppVersion","href":"flutter_parse_sdk/keyAppVersion-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyClassInstallation","qualifiedName":"flutter_parse_sdk.keyClassInstallation","href":"flutter_parse_sdk/keyClassInstallation-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyClassMain","qualifiedName":"flutter_parse_sdk.keyClassMain","href":"flutter_parse_sdk/keyClassMain-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyClassSession","qualifiedName":"flutter_parse_sdk.keyClassSession","href":"flutter_parse_sdk/keyClassSession-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyClassUser","qualifiedName":"flutter_parse_sdk.keyClassUser","href":"flutter_parse_sdk/keyClassUser-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyCode","qualifiedName":"flutter_parse_sdk.keyCode","href":"flutter_parse_sdk/keyCode-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyDeviceToken","qualifiedName":"flutter_parse_sdk.keyDeviceToken","href":"flutter_parse_sdk/keyDeviceToken-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyDeviceType","qualifiedName":"flutter_parse_sdk.keyDeviceType","href":"flutter_parse_sdk/keyDeviceType-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyEndPointAggregate","qualifiedName":"flutter_parse_sdk.keyEndPointAggregate","href":"flutter_parse_sdk/keyEndPointAggregate-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyEndPointClasses","qualifiedName":"flutter_parse_sdk.keyEndPointClasses","href":"flutter_parse_sdk/keyEndPointClasses-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyEndPointHealth","qualifiedName":"flutter_parse_sdk.keyEndPointHealth","href":"flutter_parse_sdk/keyEndPointHealth-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyEndPointInstallations","qualifiedName":"flutter_parse_sdk.keyEndPointInstallations","href":"flutter_parse_sdk/keyEndPointInstallations-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyEndPointLogin","qualifiedName":"flutter_parse_sdk.keyEndPointLogin","href":"flutter_parse_sdk/keyEndPointLogin-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyEndPointLogout","qualifiedName":"flutter_parse_sdk.keyEndPointLogout","href":"flutter_parse_sdk/keyEndPointLogout-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyEndPointRequestPasswordReset","qualifiedName":"flutter_parse_sdk.keyEndPointRequestPasswordReset","href":"flutter_parse_sdk/keyEndPointRequestPasswordReset-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyEndPointSessions","qualifiedName":"flutter_parse_sdk.keyEndPointSessions","href":"flutter_parse_sdk/keyEndPointSessions-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyEndPointUserName","qualifiedName":"flutter_parse_sdk.keyEndPointUserName","href":"flutter_parse_sdk/keyEndPointUserName-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyEndPointUsers","qualifiedName":"flutter_parse_sdk.keyEndPointUsers","href":"flutter_parse_sdk/keyEndPointUsers-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyEndPointVerificationEmail","qualifiedName":"flutter_parse_sdk.keyEndPointVerificationEmail","href":"flutter_parse_sdk/keyEndPointVerificationEmail-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyError","qualifiedName":"flutter_parse_sdk.keyError","href":"flutter_parse_sdk/keyError-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyFile","qualifiedName":"flutter_parse_sdk.keyFile","href":"flutter_parse_sdk/keyFile-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyFileClassname","qualifiedName":"flutter_parse_sdk.keyFileClassname","href":"flutter_parse_sdk/keyFileClassname-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyGeoPoint","qualifiedName":"flutter_parse_sdk.keyGeoPoint","href":"flutter_parse_sdk/keyGeoPoint-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyHeaderApplicationId","qualifiedName":"flutter_parse_sdk.keyHeaderApplicationId","href":"flutter_parse_sdk/keyHeaderApplicationId-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyHeaderClientKey","qualifiedName":"flutter_parse_sdk.keyHeaderClientKey","href":"flutter_parse_sdk/keyHeaderClientKey-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyHeaderCloudContext","qualifiedName":"flutter_parse_sdk.keyHeaderCloudContext","href":"flutter_parse_sdk/keyHeaderCloudContext-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyHeaderContentType","qualifiedName":"flutter_parse_sdk.keyHeaderContentType","href":"flutter_parse_sdk/keyHeaderContentType-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyHeaderContentTypeJson","qualifiedName":"flutter_parse_sdk.keyHeaderContentTypeJson","href":"flutter_parse_sdk/keyHeaderContentTypeJson-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyHeaderInstallationId","qualifiedName":"flutter_parse_sdk.keyHeaderInstallationId","href":"flutter_parse_sdk/keyHeaderInstallationId-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyHeaderMasterKey","qualifiedName":"flutter_parse_sdk.keyHeaderMasterKey","href":"flutter_parse_sdk/keyHeaderMasterKey-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyHeaderRevocableSession","qualifiedName":"flutter_parse_sdk.keyHeaderRevocableSession","href":"flutter_parse_sdk/keyHeaderRevocableSession-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyHeaderSessionToken","qualifiedName":"flutter_parse_sdk.keyHeaderSessionToken","href":"flutter_parse_sdk/keyHeaderSessionToken-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyHeaderUserAgent","qualifiedName":"flutter_parse_sdk.keyHeaderUserAgent","href":"flutter_parse_sdk/keyHeaderUserAgent-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyInstallationId","qualifiedName":"flutter_parse_sdk.keyInstallationId","href":"flutter_parse_sdk/keyInstallationId-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyLatitude","qualifiedName":"flutter_parse_sdk.keyLatitude","href":"flutter_parse_sdk/keyLatitude-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyLibraryName","qualifiedName":"flutter_parse_sdk.keyLibraryName","href":"flutter_parse_sdk/keyLibraryName-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyLocaleIdentifier","qualifiedName":"flutter_parse_sdk.keyLocaleIdentifier","href":"flutter_parse_sdk/keyLocaleIdentifier-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyLongitude","qualifiedName":"flutter_parse_sdk.keyLongitude","href":"flutter_parse_sdk/keyLongitude-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyNetworkError","qualifiedName":"flutter_parse_sdk.keyNetworkError","href":"flutter_parse_sdk/keyNetworkError-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyParamSessionToken","qualifiedName":"flutter_parse_sdk.keyParamSessionToken","href":"flutter_parse_sdk/keyParamSessionToken-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyParseStoreBase","qualifiedName":"flutter_parse_sdk.keyParseStoreBase","href":"flutter_parse_sdk/keyParseStoreBase-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyParseStoreDeletes","qualifiedName":"flutter_parse_sdk.keyParseStoreDeletes","href":"flutter_parse_sdk/keyParseStoreDeletes-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyParseStoreInstallation","qualifiedName":"flutter_parse_sdk.keyParseStoreInstallation","href":"flutter_parse_sdk/keyParseStoreInstallation-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyParseStoreObjects","qualifiedName":"flutter_parse_sdk.keyParseStoreObjects","href":"flutter_parse_sdk/keyParseStoreObjects-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyParseStoreUser","qualifiedName":"flutter_parse_sdk.keyParseStoreUser","href":"flutter_parse_sdk/keyParseStoreUser-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyParseVersion","qualifiedName":"flutter_parse_sdk.keyParseVersion","href":"flutter_parse_sdk/keyParseVersion-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyRelation","qualifiedName":"flutter_parse_sdk.keyRelation","href":"flutter_parse_sdk/keyRelation-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keySdkVersion","qualifiedName":"flutter_parse_sdk.keySdkVersion","href":"flutter_parse_sdk/keySdkVersion-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyTimeZone","qualifiedName":"flutter_parse_sdk.keyTimeZone","href":"flutter_parse_sdk/keyTimeZone-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyVarAcl","qualifiedName":"flutter_parse_sdk.keyVarAcl","href":"flutter_parse_sdk/keyVarAcl-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyVarAuthData","qualifiedName":"flutter_parse_sdk.keyVarAuthData","href":"flutter_parse_sdk/keyVarAuthData-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyVarClassName","qualifiedName":"flutter_parse_sdk.keyVarClassName","href":"flutter_parse_sdk/keyVarClassName-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyVarCreatedAt","qualifiedName":"flutter_parse_sdk.keyVarCreatedAt","href":"flutter_parse_sdk/keyVarCreatedAt-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyVarCreatedWith","qualifiedName":"flutter_parse_sdk.keyVarCreatedWith","href":"flutter_parse_sdk/keyVarCreatedWith-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyVarEmail","qualifiedName":"flutter_parse_sdk.keyVarEmail","href":"flutter_parse_sdk/keyVarEmail-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyVarExpiresAt","qualifiedName":"flutter_parse_sdk.keyVarExpiresAt","href":"flutter_parse_sdk/keyVarExpiresAt-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyVarInstallationId","qualifiedName":"flutter_parse_sdk.keyVarInstallationId","href":"flutter_parse_sdk/keyVarInstallationId-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyVarName","qualifiedName":"flutter_parse_sdk.keyVarName","href":"flutter_parse_sdk/keyVarName-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyVarObjectId","qualifiedName":"flutter_parse_sdk.keyVarObjectId","href":"flutter_parse_sdk/keyVarObjectId-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyVarPassword","qualifiedName":"flutter_parse_sdk.keyVarPassword","href":"flutter_parse_sdk/keyVarPassword-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyVarRestricted","qualifiedName":"flutter_parse_sdk.keyVarRestricted","href":"flutter_parse_sdk/keyVarRestricted-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyVarSessionToken","qualifiedName":"flutter_parse_sdk.keyVarSessionToken","href":"flutter_parse_sdk/keyVarSessionToken-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyVarURL","qualifiedName":"flutter_parse_sdk.keyVarURL","href":"flutter_parse_sdk/keyVarURL-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyVarUpdatedAt","qualifiedName":"flutter_parse_sdk.keyVarUpdatedAt","href":"flutter_parse_sdk/keyVarUpdatedAt-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyVarUser","qualifiedName":"flutter_parse_sdk.keyVarUser","href":"flutter_parse_sdk/keyVarUser-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"keyVarUsername","qualifiedName":"flutter_parse_sdk.keyVarUsername","href":"flutter_parse_sdk/keyVarUsername-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"logAPIResponse","qualifiedName":"flutter_parse_sdk.logAPIResponse","href":"flutter_parse_sdk/logAPIResponse.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"logRequest","qualifiedName":"flutter_parse_sdk.logRequest","href":"flutter_parse_sdk/logRequest.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"parseDecode","qualifiedName":"flutter_parse_sdk.parseDecode","href":"flutter_parse_sdk/parseDecode.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"Decode any type value","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"parseEncode","qualifiedName":"flutter_parse_sdk.parseEncode","href":"flutter_parse_sdk/parseEncode.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"Custom json encoder for types related to parse","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"parseIsWeb","qualifiedName":"flutter_parse_sdk.parseIsWeb","href":"flutter_parse_sdk/parseIsWeb-constant.html","kind":19,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"removeDuplicateParseObjectByObjectId","qualifiedName":"flutter_parse_sdk.removeDuplicateParseObjectByObjectId","href":"flutter_parse_sdk/removeDuplicateParseObjectByObjectId.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"removeTrailingSlash","qualifiedName":"flutter_parse_sdk.removeTrailingSlash","href":"flutter_parse_sdk/removeTrailingSlash.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"Removes unncessary /","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}},{"name":"shouldReturnAsABaseResult","qualifiedName":"flutter_parse_sdk.shouldReturnAsABaseResult","href":"flutter_parse_sdk/shouldReturnAsABaseResult.html","kind":8,"overriddenDepth":0,"packageRank":0,"desc":"","enclosedBy":{"name":"flutter_parse_sdk","kind":9,"href":"flutter_parse_sdk/flutter_parse_sdk-library.html"}}] diff --git a/dart/search.html b/dart/search.html new file mode 100644 index 000000000..bcd2fd587 --- /dev/null +++ b/dart/search.html @@ -0,0 +1,102 @@ + + + + + + + + + parse_server_sdk - Dart API docs + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
parse_server_sdk
+ +
+ +
+
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + diff --git a/dart/static-assets/docs.dart.js b/dart/static-assets/docs.dart.js new file mode 100644 index 000000000..896fcb885 --- /dev/null +++ b/dart/static-assets/docs.dart.js @@ -0,0 +1,6175 @@ +(function dartProgram(){function copyProperties(a,b){var s=Object.keys(a) +for(var r=0;r=0)return true +if(typeof version=="function"&&version.length==0){var q=version() +if(/^\d+\.\d+\.\d+\.\d+$/.test(q))return true}}catch(p){}return false}() +function inherit(a,b){a.prototype.constructor=a +a.prototype["$i"+a.name]=a +if(b!=null){if(z){Object.setPrototypeOf(a.prototype,b.prototype) +return}var s=Object.create(b.prototype) +copyProperties(a.prototype,s) +a.prototype=s}}function inheritMany(a,b){for(var s=0;s4294967295)throw A.b(A.V(a,0,4294967295,"length",null)) +return J.le(new Array(a),b)}, +ld(a,b){if(a<0)throw A.b(A.aE("Length must be a non-negative integer: "+a,null)) +return A.n(new Array(a),b.k("B<0>"))}, +jh(a,b){if(a<0)throw A.b(A.aE("Length must be a non-negative integer: "+a,null)) +return A.n(new Array(a),b.k("B<0>"))}, +le(a,b){return J.ix(A.n(a,b.k("B<0>")))}, +ix(a){a.fixed$length=Array +return a}, +lf(a,b){return J.kL(a,b)}, +ji(a){if(a<256)switch(a){case 9:case 10:case 11:case 12:case 13:case 32:case 133:case 160:return!0 +default:return!1}switch(a){case 5760:case 8192:case 8193:case 8194:case 8195:case 8196:case 8197:case 8198:case 8199:case 8200:case 8201:case 8202:case 8232:case 8233:case 8239:case 8287:case 12288:case 65279:return!0 +default:return!1}}, +lg(a,b){var s,r +for(s=a.length;b0;b=s){s=b-1 +r=a.charCodeAt(s) +if(r!==32&&r!==13&&!J.ji(r))break}return b}, +bd(a){if(typeof a=="number"){if(Math.floor(a)==a)return J.bQ.prototype +return J.dd.prototype}if(typeof a=="string")return J.aL.prototype +if(a==null)return J.bR.prototype +if(typeof a=="boolean")return J.dc.prototype +if(Array.isArray(a))return J.B.prototype +if(typeof a!="object"){if(typeof a=="function")return J.al.prototype +if(typeof a=="symbol")return J.bm.prototype +if(typeof a=="bigint")return J.bl.prototype +return a}if(a instanceof A.t)return a +return J.i8(a)}, +cC(a){if(typeof a=="string")return J.aL.prototype +if(a==null)return a +if(Array.isArray(a))return J.B.prototype +if(typeof a!="object"){if(typeof a=="function")return J.al.prototype +if(typeof a=="symbol")return J.bm.prototype +if(typeof a=="bigint")return J.bl.prototype +return a}if(a instanceof A.t)return a +return J.i8(a)}, +fg(a){if(a==null)return a +if(Array.isArray(a))return J.B.prototype +if(typeof a!="object"){if(typeof a=="function")return J.al.prototype +if(typeof a=="symbol")return J.bm.prototype +if(typeof a=="bigint")return J.bl.prototype +return a}if(a instanceof A.t)return a +return J.i8(a)}, +n4(a){if(typeof a=="number")return J.bk.prototype +if(typeof a=="string")return J.aL.prototype +if(a==null)return a +if(!(a instanceof A.t))return J.b7.prototype +return a}, +kf(a){if(typeof a=="string")return J.aL.prototype +if(a==null)return a +if(!(a instanceof A.t))return J.b7.prototype +return a}, +L(a){if(a==null)return a +if(typeof a!="object"){if(typeof a=="function")return J.al.prototype +if(typeof a=="symbol")return J.bm.prototype +if(typeof a=="bigint")return J.bl.prototype +return a}if(a instanceof A.t)return a +return J.i8(a)}, +bE(a,b){if(a==null)return b==null +if(typeof a!="object")return b!=null&&a===b +return J.bd(a).K(a,b)}, +ir(a,b){if(typeof b==="number")if(Array.isArray(a)||typeof a=="string"||A.ki(a,a[v.dispatchPropertyName]))if(b>>>0===b&&b>>0===b&&b").b(a))return new A.c9(a,b.k("@<0>").G(c).k("c9<1,2>")) +return new A.aY(a,b.k("@<0>").G(c).k("aY<1,2>"))}, +i9(a){var s,r=a^48 +if(r<=9)return r +s=a|32 +if(97<=s&&s<=102)return s-87 +return-1}, +aO(a,b){a=a+b&536870911 +a=a+((a&524287)<<10)&536870911 +return a^a>>>6}, +iF(a){a=a+((a&67108863)<<3)&536870911 +a^=a>>>11 +return a+((a&16383)<<15)&536870911}, +fe(a,b,c){return a}, +iZ(a){var s,r +for(s=$.be.length,r=0;r").G(d).k("bK<1,2>")) +return new A.ao(a,b,c.k("@<0>").G(d).k("ao<1,2>"))}, +iv(){return new A.br("No element")}, +la(){return new A.br("Too many elements")}, +aP:function aP(){}, +cS:function cS(a,b){this.a=a +this.$ti=b}, +aY:function aY(a,b){this.a=a +this.$ti=b}, +c9:function c9(a,b){this.a=a +this.$ti=b}, +c6:function c6(){}, +ak:function ak(a,b){this.a=a +this.$ti=b}, +bS:function bS(a){this.a=a}, +cV:function cV(a){this.a=a}, +fU:function fU(){}, +f:function f(){}, +a7:function a7(){}, +bU:function bU(a,b){var _=this +_.a=a +_.b=b +_.c=0 +_.d=null}, +ao:function ao(a,b,c){this.a=a +this.b=b +this.$ti=c}, +bK:function bK(a,b,c){this.a=a +this.b=b +this.$ti=c}, +bW:function bW(a,b){this.a=null +this.b=a +this.c=b}, +ap:function ap(a,b,c){this.a=a +this.b=b +this.$ti=c}, +ax:function ax(a,b,c){this.a=a +this.b=b +this.$ti=c}, +e3:function e3(a,b){this.a=a +this.b=b}, +bN:function bN(){}, +dY:function dY(){}, +bt:function bt(){}, +cy:function cy(){}, +l_(){throw A.b(A.r("Cannot modify unmodifiable Map"))}, +ko(a){var s=v.mangledGlobalNames[a] +if(s!=null)return s +return"minified:"+a}, +ki(a,b){var s +if(b!=null){s=b.x +if(s!=null)return s}return t.G.b(a)}, +p(a){var s +if(typeof a=="string")return a +if(typeof a=="number"){if(a!==0)return""+a}else if(!0===a)return"true" +else if(!1===a)return"false" +else if(a==null)return"null" +s=J.aD(a) +return s}, +dD(a){var s,r=$.jp +if(r==null)r=$.jp=Symbol("identityHashCode") +s=a[r] +if(s==null){s=Math.random()*0x3fffffff|0 +a[r]=s}return s}, +jq(a,b){var s,r,q,p,o,n=null,m=/^\s*[+-]?((0x[a-f0-9]+)|(\d+)|([a-z0-9]+))\s*$/i.exec(a) +if(m==null)return n +s=m[3] +if(b==null){if(s!=null)return parseInt(a,10) +if(m[2]!=null)return parseInt(a,16) +return n}if(b<2||b>36)throw A.b(A.V(b,2,36,"radix",n)) +if(b===10&&s!=null)return parseInt(a,10) +if(b<10||s==null){r=b<=10?47+b:86+b +q=m[1] +for(p=q.length,o=0;or)return n}return parseInt(a,b)}, +fS(a){return A.ll(a)}, +ll(a){var s,r,q,p +if(a instanceof A.t)return A.T(A.bD(a),null) +s=J.bd(a) +if(s===B.M||s===B.O||t.o.b(a)){r=B.p(a) +if(r!=="Object"&&r!=="")return r +q=a.constructor +if(typeof q=="function"){p=q.name +if(typeof p=="string"&&p!=="Object"&&p!=="")return p}}return A.T(A.bD(a),null)}, +jr(a){if(a==null||typeof a=="number"||A.i2(a))return J.aD(a) +if(typeof a=="string")return JSON.stringify(a) +if(a instanceof A.aG)return a.j(0) +if(a instanceof A.ci)return a.bd(!0) +return"Instance of '"+A.fS(a)+"'"}, +lm(a,b,c){var s,r,q,p +if(c<=500&&b===0&&c===a.length)return String.fromCharCode.apply(null,a) +for(s=b,r="";s>>0,s&1023|56320)}}throw A.b(A.V(a,0,1114111,null,null))}, +iX(a,b){var s,r="index" +if(!A.k4(b))return new A.Z(!0,b,r,null) +s=J.aW(a) +if(b<0||b>=s)return A.E(b,s,a,r) +return A.ln(b,r)}, +n1(a,b,c){if(a>c)return A.V(a,0,c,"start",null) +if(b!=null)if(bc)return A.V(b,a,c,"end",null) +return new A.Z(!0,b,"end",null)}, +mW(a){return new A.Z(!0,a,null,null)}, +b(a){return A.kh(new Error(),a)}, +kh(a,b){var s +if(b==null)b=new A.av() +a.dartException=b +s=A.nu +if("defineProperty" in Object){Object.defineProperty(a,"message",{get:s}) +a.name=""}else a.toString=s +return a}, +nu(){return J.aD(this.dartException)}, +fh(a){throw A.b(a)}, +kn(a,b){throw A.kh(b,a)}, +cE(a){throw A.b(A.aH(a))}, +aw(a){var s,r,q,p,o,n +a=A.no(a.replace(String({}),"$receiver$")) +s=a.match(/\\\$[a-zA-Z]+\\\$/g) +if(s==null)s=A.n([],t.s) +r=s.indexOf("\\$arguments\\$") +q=s.indexOf("\\$argumentsExpr\\$") +p=s.indexOf("\\$expr\\$") +o=s.indexOf("\\$method\\$") +n=s.indexOf("\\$receiver\\$") +return new A.fW(a.replace(new RegExp("\\\\\\$arguments\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$argumentsExpr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$expr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$method\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$receiver\\\\\\$","g"),"((?:x|[^x])*)"),r,q,p,o,n)}, +fX(a){return function($expr$){var $argumentsExpr$="$arguments$" +try{$expr$.$method$($argumentsExpr$)}catch(s){return s.message}}(a)}, +jx(a){return function($expr$){try{$expr$.$method$}catch(s){return s.message}}(a)}, +iz(a,b){var s=b==null,r=s?null:b.method +return new A.de(a,r,s?null:b.receiver)}, +ai(a){if(a==null)return new A.fR(a) +if(a instanceof A.bM)return A.aV(a,a.a) +if(typeof a!=="object")return a +if("dartException" in a)return A.aV(a,a.dartException) +return A.mT(a)}, +aV(a,b){if(t.U.b(b))if(b.$thrownJsError==null)b.$thrownJsError=a +return b}, +mT(a){var s,r,q,p,o,n,m,l,k,j,i,h,g +if(!("message" in a))return a +s=a.message +if("number" in a&&typeof a.number=="number"){r=a.number +q=r&65535 +if((B.d.ag(r,16)&8191)===10)switch(q){case 438:return A.aV(a,A.iz(A.p(s)+" (Error "+q+")",null)) +case 445:case 5007:A.p(s) +return A.aV(a,new A.c2())}}if(a instanceof TypeError){p=$.kr() +o=$.ks() +n=$.kt() +m=$.ku() +l=$.kx() +k=$.ky() +j=$.kw() +$.kv() +i=$.kA() +h=$.kz() +g=p.J(s) +if(g!=null)return A.aV(a,A.iz(s,g)) +else{g=o.J(s) +if(g!=null){g.method="call" +return A.aV(a,A.iz(s,g))}else if(n.J(s)!=null||m.J(s)!=null||l.J(s)!=null||k.J(s)!=null||j.J(s)!=null||m.J(s)!=null||i.J(s)!=null||h.J(s)!=null)return A.aV(a,new A.c2())}return A.aV(a,new A.dX(typeof s=="string"?s:""))}if(a instanceof RangeError){if(typeof s=="string"&&s.indexOf("call stack")!==-1)return new A.c4() +s=function(b){try{return String(b)}catch(f){}return null}(a) +return A.aV(a,new A.Z(!1,null,null,typeof s=="string"?s.replace(/^RangeError:\s*/,""):s))}if(typeof InternalError=="function"&&a instanceof InternalError)if(typeof s=="string"&&s==="too much recursion")return new A.c4() +return a}, +aU(a){var s +if(a instanceof A.bM)return a.b +if(a==null)return new A.cn(a) +s=a.$cachedTrace +if(s!=null)return s +s=new A.cn(a) +if(typeof a==="object")a.$cachedTrace=s +return s}, +kj(a){if(a==null)return J.aj(a) +if(typeof a=="object")return A.dD(a) +return J.aj(a)}, +n3(a,b){var s,r,q,p=a.length +for(s=0;s=0}, +no(a){if(/[[\]{}()*+?.\\^$|]/.test(a))return a.replace(/[[\]{}()*+?.\\^$|]/g,"\\$&") +return a}, +kb(a){return a}, +nr(a,b,c,d){var s,r,q,p=new A.h7(b,a,0),o=t.F,n=0,m="" +for(;p.n();){s=p.d +if(s==null)s=o.a(s) +r=s.b +q=r.index +m=m+A.p(A.kb(B.a.m(a,n,q)))+A.p(c.$1(s)) +n=q+r[0].length}p=m+A.p(A.kb(B.a.M(a,n))) +return p.charCodeAt(0)==0?p:p}, +eG:function eG(a,b){this.a=a +this.b=b}, +bG:function bG(){}, +bH:function bH(a,b,c){this.a=a +this.b=b +this.$ti=c}, +fW:function fW(a,b,c,d,e,f){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.f=f}, +c2:function c2(){}, +de:function de(a,b,c){this.a=a +this.b=b +this.c=c}, +dX:function dX(a){this.a=a}, +fR:function fR(a){this.a=a}, +bM:function bM(a,b){this.a=a +this.b=b}, +cn:function cn(a){this.a=a +this.b=null}, +aG:function aG(){}, +cT:function cT(){}, +cU:function cU(){}, +dP:function dP(){}, +dK:function dK(){}, +bh:function bh(a,b){this.a=a +this.b=b}, +ea:function ea(a){this.a=a}, +dF:function dF(a){this.a=a}, +b2:function b2(a){var _=this +_.a=0 +_.f=_.e=_.d=_.c=_.b=null +_.r=0 +_.$ti=a}, +fG:function fG(a){this.a=a}, +fJ:function fJ(a,b){var _=this +_.a=a +_.b=b +_.d=_.c=null}, +an:function an(a,b){this.a=a +this.$ti=b}, +dg:function dg(a,b){var _=this +_.a=a +_.b=b +_.d=_.c=null}, +ia:function ia(a){this.a=a}, +ib:function ib(a){this.a=a}, +ic:function ic(a){this.a=a}, +ci:function ci(){}, +eF:function eF(){}, +fE:function fE(a,b){var _=this +_.a=a +_.b=b +_.d=_.c=null}, +eu:function eu(a){this.b=a}, +h7:function h7(a,b,c){var _=this +_.a=a +_.b=b +_.c=c +_.d=null}, +mn(a){return a}, +lk(a){return new Int8Array(a)}, +aA(a,b,c){if(a>>>0!==a||a>=c)throw A.b(A.iX(b,a))}, +mk(a,b,c){var s +if(!(a>>>0!==a))s=b>>>0!==b||a>b||b>c +else s=!0 +if(s)throw A.b(A.n1(a,b,c)) +return b}, +dn:function dn(){}, +bZ:function bZ(){}, +dp:function dp(){}, +bo:function bo(){}, +bX:function bX(){}, +bY:function bY(){}, +dq:function dq(){}, +dr:function dr(){}, +ds:function ds(){}, +dt:function dt(){}, +du:function du(){}, +dv:function dv(){}, +dw:function dw(){}, +c_:function c_(){}, +c0:function c0(){}, +ce:function ce(){}, +cf:function cf(){}, +cg:function cg(){}, +ch:function ch(){}, +jt(a,b){var s=b.c +return s==null?b.c=A.iK(a,b.y,!0):s}, +iE(a,b){var s=b.c +return s==null?b.c=A.cs(a,"aJ",[b.y]):s}, +lp(a){var s=a.d +if(s!=null)return s +return a.d=new Map()}, +ju(a){var s=a.x +if(s===6||s===7||s===8)return A.ju(a.y) +return s===12||s===13}, +lo(a){return a.at}, +ff(a){return A.f0(v.typeUniverse,a,!1)}, +aS(a,b,a0,a1){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c=b.x +switch(c){case 5:case 1:case 2:case 3:case 4:return b +case 6:s=b.y +r=A.aS(a,s,a0,a1) +if(r===s)return b +return A.jP(a,r,!0) +case 7:s=b.y +r=A.aS(a,s,a0,a1) +if(r===s)return b +return A.iK(a,r,!0) +case 8:s=b.y +r=A.aS(a,s,a0,a1) +if(r===s)return b +return A.jO(a,r,!0) +case 9:q=b.z +p=A.cB(a,q,a0,a1) +if(p===q)return b +return A.cs(a,b.y,p) +case 10:o=b.y +n=A.aS(a,o,a0,a1) +m=b.z +l=A.cB(a,m,a0,a1) +if(n===o&&l===m)return b +return A.iI(a,n,l) +case 12:k=b.y +j=A.aS(a,k,a0,a1) +i=b.z +h=A.mQ(a,i,a0,a1) +if(j===k&&h===i)return b +return A.jN(a,j,h) +case 13:g=b.z +a1+=g.length +f=A.cB(a,g,a0,a1) +o=b.y +n=A.aS(a,o,a0,a1) +if(f===g&&n===o)return b +return A.iJ(a,n,f,!0) +case 14:e=b.y +if(e") +for(r=1;r=0)p+=" "+r[q];++q}return p+"})"}, +k2(a3,a4,a5){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1,a2=", " +if(a5!=null){s=a5.length +if(a4==null){a4=A.n([],t.s) +r=null}else r=a4.length +q=a4.length +for(p=s;p>0;--p)a4.push("T"+(q+p)) +for(o=t.X,n=t._,m="<",l="",p=0;p0){a0+=a1+"[" +for(a1="",p=0;p0){a0+=a1+"{" +for(a1="",p=0;p "+a}, +T(a,b){var s,r,q,p,o,n,m=a.x +if(m===5)return"erased" +if(m===2)return"dynamic" +if(m===3)return"void" +if(m===1)return"Never" +if(m===4)return"any" +if(m===6){s=A.T(a.y,b) +return s}if(m===7){r=a.y +s=A.T(r,b) +q=r.x +return(q===12||q===13?"("+s+")":s)+"?"}if(m===8)return"FutureOr<"+A.T(a.y,b)+">" +if(m===9){p=A.mS(a.y) +o=a.z +return o.length>0?p+("<"+A.k8(o,b)+">"):p}if(m===11)return A.mL(a,b) +if(m===12)return A.k2(a,b,null) +if(m===13)return A.k2(a.y,b,a.z) +if(m===14){n=a.y +return b[b.length-1-n]}return"?"}, +mS(a){var s=v.mangledGlobalNames[a] +if(s!=null)return s +return"minified:"+a}, +lX(a,b){var s=a.tR[b] +for(;typeof s=="string";)s=a.tR[s] +return s}, +lW(a,b){var s,r,q,p,o,n=a.eT,m=n[b] +if(m==null)return A.f0(a,b,!1) +else if(typeof m=="number"){s=m +r=A.ct(a,5,"#") +q=A.hQ(s) +for(p=0;p0)p+="<"+A.cr(c)+">" +s=a.eC.get(p) +if(s!=null)return s +r=new A.W(null,null) +r.x=9 +r.y=b +r.z=c +if(c.length>0)r.c=c[0] +r.at=p +q=A.az(a,r) +a.eC.set(p,q) +return q}, +iI(a,b,c){var s,r,q,p,o,n +if(b.x===10){s=b.y +r=b.z.concat(c)}else{r=c +s=b}q=s.at+(";<"+A.cr(r)+">") +p=a.eC.get(q) +if(p!=null)return p +o=new A.W(null,null) +o.x=10 +o.y=s +o.z=r +o.at=q +n=A.az(a,o) +a.eC.set(q,n) +return n}, +lT(a,b,c){var s,r,q="+"+(b+"("+A.cr(c)+")"),p=a.eC.get(q) +if(p!=null)return p +s=new A.W(null,null) +s.x=11 +s.y=b +s.z=c +s.at=q +r=A.az(a,s) +a.eC.set(q,r) +return r}, +jN(a,b,c){var s,r,q,p,o,n=b.at,m=c.a,l=m.length,k=c.b,j=k.length,i=c.c,h=i.length,g="("+A.cr(m) +if(j>0){s=l>0?",":"" +g+=s+"["+A.cr(k)+"]"}if(h>0){s=l>0?",":"" +g+=s+"{"+A.lN(i)+"}"}r=n+(g+")") +q=a.eC.get(r) +if(q!=null)return q +p=new A.W(null,null) +p.x=12 +p.y=b +p.z=c +p.at=r +o=A.az(a,p) +a.eC.set(r,o) +return o}, +iJ(a,b,c,d){var s,r=b.at+("<"+A.cr(c)+">"),q=a.eC.get(r) +if(q!=null)return q +s=A.lP(a,b,c,r,d) +a.eC.set(r,s) +return s}, +lP(a,b,c,d,e){var s,r,q,p,o,n,m,l +if(e){s=c.length +r=A.hQ(s) +for(q=0,p=0;p0){n=A.aS(a,b,r,0) +m=A.cB(a,c,r,0) +return A.iJ(a,n,m,c!==m)}}l=new A.W(null,null) +l.x=13 +l.y=b +l.z=c +l.at=d +return A.az(a,l)}, +jI(a,b,c,d){return{u:a,e:b,r:c,s:[],p:0,n:d}}, +jK(a){var s,r,q,p,o,n,m,l=a.r,k=a.s +for(s=l.length,r=0;r=48&&q<=57)r=A.lG(r+1,q,l,k) +else if((((q|32)>>>0)-97&65535)<26||q===95||q===36||q===124)r=A.jJ(a,r,l,k,!1) +else if(q===46)r=A.jJ(a,r,l,k,!0) +else{++r +switch(q){case 44:break +case 58:k.push(!1) +break +case 33:k.push(!0) +break +case 59:k.push(A.aR(a.u,a.e,k.pop())) +break +case 94:k.push(A.lS(a.u,k.pop())) +break +case 35:k.push(A.ct(a.u,5,"#")) +break +case 64:k.push(A.ct(a.u,2,"@")) +break +case 126:k.push(A.ct(a.u,3,"~")) +break +case 60:k.push(a.p) +a.p=k.length +break +case 62:A.lI(a,k) +break +case 38:A.lH(a,k) +break +case 42:p=a.u +k.push(A.jP(p,A.aR(p,a.e,k.pop()),a.n)) +break +case 63:p=a.u +k.push(A.iK(p,A.aR(p,a.e,k.pop()),a.n)) +break +case 47:p=a.u +k.push(A.jO(p,A.aR(p,a.e,k.pop()),a.n)) +break +case 40:k.push(-3) +k.push(a.p) +a.p=k.length +break +case 41:A.lF(a,k) +break +case 91:k.push(a.p) +a.p=k.length +break +case 93:o=k.splice(a.p) +A.jL(a.u,a.e,o) +a.p=k.pop() +k.push(o) +k.push(-1) +break +case 123:k.push(a.p) +a.p=k.length +break +case 125:o=k.splice(a.p) +A.lK(a.u,a.e,o) +a.p=k.pop() +k.push(o) +k.push(-2) +break +case 43:n=l.indexOf("(",r) +k.push(l.substring(r,n)) +k.push(-4) +k.push(a.p) +a.p=k.length +r=n+1 +break +default:throw"Bad character "+q}}}m=k.pop() +return A.aR(a.u,a.e,m)}, +lG(a,b,c,d){var s,r,q=b-48 +for(s=c.length;a=48&&r<=57))break +q=q*10+(r-48)}d.push(q) +return a}, +jJ(a,b,c,d,e){var s,r,q,p,o,n,m=b+1 +for(s=c.length;m>>0)-97&65535)<26||r===95||r===36||r===124))q=r>=48&&r<=57 +else q=!0 +if(!q)break}}p=c.substring(b,m) +if(e){s=a.u +o=a.e +if(o.x===10)o=o.y +n=A.lX(s,o.y)[p] +if(n==null)A.fh('No "'+p+'" in "'+A.lo(o)+'"') +d.push(A.cu(s,o,n))}else d.push(p) +return m}, +lI(a,b){var s,r=a.u,q=A.jH(a,b),p=b.pop() +if(typeof p=="string")b.push(A.cs(r,p,q)) +else{s=A.aR(r,a.e,p) +switch(s.x){case 12:b.push(A.iJ(r,s,q,a.n)) +break +default:b.push(A.iI(r,s,q)) +break}}}, +lF(a,b){var s,r,q,p,o,n=null,m=a.u,l=b.pop() +if(typeof l=="number")switch(l){case-1:s=b.pop() +r=n +break +case-2:r=b.pop() +s=n +break +default:b.push(l) +r=n +s=r +break}else{b.push(l) +r=n +s=r}q=A.jH(a,b) +l=b.pop() +switch(l){case-3:l=b.pop() +if(s==null)s=m.sEA +if(r==null)r=m.sEA +p=A.aR(m,a.e,l) +o=new A.el() +o.a=q +o.b=s +o.c=r +b.push(A.jN(m,p,o)) +return +case-4:b.push(A.lT(m,b.pop(),q)) +return +default:throw A.b(A.cM("Unexpected state under `()`: "+A.p(l)))}}, +lH(a,b){var s=b.pop() +if(0===s){b.push(A.ct(a.u,1,"0&")) +return}if(1===s){b.push(A.ct(a.u,4,"1&")) +return}throw A.b(A.cM("Unexpected extended operation "+A.p(s)))}, +jH(a,b){var s=b.splice(a.p) +A.jL(a.u,a.e,s) +a.p=b.pop() +return s}, +aR(a,b,c){if(typeof c=="string")return A.cs(a,c,a.sEA) +else if(typeof c=="number"){b.toString +return A.lJ(a,b,c)}else return c}, +jL(a,b,c){var s,r=c.length +for(s=0;sn)return!1 +m=n-o +l=s.b +k=r.b +j=l.length +i=k.length +if(o+j=d)return!1 +a1=f[b] +b+=3 +if(a00?new Array(q):v.typeUniverse.sEA +for(o=0;o0?new Array(a):v.typeUniverse.sEA}, +W:function W(a,b){var _=this +_.a=a +_.b=b +_.w=_.r=_.e=_.d=_.c=null +_.x=0 +_.at=_.as=_.Q=_.z=_.y=null}, +el:function el(){this.c=this.b=this.a=null}, +hL:function hL(a){this.a=a}, +eh:function eh(){}, +cq:function cq(a){this.a=a}, +lw(){var s,r,q={} +if(self.scheduleImmediate!=null)return A.mX() +if(self.MutationObserver!=null&&self.document!=null){s=self.document.createElement("div") +r=self.document.createElement("span") +q.a=null +new self.MutationObserver(A.bb(new A.h9(q),1)).observe(s,{childList:true}) +return new A.h8(q,s,r)}else if(self.setImmediate!=null)return A.mY() +return A.mZ()}, +lx(a){self.scheduleImmediate(A.bb(new A.ha(a),0))}, +ly(a){self.setImmediate(A.bb(new A.hb(a),0))}, +lz(a){A.lL(0,a)}, +lL(a,b){var s=new A.hJ() +s.bS(a,b) +return s}, +mH(a){return new A.e4(new A.I($.C,a.k("I<0>")),a.k("e4<0>"))}, +mi(a,b){a.$2(0,null) +b.b=!0 +return b.a}, +mf(a,b){A.mj(a,b)}, +mh(a,b){b.ak(0,a)}, +mg(a,b){b.am(A.ai(a),A.aU(a))}, +mj(a,b){var s,r,q=new A.hT(b),p=new A.hU(b) +if(a instanceof A.I)a.bb(q,p,t.z) +else{s=t.z +if(a instanceof A.I)a.aX(q,p,s) +else{r=new A.I($.C,t.aY) +r.a=8 +r.c=a +r.bb(q,p,s)}}}, +mU(a){var s=function(b,c){return function(d,e){while(true)try{b(d,e) +break}catch(r){e=r +d=c}}}(a,1) +return $.C.by(new A.i6(s))}, +fj(a,b){var s=A.fe(a,"error",t.K) +return new A.cN(s,b==null?A.j7(a):b)}, +j7(a){var s +if(t.U.b(a)){s=a.gac() +if(s!=null)return s}return B.J}, +jF(a,b){var s,r +for(;s=a.a,(s&4)!==0;)a=a.c +if((s&24)!==0){r=b.aK() +b.ad(a) +A.ca(b,r)}else{r=b.c +b.b9(a) +a.aJ(r)}}, +lB(a,b){var s,r,q={},p=q.a=a +for(;s=p.a,(s&4)!==0;){p=p.c +q.a=p}if((s&24)===0){r=b.c +b.b9(p) +q.a.aJ(r) +return}if((s&16)===0&&b.c==null){b.ad(p) +return}b.a^=2 +A.ba(null,null,b.b,new A.hk(q,b))}, +ca(a,b){var s,r,q,p,o,n,m,l,k,j,i,h,g={},f=g.a=a +for(;!0;){s={} +r=f.a +q=(r&16)===0 +p=!q +if(b==null){if(p&&(r&1)===0){f=f.c +A.i3(f.a,f.b)}return}s.a=b +o=b.a +for(f=b;o!=null;f=o,o=n){f.a=null +A.ca(g.a,f) +s.a=o +n=o.a}r=g.a +m=r.c +s.b=p +s.c=m +if(q){l=f.c +l=(l&1)!==0||(l&15)===8}else l=!0 +if(l){k=f.b.b +if(p){r=r.b===k +r=!(r||r)}else r=!1 +if(r){A.i3(m.a,m.b) +return}j=$.C +if(j!==k)$.C=k +else j=null +f=f.c +if((f&15)===8)new A.hr(s,g,p).$0() +else if(q){if((f&1)!==0)new A.hq(s,m).$0()}else if((f&2)!==0)new A.hp(g,s).$0() +if(j!=null)$.C=j +f=s.c +if(f instanceof A.I){r=s.a.$ti +r=r.k("aJ<2>").b(f)||!r.z[1].b(f)}else r=!1 +if(r){i=s.a.b +if((f.a&24)!==0){h=i.c +i.c=null +b=i.af(h) +i.a=f.a&30|i.a&1 +i.c=f.c +g.a=f +continue}else A.jF(f,i) +return}}i=s.a.b +h=i.c +i.c=null +b=i.af(h) +f=s.b +r=s.c +if(!f){i.a=8 +i.c=r}else{i.a=i.a&1|16 +i.c=r}g.a=i +f=i}}, +mM(a,b){if(t.C.b(a))return b.by(a) +if(t.w.b(a))return a +throw A.b(A.is(a,"onError",u.c))}, +mJ(){var s,r +for(s=$.bB;s!=null;s=$.bB){$.cA=null +r=s.b +$.bB=r +if(r==null)$.cz=null +s.a.$0()}}, +mP(){$.iT=!0 +try{A.mJ()}finally{$.cA=null +$.iT=!1 +if($.bB!=null)$.j1().$1(A.kd())}}, +ka(a){var s=new A.e5(a),r=$.cz +if(r==null){$.bB=$.cz=s +if(!$.iT)$.j1().$1(A.kd())}else $.cz=r.b=s}, +mO(a){var s,r,q,p=$.bB +if(p==null){A.ka(a) +$.cA=$.cz +return}s=new A.e5(a) +r=$.cA +if(r==null){s.b=p +$.bB=$.cA=s}else{q=r.b +s.b=q +$.cA=r.b=s +if(q==null)$.cz=s}}, +np(a){var s,r=null,q=$.C +if(B.c===q){A.ba(r,r,B.c,a) +return}s=!1 +if(s){A.ba(r,r,q,a) +return}A.ba(r,r,q,q.bi(a))}, +o_(a){A.fe(a,"stream",t.K) +return new A.eO()}, +i3(a,b){A.mO(new A.i4(a,b))}, +k6(a,b,c,d){var s,r=$.C +if(r===c)return d.$0() +$.C=c +s=r +try{r=d.$0() +return r}finally{$.C=s}}, +k7(a,b,c,d,e){var s,r=$.C +if(r===c)return d.$1(e) +$.C=c +s=r +try{r=d.$1(e) +return r}finally{$.C=s}}, +mN(a,b,c,d,e,f){var s,r=$.C +if(r===c)return d.$2(e,f) +$.C=c +s=r +try{r=d.$2(e,f) +return r}finally{$.C=s}}, +ba(a,b,c,d){if(B.c!==c)d=c.bi(d) +A.ka(d)}, +h9:function h9(a){this.a=a}, +h8:function h8(a,b,c){this.a=a +this.b=b +this.c=c}, +ha:function ha(a){this.a=a}, +hb:function hb(a){this.a=a}, +hJ:function hJ(){}, +hK:function hK(a,b){this.a=a +this.b=b}, +e4:function e4(a,b){this.a=a +this.b=!1 +this.$ti=b}, +hT:function hT(a){this.a=a}, +hU:function hU(a){this.a=a}, +i6:function i6(a){this.a=a}, +cN:function cN(a,b){this.a=a +this.b=b}, +c7:function c7(){}, +b8:function b8(a,b){this.a=a +this.$ti=b}, +bw:function bw(a,b,c,d,e){var _=this +_.a=null +_.b=a +_.c=b +_.d=c +_.e=d +_.$ti=e}, +I:function I(a,b){var _=this +_.a=0 +_.b=a +_.c=null +_.$ti=b}, +hh:function hh(a,b){this.a=a +this.b=b}, +ho:function ho(a,b){this.a=a +this.b=b}, +hl:function hl(a){this.a=a}, +hm:function hm(a){this.a=a}, +hn:function hn(a,b,c){this.a=a +this.b=b +this.c=c}, +hk:function hk(a,b){this.a=a +this.b=b}, +hj:function hj(a,b){this.a=a +this.b=b}, +hi:function hi(a,b,c){this.a=a +this.b=b +this.c=c}, +hr:function hr(a,b,c){this.a=a +this.b=b +this.c=c}, +hs:function hs(a){this.a=a}, +hq:function hq(a,b){this.a=a +this.b=b}, +hp:function hp(a,b){this.a=a +this.b=b}, +e5:function e5(a){this.a=a +this.b=null}, +eO:function eO(){}, +hS:function hS(){}, +i4:function i4(a,b){this.a=a +this.b=b}, +hw:function hw(){}, +hx:function hx(a,b){this.a=a +this.b=b}, +hy:function hy(a,b,c){this.a=a +this.b=b +this.c=c}, +jk(a,b,c){return A.n3(a,new A.b2(b.k("@<0>").G(c).k("b2<1,2>")))}, +dh(a,b){return new A.b2(a.k("@<0>").G(b).k("b2<1,2>"))}, +bT(a){return new A.cb(a.k("cb<0>"))}, +iG(){var s=Object.create(null) +s[""]=s +delete s[""] +return s}, +lE(a,b){var s=new A.cc(a,b) +s.c=a.e +return s}, +jl(a,b){var s,r,q=A.bT(b) +for(s=a.length,r=0;r=0)return null +return r}return null}, +lv(a,b,c,d){var s=a?$.kC():$.kB() +if(s==null)return null +if(0===c&&d===b.length)return A.jC(s,b) +return A.jC(s,b.subarray(c,A.b3(c,d,b.length)))}, +jC(a,b){var s,r +try{s=a.decode(b) +return s}catch(r){}return null}, +j8(a,b,c,d,e,f){if(B.d.au(f,4)!==0)throw A.b(A.N("Invalid base64 padding, padded length must be multiple of four, is "+f,a,c)) +if(d+e!==f)throw A.b(A.N("Invalid base64 padding, '=' not at the end",a,b)) +if(e>2)throw A.b(A.N("Invalid base64 padding, more than two '=' characters",a,b))}, +mb(a){switch(a){case 65:return"Missing extension byte" +case 67:return"Unexpected extension byte" +case 69:return"Invalid UTF-8 byte" +case 71:return"Overlong encoding" +case 73:return"Out of unicode range" +case 75:return"Encoded surrogate" +case 77:return"Unfinished UTF-8 octet sequence" +default:return""}}, +ma(a,b,c){var s,r,q,p=c-b,o=new Uint8Array(p) +for(s=J.cC(a),r=0;r>>0!==0?255:q}return o}, +eq:function eq(a,b){this.a=a +this.b=b +this.c=null}, +er:function er(a){this.a=a}, +h5:function h5(){}, +h4:function h4(){}, +fl:function fl(){}, +fm:function fm(){}, +cW:function cW(){}, +cY:function cY(){}, +fr:function fr(){}, +fx:function fx(){}, +fw:function fw(){}, +fH:function fH(){}, +fI:function fI(a){this.a=a}, +h2:function h2(){}, +h6:function h6(){}, +hP:function hP(a){this.b=0 +this.c=a}, +h3:function h3(a){this.a=a}, +hO:function hO(a){this.a=a +this.b=16 +this.c=0}, +ik(a,b){var s=A.jq(a,b) +if(s!=null)return s +throw A.b(A.N(a,null,null))}, +l1(a,b){a=A.b(a) +a.stack=b.j(0) +throw a +throw A.b("unreachable")}, +jm(a,b,c,d){var s,r=c?J.ld(a,d):J.lc(a,d) +if(a!==0&&b!=null)for(s=0;s")) +for(s=J.a2(a);s.n();)r.push(s.gq(s)) +if(b)return r +return J.ix(r)}, +jo(a,b,c){var s=A.li(a,c) +return s}, +li(a,b){var s,r +if(Array.isArray(a))return A.n(a.slice(0),b.k("B<0>")) +s=A.n([],b.k("B<0>")) +for(r=J.a2(a);r.n();)s.push(r.gq(r)) +return s}, +jw(a,b,c){var s=A.lm(a,b,A.b3(b,c,a.length)) +return s}, +iD(a,b){return new A.fE(a,A.jj(a,!1,b,!1,!1,!1))}, +jv(a,b,c){var s=J.a2(b) +if(!s.n())return a +if(c.length===0){do a+=A.p(s.gq(s)) +while(s.n())}else{a+=A.p(s.gq(s)) +for(;s.n();)a=a+c+A.p(s.gq(s))}return a}, +jX(a,b,c,d){var s,r,q,p,o,n="0123456789ABCDEF" +if(c===B.h){s=$.kF() +s=s.b.test(b)}else s=!1 +if(s)return b +r=B.I.X(b) +for(s=r.length,q=0,p="";q>>4]&1<<(o&15))!==0)p+=A.ar(o) +else p=d&&o===32?p+"+":p+"%"+n[o>>>4&15]+n[o&15]}return p.charCodeAt(0)==0?p:p}, +fs(a){if(typeof a=="number"||A.i2(a)||a==null)return J.aD(a) +if(typeof a=="string")return JSON.stringify(a) +return A.jr(a)}, +l2(a,b){A.fe(a,"error",t.K) +A.fe(b,"stackTrace",t.l) +A.l1(a,b)}, +cM(a){return new A.cL(a)}, +aE(a,b){return new A.Z(!1,null,b,a)}, +is(a,b,c){return new A.Z(!0,a,b,c)}, +ln(a,b){return new A.c3(null,null,!0,a,b,"Value not in range")}, +V(a,b,c,d,e){return new A.c3(b,c,!0,a,d,"Invalid value")}, +b3(a,b,c){if(0>a||a>c)throw A.b(A.V(a,0,c,"start",null)) +if(b!=null){if(a>b||b>c)throw A.b(A.V(b,a,c,"end",null)) +return b}return c}, +js(a,b){if(a<0)throw A.b(A.V(a,0,null,b,null)) +return a}, +E(a,b,c,d){return new A.db(b,!0,a,d,"Index out of range")}, +r(a){return new A.dZ(a)}, +jy(a){return new A.dW(a)}, +dJ(a){return new A.br(a)}, +aH(a){return new A.cX(a)}, +N(a,b,c){return new A.fv(a,b,c)}, +lb(a,b,c){var s,r +if(A.iZ(a)){if(b==="("&&c===")")return"(...)" +return b+"..."+c}s=A.n([],t.s) +$.be.push(a) +try{A.mG(a,s)}finally{$.be.pop()}r=A.jv(b,s,", ")+c +return r.charCodeAt(0)==0?r:r}, +iw(a,b,c){var s,r +if(A.iZ(a))return b+"..."+c +s=new A.O(b) +$.be.push(a) +try{r=s +r.a=A.jv(r.a,a,", ")}finally{$.be.pop()}s.a+=c +r=s.a +return r.charCodeAt(0)==0?r:r}, +mG(a,b){var s,r,q,p,o,n,m,l=a.gA(a),k=0,j=0 +while(!0){if(!(k<80||j<3))break +if(!l.n())return +s=A.p(l.gq(l)) +b.push(s) +k+=s.length+2;++j}if(!l.n()){if(j<=5)return +r=b.pop() +q=b.pop()}else{p=l.gq(l);++j +if(!l.n()){if(j<=4){b.push(A.p(p)) +return}r=A.p(p) +q=b.pop() +k+=r.length+2}else{o=l.gq(l);++j +for(;l.n();p=o,o=n){n=l.gq(l);++j +if(j>100){while(!0){if(!(k>75&&j>3))break +k-=b.pop().length+2;--j}b.push("...") +return}}q=A.p(p) +r=A.p(o) +k+=r.length+q.length+4}}if(j>b.length+2){k+=5 +m="..."}else m=null +while(!0){if(!(k>80&&b.length>3))break +k-=b.pop().length+2 +if(m==null){k+=5 +m="..."}}if(m!=null)b.push(m) +b.push(q) +b.push(r)}, +iB(a,b,c,d){var s +if(B.k===c){s=B.e.gt(a) +b=J.aj(b) +return A.iF(A.aO(A.aO($.iq(),s),b))}if(B.k===d){s=B.e.gt(a) +b=J.aj(b) +c=J.aj(c) +return A.iF(A.aO(A.aO(A.aO($.iq(),s),b),c))}s=B.e.gt(a) +b=J.aj(b) +c=J.aj(c) +d=J.aj(d) +d=A.iF(A.aO(A.aO(A.aO(A.aO($.iq(),s),b),c),d)) +return d}, +e0(a5){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1,a2,a3=null,a4=a5.length +if(a4>=5){s=((a5.charCodeAt(4)^58)*3|a5.charCodeAt(0)^100|a5.charCodeAt(1)^97|a5.charCodeAt(2)^116|a5.charCodeAt(3)^97)>>>0 +if(s===0)return A.jz(a4=14)r[7]=a4 +q=r[1] +if(q>=0)if(A.k9(a5,0,q,20,r)===20)r[7]=q +p=r[2]+1 +o=r[3] +n=r[4] +m=r[5] +l=r[6] +if(lq+3){j=a3 +k=!1}else{i=o>0 +if(i&&o+1===n){j=a3 +k=!1}else{if(!B.a.F(a5,"\\",n))if(p>0)h=B.a.F(a5,"\\",p-1)||B.a.F(a5,"\\",p-2) +else h=!1 +else h=!0 +if(h){j=a3 +k=!1}else{if(!(mn+2&&B.a.F(a5,"/..",m-3) +else h=!0 +if(h){j=a3 +k=!1}else{if(q===4)if(B.a.F(a5,"file",0)){if(p<=0){if(!B.a.F(a5,"/",n)){g="file:///" +s=3}else{g="file://" +s=2}a5=g+B.a.m(a5,n,a4) +q-=0 +i=s-0 +m+=i +l+=i +a4=a5.length +p=7 +o=7 +n=7}else if(n===m){++l +f=m+1 +a5=B.a.Z(a5,n,m,"/");++a4 +m=f}j="file"}else if(B.a.F(a5,"http",0)){if(i&&o+3===n&&B.a.F(a5,"80",o+1)){l-=3 +e=n-3 +m-=3 +a5=B.a.Z(a5,o,n,"") +a4-=3 +n=e}j="http"}else j=a3 +else if(q===5&&B.a.F(a5,"https",0)){if(i&&o+4===n&&B.a.F(a5,"443",o+1)){l-=4 +e=n-4 +m-=4 +a5=B.a.Z(a5,o,n,"") +a4-=3 +n=e}j="https"}else j=a3 +k=!0}}}}else j=a3 +if(k){if(a40)j=A.m4(a5,0,q) +else{if(q===0)A.by(a5,0,"Invalid empty scheme") +j=""}if(p>0){d=q+3 +c=d9)k.$2("invalid character",s)}else{if(q===3)k.$2(m,s) +o=A.ik(B.a.m(a,r,s),null) +if(o>255)k.$2(l,r) +n=q+1 +j[q]=o +r=s+1 +q=n}}if(q!==3)k.$2(m,c) +o=A.ik(B.a.m(a,r,c),null) +if(o>255)k.$2(l,r) +j[q]=o +return j}, +jA(a,b,a0){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e=null,d=new A.h_(a),c=new A.h0(d,a) +if(a.length<2)d.$2("address is too short",e) +s=A.n([],t.t) +for(r=b,q=r,p=!1,o=!1;r>>0) +s.push((k[2]<<8|k[3])>>>0)}if(p){if(s.length>7)d.$2("an address with a wildcard must have less than 7 parts",e)}else if(s.length!==8)d.$2("an address without a wildcard must contain exactly 8 parts",e) +j=new Uint8Array(16) +for(l=s.length,i=9-l,r=0,h=0;r=b&&q=b&&s>>4]&1<<(p&15))!==0){if(q&&65<=p&&90>=p){if(i==null)i=new A.O("") +if(r>>4]&1<<(o&15))!==0){if(p&&65<=o&&90>=o){if(q==null)q=new A.O("") +if(r>>4]&1<<(o&15))!==0)A.by(a,s,"Invalid character") +else{if((o&64512)===55296&&s+1>>4]&1<<(q&15))!==0))A.by(a,s,"Illegal scheme character") +if(65<=q&&q<=90)r=!0}a=B.a.m(a,b,c) +return A.lY(r?a.toLowerCase():a)}, +lY(a){if(a==="http")return"http" +if(a==="file")return"file" +if(a==="https")return"https" +if(a==="package")return"package" +return a}, +m5(a,b,c){return A.cx(a,b,c,B.ad,!1,!1)}, +m2(a,b,c,d,e,f){var s,r=e==="file",q=r||f +if(a==null)return r?"/":"" +else s=A.cx(a,b,c,B.v,!0,!0) +if(s.length===0){if(r)return"/"}else if(q&&!B.a.B(s,"/"))s="/"+s +return A.m6(s,e,f)}, +m6(a,b,c){var s=b.length===0 +if(s&&!c&&!B.a.B(a,"/")&&!B.a.B(a,"\\"))return A.m8(a,!s||c) +return A.m9(a)}, +iN(a,b,c,d){var s,r={} +if(a!=null){if(d!=null)throw A.b(A.aE("Both query and queryParameters specified",null)) +return A.cx(a,b,c,B.j,!0,!1)}if(d==null)return null +s=new A.O("") +r.a="" +d.v(0,new A.hM(new A.hN(r,s))) +r=s.a +return r.charCodeAt(0)==0?r:r}, +m0(a,b,c){return A.cx(a,b,c,B.j,!0,!1)}, +iO(a,b,c){var s,r,q,p,o,n=b+2 +if(n>=a.length)return"%" +s=a.charCodeAt(b+1) +r=a.charCodeAt(n) +q=A.i9(s) +p=A.i9(r) +if(q<0||p<0)return"%" +o=q*16+p +if(o<127&&(B.i[B.d.ag(o,4)]&1<<(o&15))!==0)return A.ar(c&&65<=o&&90>=o?(o|32)>>>0:o) +if(s>=97||r>=97)return B.a.m(a,b,b+3).toUpperCase() +return null}, +iM(a){var s,r,q,p,o,n="0123456789ABCDEF" +if(a<128){s=new Uint8Array(3) +s[0]=37 +s[1]=n.charCodeAt(a>>>4) +s[2]=n.charCodeAt(a&15)}else{if(a>2047)if(a>65535){r=240 +q=4}else{r=224 +q=3}else{r=192 +q=2}s=new Uint8Array(3*q) +for(p=0;--q,q>=0;r=128){o=B.d.ce(a,6*q)&63|r +s[p]=37 +s[p+1]=n.charCodeAt(o>>>4) +s[p+2]=n.charCodeAt(o&15) +p+=3}}return A.jw(s,0,null)}, +cx(a,b,c,d,e,f){var s=A.jV(a,b,c,d,e,f) +return s==null?B.a.m(a,b,c):s}, +jV(a,b,c,d,e,f){var s,r,q,p,o,n,m,l,k,j,i=null +for(s=!e,r=b,q=r,p=i;r>>4]&1<<(o&15))!==0)++r +else{if(o===37){n=A.iO(a,r,!1) +if(n==null){r+=3 +continue}if("%"===n){n="%25" +m=1}else m=3}else if(o===92&&f){n="/" +m=1}else if(s&&o<=93&&(B.w[o>>>4]&1<<(o&15))!==0){A.by(a,r,"Invalid character") +m=i +n=m}else{if((o&64512)===55296){l=r+1 +if(l=2&&A.jT(a.charCodeAt(0)))for(s=1;s127||(B.t[r>>>4]&1<<(r&15))===0)break}return a}, +m_(a,b){var s,r,q +for(s=0,r=0;r<2;++r){q=a.charCodeAt(b+r) +if(48<=q&&q<=57)s=s*16+q-48 +else{q|=32 +if(97<=q&&q<=102)s=s*16+q-87 +else throw A.b(A.aE("Invalid URL encoding",null))}}return s}, +iP(a,b,c,d,e){var s,r,q,p,o=b +while(!0){if(!(o127)throw A.b(A.aE("Illegal percent encoding in URI",null)) +if(r===37){if(o+3>q)throw A.b(A.aE("Truncated URI",null)) +p.push(A.m_(a,o+1)) +o+=2}else if(r===43)p.push(32) +else p.push(r)}}return B.ay.X(p)}, +jT(a){var s=a|32 +return 97<=s&&s<=122}, +jz(a,b,c){var s,r,q,p,o,n,m,l,k="Invalid MIME type",j=A.n([b-1],t.t) +for(s=a.length,r=b,q=-1,p=null;rb)throw A.b(A.N(k,a,r)) +for(;p!==44;){j.push(r);++r +for(o=-1;r=0)j.push(o) +else{n=B.b.gao(j) +if(p!==44||r!==n+7||!B.a.F(a,"base64",n+1))throw A.b(A.N("Expecting '='",a,r)) +break}}j.push(r) +m=r+1 +if((j.length&1)===1)a=B.z.cH(0,a,m,s) +else{l=A.jV(a,m,s,B.j,!0,!1) +if(l!=null)a=B.a.Z(a,m,s,l)}return new A.fY(a,j,c)}, +mm(){var s,r,q,p,o,n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-._~!$&'()*+,;=",m=".",l=":",k="/",j="\\",i="?",h="#",g="/\\",f=J.jh(22,t.bX) +for(s=0;s<22;++s)f[s]=new Uint8Array(96) +r=new A.hY(f) +q=new A.hZ() +p=new A.i_() +o=r.$2(0,225) +q.$3(o,n,1) +q.$3(o,m,14) +q.$3(o,l,34) +q.$3(o,k,3) +q.$3(o,j,227) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(14,225) +q.$3(o,n,1) +q.$3(o,m,15) +q.$3(o,l,34) +q.$3(o,g,234) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(15,225) +q.$3(o,n,1) +q.$3(o,"%",225) +q.$3(o,l,34) +q.$3(o,k,9) +q.$3(o,j,233) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(1,225) +q.$3(o,n,1) +q.$3(o,l,34) +q.$3(o,k,10) +q.$3(o,j,234) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(2,235) +q.$3(o,n,139) +q.$3(o,k,131) +q.$3(o,j,131) +q.$3(o,m,146) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(3,235) +q.$3(o,n,11) +q.$3(o,k,68) +q.$3(o,j,68) +q.$3(o,m,18) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(4,229) +q.$3(o,n,5) +p.$3(o,"AZ",229) +q.$3(o,l,102) +q.$3(o,"@",68) +q.$3(o,"[",232) +q.$3(o,k,138) +q.$3(o,j,138) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(5,229) +q.$3(o,n,5) +p.$3(o,"AZ",229) +q.$3(o,l,102) +q.$3(o,"@",68) +q.$3(o,k,138) +q.$3(o,j,138) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(6,231) +p.$3(o,"19",7) +q.$3(o,"@",68) +q.$3(o,k,138) +q.$3(o,j,138) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(7,231) +p.$3(o,"09",7) +q.$3(o,"@",68) +q.$3(o,k,138) +q.$3(o,j,138) +q.$3(o,i,172) +q.$3(o,h,205) +q.$3(r.$2(8,8),"]",5) +o=r.$2(9,235) +q.$3(o,n,11) +q.$3(o,m,16) +q.$3(o,g,234) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(16,235) +q.$3(o,n,11) +q.$3(o,m,17) +q.$3(o,g,234) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(17,235) +q.$3(o,n,11) +q.$3(o,k,9) +q.$3(o,j,233) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(10,235) +q.$3(o,n,11) +q.$3(o,m,18) +q.$3(o,k,10) +q.$3(o,j,234) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(18,235) +q.$3(o,n,11) +q.$3(o,m,19) +q.$3(o,g,234) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(19,235) +q.$3(o,n,11) +q.$3(o,g,234) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(11,235) +q.$3(o,n,11) +q.$3(o,k,10) +q.$3(o,j,234) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(12,236) +q.$3(o,n,12) +q.$3(o,i,12) +q.$3(o,h,205) +o=r.$2(13,237) +q.$3(o,n,13) +q.$3(o,i,13) +p.$3(r.$2(20,245),"az",21) +o=r.$2(21,245) +p.$3(o,"az",21) +p.$3(o,"09",21) +q.$3(o,"+-.",21) +return f}, +k9(a,b,c,d,e){var s,r,q,p,o=$.kG() +for(s=b;s95?31:q] +d=p&31 +e[p>>>5]=s}return d}, +he:function he(){}, +z:function z(){}, +cL:function cL(a){this.a=a}, +av:function av(){}, +Z:function Z(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +c3:function c3(a,b,c,d,e,f){var _=this +_.e=a +_.f=b +_.a=c +_.b=d +_.c=e +_.d=f}, +db:function db(a,b,c,d,e){var _=this +_.f=a +_.a=b +_.b=c +_.c=d +_.d=e}, +dZ:function dZ(a){this.a=a}, +dW:function dW(a){this.a=a}, +br:function br(a){this.a=a}, +cX:function cX(a){this.a=a}, +dz:function dz(){}, +c4:function c4(){}, +hg:function hg(a){this.a=a}, +fv:function fv(a,b,c){this.a=a +this.b=b +this.c=c}, +x:function x(){}, +F:function F(){}, +t:function t(){}, +eR:function eR(){}, +O:function O(a){this.a=a}, +h1:function h1(a){this.a=a}, +fZ:function fZ(a){this.a=a}, +h_:function h_(a){this.a=a}, +h0:function h0(a,b){this.a=a +this.b=b}, +cw:function cw(a,b,c,d,e,f,g){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.f=f +_.r=g +_.z=_.y=_.w=$}, +hN:function hN(a,b){this.a=a +this.b=b}, +hM:function hM(a){this.a=a}, +fY:function fY(a,b,c){this.a=a +this.b=b +this.c=c}, +hY:function hY(a){this.a=a}, +hZ:function hZ(){}, +i_:function i_(){}, +eJ:function eJ(a,b,c,d,e,f,g,h){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.f=f +_.r=g +_.w=h +_.x=null}, +eb:function eb(a,b,c,d,e,f,g){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.f=f +_.r=g +_.z=_.y=_.w=$}, +lA(a,b){var s +for(s=b.gA(b);s.n();)a.appendChild(s.gq(s))}, +l0(a,b,c){var s=document.body +s.toString +s=new A.ax(new A.M(B.n.H(s,a,b,c)),new A.fp(),t.ba.k("ax")) +return t.h.a(s.gV(s))}, +bL(a){var s,r="element tag unavailable" +try{r=a.tagName}catch(s){}return r}, +jg(a){return A.l5(a,null,null).a7(new A.fy(),t.N)}, +l5(a,b,c){var s=new A.I($.C,t.bR),r=new A.b8(s,t.E),q=new XMLHttpRequest() +B.L.cI(q,"GET",a,!0) +A.jE(q,"load",new A.fz(q,r),!1) +A.jE(q,"error",r.gcn(),!1) +q.send() +return s}, +jE(a,b,c,d){var s=A.mV(new A.hf(c),t.D) +if(s!=null&&!0)J.kJ(a,b,s,!1) +return new A.ei(a,b,s,!1)}, +jG(a){var s=document.createElement("a"),r=new A.hz(s,window.location) +r=new A.bx(r) +r.bQ(a) +return r}, +lC(a,b,c,d){return!0}, +lD(a,b,c,d){var s,r=d.a,q=r.a +q.href=c +s=q.hostname +r=r.b +if(!(s==r.hostname&&q.port===r.port&&q.protocol===r.protocol))if(s==="")if(q.port===""){r=q.protocol +r=r===":"||r===""}else r=!1 +else r=!1 +else r=!0 +return r}, +jM(){var s=t.N,r=A.jl(B.r,s),q=A.n(["TEMPLATE"],t.s) +s=new A.eU(r,A.bT(s),A.bT(s),A.bT(s),null) +s.bR(null,new A.ap(B.r,new A.hI(),t.I),q,null) +return s}, +mV(a,b){var s=$.C +if(s===B.c)return a +return s.cm(a,b)}, +l:function l(){}, +cI:function cI(){}, +cJ:function cJ(){}, +cK:function cK(){}, +bg:function bg(){}, +bF:function bF(){}, +aX:function aX(){}, +a3:function a3(){}, +d_:function d_(){}, +w:function w(){}, +bi:function bi(){}, +fo:function fo(){}, +P:function P(){}, +a_:function a_(){}, +d0:function d0(){}, +d1:function d1(){}, +d2:function d2(){}, +aZ:function aZ(){}, +d3:function d3(){}, +bI:function bI(){}, +bJ:function bJ(){}, +d4:function d4(){}, +d5:function d5(){}, +q:function q(){}, +fp:function fp(){}, +h:function h(){}, +c:function c(){}, +a4:function a4(){}, +d6:function d6(){}, +d7:function d7(){}, +d9:function d9(){}, +a5:function a5(){}, +da:function da(){}, +b0:function b0(){}, +bP:function bP(){}, +a6:function a6(){}, +fy:function fy(){}, +fz:function fz(a,b){this.a=a +this.b=b}, +b1:function b1(){}, +aK:function aK(){}, +bn:function bn(){}, +di:function di(){}, +dj:function dj(){}, +dk:function dk(){}, +fM:function fM(a){this.a=a}, +dl:function dl(){}, +fN:function fN(a){this.a=a}, +a8:function a8(){}, +dm:function dm(){}, +M:function M(a){this.a=a}, +m:function m(){}, +bp:function bp(){}, +aa:function aa(){}, +dB:function dB(){}, +as:function as(){}, +dE:function dE(){}, +fT:function fT(a){this.a=a}, +dG:function dG(){}, +ab:function ab(){}, +dH:function dH(){}, +ac:function ac(){}, +dI:function dI(){}, +ad:function ad(){}, +dL:function dL(){}, +fV:function fV(a){this.a=a}, +X:function X(){}, +c5:function c5(){}, +dN:function dN(){}, +dO:function dO(){}, +bs:function bs(){}, +b5:function b5(){}, +af:function af(){}, +Y:function Y(){}, +dQ:function dQ(){}, +dR:function dR(){}, +dS:function dS(){}, +ag:function ag(){}, +dT:function dT(){}, +dU:function dU(){}, +S:function S(){}, +e1:function e1(){}, +e2:function e2(){}, +bv:function bv(){}, +e8:function e8(){}, +c8:function c8(){}, +em:function em(){}, +cd:function cd(){}, +eM:function eM(){}, +eS:function eS(){}, +e6:function e6(){}, +ay:function ay(a){this.a=a}, +aQ:function aQ(a){this.a=a}, +hc:function hc(a,b){this.a=a +this.b=b}, +hd:function hd(a,b){this.a=a +this.b=b}, +eg:function eg(a){this.a=a}, +iu:function iu(a,b){this.a=a +this.$ti=b}, +ei:function ei(a,b,c,d){var _=this +_.b=a +_.c=b +_.d=c +_.e=d}, +hf:function hf(a){this.a=a}, +bx:function bx(a){this.a=a}, +D:function D(){}, +c1:function c1(a){this.a=a}, +fP:function fP(a){this.a=a}, +fO:function fO(a,b,c){this.a=a +this.b=b +this.c=c}, +ck:function ck(){}, +hG:function hG(){}, +hH:function hH(){}, +eU:function eU(a,b,c,d,e){var _=this +_.e=a +_.a=b +_.b=c +_.c=d +_.d=e}, +hI:function hI(){}, +eT:function eT(){}, +bO:function bO(a,b){var _=this +_.a=a +_.b=b +_.c=-1 +_.d=null}, +hz:function hz(a,b){this.a=a +this.b=b}, +f2:function f2(a){this.a=a +this.b=0}, +hR:function hR(a){this.a=a}, +e9:function e9(){}, +ec:function ec(){}, +ed:function ed(){}, +ee:function ee(){}, +ef:function ef(){}, +ej:function ej(){}, +ek:function ek(){}, +eo:function eo(){}, +ep:function ep(){}, +ev:function ev(){}, +ew:function ew(){}, +ex:function ex(){}, +ey:function ey(){}, +ez:function ez(){}, +eA:function eA(){}, +eD:function eD(){}, +eE:function eE(){}, +eH:function eH(){}, +cl:function cl(){}, +cm:function cm(){}, +eK:function eK(){}, +eL:function eL(){}, +eN:function eN(){}, +eV:function eV(){}, +eW:function eW(){}, +co:function co(){}, +cp:function cp(){}, +eX:function eX(){}, +eY:function eY(){}, +f3:function f3(){}, +f4:function f4(){}, +f5:function f5(){}, +f6:function f6(){}, +f7:function f7(){}, +f8:function f8(){}, +f9:function f9(){}, +fa:function fa(){}, +fb:function fb(){}, +fc:function fc(){}, +k_(a){var s,r,q +if(a==null)return a +if(typeof a=="string"||typeof a=="number"||A.i2(a))return a +s=Object.getPrototypeOf(a) +if(s===Object.prototype||s===null)return A.aT(a) +if(Array.isArray(a)){r=[] +for(q=0;q")),r=new A.b8(s,b.k("b8<0>")) +a.then(A.bb(new A.io(r),1),A.bb(new A.ip(r),1)) +return s}, +io:function io(a){this.a=a}, +ip:function ip(a){this.a=a}, +fQ:function fQ(a){this.a=a}, +am:function am(){}, +df:function df(){}, +aq:function aq(){}, +dx:function dx(){}, +dC:function dC(){}, +bq:function bq(){}, +dM:function dM(){}, +cO:function cO(a){this.a=a}, +i:function i(){}, +au:function au(){}, +dV:function dV(){}, +es:function es(){}, +et:function et(){}, +eB:function eB(){}, +eC:function eC(){}, +eP:function eP(){}, +eQ:function eQ(){}, +eZ:function eZ(){}, +f_:function f_(){}, +cP:function cP(){}, +cQ:function cQ(){}, +fk:function fk(a){this.a=a}, +cR:function cR(){}, +aF:function aF(){}, +dy:function dy(){}, +e7:function e7(){}, +A:function A(a,b){this.a=a +this.b=b}, +l6(a){var s,r,q,p,o,n,m,l,k="enclosedBy",j=J.cC(a) +if(j.i(a,k)!=null){s=t.a.a(j.i(a,k)) +r=J.cC(s) +q=new A.fq(A.bA(r.i(s,"name")),B.u[A.iQ(r.i(s,"kind"))],A.bA(r.i(s,"href")))}else q=null +r=j.i(a,"name") +p=j.i(a,"qualifiedName") +o=A.iQ(j.i(a,"packageRank")) +n=j.i(a,"href") +m=B.u[A.iQ(j.i(a,"kind"))] +l=A.mc(j.i(a,"overriddenDepth")) +if(l==null)l=0 +return new A.K(r,p,o,m,n,l,j.i(a,"desc"),q)}, +Q:function Q(a,b){this.a=a +this.b=b}, +fA:function fA(a){this.a=a}, +fD:function fD(a,b){this.a=a +this.b=b}, +fB:function fB(){}, +fC:function fC(){}, +K:function K(a,b,c,d,e,f,g,h){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.f=f +_.r=g +_.w=h}, +fq:function fq(a,b,c){this.a=a +this.b=b +this.c=c}, +nl(){var s=self.hljs +if(s!=null)s.highlightAll() +A.ng() +A.na() +A.nb() +A.nc()}, +ng(){var s,r,q,p,o,n,m,l,k,j=document,i=j.querySelector("body") +if(i==null)return +s=i.getAttribute("data-"+new A.aQ(new A.ay(i)).S("using-base-href")) +if(s==null)return +if(s!=="true"){r=i.getAttribute("data-"+new A.aQ(new A.ay(i)).S("base-href")) +if(r==null)return +q=r}else q="" +p=j.querySelector("#dartdoc-main-content") +if(p==null)return +o=p.getAttribute("data-"+new A.aQ(new A.ay(p)).S("above-sidebar")) +n=j.querySelector("#dartdoc-sidebar-left-content") +m=new A.eI(q) +if(o!=null&&o.length!==0&&n!=null)A.jg(q+A.p(o)).a7(new A.ii(n,m),t.P) +l=p.getAttribute("data-"+new A.aQ(new A.ay(p)).S("below-sidebar")) +k=j.querySelector("#dartdoc-sidebar-right") +if(l!=null&&l.length!==0&&k!=null)A.jg(q+A.p(l)).a7(new A.ij(k,m),t.P)}, +ii:function ii(a,b){this.a=a +this.b=b}, +ij:function ij(a,b){this.a=a +this.b=b}, +eI:function eI(a){this.a=a}, +nb(){var s=document,r=t.cD,q=r.a(s.getElementById("search-box")),p=r.a(s.getElementById("search-body")),o=r.a(s.getElementById("search-sidebar")) +s=window +r=$.cG() +A.kl(s.fetch(r+"index.json",null),t.z).a7(new A.ie(new A.ig(q,p,o),q,p,o),t.P)}, +iH(a){var s=A.n([],t.k),r=A.n([],t.M) +return new A.hA(a,A.e0(window.location.href),s,r)}, +ml(a,b){var s,r,q,p,o,n,m,l,k=document,j=k.createElement("div"),i=b.e +j.setAttribute("data-href",i==null?"":i) +i=J.L(j) +i.gP(j).u(0,"tt-suggestion") +s=k.createElement("span") +r=J.L(s) +r.gP(s).u(0,"tt-suggestion-title") +r.sI(s,A.iR(b.a+" "+b.d.j(0).toLowerCase(),a)) +j.appendChild(s) +q=b.w +r=q!=null +if(r){p=k.createElement("span") +o=J.L(p) +o.gP(p).u(0,"tt-suggestion-container") +o.sI(p,"(in "+A.iR(q.a,a)+")") +j.appendChild(p)}n=b.r +if(n!=null&&n.length!==0){m=k.createElement("blockquote") +p=J.L(m) +p.gP(m).u(0,"one-line-description") +o=k.createElement("textarea") +t.J.a(o) +B.al.aa(o,n) +o=o.value +o.toString +m.setAttribute("title",o) +p.sI(m,A.iR(n,a)) +j.appendChild(m)}i.L(j,"mousedown",new A.hW()) +i.L(j,"click",new A.hX(b)) +if(r){i=q.a +r=q.b.j(0) +p=q.c +o=k.createElement("div") +J.a1(o).u(0,"tt-container") +l=k.createElement("p") +l.textContent="Results from " +J.a1(l).u(0,"tt-container-text") +k=k.createElement("a") +k.setAttribute("href",p) +J.j4(k,i+" "+r) +l.appendChild(k) +o.appendChild(l) +A.mI(o,j)}return j}, +mI(a,b){var s,r=J.kO(a) +if(r==null)return +s=$.b9.i(0,r) +if(s!=null)s.appendChild(b) +else{a.appendChild(b) +$.b9.l(0,r,a)}}, +iR(a,b){return A.nr(a,A.iD(b,!1),new A.i0(),null)}, +i1:function i1(){}, +ig:function ig(a,b,c){this.a=a +this.b=b +this.c=c}, +ie:function ie(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +hA:function hA(a,b,c,d){var _=this +_.a=a +_.b=b +_.e=_.d=_.c=$ +_.f=null +_.r="" +_.w=c +_.x=d +_.y=-1}, +hB:function hB(a){this.a=a}, +hC:function hC(a,b){this.a=a +this.b=b}, +hD:function hD(a,b){this.a=a +this.b=b}, +hE:function hE(a,b){this.a=a +this.b=b}, +hF:function hF(a,b){this.a=a +this.b=b}, +hW:function hW(){}, +hX:function hX(a){this.a=a}, +i0:function i0(){}, +na(){var s=window.document,r=s.getElementById("sidenav-left-toggle"),q=s.querySelector(".sidebar-offcanvas-left"),p=s.getElementById("overlay-under-drawer"),o=new A.ih(q,p) +if(p!=null)J.j2(p,"click",o) +if(r!=null)J.j2(r,"click",o)}, +ih:function ih(a,b){this.a=a +this.b=b}, +nc(){var s,r="colorTheme",q="dark-theme",p="light-theme",o=document,n=o.body +if(n==null)return +s=t.p.a(o.getElementById("theme")) +B.f.L(s,"change",new A.id(s,n)) +if(window.localStorage.getItem(r)!=null){s.checked=window.localStorage.getItem(r)==="true" +if(s.checked===!0){n.setAttribute("class",q) +s.setAttribute("value",q) +window.localStorage.setItem(r,"true")}else{n.setAttribute("class",p) +s.setAttribute("value",p) +window.localStorage.setItem(r,"false")}}}, +id:function id(a,b){this.a=a +this.b=b}, +nn(a){if(typeof dartPrint=="function"){dartPrint(a) +return}if(typeof console=="object"&&typeof console.log!="undefined"){console.log(a) +return}if(typeof print=="function"){print(a) +return}throw"Unable to print message: "+String(a)}, +nt(a){A.kn(new A.bS("Field '"+a+"' has been assigned during initialization."),new Error())}, +cF(){A.kn(new A.bS("Field '' has been assigned during initialization."),new Error())}},B={} +var w=[A,J,B] +var $={} +A.iy.prototype={} +J.bj.prototype={ +K(a,b){return a===b}, +gt(a){return A.dD(a)}, +j(a){return"Instance of '"+A.fS(a)+"'"}, +gC(a){return A.bc(A.iS(this))}} +J.dc.prototype={ +j(a){return String(a)}, +gt(a){return a?519018:218159}, +gC(a){return A.bc(t.y)}, +$iu:1} +J.bR.prototype={ +K(a,b){return null==b}, +j(a){return"null"}, +gt(a){return 0}, +$iu:1, +$iF:1} +J.a.prototype={} +J.aM.prototype={ +gt(a){return 0}, +j(a){return String(a)}} +J.dA.prototype={} +J.b7.prototype={} +J.al.prototype={ +j(a){var s=a[$.kq()] +if(s==null)return this.bO(a) +return"JavaScript function for "+J.aD(s)}, +$ib_:1} +J.bl.prototype={ +gt(a){return 0}, +j(a){return String(a)}} +J.bm.prototype={ +gt(a){return 0}, +j(a){return String(a)}} +J.B.prototype={ +ai(a,b){return new A.ak(a,A.bz(a).k("@<1>").G(b).k("ak<1,2>"))}, +aj(a){if(!!a.fixed$length)A.fh(A.r("clear")) +a.length=0}, +T(a,b){var s,r=A.jm(a.length,"",!1,t.N) +for(s=0;ss)throw A.b(A.V(b,0,s,"start",null)) +if(cs)throw A.b(A.V(c,b,s,"end",null)) +if(b===c)return A.n([],A.bz(a)) +return A.n(a.slice(b,c),A.bz(a))}, +gcw(a){if(a.length>0)return a[0] +throw A.b(A.iv())}, +gao(a){var s=a.length +if(s>0)return a[s-1] +throw A.b(A.iv())}, +bh(a,b){var s,r=a.length +for(s=0;s0){a[0]=q +a[1]=r}return}if(A.bz(a).c.b(null)){for(p=0,o=0;o0)this.ca(a,p)}, +ca(a,b){var s,r=a.length +for(;s=r-1,r>0;r=s)if(a[s]===null){a[s]=void 0;--b +if(b===0)break}}, +E(a,b){var s +for(s=0;s=0&&b=0&&b=p){r.d=null +return!1}r.d=q[s] +r.c=s+1 +return!0}} +J.bk.prototype={ +bk(a,b){var s +if(ab)return 1 +else if(a===b){if(a===0){s=this.gaS(b) +if(this.gaS(a)===s)return 0 +if(this.gaS(a))return-1 +return 1}return 0}else if(isNaN(a)){if(isNaN(b))return 0 +return 1}else return-1}, +gaS(a){return a===0?1/a<0:a<0}, +a6(a){if(a>0){if(a!==1/0)return Math.round(a)}else if(a>-1/0)return 0-Math.round(0-a) +throw A.b(A.r(""+a+".round()"))}, +j(a){if(a===0&&1/a<0)return"-0.0" +else return""+a}, +gt(a){var s,r,q,p,o=a|0 +if(a===o)return o&536870911 +s=Math.abs(a) +r=Math.log(s)/0.6931471805599453|0 +q=Math.pow(2,r) +p=s<1?s/q:q/s +return((p*9007199254740992|0)+(p*3542243181176521|0))*599197+r*1259&536870911}, +au(a,b){var s=a%b +if(s===0)return 0 +if(s>0)return s +return s+b}, +cf(a,b){return(a|0)===a?a/b|0:this.cg(a,b)}, +cg(a,b){var s=a/b +if(s>=-2147483648&&s<=2147483647)return s|0 +if(s>0){if(s!==1/0)return Math.floor(s)}else if(s>-1/0)return Math.ceil(s) +throw A.b(A.r("Result of truncating division is "+A.p(s)+": "+A.p(a)+" ~/ "+b))}, +ag(a,b){var s +if(a>0)s=this.ba(a,b) +else{s=b>31?31:b +s=a>>s>>>0}return s}, +ce(a,b){if(0>b)throw A.b(A.mW(b)) +return this.ba(a,b)}, +ba(a,b){return b>31?0:a>>>b}, +gC(a){return A.bc(t.H)}, +$iH:1, +$iU:1} +J.bQ.prototype={ +gC(a){return A.bc(t.S)}, +$iu:1, +$ik:1} +J.dd.prototype={ +gC(a){return A.bc(t.i)}, +$iu:1} +J.aL.prototype={ +bE(a,b){return a+b}, +Z(a,b,c,d){var s=A.b3(b,c,a.length) +return a.substring(0,b)+d+a.substring(s)}, +F(a,b,c){var s +if(c<0||c>a.length)throw A.b(A.V(c,0,a.length,null,null)) +s=c+b.length +if(s>a.length)return!1 +return b===a.substring(c,s)}, +B(a,b){return this.F(a,b,0)}, +m(a,b,c){return a.substring(b,A.b3(b,c,a.length))}, +M(a,b){return this.m(a,b,null)}, +cT(a){return a.toLowerCase()}, +cU(a){var s,r,q,p=a.trim(),o=p.length +if(o===0)return p +if(p.charCodeAt(0)===133){s=J.lg(p,1) +if(s===o)return""}else s=0 +r=o-1 +q=p.charCodeAt(r)===133?J.lh(p,r):o +if(s===0&&q===o)return p +return p.substring(s,q)}, +bF(a,b){var s,r +if(0>=b)return"" +if(b===1||a.length===0)return a +if(b!==b>>>0)throw A.b(B.H) +for(s=a,r="";!0;){if((b&1)===1)r=s+r +b=b>>>1 +if(b===0)break +s+=s}return r}, +an(a,b,c){var s +if(c<0||c>a.length)throw A.b(A.V(c,0,a.length,null,null)) +s=a.indexOf(b,c) +return s}, +bs(a,b){return this.an(a,b,0)}, +co(a,b,c){var s=a.length +if(c>s)throw A.b(A.V(c,0,s,null,null)) +return A.j0(a,b,c)}, +E(a,b){return this.co(a,b,0)}, +bk(a,b){var s +if(a===b)s=0 +else s=a>6}r=r+((r&67108863)<<3)&536870911 +r^=r>>11 +return r+((r&16383)<<15)&536870911}, +gC(a){return A.bc(t.N)}, +gh(a){return a.length}, +$iu:1, +$id:1} +A.aP.prototype={ +gA(a){var s=A.J(this) +return new A.cS(J.a2(this.ga3()),s.k("@<1>").G(s.z[1]).k("cS<1,2>"))}, +gh(a){return J.aW(this.ga3())}, +p(a,b){return A.J(this).z[1].a(J.cH(this.ga3(),b))}, +j(a){return J.aD(this.ga3())}} +A.cS.prototype={ +n(){return this.a.n()}, +gq(a){var s=this.a +return this.$ti.z[1].a(s.gq(s))}} +A.aY.prototype={ +ga3(){return this.a}} +A.c9.prototype={$if:1} +A.c6.prototype={ +i(a,b){return this.$ti.z[1].a(J.ir(this.a,b))}, +l(a,b,c){J.fi(this.a,b,this.$ti.c.a(c))}, +$if:1, +$ij:1} +A.ak.prototype={ +ai(a,b){return new A.ak(this.a,this.$ti.k("@<1>").G(b).k("ak<1,2>"))}, +ga3(){return this.a}} +A.bS.prototype={ +j(a){return"LateInitializationError: "+this.a}} +A.cV.prototype={ +gh(a){return this.a.length}, +i(a,b){return this.a.charCodeAt(b)}} +A.fU.prototype={} +A.f.prototype={} +A.a7.prototype={ +gA(a){return new A.bU(this,this.gh(this))}, +aq(a,b){return this.bN(0,b)}} +A.bU.prototype={ +gq(a){var s=this.d +return s==null?A.J(this).c.a(s):s}, +n(){var s,r=this,q=r.a,p=J.cC(q),o=p.gh(q) +if(r.b!==o)throw A.b(A.aH(q)) +s=r.c +if(s>=o){r.d=null +return!1}r.d=p.p(q,s);++r.c +return!0}} +A.ao.prototype={ +gA(a){return new A.bW(J.a2(this.a),this.b)}, +gh(a){return J.aW(this.a)}, +p(a,b){return this.b.$1(J.cH(this.a,b))}} +A.bK.prototype={$if:1} +A.bW.prototype={ +n(){var s=this,r=s.b +if(r.n()){s.a=s.c.$1(r.gq(r)) +return!0}s.a=null +return!1}, +gq(a){var s=this.a +return s==null?A.J(this).z[1].a(s):s}} +A.ap.prototype={ +gh(a){return J.aW(this.a)}, +p(a,b){return this.b.$1(J.cH(this.a,b))}} +A.ax.prototype={ +gA(a){return new A.e3(J.a2(this.a),this.b)}} +A.e3.prototype={ +n(){var s,r +for(s=this.a,r=this.b;s.n();)if(r.$1(s.gq(s)))return!0 +return!1}, +gq(a){var s=this.a +return s.gq(s)}} +A.bN.prototype={} +A.dY.prototype={ +l(a,b,c){throw A.b(A.r("Cannot modify an unmodifiable list"))}} +A.bt.prototype={} +A.cy.prototype={} +A.eG.prototype={$r:"+item,matchPosition(1,2)",$s:1} +A.bG.prototype={ +j(a){return A.iA(this)}, +l(a,b,c){A.l_()}, +$iy:1} +A.bH.prototype={ +gh(a){return this.b.length}, +gc4(){var s=this.$keys +if(s==null){s=Object.keys(this.a) +this.$keys=s}return s}, +a4(a,b){if("__proto__"===b)return!1 +return this.a.hasOwnProperty(b)}, +i(a,b){if(!this.a4(0,b))return null +return this.b[this.a[b]]}, +v(a,b){var s,r,q=this.gc4(),p=this.b +for(s=q.length,r=0;r>>0}, +j(a){return"Closure '"+this.$_name+"' of "+("Instance of '"+A.fS(this.a)+"'")}} +A.ea.prototype={ +j(a){return"Reading static variable '"+this.a+"' during its initialization"}} +A.dF.prototype={ +j(a){return"RuntimeError: "+this.a}} +A.b2.prototype={ +gh(a){return this.a}, +gD(a){return new A.an(this,A.J(this).k("an<1>"))}, +gbD(a){var s=A.J(this) +return A.lj(new A.an(this,s.k("an<1>")),new A.fG(this),s.c,s.z[1])}, +a4(a,b){var s=this.b +if(s==null)return!1 +return s[b]!=null}, +i(a,b){var s,r,q,p,o=null +if(typeof b=="string"){s=this.b +if(s==null)return o +r=s[b] +q=r==null?o:r.b +return q}else if(typeof b=="number"&&(b&0x3fffffff)===b){p=this.c +if(p==null)return o +r=p[b] +q=r==null?o:r.b +return q}else return this.cE(b)}, +cE(a){var s,r,q=this.d +if(q==null)return null +s=q[this.bt(a)] +r=this.bu(s,a) +if(r<0)return null +return s[r].b}, +l(a,b,c){var s,r,q,p,o,n,m=this +if(typeof b=="string"){s=m.b +m.aZ(s==null?m.b=m.aH():s,b,c)}else if(typeof b=="number"&&(b&0x3fffffff)===b){r=m.c +m.aZ(r==null?m.c=m.aH():r,b,c)}else{q=m.d +if(q==null)q=m.d=m.aH() +p=m.bt(b) +o=q[p] +if(o==null)q[p]=[m.aI(b,c)] +else{n=m.bu(o,b) +if(n>=0)o[n].b=c +else o.push(m.aI(b,c))}}}, +aj(a){var s=this +if(s.a>0){s.b=s.c=s.d=s.e=s.f=null +s.a=0 +s.b7()}}, +v(a,b){var s=this,r=s.e,q=s.r +for(;r!=null;){b.$2(r.a,r.b) +if(q!==s.r)throw A.b(A.aH(s)) +r=r.c}}, +aZ(a,b,c){var s=a[b] +if(s==null)a[b]=this.aI(b,c) +else s.b=c}, +b7(){this.r=this.r+1&1073741823}, +aI(a,b){var s,r=this,q=new A.fJ(a,b) +if(r.e==null)r.e=r.f=q +else{s=r.f +s.toString +q.d=s +r.f=s.c=q}++r.a +r.b7() +return q}, +bt(a){return J.aj(a)&1073741823}, +bu(a,b){var s,r +if(a==null)return-1 +s=a.length +for(r=0;r"]=s +delete s[""] +return s}} +A.fG.prototype={ +$1(a){var s=this.a,r=s.i(0,a) +return r==null?A.J(s).z[1].a(r):r}, +$S(){return A.J(this.a).k("2(1)")}} +A.fJ.prototype={} +A.an.prototype={ +gh(a){return this.a.a}, +gA(a){var s=this.a,r=new A.dg(s,s.r) +r.c=s.e +return r}} +A.dg.prototype={ +gq(a){return this.d}, +n(){var s,r=this,q=r.a +if(r.b!==q.r)throw A.b(A.aH(q)) +s=r.c +if(s==null){r.d=null +return!1}else{r.d=s.a +r.c=s.c +return!0}}} +A.ia.prototype={ +$1(a){return this.a(a)}, +$S:41} +A.ib.prototype={ +$2(a,b){return this.a(a,b)}, +$S:44} +A.ic.prototype={ +$1(a){return this.a(a)}, +$S:20} +A.ci.prototype={ +j(a){return this.bd(!1)}, +bd(a){var s,r,q,p,o,n=this.c2(),m=this.b5(),l=(a?""+"Record ":"")+"(" +for(s=n.length,r="",q=0;q0;){--q;--s +j[q]=r[s]}}j=A.jn(j,!1,k) +j.fixed$length=Array +j.immutable$list=Array +return j}} +A.eF.prototype={ +b5(){return[this.a,this.b]}, +K(a,b){if(b==null)return!1 +return b instanceof A.eF&&this.$s===b.$s&&J.bE(this.a,b.a)&&J.bE(this.b,b.b)}, +gt(a){return A.iB(this.$s,this.a,this.b,B.k)}} +A.fE.prototype={ +j(a){return"RegExp/"+this.a+"/"+this.b.flags}, +gc5(){var s=this,r=s.c +if(r!=null)return r +r=s.b +return s.c=A.jj(s.a,r.multiline,!r.ignoreCase,r.unicode,r.dotAll,!0)}, +c1(a,b){var s,r=this.gc5() +r.lastIndex=b +s=r.exec(a) +if(s==null)return null +return new A.eu(s)}} +A.eu.prototype={ +gcu(a){var s=this.b +return s.index+s[0].length}, +i(a,b){return this.b[b]}, +$ifL:1, +$iiC:1} +A.h7.prototype={ +gq(a){var s=this.d +return s==null?t.F.a(s):s}, +n(){var s,r,q,p,o,n=this,m=n.b +if(m==null)return!1 +s=n.c +r=m.length +if(s<=r){q=n.a +p=q.c1(m,s) +if(p!=null){n.d=p +o=p.gcu(p) +if(p.b.index===o){if(q.b.unicode){s=n.c +q=s+1 +if(q=55296&&s<=56319){s=m.charCodeAt(q) +s=s>=56320&&s<=57343}else s=!1}else s=!1}else s=!1 +o=(s?o+1:o)+1}n.c=o +return!0}}n.b=n.d=null +return!1}} +A.dn.prototype={ +gC(a){return B.am}, +$iu:1} +A.bZ.prototype={} +A.dp.prototype={ +gC(a){return B.an}, +$iu:1} +A.bo.prototype={ +gh(a){return a.length}, +$io:1} +A.bX.prototype={ +i(a,b){A.aA(b,a,a.length) +return a[b]}, +l(a,b,c){A.aA(b,a,a.length) +a[b]=c}, +$if:1, +$ij:1} +A.bY.prototype={ +l(a,b,c){A.aA(b,a,a.length) +a[b]=c}, +$if:1, +$ij:1} +A.dq.prototype={ +gC(a){return B.ao}, +$iu:1} +A.dr.prototype={ +gC(a){return B.ap}, +$iu:1} +A.ds.prototype={ +gC(a){return B.aq}, +i(a,b){A.aA(b,a,a.length) +return a[b]}, +$iu:1} +A.dt.prototype={ +gC(a){return B.ar}, +i(a,b){A.aA(b,a,a.length) +return a[b]}, +$iu:1} +A.du.prototype={ +gC(a){return B.as}, +i(a,b){A.aA(b,a,a.length) +return a[b]}, +$iu:1} +A.dv.prototype={ +gC(a){return B.au}, +i(a,b){A.aA(b,a,a.length) +return a[b]}, +$iu:1} +A.dw.prototype={ +gC(a){return B.av}, +i(a,b){A.aA(b,a,a.length) +return a[b]}, +$iu:1} +A.c_.prototype={ +gC(a){return B.aw}, +gh(a){return a.length}, +i(a,b){A.aA(b,a,a.length) +return a[b]}, +$iu:1} +A.c0.prototype={ +gC(a){return B.ax}, +gh(a){return a.length}, +i(a,b){A.aA(b,a,a.length) +return a[b]}, +$iu:1, +$ib6:1} +A.ce.prototype={} +A.cf.prototype={} +A.cg.prototype={} +A.ch.prototype={} +A.W.prototype={ +k(a){return A.cu(v.typeUniverse,this,a)}, +G(a){return A.jQ(v.typeUniverse,this,a)}} +A.el.prototype={} +A.hL.prototype={ +j(a){return A.T(this.a,null)}} +A.eh.prototype={ +j(a){return this.a}} +A.cq.prototype={$iav:1} +A.h9.prototype={ +$1(a){var s=this.a,r=s.a +s.a=null +r.$0()}, +$S:8} +A.h8.prototype={ +$1(a){var s,r +this.a.a=a +s=this.b +r=this.c +s.firstChild?s.removeChild(r):s.appendChild(r)}, +$S:26} +A.ha.prototype={ +$0(){this.a.$0()}, +$S:7} +A.hb.prototype={ +$0(){this.a.$0()}, +$S:7} +A.hJ.prototype={ +bS(a,b){if(self.setTimeout!=null)self.setTimeout(A.bb(new A.hK(this,b),0),a) +else throw A.b(A.r("`setTimeout()` not found."))}} +A.hK.prototype={ +$0(){this.b.$0()}, +$S:0} +A.e4.prototype={ +ak(a,b){var s,r=this +if(b==null)b=r.$ti.c.a(b) +if(!r.b)r.a.b_(b) +else{s=r.a +if(r.$ti.k("aJ<1>").b(b))s.b1(b) +else s.aB(b)}}, +am(a,b){var s=this.a +if(this.b)s.a0(a,b) +else s.b0(a,b)}} +A.hT.prototype={ +$1(a){return this.a.$2(0,a)}, +$S:4} +A.hU.prototype={ +$2(a,b){this.a.$2(1,new A.bM(a,b))}, +$S:29} +A.i6.prototype={ +$2(a,b){this.a(a,b)}, +$S:32} +A.cN.prototype={ +j(a){return A.p(this.a)}, +$iz:1, +gac(){return this.b}} +A.c7.prototype={ +am(a,b){var s +A.fe(a,"error",t.K) +s=this.a +if((s.a&30)!==0)throw A.b(A.dJ("Future already completed")) +if(b==null)b=A.j7(a) +s.b0(a,b)}, +al(a){return this.am(a,null)}} +A.b8.prototype={ +ak(a,b){var s=this.a +if((s.a&30)!==0)throw A.b(A.dJ("Future already completed")) +s.b_(b)}} +A.bw.prototype={ +cF(a){if((this.c&15)!==6)return!0 +return this.b.b.aW(this.d,a.a)}, +cB(a){var s,r=this.e,q=null,p=a.a,o=this.b.b +if(t.C.b(r))q=o.cN(r,p,a.b) +else q=o.aW(r,p) +try{p=q +return p}catch(s){if(t.n.b(A.ai(s))){if((this.c&1)!==0)throw A.b(A.aE("The error handler of Future.then must return a value of the returned future's type","onError")) +throw A.b(A.aE("The error handler of Future.catchError must return a value of the future's type","onError"))}else throw s}}} +A.I.prototype={ +b9(a){this.a=this.a&1|4 +this.c=a}, +aX(a,b,c){var s,r,q=$.C +if(q===B.c){if(b!=null&&!t.C.b(b)&&!t.w.b(b))throw A.b(A.is(b,"onError",u.c))}else if(b!=null)b=A.mM(b,q) +s=new A.I(q,c.k("I<0>")) +r=b==null?1:3 +this.az(new A.bw(s,r,a,b,this.$ti.k("@<1>").G(c).k("bw<1,2>"))) +return s}, +a7(a,b){return this.aX(a,null,b)}, +bb(a,b,c){var s=new A.I($.C,c.k("I<0>")) +this.az(new A.bw(s,19,a,b,this.$ti.k("@<1>").G(c).k("bw<1,2>"))) +return s}, +cd(a){this.a=this.a&1|16 +this.c=a}, +ad(a){this.a=a.a&30|this.a&1 +this.c=a.c}, +az(a){var s=this,r=s.a +if(r<=3){a.a=s.c +s.c=a}else{if((r&4)!==0){r=s.c +if((r.a&24)===0){r.az(a) +return}s.ad(r)}A.ba(null,null,s.b,new A.hh(s,a))}}, +aJ(a){var s,r,q,p,o,n=this,m={} +m.a=a +if(a==null)return +s=n.a +if(s<=3){r=n.c +n.c=a +if(r!=null){q=a.a +for(p=a;q!=null;p=q,q=o)o=q.a +p.a=r}}else{if((s&4)!==0){s=n.c +if((s.a&24)===0){s.aJ(a) +return}n.ad(s)}m.a=n.af(a) +A.ba(null,null,n.b,new A.ho(m,n))}}, +aK(){var s=this.c +this.c=null +return this.af(s)}, +af(a){var s,r,q +for(s=a,r=null;s!=null;r=s,s=q){q=s.a +s.a=r}return r}, +bW(a){var s,r,q,p=this +p.a^=2 +try{a.aX(new A.hl(p),new A.hm(p),t.P)}catch(q){s=A.ai(q) +r=A.aU(q) +A.np(new A.hn(p,s,r))}}, +aB(a){var s=this,r=s.aK() +s.a=8 +s.c=a +A.ca(s,r)}, +a0(a,b){var s=this.aK() +this.cd(A.fj(a,b)) +A.ca(this,s)}, +b_(a){if(this.$ti.k("aJ<1>").b(a)){this.b1(a) +return}this.bV(a)}, +bV(a){this.a^=2 +A.ba(null,null,this.b,new A.hj(this,a))}, +b1(a){if(this.$ti.b(a)){A.lB(a,this) +return}this.bW(a)}, +b0(a,b){this.a^=2 +A.ba(null,null,this.b,new A.hi(this,a,b))}, +$iaJ:1} +A.hh.prototype={ +$0(){A.ca(this.a,this.b)}, +$S:0} +A.ho.prototype={ +$0(){A.ca(this.b,this.a.a)}, +$S:0} +A.hl.prototype={ +$1(a){var s,r,q,p=this.a +p.a^=2 +try{p.aB(p.$ti.c.a(a))}catch(q){s=A.ai(q) +r=A.aU(q) +p.a0(s,r)}}, +$S:8} +A.hm.prototype={ +$2(a,b){this.a.a0(a,b)}, +$S:27} +A.hn.prototype={ +$0(){this.a.a0(this.b,this.c)}, +$S:0} +A.hk.prototype={ +$0(){A.jF(this.a.a,this.b)}, +$S:0} +A.hj.prototype={ +$0(){this.a.aB(this.b)}, +$S:0} +A.hi.prototype={ +$0(){this.a.a0(this.b,this.c)}, +$S:0} +A.hr.prototype={ +$0(){var s,r,q,p,o,n,m=this,l=null +try{q=m.a.a +l=q.b.b.cL(q.d)}catch(p){s=A.ai(p) +r=A.aU(p) +q=m.c&&m.b.a.c.a===s +o=m.a +if(q)o.c=m.b.a.c +else o.c=A.fj(s,r) +o.b=!0 +return}if(l instanceof A.I&&(l.a&24)!==0){if((l.a&16)!==0){q=m.a +q.c=l.c +q.b=!0}return}if(l instanceof A.I){n=m.b.a +q=m.a +q.c=l.a7(new A.hs(n),t.z) +q.b=!1}}, +$S:0} +A.hs.prototype={ +$1(a){return this.a}, +$S:28} +A.hq.prototype={ +$0(){var s,r,q,p,o +try{q=this.a +p=q.a +q.c=p.b.b.aW(p.d,this.b)}catch(o){s=A.ai(o) +r=A.aU(o) +q=this.a +q.c=A.fj(s,r) +q.b=!0}}, +$S:0} +A.hp.prototype={ +$0(){var s,r,q,p,o,n,m=this +try{s=m.a.a.c +p=m.b +if(p.a.cF(s)&&p.a.e!=null){p.c=p.a.cB(s) +p.b=!1}}catch(o){r=A.ai(o) +q=A.aU(o) +p=m.a.a.c +n=m.b +if(p.a===r)n.c=p +else n.c=A.fj(r,q) +n.b=!0}}, +$S:0} +A.e5.prototype={} +A.eO.prototype={} +A.hS.prototype={} +A.i4.prototype={ +$0(){A.l2(this.a,this.b)}, +$S:0} +A.hw.prototype={ +cP(a){var s,r,q +try{if(B.c===$.C){a.$0() +return}A.k6(null,null,this,a)}catch(q){s=A.ai(q) +r=A.aU(q) +A.i3(s,r)}}, +cR(a,b){var s,r,q +try{if(B.c===$.C){a.$1(b) +return}A.k7(null,null,this,a,b)}catch(q){s=A.ai(q) +r=A.aU(q) +A.i3(s,r)}}, +cS(a,b){return this.cR(a,b,t.z)}, +bi(a){return new A.hx(this,a)}, +cm(a,b){return new A.hy(this,a,b)}, +cM(a){if($.C===B.c)return a.$0() +return A.k6(null,null,this,a)}, +cL(a){return this.cM(a,t.z)}, +cQ(a,b){if($.C===B.c)return a.$1(b) +return A.k7(null,null,this,a,b)}, +aW(a,b){return this.cQ(a,b,t.z,t.z)}, +cO(a,b,c){if($.C===B.c)return a.$2(b,c) +return A.mN(null,null,this,a,b,c)}, +cN(a,b,c){return this.cO(a,b,c,t.z,t.z,t.z)}, +cJ(a){return a}, +by(a){return this.cJ(a,t.z,t.z,t.z)}} +A.hx.prototype={ +$0(){return this.a.cP(this.b)}, +$S:0} +A.hy.prototype={ +$1(a){return this.a.cS(this.b,a)}, +$S(){return this.c.k("~(0)")}} +A.cb.prototype={ +gA(a){var s=new A.cc(this,this.r) +s.c=this.e +return s}, +gh(a){return this.a}, +E(a,b){var s,r +if(b!=="__proto__"){s=this.b +if(s==null)return!1 +return s[b]!=null}else{r=this.c_(b) +return r}}, +c_(a){var s=this.d +if(s==null)return!1 +return this.aG(s[this.aC(a)],a)>=0}, +u(a,b){var s,r,q=this +if(typeof b=="string"&&b!=="__proto__"){s=q.b +return q.b2(s==null?q.b=A.iG():s,b)}else if(typeof b=="number"&&(b&1073741823)===b){r=q.c +return q.b2(r==null?q.c=A.iG():r,b)}else return q.bT(0,b)}, +bT(a,b){var s,r,q=this,p=q.d +if(p==null)p=q.d=A.iG() +s=q.aC(b) +r=p[s] +if(r==null)p[s]=[q.aA(b)] +else{if(q.aG(r,b)>=0)return!1 +r.push(q.aA(b))}return!0}, +a5(a,b){var s +if(b!=="__proto__")return this.c8(this.b,b) +else{s=this.c7(0,b) +return s}}, +c7(a,b){var s,r,q,p,o=this,n=o.d +if(n==null)return!1 +s=o.aC(b) +r=n[s] +q=o.aG(r,b) +if(q<0)return!1 +p=r.splice(q,1)[0] +if(0===r.length)delete n[s] +o.be(p) +return!0}, +b2(a,b){if(a[b]!=null)return!1 +a[b]=this.aA(b) +return!0}, +c8(a,b){var s +if(a==null)return!1 +s=a[b] +if(s==null)return!1 +this.be(s) +delete a[b] +return!0}, +b3(){this.r=this.r+1&1073741823}, +aA(a){var s,r=this,q=new A.hu(a) +if(r.e==null)r.e=r.f=q +else{s=r.f +s.toString +q.c=s +r.f=s.b=q}++r.a +r.b3() +return q}, +be(a){var s=this,r=a.c,q=a.b +if(r==null)s.e=q +else r.b=q +if(q==null)s.f=r +else q.c=r;--s.a +s.b3()}, +aC(a){return J.aj(a)&1073741823}, +aG(a,b){var s,r +if(a==null)return-1 +s=a.length +for(r=0;r").G(b).k("ak<1,2>"))}, +cv(a,b,c,d){var s +A.b3(b,c,this.gh(a)) +for(s=b;s"))}return new A.er(this)}, +l(a,b,c){var s,r,q=this +if(q.b==null)q.c.l(0,b,c) +else if(q.a4(0,b)){s=q.b +s[b]=c +r=q.a +if(r==null?s!=null:r!==s)r[b]=null}else q.ci().l(0,b,c)}, +a4(a,b){if(this.b==null)return this.c.a4(0,b) +return Object.prototype.hasOwnProperty.call(this.a,b)}, +v(a,b){var s,r,q,p,o=this +if(o.b==null)return o.c.v(0,b) +s=o.a1() +for(r=0;r=0){g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(f) +if(g===k)continue +k=g}else{if(f===-1){if(o<0){e=p==null?null:p.a.length +if(e==null)e=0 +o=e+(r-q) +n=r}++m +if(k===61)continue}k=g}if(f!==-2){if(p==null){p=new A.O("") +e=p}else e=p +e.a+=B.a.m(a1,q,r) +e.a+=A.ar(k) +q=l +continue}}throw A.b(A.N("Invalid base64 data",a1,r))}if(p!=null){e=p.a+=B.a.m(a1,q,a3) +d=e.length +if(o>=0)A.j8(a1,n,a3,o,m,d) +else{c=B.d.au(d-1,4)+1 +if(c===1)throw A.b(A.N(a,a1,a3)) +for(;c<4;){e+="=" +p.a=e;++c}}e=p.a +return B.a.Z(a1,a2,a3,e.charCodeAt(0)==0?e:e)}b=a3-a2 +if(o>=0)A.j8(a1,n,a3,o,m,b) +else{c=B.d.au(b,4) +if(c===1)throw A.b(A.N(a,a1,a3)) +if(c>1)a1=B.a.Z(a1,a3,a3,c===2?"==":"=")}return a1}} +A.fm.prototype={} +A.cW.prototype={} +A.cY.prototype={} +A.fr.prototype={} +A.fx.prototype={ +j(a){return"unknown"}} +A.fw.prototype={ +X(a){var s=this.c0(a,0,a.length) +return s==null?a:s}, +c0(a,b,c){var s,r,q,p +for(s=b,r=null;s":q=">" +break +case"/":q="/" +break +default:q=null}if(q!=null){if(r==null)r=new A.O("") +if(s>b)r.a+=B.a.m(a,b,s) +r.a+=q +b=s+1}}if(r==null)return null +if(c>b)r.a+=B.a.m(a,b,c) +p=r.a +return p.charCodeAt(0)==0?p:p}} +A.fH.prototype={ +cr(a,b,c){var s=A.mK(b,this.gct().a) +return s}, +gct(){return B.P}} +A.fI.prototype={} +A.h2.prototype={} +A.h6.prototype={ +X(a){var s,r,q,p=A.b3(0,null,a.length),o=p-0 +if(o===0)return new Uint8Array(0) +s=o*3 +r=new Uint8Array(s) +q=new A.hP(r) +if(q.c3(a,0,p)!==p)q.aM() +return new Uint8Array(r.subarray(0,A.mk(0,q.b,s)))}} +A.hP.prototype={ +aM(){var s=this,r=s.c,q=s.b,p=s.b=q+1 +r[q]=239 +q=s.b=p+1 +r[p]=191 +s.b=q+1 +r[q]=189}, +cj(a,b){var s,r,q,p,o=this +if((b&64512)===56320){s=65536+((a&1023)<<10)|b&1023 +r=o.c +q=o.b +p=o.b=q+1 +r[q]=s>>>18|240 +q=o.b=p+1 +r[p]=s>>>12&63|128 +p=o.b=q+1 +r[q]=s>>>6&63|128 +o.b=p+1 +r[p]=s&63|128 +return!0}else{o.aM() +return!1}}, +c3(a,b,c){var s,r,q,p,o,n,m,l=this +if(b!==c&&(a.charCodeAt(c-1)&64512)===55296)--c +for(s=l.c,r=s.length,q=b;q=r)break +l.b=o+1 +s[o]=p}else{o=p&64512 +if(o===55296){if(l.b+4>r)break +n=q+1 +if(l.cj(p,a.charCodeAt(n)))q=n}else if(o===56320){if(l.b+3>r)break +l.aM()}else if(p<=2047){o=l.b +m=o+1 +if(m>=r)break +l.b=m +s[o]=p>>>6|192 +l.b=m+1 +s[m]=p&63|128}else{o=l.b +if(o+2>=r)break +m=l.b=o+1 +s[o]=p>>>12|224 +o=l.b=m+1 +s[m]=p>>>6&63|128 +l.b=o+1 +s[o]=p&63|128}}}return q}} +A.h3.prototype={ +X(a){var s=this.a,r=A.lu(s,a,0,null) +if(r!=null)return r +return new A.hO(s).cp(a,0,null,!0)}} +A.hO.prototype={ +cp(a,b,c,d){var s,r,q,p,o=this,n=A.b3(b,c,J.aW(a)) +if(b===n)return"" +s=A.ma(a,b,n) +r=o.aD(s,0,n-b,!0) +q=o.b +if((q&1)!==0){p=A.mb(q) +o.b=0 +throw A.b(A.N(p,a,b+o.c))}return r}, +aD(a,b,c,d){var s,r,q=this +if(c-b>1000){s=B.d.cf(b+c,2) +r=q.aD(a,b,s,!1) +if((q.b&1)!==0)return r +return r+q.aD(a,s,c,d)}return q.cs(a,b,c,d)}, +cs(a,b,c,d){var s,r,q,p,o,n,m,l=this,k=65533,j=l.b,i=l.c,h=new A.O(""),g=b+1,f=a[b] +$label0$0:for(s=l.a;!0;){for(;!0;g=p){r="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHIHHHJEEBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBKCCCCCCCCCCCCDCLONNNMEEEEEEEEEEE".charCodeAt(f)&31 +i=j<=32?f&61694>>>r:(f&63|i<<6)>>>0 +j=" \x000:XECCCCCN:lDb \x000:XECCCCCNvlDb \x000:XECCCCCN:lDb AAAAA\x00\x00\x00\x00\x00AAAAA00000AAAAA:::::AAAAAGG000AAAAA00KKKAAAAAG::::AAAAA:IIIIAAAAA000\x800AAAAA\x00\x00\x00\x00 AAAAA".charCodeAt(j+r) +if(j===0){h.a+=A.ar(i) +if(g===c)break $label0$0 +break}else if((j&1)!==0){if(s)switch(j){case 69:case 67:h.a+=A.ar(k) +break +case 65:h.a+=A.ar(k);--g +break +default:q=h.a+=A.ar(k) +h.a=q+A.ar(k) +break}else{l.b=j +l.c=g-1 +return""}j=0}if(g===c)break $label0$0 +p=g+1 +f=a[g]}p=g+1 +f=a[g] +if(f<128){while(!0){if(!(p=128){o=n-1 +p=n +break}p=n}if(o-g<20)for(m=g;m32)if(s)h.a+=A.ar(k) +else{l.b=77 +l.c=c +return""}l.b=j +l.c=i +s=h.a +return s.charCodeAt(0)==0?s:s}} +A.he.prototype={ +j(a){return this.b4()}} +A.z.prototype={ +gac(){return A.aU(this.$thrownJsError)}} +A.cL.prototype={ +j(a){var s=this.a +if(s!=null)return"Assertion failed: "+A.fs(s) +return"Assertion failed"}} +A.av.prototype={} +A.Z.prototype={ +gaF(){return"Invalid argument"+(!this.a?"(s)":"")}, +gaE(){return""}, +j(a){var s=this,r=s.c,q=r==null?"":" ("+r+")",p=s.d,o=p==null?"":": "+p,n=s.gaF()+q+o +if(!s.a)return n +return n+s.gaE()+": "+A.fs(s.gaR())}, +gaR(){return this.b}} +A.c3.prototype={ +gaR(){return this.b}, +gaF(){return"RangeError"}, +gaE(){var s,r=this.e,q=this.f +if(r==null)s=q!=null?": Not less than or equal to "+A.p(q):"" +else if(q==null)s=": Not greater than or equal to "+A.p(r) +else if(q>r)s=": Not in inclusive range "+A.p(r)+".."+A.p(q) +else s=qe.length +else s=!1 +if(s)f=null +if(f==null){if(e.length>78)e=B.a.m(e,0,75)+"..." +return g+"\n"+e}for(r=1,q=0,p=!1,o=0;o1?g+(" (at line "+r+", character "+(f-q+1)+")\n"):g+(" (at character "+(f+1)+")\n") +m=e.length +for(o=f;o78)if(f-q<75){l=q+75 +k=q +j="" +i="..."}else{if(m-f<75){k=m-75 +l=m +i=""}else{k=f-36 +l=f+36 +i="..."}j="..."}else{l=m +k=q +j="" +i=""}return g+j+B.a.m(e,k,l)+i+"\n"+B.a.bF(" ",f-k+j.length)+"^\n"}else return f!=null?g+(" (at offset "+A.p(f)+")"):g}} +A.x.prototype={ +ai(a,b){return A.kU(this,A.J(this).k("x.E"),b)}, +aq(a,b){return new A.ax(this,b,A.J(this).k("ax"))}, +gh(a){var s,r=this.gA(this) +for(s=0;r.n();)++s +return s}, +gV(a){var s,r=this.gA(this) +if(!r.n())throw A.b(A.iv()) +s=r.gq(r) +if(r.n())throw A.b(A.la()) +return s}, +p(a,b){var s,r +A.js(b,"index") +s=this.gA(this) +for(r=b;s.n();){if(r===0)return s.gq(s);--r}throw A.b(A.E(b,b-r,this,"index"))}, +j(a){return A.lb(this,"(",")")}} +A.F.prototype={ +gt(a){return A.t.prototype.gt.call(this,this)}, +j(a){return"null"}} +A.t.prototype={$it:1, +K(a,b){return this===b}, +gt(a){return A.dD(this)}, +j(a){return"Instance of '"+A.fS(this)+"'"}, +gC(a){return A.n6(this)}, +toString(){return this.j(this)}} +A.eR.prototype={ +j(a){return""}, +$iae:1} +A.O.prototype={ +gh(a){return this.a.length}, +j(a){var s=this.a +return s.charCodeAt(0)==0?s:s}} +A.h1.prototype={ +$2(a,b){var s,r,q,p=B.a.bs(b,"=") +if(p===-1){if(b!=="")J.fi(a,A.iP(b,0,b.length,this.a,!0),"")}else if(p!==0){s=B.a.m(b,0,p) +r=B.a.M(b,p+1) +q=this.a +J.fi(a,A.iP(s,0,s.length,q,!0),A.iP(r,0,r.length,q,!0))}return a}, +$S:37} +A.fZ.prototype={ +$2(a,b){throw A.b(A.N("Illegal IPv4 address, "+a,this.a,b))}, +$S:23} +A.h_.prototype={ +$2(a,b){throw A.b(A.N("Illegal IPv6 address, "+a,this.a,b))}, +$S:17} +A.h0.prototype={ +$2(a,b){var s +if(b-a>4)this.a.$2("an IPv6 part can only contain a maximum of 4 hex digits",a) +s=A.ik(B.a.m(this.b,a,b),16) +if(s<0||s>65535)this.a.$2("each part must be in the range of `0x0..0xFFFF`",a) +return s}, +$S:18} +A.cw.prototype={ +gah(){var s,r,q,p,o=this,n=o.w +if(n===$){s=o.a +r=s.length!==0?""+s+":":"" +q=o.c +p=q==null +if(!p||s==="file"){s=r+"//" +r=o.b +if(r.length!==0)s=s+r+"@" +if(!p)s+=q +r=o.d +if(r!=null)s=s+":"+A.p(r)}else s=r +s+=o.e +r=o.f +if(r!=null)s=s+"?"+r +r=o.r +if(r!=null)s=s+"#"+r +n!==$&&A.cF() +n=o.w=s.charCodeAt(0)==0?s:s}return n}, +gt(a){var s,r=this,q=r.y +if(q===$){s=B.a.gt(r.gah()) +r.y!==$&&A.cF() +r.y=s +q=s}return q}, +gaU(){var s,r=this,q=r.z +if(q===$){s=r.f +s=A.jB(s==null?"":s) +r.z!==$&&A.cF() +q=r.z=new A.bu(s,t.V)}return q}, +gbC(){return this.b}, +gaP(a){var s=this.c +if(s==null)return"" +if(B.a.B(s,"["))return B.a.m(s,1,s.length-1) +return s}, +gap(a){var s=this.d +return s==null?A.jR(this.a):s}, +gaT(a){var s=this.f +return s==null?"":s}, +gbm(){var s=this.r +return s==null?"":s}, +aV(a,b){var s,r,q,p,o=this,n=o.a,m=n==="file",l=o.b,k=o.d,j=o.c +if(!(j!=null))j=l.length!==0||k!=null||m?"":null +s=o.e +if(!m)r=j!=null&&s.length!==0 +else r=!0 +if(r&&!B.a.B(s,"/"))s="/"+s +q=s +p=A.iN(null,0,0,b) +return A.iL(n,l,j,k,q,p,o.r)}, +gbv(){if(this.a!==""){var s=this.r +s=(s==null?"":s)===""}else s=!1 +return s}, +gbo(){return this.c!=null}, +gbr(){return this.f!=null}, +gbp(){return this.r!=null}, +j(a){return this.gah()}, +K(a,b){var s,r,q=this +if(b==null)return!1 +if(q===b)return!0 +if(t.R.b(b))if(q.a===b.gav())if(q.c!=null===b.gbo())if(q.b===b.gbC())if(q.gaP(q)===b.gaP(b))if(q.gap(q)===b.gap(b))if(q.e===b.gbx(b)){s=q.f +r=s==null +if(!r===b.gbr()){if(r)s="" +if(s===b.gaT(b)){s=q.r +r=s==null +if(!r===b.gbp()){if(r)s="" +s=s===b.gbm()}else s=!1}else s=!1}else s=!1}else s=!1 +else s=!1 +else s=!1 +else s=!1 +else s=!1 +else s=!1 +else s=!1 +return s}, +$ie_:1, +gav(){return this.a}, +gbx(a){return this.e}} +A.hN.prototype={ +$2(a,b){var s=this.b,r=this.a +s.a+=r.a +r.a="&" +r=s.a+=A.jX(B.i,a,B.h,!0) +if(b!=null&&b.length!==0){s.a=r+"=" +s.a+=A.jX(B.i,b,B.h,!0)}}, +$S:19} +A.hM.prototype={ +$2(a,b){var s,r +if(b==null||typeof b=="string")this.a.$2(a,b) +else for(s=J.a2(b),r=this.a;s.n();)r.$2(a,s.gq(s))}, +$S:2} +A.fY.prototype={ +gbB(){var s,r,q,p,o=this,n=null,m=o.c +if(m==null){m=o.a +s=o.b[0]+1 +r=B.a.an(m,"?",s) +q=m.length +if(r>=0){p=A.cx(m,r+1,q,B.j,!1,!1) +q=r}else p=n +m=o.c=new A.eb("data","",n,n,A.cx(m,s,q,B.v,!1,!1),p,n)}return m}, +j(a){var s=this.a +return this.b[0]===-1?"data:"+s:s}} +A.hY.prototype={ +$2(a,b){var s=this.a[a] +B.ai.cv(s,0,96,b) +return s}, +$S:21} +A.hZ.prototype={ +$3(a,b,c){var s,r +for(s=b.length,r=0;r>>0]=c}, +$S:10} +A.eJ.prototype={ +gbo(){return this.c>0}, +gbq(){return this.c>0&&this.d+10&&this.r>=this.a.length}, +gav(){var s=this.w +return s==null?this.w=this.bZ():s}, +bZ(){var s,r=this,q=r.b +if(q<=0)return"" +s=q===4 +if(s&&B.a.B(r.a,"http"))return"http" +if(q===5&&B.a.B(r.a,"https"))return"https" +if(s&&B.a.B(r.a,"file"))return"file" +if(q===7&&B.a.B(r.a,"package"))return"package" +return B.a.m(r.a,0,q)}, +gbC(){var s=this.c,r=this.b+3 +return s>r?B.a.m(this.a,r,s-1):""}, +gaP(a){var s=this.c +return s>0?B.a.m(this.a,s,this.d):""}, +gap(a){var s,r=this +if(r.gbq())return A.ik(B.a.m(r.a,r.d+1,r.e),null) +s=r.b +if(s===4&&B.a.B(r.a,"http"))return 80 +if(s===5&&B.a.B(r.a,"https"))return 443 +return 0}, +gbx(a){return B.a.m(this.a,this.e,this.f)}, +gaT(a){var s=this.f,r=this.r +return s=s.r)return B.ah +return new A.bu(A.jB(s.gaT(s)),t.V)}, +aV(a,b){var s,r,q,p,o,n=this,m=null,l=n.gav(),k=l==="file",j=n.c,i=j>0?B.a.m(n.a,n.b+3,j):"",h=n.gbq()?n.gap(n):m +j=n.c +if(j>0)s=B.a.m(n.a,j,n.d) +else s=i.length!==0||h!=null||k?"":m +j=n.a +r=B.a.m(j,n.e,n.f) +if(!k)q=s!=null&&r.length!==0 +else q=!0 +if(q&&!B.a.B(r,"/"))r="/"+r +p=A.iN(m,0,0,b) +q=n.r +o=q>>0!==b||b>=s)throw A.b(A.E(b,s,a,null)) +return a[b]}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return a[b]}, +$if:1, +$io:1, +$ij:1} +A.bJ.prototype={ +j(a){var s,r=a.left +r.toString +s=a.top +s.toString +return"Rectangle ("+A.p(r)+", "+A.p(s)+") "+A.p(this.ga_(a))+" x "+A.p(this.gY(a))}, +K(a,b){var s,r +if(b==null)return!1 +if(t.q.b(b)){s=a.left +s.toString +r=b.left +r.toString +if(s===r){s=a.top +s.toString +r=b.top +r.toString +if(s===r){s=J.L(b) +s=this.ga_(a)===s.ga_(b)&&this.gY(a)===s.gY(b)}else s=!1}else s=!1}else s=!1 +return s}, +gt(a){var s,r=a.left +r.toString +s=a.top +s.toString +return A.iB(r,s,this.ga_(a),this.gY(a))}, +gb6(a){return a.height}, +gY(a){var s=this.gb6(a) +s.toString +return s}, +gbf(a){return a.width}, +ga_(a){var s=this.gbf(a) +s.toString +return s}, +$ib4:1} +A.d4.prototype={ +gh(a){return a.length}, +i(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.E(b,s,a,null)) +return a[b]}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return a[b]}, +$if:1, +$io:1, +$ij:1} +A.d5.prototype={ +gh(a){return a.length}} +A.q.prototype={ +gcl(a){return new A.ay(a)}, +gP(a){return new A.eg(a)}, +j(a){return a.localName}, +H(a,b,c,d){var s,r,q,p +if(c==null){s=$.jf +if(s==null){s=A.n([],t.Q) +r=new A.c1(s) +s.push(A.jG(null)) +s.push(A.jM()) +$.jf=r +d=r}else d=s +s=$.je +if(s==null){d.toString +s=new A.f2(d) +$.je=s +c=s}else{d.toString +s.a=d +c=s}}if($.aI==null){s=document +r=s.implementation.createHTMLDocument("") +$.aI=r +$.it=r.createRange() +r=$.aI.createElement("base") +t.B.a(r) +s=s.baseURI +s.toString +r.href=s +$.aI.head.appendChild(r)}s=$.aI +if(s.body==null){r=s.createElement("body") +s.body=t.Y.a(r)}s=$.aI +if(t.Y.b(a)){s=s.body +s.toString +q=s}else{s.toString +q=s.createElement(a.tagName) +$.aI.body.appendChild(q)}if("createContextualFragment" in window.Range.prototype&&!B.b.E(B.ac,a.tagName)){$.it.selectNodeContents(q) +s=$.it +p=s.createContextualFragment(b)}else{q.innerHTML=b +p=$.aI.createDocumentFragment() +for(;s=q.firstChild,s!=null;)p.appendChild(s)}if(q!==$.aI.body)J.j3(q) +c.a8(p) +document.adoptNode(p) +return p}, +cq(a,b,c){return this.H(a,b,c,null)}, +sI(a,b){this.aa(a,b)}, +ab(a,b,c){a.textContent=null +a.appendChild(this.H(a,b,c,null))}, +aa(a,b){return this.ab(a,b,null)}, +gI(a){return a.innerHTML}, +$iq:1} +A.fp.prototype={ +$1(a){return t.h.b(a)}, +$S:6} +A.h.prototype={$ih:1} +A.c.prototype={ +bg(a,b,c,d){if(c!=null)this.bU(a,b,c,d)}, +L(a,b,c){return this.bg(a,b,c,null)}, +bU(a,b,c,d){return a.addEventListener(b,A.bb(c,1),d)}} +A.a4.prototype={$ia4:1} +A.d6.prototype={ +gh(a){return a.length}, +i(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.E(b,s,a,null)) +return a[b]}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return a[b]}, +$if:1, +$io:1, +$ij:1} +A.d7.prototype={ +gh(a){return a.length}} +A.d9.prototype={ +gh(a){return a.length}} +A.a5.prototype={$ia5:1} +A.da.prototype={ +gh(a){return a.length}} +A.b0.prototype={ +gh(a){return a.length}, +i(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.E(b,s,a,null)) +return a[b]}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return a[b]}, +$if:1, +$io:1, +$ij:1} +A.bP.prototype={} +A.a6.prototype={ +cI(a,b,c,d){return a.open(b,c,!0)}, +$ia6:1} +A.fy.prototype={ +$1(a){var s=a.responseText +s.toString +return s}, +$S:24} +A.fz.prototype={ +$1(a){var s,r,q,p=this.a,o=p.status +o.toString +s=o>=200&&o<300 +r=o>307&&o<400 +o=s||o===0||o===304||r +q=this.b +if(o)q.ak(0,p) +else q.al(a)}, +$S:25} +A.b1.prototype={} +A.aK.prototype={$iaK:1} +A.bn.prototype={$ibn:1} +A.di.prototype={ +j(a){return String(a)}} +A.dj.prototype={ +gh(a){return a.length}} +A.dk.prototype={ +i(a,b){return A.aT(a.get(b))}, +v(a,b){var s,r=a.entries() +for(;!0;){s=r.next() +if(s.done)return +b.$2(s.value[0],A.aT(s.value[1]))}}, +gD(a){var s=A.n([],t.s) +this.v(a,new A.fM(s)) +return s}, +gh(a){return a.size}, +l(a,b,c){throw A.b(A.r("Not supported"))}, +$iy:1} +A.fM.prototype={ +$2(a,b){return this.a.push(a)}, +$S:2} +A.dl.prototype={ +i(a,b){return A.aT(a.get(b))}, +v(a,b){var s,r=a.entries() +for(;!0;){s=r.next() +if(s.done)return +b.$2(s.value[0],A.aT(s.value[1]))}}, +gD(a){var s=A.n([],t.s) +this.v(a,new A.fN(s)) +return s}, +gh(a){return a.size}, +l(a,b,c){throw A.b(A.r("Not supported"))}, +$iy:1} +A.fN.prototype={ +$2(a,b){return this.a.push(a)}, +$S:2} +A.a8.prototype={$ia8:1} +A.dm.prototype={ +gh(a){return a.length}, +i(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.E(b,s,a,null)) +return a[b]}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return a[b]}, +$if:1, +$io:1, +$ij:1} +A.M.prototype={ +gV(a){var s=this.a,r=s.childNodes.length +if(r===0)throw A.b(A.dJ("No elements")) +if(r>1)throw A.b(A.dJ("More than one element")) +s=s.firstChild +s.toString +return s}, +N(a,b){var s,r,q,p,o +if(b instanceof A.M){s=b.a +r=this.a +if(s!==r)for(q=s.childNodes.length,p=0;p>>0!==b||b>=s)throw A.b(A.E(b,s,a,null)) +return a[b]}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return a[b]}, +$if:1, +$io:1, +$ij:1} +A.aa.prototype={ +gh(a){return a.length}, +$iaa:1} +A.dB.prototype={ +gh(a){return a.length}, +i(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.E(b,s,a,null)) +return a[b]}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return a[b]}, +$if:1, +$io:1, +$ij:1} +A.as.prototype={$ias:1} +A.dE.prototype={ +i(a,b){return A.aT(a.get(b))}, +v(a,b){var s,r=a.entries() +for(;!0;){s=r.next() +if(s.done)return +b.$2(s.value[0],A.aT(s.value[1]))}}, +gD(a){var s=A.n([],t.s) +this.v(a,new A.fT(s)) +return s}, +gh(a){return a.size}, +l(a,b,c){throw A.b(A.r("Not supported"))}, +$iy:1} +A.fT.prototype={ +$2(a,b){return this.a.push(a)}, +$S:2} +A.dG.prototype={ +gh(a){return a.length}} +A.ab.prototype={$iab:1} +A.dH.prototype={ +gh(a){return a.length}, +i(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.E(b,s,a,null)) +return a[b]}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return a[b]}, +$if:1, +$io:1, +$ij:1} +A.ac.prototype={$iac:1} +A.dI.prototype={ +gh(a){return a.length}, +i(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.E(b,s,a,null)) +return a[b]}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return a[b]}, +$if:1, +$io:1, +$ij:1} +A.ad.prototype={ +gh(a){return a.length}, +$iad:1} +A.dL.prototype={ +i(a,b){return a.getItem(A.bA(b))}, +l(a,b,c){a.setItem(b,c)}, +v(a,b){var s,r,q +for(s=0;!0;++s){r=a.key(s) +if(r==null)return +q=a.getItem(r) +q.toString +b.$2(r,q)}}, +gD(a){var s=A.n([],t.s) +this.v(a,new A.fV(s)) +return s}, +gh(a){return a.length}, +$iy:1} +A.fV.prototype={ +$2(a,b){return this.a.push(a)}, +$S:5} +A.X.prototype={$iX:1} +A.c5.prototype={ +H(a,b,c,d){var s,r +if("createContextualFragment" in window.Range.prototype)return this.aw(a,b,c,d) +s=A.l0(""+b+"
",c,d) +r=document.createDocumentFragment() +new A.M(r).N(0,new A.M(s)) +return r}} +A.dN.prototype={ +H(a,b,c,d){var s,r +if("createContextualFragment" in window.Range.prototype)return this.aw(a,b,c,d) +s=document +r=s.createDocumentFragment() +s=new A.M(B.y.H(s.createElement("table"),b,c,d)) +s=new A.M(s.gV(s)) +new A.M(r).N(0,new A.M(s.gV(s))) +return r}} +A.dO.prototype={ +H(a,b,c,d){var s,r +if("createContextualFragment" in window.Range.prototype)return this.aw(a,b,c,d) +s=document +r=s.createDocumentFragment() +s=new A.M(B.y.H(s.createElement("table"),b,c,d)) +new A.M(r).N(0,new A.M(s.gV(s))) +return r}} +A.bs.prototype={ +ab(a,b,c){var s,r +a.textContent=null +s=a.content +s.toString +J.kH(s) +r=this.H(a,b,c,null) +a.content.appendChild(r)}, +aa(a,b){return this.ab(a,b,null)}, +$ibs:1} +A.b5.prototype={$ib5:1} +A.af.prototype={$iaf:1} +A.Y.prototype={$iY:1} +A.dQ.prototype={ +gh(a){return a.length}, +i(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.E(b,s,a,null)) +return a[b]}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return a[b]}, +$if:1, +$io:1, +$ij:1} +A.dR.prototype={ +gh(a){return a.length}, +i(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.E(b,s,a,null)) +return a[b]}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return a[b]}, +$if:1, +$io:1, +$ij:1} +A.dS.prototype={ +gh(a){return a.length}} +A.ag.prototype={$iag:1} +A.dT.prototype={ +gh(a){return a.length}, +i(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.E(b,s,a,null)) +return a[b]}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return a[b]}, +$if:1, +$io:1, +$ij:1} +A.dU.prototype={ +gh(a){return a.length}} +A.S.prototype={} +A.e1.prototype={ +j(a){return String(a)}} +A.e2.prototype={ +gh(a){return a.length}} +A.bv.prototype={$ibv:1} +A.e8.prototype={ +gh(a){return a.length}, +i(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.E(b,s,a,null)) +return a[b]}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return a[b]}, +$if:1, +$io:1, +$ij:1} +A.c8.prototype={ +j(a){var s,r,q,p=a.left +p.toString +s=a.top +s.toString +r=a.width +r.toString +q=a.height +q.toString +return"Rectangle ("+A.p(p)+", "+A.p(s)+") "+A.p(r)+" x "+A.p(q)}, +K(a,b){var s,r +if(b==null)return!1 +if(t.q.b(b)){s=a.left +s.toString +r=b.left +r.toString +if(s===r){s=a.top +s.toString +r=b.top +r.toString +if(s===r){s=a.width +s.toString +r=J.L(b) +if(s===r.ga_(b)){s=a.height +s.toString +r=s===r.gY(b) +s=r}else s=!1}else s=!1}else s=!1}else s=!1 +return s}, +gt(a){var s,r,q,p=a.left +p.toString +s=a.top +s.toString +r=a.width +r.toString +q=a.height +q.toString +return A.iB(p,s,r,q)}, +gb6(a){return a.height}, +gY(a){var s=a.height +s.toString +return s}, +gbf(a){return a.width}, +ga_(a){var s=a.width +s.toString +return s}} +A.em.prototype={ +gh(a){return a.length}, +i(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.E(b,s,a,null)) +return a[b]}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return a[b]}, +$if:1, +$io:1, +$ij:1} +A.cd.prototype={ +gh(a){return a.length}, +i(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.E(b,s,a,null)) +return a[b]}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return a[b]}, +$if:1, +$io:1, +$ij:1} +A.eM.prototype={ +gh(a){return a.length}, +i(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.E(b,s,a,null)) +return a[b]}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return a[b]}, +$if:1, +$io:1, +$ij:1} +A.eS.prototype={ +gh(a){return a.length}, +i(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.E(b,s,a,null)) +return a[b]}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return a[b]}, +$if:1, +$io:1, +$ij:1} +A.e6.prototype={ +v(a,b){var s,r,q,p,o,n +for(s=this.gD(this),r=s.length,q=this.a,p=0;p0)p[r]=q[0].toUpperCase()+B.a.M(q,1)}return B.b.T(p,"")}, +S(a){var s,r,q,p,o +for(s=a.length,r=0,q="";r0?q+"-":q)+o}return q.charCodeAt(0)==0?q:q}} +A.hc.prototype={ +$2(a,b){if(B.a.B(a,"data-"))this.b.$2(this.a.bc(B.a.M(a,5)),b)}, +$S:5} +A.hd.prototype={ +$2(a,b){if(B.a.B(a,"data-"))this.b.push(this.a.bc(B.a.M(a,5)))}, +$S:5} +A.eg.prototype={ +R(){var s,r,q,p,o=A.bT(t.N) +for(s=this.a.className.split(" "),r=s.length,q=0;q") +return}if(!l.a.W(a)){l.a2(a,b) +window +s=A.p(b) +if(typeof console!="undefined")window.console.warn("Removing disallowed element <"+e+"> from "+s) +return}if(g!=null)if(!l.a.O(a,"is",g)){l.a2(a,b) +window +if(typeof console!="undefined")window.console.warn("Removing disallowed type extension <"+e+' is="'+g+'">') +return}s=f.gD(f) +r=A.n(s.slice(0),A.bz(s)) +for(q=f.gD(f).length-1,s=f.a,p="Removing disallowed attribute <"+e+" ";q>=0;--q){o=r[q] +n=l.a +m=J.kR(o) +A.bA(o) +if(!n.O(a,m,s.getAttribute(o))){window +n=s.getAttribute(o) +if(typeof console!="undefined")window.console.warn(p+o+'="'+A.p(n)+'">') +s.removeAttribute(o)}}if(t.f.b(a)){s=a.content +s.toString +l.a8(s)}}, +bG(a,b){switch(a.nodeType){case 1:this.cc(a,b) +break +case 8:case 11:case 3:case 4:break +default:this.a2(a,b)}}} +A.hR.prototype={ +$2(a,b){var s,r,q,p,o,n=this.a +n.bG(a,b) +s=a.lastChild +for(;s!=null;){r=null +try{r=s.previousSibling +if(r!=null){q=r.nextSibling +p=s +p=q==null?p!=null:q!==p +q=p}else q=!1 +if(q){q=A.dJ("Corrupt HTML") +throw A.b(q)}}catch(o){q=s;++n.b +p=q.parentNode +if(a!==p){if(p!=null)p.removeChild(q)}else a.removeChild(q) +s=null +r=a.lastChild}if(s!=null)this.$2(s,a) +s=r}}, +$S:31} +A.e9.prototype={} +A.ec.prototype={} +A.ed.prototype={} +A.ee.prototype={} +A.ef.prototype={} +A.ej.prototype={} +A.ek.prototype={} +A.eo.prototype={} +A.ep.prototype={} +A.ev.prototype={} +A.ew.prototype={} +A.ex.prototype={} +A.ey.prototype={} +A.ez.prototype={} +A.eA.prototype={} +A.eD.prototype={} +A.eE.prototype={} +A.eH.prototype={} +A.cl.prototype={} +A.cm.prototype={} +A.eK.prototype={} +A.eL.prototype={} +A.eN.prototype={} +A.eV.prototype={} +A.eW.prototype={} +A.co.prototype={} +A.cp.prototype={} +A.eX.prototype={} +A.eY.prototype={} +A.f3.prototype={} +A.f4.prototype={} +A.f5.prototype={} +A.f6.prototype={} +A.f7.prototype={} +A.f8.prototype={} +A.f9.prototype={} +A.fa.prototype={} +A.fb.prototype={} +A.fc.prototype={} +A.cZ.prototype={ +aL(a){var s=$.kp() +if(s.b.test(a))return a +throw A.b(A.is(a,"value","Not a valid class token"))}, +j(a){return this.R().T(0," ")}, +aY(a,b){var s,r,q +this.aL(b) +s=this.R() +r=s.E(0,b) +if(!r){s.u(0,b) +q=!0}else{s.a5(0,b) +q=!1}this.ar(s) +return q}, +gA(a){var s=this.R() +return A.lE(s,s.r)}, +gh(a){return this.R().a}, +u(a,b){var s +this.aL(b) +s=this.cG(0,new A.fn(b)) +return s==null?!1:s}, +a5(a,b){var s,r +this.aL(b) +s=this.R() +r=s.a5(0,b) +this.ar(s) +return r}, +p(a,b){return this.R().p(0,b)}, +cG(a,b){var s=this.R(),r=b.$1(s) +this.ar(s) +return r}} +A.fn.prototype={ +$1(a){return a.u(0,this.a)}, +$S:45} +A.d8.prototype={ +gae(){var s=this.b,r=A.J(s) +return new A.ao(new A.ax(s,new A.ft(),r.k("ax")),new A.fu(),r.k("ao"))}, +l(a,b,c){var s=this.gae() +J.kQ(s.b.$1(J.cH(s.a,b)),c)}, +gh(a){return J.aW(this.gae().a)}, +i(a,b){var s=this.gae() +return s.b.$1(J.cH(s.a,b))}, +gA(a){var s=A.jn(this.gae(),!1,t.h) +return new J.bf(s,s.length)}} +A.ft.prototype={ +$1(a){return t.h.b(a)}, +$S:6} +A.fu.prototype={ +$1(a){return t.h.a(a)}, +$S:33} +A.io.prototype={ +$1(a){return this.a.ak(0,a)}, +$S:4} +A.ip.prototype={ +$1(a){if(a==null)return this.a.al(new A.fQ(a===undefined)) +return this.a.al(a)}, +$S:4} +A.fQ.prototype={ +j(a){return"Promise was rejected with a value of `"+(this.a?"undefined":"null")+"`."}} +A.am.prototype={$iam:1} +A.df.prototype={ +gh(a){return a.length}, +i(a,b){if(b>>>0!==b||b>=a.length)throw A.b(A.E(b,this.gh(a),a,null)) +return a.getItem(b)}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return this.i(a,b)}, +$if:1, +$ij:1} +A.aq.prototype={$iaq:1} +A.dx.prototype={ +gh(a){return a.length}, +i(a,b){if(b>>>0!==b||b>=a.length)throw A.b(A.E(b,this.gh(a),a,null)) +return a.getItem(b)}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return this.i(a,b)}, +$if:1, +$ij:1} +A.dC.prototype={ +gh(a){return a.length}} +A.bq.prototype={$ibq:1} +A.dM.prototype={ +gh(a){return a.length}, +i(a,b){if(b>>>0!==b||b>=a.length)throw A.b(A.E(b,this.gh(a),a,null)) +return a.getItem(b)}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return this.i(a,b)}, +$if:1, +$ij:1} +A.cO.prototype={ +R(){var s,r,q,p,o=this.a.getAttribute("class"),n=A.bT(t.N) +if(o==null)return n +for(s=o.split(" "),r=s.length,q=0;q'+b+"",c) +p=s.createDocumentFragment() +s=new A.M(q) +o=s.gV(s) +for(;s=o.firstChild,s!=null;)p.appendChild(s) +return p}, +$ii:1} +A.au.prototype={$iau:1} +A.dV.prototype={ +gh(a){return a.length}, +i(a,b){if(b>>>0!==b||b>=a.length)throw A.b(A.E(b,this.gh(a),a,null)) +return a.getItem(b)}, +l(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +p(a,b){return this.i(a,b)}, +$if:1, +$ij:1} +A.es.prototype={} +A.et.prototype={} +A.eB.prototype={} +A.eC.prototype={} +A.eP.prototype={} +A.eQ.prototype={} +A.eZ.prototype={} +A.f_.prototype={} +A.cP.prototype={ +gh(a){return a.length}} +A.cQ.prototype={ +i(a,b){return A.aT(a.get(b))}, +v(a,b){var s,r=a.entries() +for(;!0;){s=r.next() +if(s.done)return +b.$2(s.value[0],A.aT(s.value[1]))}}, +gD(a){var s=A.n([],t.s) +this.v(a,new A.fk(s)) +return s}, +gh(a){return a.size}, +l(a,b,c){throw A.b(A.r("Not supported"))}, +$iy:1} +A.fk.prototype={ +$2(a,b){return this.a.push(a)}, +$S:2} +A.cR.prototype={ +gh(a){return a.length}} +A.aF.prototype={} +A.dy.prototype={ +gh(a){return a.length}} +A.e7.prototype={} +A.A.prototype={ +b4(){return"Kind."+this.b}, +j(a){var s +switch(this.a){case 0:s="accessor" +break +case 1:s="constant" +break +case 2:s="constructor" +break +case 3:s="class" +break +case 4:s="dynamic" +break +case 5:s="enum" +break +case 6:s="extension" +break +case 7:s="extension type" +break +case 8:s="function" +break +case 9:s="library" +break +case 10:s="method" +break +case 11:s="mixin" +break +case 12:s="Never" +break +case 13:s="package" +break +case 14:s="parameter" +break +case 15:s="prefix" +break +case 16:s="property" +break +case 17:s="SDK" +break +case 18:s="topic" +break +case 19:s="top-level constant" +break +case 20:s="top-level property" +break +case 21:s="typedef" +break +case 22:s="type parameter" +break +default:s=null}return s}} +A.Q.prototype={ +b4(){return"_MatchPosition."+this.b}} +A.fA.prototype={ +bl(a,b){var s,r,q,p,o,n,m,l,k,j,i,h,g=null +if(b.length===0)return A.n([],t.M) +s=b.toLowerCase() +r=A.n([],t.r) +for(q=this.a,p=q.length,o=s.length>1,n="dart:"+s,m=0;m") +m=new A.fA(A.jo(new A.ap(o,A.nq(),n),!0,n.k("a7.E"))) +l=A.e0(String(window.location)).gaU().i(0,"search") +if(l!=null){k=m.bl(0,l) +if(k.length!==0){j=B.b.gcw(k).e +if(j!=null){window.location.assign($.cG()+j) +s=1 +break}}}n=p.b +if(n!=null)A.iH(m).aQ(0,n) +n=p.c +if(n!=null)A.iH(m).aQ(0,n) +n=p.d +if(n!=null)A.iH(m).aQ(0,n) +case 1:return A.mh(q,r)}}) +return A.mi($async$$1,r)}, +$S:40} +A.hA.prototype={ +gU(){var s,r,q=this,p=q.c +if(p===$){s=document.createElement("div") +s.setAttribute("role","listbox") +s.setAttribute("aria-expanded","false") +r=s.style +r.display="none" +J.a1(s).u(0,"tt-menu") +s.appendChild(q.gbw()) +s.appendChild(q.ga9()) +q.c!==$&&A.cF() +q.c=s +p=s}return p}, +gbw(){var s,r=this.d +if(r===$){s=document.createElement("div") +J.a1(s).u(0,"enter-search-message") +this.d!==$&&A.cF() +this.d=s +r=s}return r}, +ga9(){var s,r=this.e +if(r===$){s=document.createElement("div") +J.a1(s).u(0,"tt-search-results") +this.e!==$&&A.cF() +this.e=s +r=s}return r}, +aQ(a,b){var s,r,q,p=this +b.disabled=!1 +b.setAttribute("placeholder","Search API Docs") +s=document +B.K.L(s,"keydown",new A.hB(b)) +r=s.createElement("div") +J.a1(r).u(0,"tt-wrapper") +B.f.bz(b,r) +b.setAttribute("autocomplete","off") +b.setAttribute("spellcheck","false") +b.classList.add("tt-input") +r.appendChild(b) +r.appendChild(p.gU()) +p.bI(b) +if(B.a.E(window.location.href,"search.html")){q=p.b.gaU().i(0,"q") +if(q==null)return +q=B.o.X(q) +$.iV=$.i5 +p.cD(q,!0) +p.bJ(q) +p.aO() +$.iV=10}}, +bJ(a){var s,r,q,p,o,n="search-summary",m=document,l=m.getElementById("dartdoc-main-content") +if(l==null)return +l.textContent="" +s=m.createElement("section") +J.a1(s).u(0,n) +l.appendChild(s) +s=m.createElement("h2") +J.j4(s,"Search Results") +l.appendChild(s) +s=m.createElement("div") +r=J.L(s) +r.gP(s).u(0,n) +r.sI(s,""+$.i5+' results for "'+a+'"') +l.appendChild(s) +if($.b9.a!==0)for(m=$.b9.gbD($.b9),m=new A.bW(J.a2(m.a),m.b),s=A.J(m).z[1];m.n();){r=m.a +l.appendChild(r==null?s.a(r):r)}else{q=m.createElement("div") +s=J.L(q) +s.gP(q).u(0,n) +s.sI(q,'There was not a match for "'+a+'". Want to try searching from additional Dart-related sites? ') +p=A.e0("https://dart.dev/search?cx=011220921317074318178%3A_yy-tmb5t_i&ie=UTF-8&hl=en&q=").aV(0,A.jk(["q",a],t.N,t.z)) +o=m.createElement("a") +o.setAttribute("href",p.gah()) +o.textContent="Search on dart.dev." +q.appendChild(o) +l.appendChild(q)}}, +aO(){var s=this.gU(),r=s.style +r.display="none" +s.setAttribute("aria-expanded","false") +return s}, +bA(a,b,c){var s,r,q,p,o=this +o.x=A.n([],t.M) +s=o.w +B.b.aj(s) +$.b9.aj(0) +o.ga9().textContent="" +r=b.length +if(r===0){o.aO() +return}for(q=0;q10?'Press "Enter" key to see all '+p+" results":""}, +cV(a,b){return this.bA(a,b,!1)}, +aN(a,b,c){var s,r,q,p=this +if(p.r===a&&!b)return +if(a==null||a.length===0){p.cV("",A.n([],t.M)) +return}s=p.a.bl(0,a) +r=s.length +$.i5=r +q=$.iV +if(r>q)s=B.b.bL(s,0,q) +p.r=a +p.bA(a,s,c)}, +cD(a,b){return this.aN(a,!1,b)}, +bn(a){return this.aN(a,!1,!1)}, +cC(a,b){return this.aN(a,b,!1)}, +bj(a){var s,r=this +r.y=-1 +s=r.f +if(s!=null){a.value=s +r.f=null}r.aO()}, +bI(a){var s=this +B.f.L(a,"focus",new A.hC(s,a)) +B.f.L(a,"blur",new A.hD(s,a)) +B.f.L(a,"input",new A.hE(s,a)) +B.f.L(a,"keydown",new A.hF(s,a))}} +A.hB.prototype={ +$1(a){if(!t.v.b(a))return +if(a.key==="/"&&!t.p.b(document.activeElement)){a.preventDefault() +this.a.focus()}}, +$S:1} +A.hC.prototype={ +$1(a){this.a.cC(this.b.value,!0)}, +$S:1} +A.hD.prototype={ +$1(a){this.a.bj(this.b)}, +$S:1} +A.hE.prototype={ +$1(a){this.a.bn(this.b.value)}, +$S:1} +A.hF.prototype={ +$1(a){var s,r,q,p,o,n,m,l,k,j,i,h,g,f=this,e="tt-cursor" +if(a.type!=="keydown")return +t.v.a(a) +s=a.code +if(s==="Enter"){a.preventDefault() +s=f.a +r=s.y +if(r!==-1){s=s.w[r] +q=s.getAttribute("data-"+new A.aQ(new A.ay(s)).S("href")) +if(q!=null)window.location.assign($.cG()+q) +return}else{p=B.o.X(s.r) +o=A.e0($.cG()+"search.html").aV(0,A.jk(["q",p],t.N,t.z)) +window.location.assign(o.gah()) +return}}r=f.a +n=r.w +m=n.length-1 +l=r.y +if(s==="ArrowUp")if(l===-1)r.y=m +else r.y=l-1 +else if(s==="ArrowDown")if(l===m)r.y=-1 +else r.y=l+1 +else if(s==="Escape")r.bj(f.b) +else{if(r.f!=null){r.f=null +r.bn(f.b.value)}return}s=l!==-1 +if(s)J.a1(n[l]).a5(0,e) +k=r.y +if(k!==-1){j=n[k] +J.a1(j).u(0,e) +s=r.y +if(s===0)r.gU().scrollTop=0 +else if(s===m)r.gU().scrollTop=B.d.a6(B.e.a6(r.gU().scrollHeight)) +else{i=B.e.a6(j.offsetTop) +h=B.e.a6(r.gU().offsetHeight) +if(i"+A.p(a.i(0,0))+""}, +$S:42} +A.ih.prototype={ +$1(a){var s=this.a +if(s!=null)J.a1(s).aY(0,"active") +s=this.b +if(s!=null)J.a1(s).aY(0,"active")}, +$S:11} +A.id.prototype={ +$1(a){var s="dark-theme",r="colorTheme",q="light-theme",p=this.a,o=this.b +if(p.checked===!0){o.setAttribute("class",s) +p.setAttribute("value",s) +window.localStorage.setItem(r,"true")}else{o.setAttribute("class",q) +p.setAttribute("value",q) +window.localStorage.setItem(r,"false")}}, +$S:1};(function aliases(){var s=J.bj.prototype +s.bM=s.j +s=J.aM.prototype +s.bO=s.j +s=A.x.prototype +s.bN=s.aq +s=A.q.prototype +s.aw=s.H +s=A.ck.prototype +s.bP=s.O})();(function installTearOffs(){var s=hunkHelpers._static_2,r=hunkHelpers._static_1,q=hunkHelpers._static_0,p=hunkHelpers.installInstanceTearOff,o=hunkHelpers.installStaticTearOff,n=hunkHelpers._instance_1u +s(J,"mv","lf",43) +r(A,"mX","lx",3) +r(A,"mY","ly",3) +r(A,"mZ","lz",3) +q(A,"kd","mP",0) +p(A.c7.prototype,"gcn",0,1,null,["$2","$1"],["am","al"],22,0,0) +o(A,"n8",4,null,["$4"],["lC"],14,0) +o(A,"n9",4,null,["$4"],["lD"],14,0) +r(A,"nq","l6",30) +n(A.eI.prototype,"gbH","a8",38)})();(function inheritance(){var s=hunkHelpers.mixin,r=hunkHelpers.inherit,q=hunkHelpers.inheritMany +r(A.t,null) +q(A.t,[A.iy,J.bj,J.bf,A.x,A.cS,A.z,A.e,A.fU,A.bU,A.bW,A.e3,A.bN,A.dY,A.ci,A.bG,A.fW,A.fR,A.bM,A.cn,A.aG,A.v,A.fJ,A.dg,A.fE,A.eu,A.h7,A.W,A.el,A.hL,A.hJ,A.e4,A.cN,A.c7,A.bw,A.I,A.e5,A.eO,A.hS,A.at,A.hu,A.cc,A.f1,A.bV,A.cW,A.cY,A.fx,A.hP,A.hO,A.he,A.dz,A.c4,A.hg,A.fv,A.F,A.eR,A.O,A.cw,A.fY,A.eJ,A.fo,A.iu,A.ei,A.bx,A.D,A.c1,A.ck,A.eT,A.bO,A.hz,A.f2,A.fQ,A.fA,A.K,A.fq,A.eI,A.hA]) +q(J.bj,[J.dc,J.bR,J.a,J.bl,J.bm,J.bk,J.aL]) +q(J.a,[J.aM,J.B,A.dn,A.bZ,A.c,A.cI,A.bF,A.a_,A.w,A.e9,A.P,A.d2,A.d3,A.ec,A.bJ,A.ee,A.d5,A.h,A.ej,A.a5,A.da,A.eo,A.di,A.dj,A.ev,A.ew,A.a8,A.ex,A.ez,A.aa,A.eD,A.eH,A.ac,A.eK,A.ad,A.eN,A.X,A.eV,A.dS,A.ag,A.eX,A.dU,A.e1,A.f3,A.f5,A.f7,A.f9,A.fb,A.am,A.es,A.aq,A.eB,A.dC,A.eP,A.au,A.eZ,A.cP,A.e7]) +q(J.aM,[J.dA,J.b7,J.al]) +r(J.fF,J.B) +q(J.bk,[J.bQ,J.dd]) +q(A.x,[A.aP,A.f,A.ao,A.ax]) +q(A.aP,[A.aY,A.cy]) +r(A.c9,A.aY) +r(A.c6,A.cy) +r(A.ak,A.c6) +q(A.z,[A.bS,A.av,A.de,A.dX,A.ea,A.dF,A.eh,A.cL,A.Z,A.dZ,A.dW,A.br,A.cX]) +q(A.e,[A.bt,A.M,A.d8]) +r(A.cV,A.bt) +q(A.f,[A.a7,A.an]) +r(A.bK,A.ao) +q(A.a7,[A.ap,A.er]) +r(A.eF,A.ci) +r(A.eG,A.eF) +r(A.bH,A.bG) +r(A.c2,A.av) +q(A.aG,[A.cT,A.cU,A.dP,A.fG,A.ia,A.ic,A.h9,A.h8,A.hT,A.hl,A.hs,A.hy,A.hZ,A.i_,A.fp,A.fy,A.fz,A.hf,A.fP,A.fO,A.hG,A.hH,A.hI,A.fn,A.ft,A.fu,A.io,A.ip,A.fD,A.fC,A.ii,A.ij,A.ie,A.hB,A.hC,A.hD,A.hE,A.hF,A.hW,A.hX,A.i0,A.ih,A.id]) +q(A.dP,[A.dK,A.bh]) +q(A.v,[A.b2,A.eq,A.e6,A.aQ]) +q(A.cU,[A.ib,A.hU,A.i6,A.hm,A.fK,A.h1,A.fZ,A.h_,A.h0,A.hN,A.hM,A.hY,A.fM,A.fN,A.fT,A.fV,A.hc,A.hd,A.hR,A.fk,A.fB]) +q(A.bZ,[A.dp,A.bo]) +q(A.bo,[A.ce,A.cg]) +r(A.cf,A.ce) +r(A.bX,A.cf) +r(A.ch,A.cg) +r(A.bY,A.ch) +q(A.bX,[A.dq,A.dr]) +q(A.bY,[A.ds,A.dt,A.du,A.dv,A.dw,A.c_,A.c0]) +r(A.cq,A.eh) +q(A.cT,[A.ha,A.hb,A.hK,A.hh,A.ho,A.hn,A.hk,A.hj,A.hi,A.hr,A.hq,A.hp,A.i4,A.hx,A.h5,A.h4,A.i1,A.ig]) +r(A.b8,A.c7) +r(A.hw,A.hS) +q(A.at,[A.cj,A.cZ]) +r(A.cb,A.cj) +r(A.cv,A.bV) +r(A.bu,A.cv) +q(A.cW,[A.fl,A.fr,A.fH]) +q(A.cY,[A.fm,A.fw,A.fI,A.h6,A.h3]) +r(A.h2,A.fr) +q(A.Z,[A.c3,A.db]) +r(A.eb,A.cw) +q(A.c,[A.m,A.d7,A.b1,A.ab,A.cl,A.af,A.Y,A.co,A.e2,A.cR,A.aF]) +q(A.m,[A.q,A.a3,A.aZ,A.bv]) +q(A.q,[A.l,A.i]) +q(A.l,[A.cJ,A.cK,A.bg,A.aX,A.d9,A.aK,A.dG,A.c5,A.dN,A.dO,A.bs,A.b5]) +r(A.d_,A.a_) +r(A.bi,A.e9) +q(A.P,[A.d0,A.d1]) +r(A.ed,A.ec) +r(A.bI,A.ed) +r(A.ef,A.ee) +r(A.d4,A.ef) +r(A.a4,A.bF) +r(A.ek,A.ej) +r(A.d6,A.ek) +r(A.ep,A.eo) +r(A.b0,A.ep) +r(A.bP,A.aZ) +r(A.a6,A.b1) +q(A.h,[A.S,A.as]) +r(A.bn,A.S) +r(A.dk,A.ev) +r(A.dl,A.ew) +r(A.ey,A.ex) +r(A.dm,A.ey) +r(A.eA,A.ez) +r(A.bp,A.eA) +r(A.eE,A.eD) +r(A.dB,A.eE) +r(A.dE,A.eH) +r(A.cm,A.cl) +r(A.dH,A.cm) +r(A.eL,A.eK) +r(A.dI,A.eL) +r(A.dL,A.eN) +r(A.eW,A.eV) +r(A.dQ,A.eW) +r(A.cp,A.co) +r(A.dR,A.cp) +r(A.eY,A.eX) +r(A.dT,A.eY) +r(A.f4,A.f3) +r(A.e8,A.f4) +r(A.c8,A.bJ) +r(A.f6,A.f5) +r(A.em,A.f6) +r(A.f8,A.f7) +r(A.cd,A.f8) +r(A.fa,A.f9) +r(A.eM,A.fa) +r(A.fc,A.fb) +r(A.eS,A.fc) +r(A.ay,A.e6) +q(A.cZ,[A.eg,A.cO]) +r(A.eU,A.ck) +r(A.et,A.es) +r(A.df,A.et) +r(A.eC,A.eB) +r(A.dx,A.eC) +r(A.bq,A.i) +r(A.eQ,A.eP) +r(A.dM,A.eQ) +r(A.f_,A.eZ) +r(A.dV,A.f_) +r(A.cQ,A.e7) +r(A.dy,A.aF) +q(A.he,[A.A,A.Q]) +s(A.bt,A.dY) +s(A.cy,A.e) +s(A.ce,A.e) +s(A.cf,A.bN) +s(A.cg,A.e) +s(A.ch,A.bN) +s(A.cv,A.f1) +s(A.e9,A.fo) +s(A.ec,A.e) +s(A.ed,A.D) +s(A.ee,A.e) +s(A.ef,A.D) +s(A.ej,A.e) +s(A.ek,A.D) +s(A.eo,A.e) +s(A.ep,A.D) +s(A.ev,A.v) +s(A.ew,A.v) +s(A.ex,A.e) +s(A.ey,A.D) +s(A.ez,A.e) +s(A.eA,A.D) +s(A.eD,A.e) +s(A.eE,A.D) +s(A.eH,A.v) +s(A.cl,A.e) +s(A.cm,A.D) +s(A.eK,A.e) +s(A.eL,A.D) +s(A.eN,A.v) +s(A.eV,A.e) +s(A.eW,A.D) +s(A.co,A.e) +s(A.cp,A.D) +s(A.eX,A.e) +s(A.eY,A.D) +s(A.f3,A.e) +s(A.f4,A.D) +s(A.f5,A.e) +s(A.f6,A.D) +s(A.f7,A.e) +s(A.f8,A.D) +s(A.f9,A.e) +s(A.fa,A.D) +s(A.fb,A.e) +s(A.fc,A.D) +s(A.es,A.e) +s(A.et,A.D) +s(A.eB,A.e) +s(A.eC,A.D) +s(A.eP,A.e) +s(A.eQ,A.D) +s(A.eZ,A.e) +s(A.f_,A.D) +s(A.e7,A.v)})() +var v={typeUniverse:{eC:new Map(),tR:{},eT:{},tPV:{},sEA:[]},mangledGlobalNames:{k:"int",H:"double",U:"num",d:"String",ah:"bool",F:"Null",j:"List"},mangledNames:{},types:["~()","F(h)","~(d,@)","~(~())","~(@)","~(d,d)","ah(m)","F()","F(@)","@()","~(b6,d,k)","~(h)","ah(a9)","ah(d)","ah(q,d,d,bx)","F(d)","~(t?,t?)","~(d,k?)","k(k,k)","~(d,d?)","@(d)","b6(@,@)","~(t[ae?])","~(d,k)","d(a6)","~(as)","F(~())","F(t,ae)","I<@>(@)","F(@,ae)","K(y)","~(m,m?)","~(k,@)","q(m)","~(Q)","k(+item,matchPosition(K,Q),+item,matchPosition(K,Q))","K(+item,matchPosition(K,Q))","y(y,d)","~(m)","d()","aJ(@)","@(@)","d(fL)","k(@,@)","@(@,d)","ah(aN)","d(d)"],interceptorsByTag:null,leafTags:null,arrayRti:Symbol("$ti"),rttc:{"2;item,matchPosition":(a,b)=>c=>c instanceof A.eG&&a.b(c.a)&&b.b(c.b)}} +A.lV(v.typeUniverse,JSON.parse('{"dA":"aM","b7":"aM","al":"aM","nS":"a","nT":"a","ny":"a","nw":"h","nO":"h","nz":"aF","nx":"c","nW":"c","nY":"c","nv":"i","nP":"i","oi":"as","nA":"l","nV":"l","nZ":"m","nN":"m","oe":"aZ","od":"Y","nE":"S","nD":"a3","o0":"a3","nU":"q","nR":"b1","nQ":"b0","nF":"w","nI":"a_","nK":"X","nL":"P","nH":"P","nJ":"P","dc":{"u":[]},"bR":{"F":[],"u":[]},"aM":{"a":[]},"B":{"j":["1"],"a":[],"f":["1"]},"fF":{"B":["1"],"j":["1"],"a":[],"f":["1"]},"bk":{"H":[],"U":[]},"bQ":{"H":[],"k":[],"U":[],"u":[]},"dd":{"H":[],"U":[],"u":[]},"aL":{"d":[],"u":[]},"aP":{"x":["2"]},"aY":{"aP":["1","2"],"x":["2"],"x.E":"2"},"c9":{"aY":["1","2"],"aP":["1","2"],"f":["2"],"x":["2"],"x.E":"2"},"c6":{"e":["2"],"j":["2"],"aP":["1","2"],"f":["2"],"x":["2"]},"ak":{"c6":["1","2"],"e":["2"],"j":["2"],"aP":["1","2"],"f":["2"],"x":["2"],"e.E":"2","x.E":"2"},"bS":{"z":[]},"cV":{"e":["k"],"j":["k"],"f":["k"],"e.E":"k"},"f":{"x":["1"]},"a7":{"f":["1"],"x":["1"]},"ao":{"x":["2"],"x.E":"2"},"bK":{"ao":["1","2"],"f":["2"],"x":["2"],"x.E":"2"},"ap":{"a7":["2"],"f":["2"],"x":["2"],"a7.E":"2","x.E":"2"},"ax":{"x":["1"],"x.E":"1"},"bt":{"e":["1"],"j":["1"],"f":["1"]},"bG":{"y":["1","2"]},"bH":{"y":["1","2"]},"c2":{"av":[],"z":[]},"de":{"z":[]},"dX":{"z":[]},"cn":{"ae":[]},"aG":{"b_":[]},"cT":{"b_":[]},"cU":{"b_":[]},"dP":{"b_":[]},"dK":{"b_":[]},"bh":{"b_":[]},"ea":{"z":[]},"dF":{"z":[]},"b2":{"v":["1","2"],"y":["1","2"],"v.V":"2"},"an":{"f":["1"],"x":["1"],"x.E":"1"},"eu":{"iC":[],"fL":[]},"dn":{"a":[],"u":[]},"bZ":{"a":[]},"dp":{"a":[],"u":[]},"bo":{"o":["1"],"a":[]},"bX":{"e":["H"],"j":["H"],"o":["H"],"a":[],"f":["H"]},"bY":{"e":["k"],"j":["k"],"o":["k"],"a":[],"f":["k"]},"dq":{"e":["H"],"j":["H"],"o":["H"],"a":[],"f":["H"],"u":[],"e.E":"H"},"dr":{"e":["H"],"j":["H"],"o":["H"],"a":[],"f":["H"],"u":[],"e.E":"H"},"ds":{"e":["k"],"j":["k"],"o":["k"],"a":[],"f":["k"],"u":[],"e.E":"k"},"dt":{"e":["k"],"j":["k"],"o":["k"],"a":[],"f":["k"],"u":[],"e.E":"k"},"du":{"e":["k"],"j":["k"],"o":["k"],"a":[],"f":["k"],"u":[],"e.E":"k"},"dv":{"e":["k"],"j":["k"],"o":["k"],"a":[],"f":["k"],"u":[],"e.E":"k"},"dw":{"e":["k"],"j":["k"],"o":["k"],"a":[],"f":["k"],"u":[],"e.E":"k"},"c_":{"e":["k"],"j":["k"],"o":["k"],"a":[],"f":["k"],"u":[],"e.E":"k"},"c0":{"e":["k"],"b6":[],"j":["k"],"o":["k"],"a":[],"f":["k"],"u":[],"e.E":"k"},"eh":{"z":[]},"cq":{"av":[],"z":[]},"I":{"aJ":["1"]},"cN":{"z":[]},"b8":{"c7":["1"]},"cb":{"at":["1"],"aN":["1"],"f":["1"]},"e":{"j":["1"],"f":["1"]},"v":{"y":["1","2"]},"bV":{"y":["1","2"]},"bu":{"y":["1","2"]},"at":{"aN":["1"],"f":["1"]},"cj":{"at":["1"],"aN":["1"],"f":["1"]},"eq":{"v":["d","@"],"y":["d","@"],"v.V":"@"},"er":{"a7":["d"],"f":["d"],"x":["d"],"a7.E":"d","x.E":"d"},"H":{"U":[]},"k":{"U":[]},"j":{"f":["1"]},"iC":{"fL":[]},"aN":{"f":["1"]},"cL":{"z":[]},"av":{"z":[]},"Z":{"z":[]},"c3":{"z":[]},"db":{"z":[]},"dZ":{"z":[]},"dW":{"z":[]},"br":{"z":[]},"cX":{"z":[]},"dz":{"z":[]},"c4":{"z":[]},"eR":{"ae":[]},"cw":{"e_":[]},"eJ":{"e_":[]},"eb":{"e_":[]},"w":{"a":[]},"q":{"m":[],"a":[]},"h":{"a":[]},"a4":{"a":[]},"a5":{"a":[]},"a6":{"a":[]},"a8":{"a":[]},"m":{"a":[]},"aa":{"a":[]},"as":{"h":[],"a":[]},"ab":{"a":[]},"ac":{"a":[]},"ad":{"a":[]},"X":{"a":[]},"af":{"a":[]},"Y":{"a":[]},"ag":{"a":[]},"bx":{"a9":[]},"l":{"q":[],"m":[],"a":[]},"cI":{"a":[]},"cJ":{"q":[],"m":[],"a":[]},"cK":{"q":[],"m":[],"a":[]},"bg":{"q":[],"m":[],"a":[]},"bF":{"a":[]},"aX":{"q":[],"m":[],"a":[]},"a3":{"m":[],"a":[]},"d_":{"a":[]},"bi":{"a":[]},"P":{"a":[]},"a_":{"a":[]},"d0":{"a":[]},"d1":{"a":[]},"d2":{"a":[]},"aZ":{"m":[],"a":[]},"d3":{"a":[]},"bI":{"e":["b4"],"j":["b4"],"o":["b4"],"a":[],"f":["b4"],"e.E":"b4"},"bJ":{"a":[],"b4":["U"]},"d4":{"e":["d"],"j":["d"],"o":["d"],"a":[],"f":["d"],"e.E":"d"},"d5":{"a":[]},"c":{"a":[]},"d6":{"e":["a4"],"j":["a4"],"o":["a4"],"a":[],"f":["a4"],"e.E":"a4"},"d7":{"a":[]},"d9":{"q":[],"m":[],"a":[]},"da":{"a":[]},"b0":{"e":["m"],"j":["m"],"o":["m"],"a":[],"f":["m"],"e.E":"m"},"bP":{"m":[],"a":[]},"b1":{"a":[]},"aK":{"q":[],"m":[],"a":[]},"bn":{"h":[],"a":[]},"di":{"a":[]},"dj":{"a":[]},"dk":{"a":[],"v":["d","@"],"y":["d","@"],"v.V":"@"},"dl":{"a":[],"v":["d","@"],"y":["d","@"],"v.V":"@"},"dm":{"e":["a8"],"j":["a8"],"o":["a8"],"a":[],"f":["a8"],"e.E":"a8"},"M":{"e":["m"],"j":["m"],"f":["m"],"e.E":"m"},"bp":{"e":["m"],"j":["m"],"o":["m"],"a":[],"f":["m"],"e.E":"m"},"dB":{"e":["aa"],"j":["aa"],"o":["aa"],"a":[],"f":["aa"],"e.E":"aa"},"dE":{"a":[],"v":["d","@"],"y":["d","@"],"v.V":"@"},"dG":{"q":[],"m":[],"a":[]},"dH":{"e":["ab"],"j":["ab"],"o":["ab"],"a":[],"f":["ab"],"e.E":"ab"},"dI":{"e":["ac"],"j":["ac"],"o":["ac"],"a":[],"f":["ac"],"e.E":"ac"},"dL":{"a":[],"v":["d","d"],"y":["d","d"],"v.V":"d"},"c5":{"q":[],"m":[],"a":[]},"dN":{"q":[],"m":[],"a":[]},"dO":{"q":[],"m":[],"a":[]},"bs":{"q":[],"m":[],"a":[]},"b5":{"q":[],"m":[],"a":[]},"dQ":{"e":["Y"],"j":["Y"],"o":["Y"],"a":[],"f":["Y"],"e.E":"Y"},"dR":{"e":["af"],"j":["af"],"o":["af"],"a":[],"f":["af"],"e.E":"af"},"dS":{"a":[]},"dT":{"e":["ag"],"j":["ag"],"o":["ag"],"a":[],"f":["ag"],"e.E":"ag"},"dU":{"a":[]},"S":{"h":[],"a":[]},"e1":{"a":[]},"e2":{"a":[]},"bv":{"m":[],"a":[]},"e8":{"e":["w"],"j":["w"],"o":["w"],"a":[],"f":["w"],"e.E":"w"},"c8":{"a":[],"b4":["U"]},"em":{"e":["a5?"],"j":["a5?"],"o":["a5?"],"a":[],"f":["a5?"],"e.E":"a5?"},"cd":{"e":["m"],"j":["m"],"o":["m"],"a":[],"f":["m"],"e.E":"m"},"eM":{"e":["ad"],"j":["ad"],"o":["ad"],"a":[],"f":["ad"],"e.E":"ad"},"eS":{"e":["X"],"j":["X"],"o":["X"],"a":[],"f":["X"],"e.E":"X"},"e6":{"v":["d","d"],"y":["d","d"]},"ay":{"v":["d","d"],"y":["d","d"],"v.V":"d"},"aQ":{"v":["d","d"],"y":["d","d"],"v.V":"d"},"eg":{"at":["d"],"aN":["d"],"f":["d"]},"c1":{"a9":[]},"ck":{"a9":[]},"eU":{"a9":[]},"eT":{"a9":[]},"cZ":{"at":["d"],"aN":["d"],"f":["d"]},"d8":{"e":["q"],"j":["q"],"f":["q"],"e.E":"q"},"am":{"a":[]},"aq":{"a":[]},"au":{"a":[]},"df":{"e":["am"],"j":["am"],"a":[],"f":["am"],"e.E":"am"},"dx":{"e":["aq"],"j":["aq"],"a":[],"f":["aq"],"e.E":"aq"},"dC":{"a":[]},"bq":{"i":[],"q":[],"m":[],"a":[]},"dM":{"e":["d"],"j":["d"],"a":[],"f":["d"],"e.E":"d"},"cO":{"at":["d"],"aN":["d"],"f":["d"]},"i":{"q":[],"m":[],"a":[]},"dV":{"e":["au"],"j":["au"],"a":[],"f":["au"],"e.E":"au"},"cP":{"a":[]},"cQ":{"a":[],"v":["d","@"],"y":["d","@"],"v.V":"@"},"cR":{"a":[]},"aF":{"a":[]},"dy":{"a":[]},"l9":{"j":["k"],"f":["k"]},"b6":{"j":["k"],"f":["k"]},"ls":{"j":["k"],"f":["k"]},"l7":{"j":["k"],"f":["k"]},"lq":{"j":["k"],"f":["k"]},"l8":{"j":["k"],"f":["k"]},"lr":{"j":["k"],"f":["k"]},"l3":{"j":["H"],"f":["H"]},"l4":{"j":["H"],"f":["H"]}}')) +A.lU(v.typeUniverse,JSON.parse('{"bf":1,"bU":1,"bW":2,"e3":1,"bN":1,"dY":1,"bt":1,"cy":2,"bG":2,"dg":1,"bo":1,"eO":1,"cc":1,"f1":2,"bV":2,"cj":1,"cv":2,"cW":2,"cY":2,"ei":1,"D":1,"bO":1}')) +var u={c:"Error handler must accept one Object or one Object and a StackTrace as arguments, and return a value of the returned future's type"} +var t=(function rtii(){var s=A.ff +return{B:s("bg"),Y:s("aX"),O:s("f<@>"),h:s("q"),U:s("z"),D:s("h"),Z:s("b_"),p:s("aK"),k:s("B"),M:s("B"),Q:s("B"),r:s("B<+item,matchPosition(K,Q)>"),s:s("B"),b:s("B<@>"),t:s("B"),T:s("bR"),g:s("al"),G:s("o<@>"),e:s("a"),v:s("bn"),j:s("j<@>"),a:s("y"),I:s("ap"),W:s("ap<+item,matchPosition(K,Q),K>"),P:s("F"),K:s("t"),L:s("nX"),d:s("+()"),q:s("b4"),F:s("iC"),c:s("bq"),l:s("ae"),N:s("d"),u:s("i"),f:s("bs"),J:s("b5"),m:s("u"),n:s("av"),bX:s("b6"),o:s("b7"),V:s("bu"),R:s("e_"),E:s("b8"),x:s("bv"),ba:s("M"),bR:s("I"),aY:s("I<@>"),y:s("ah"),i:s("H"),z:s("@"),w:s("@(t)"),C:s("@(t,ae)"),S:s("k"),A:s("0&*"),_:s("t*"),bc:s("aJ?"),cD:s("aK?"),X:s("t?"),H:s("U")}})();(function constants(){var s=hunkHelpers.makeConstList +B.n=A.aX.prototype +B.K=A.bP.prototype +B.L=A.a6.prototype +B.f=A.aK.prototype +B.M=J.bj.prototype +B.b=J.B.prototype +B.d=J.bQ.prototype +B.e=J.bk.prototype +B.a=J.aL.prototype +B.N=J.al.prototype +B.O=J.a.prototype +B.ai=A.c0.prototype +B.aj=A.bp.prototype +B.x=J.dA.prototype +B.y=A.c5.prototype +B.al=A.b5.prototype +B.m=J.b7.prototype +B.aC=new A.fm() +B.z=new A.fl() +B.aD=new A.fx() +B.o=new A.fw() +B.p=function getTagFallback(o) { + var s = Object.prototype.toString.call(o); + return s.substring(8, s.length - 1); +} +B.A=function() { + var toStringFunction = Object.prototype.toString; + function getTag(o) { + var s = toStringFunction.call(o); + return s.substring(8, s.length - 1); + } + function getUnknownTag(object, tag) { + if (/^HTML[A-Z].*Element$/.test(tag)) { + var name = toStringFunction.call(object); + if (name == "[object Object]") return null; + return "HTMLElement"; + } + } + function getUnknownTagGenericBrowser(object, tag) { + if (self.HTMLElement && object instanceof HTMLElement) return "HTMLElement"; + return getUnknownTag(object, tag); + } + function prototypeForTag(tag) { + if (typeof window == "undefined") return null; + if (typeof window[tag] == "undefined") return null; + var constructor = window[tag]; + if (typeof constructor != "function") return null; + return constructor.prototype; + } + function discriminator(tag) { return null; } + var isBrowser = typeof navigator == "object"; + return { + getTag: getTag, + getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag, + prototypeForTag: prototypeForTag, + discriminator: discriminator }; +} +B.F=function(getTagFallback) { + return function(hooks) { + if (typeof navigator != "object") return hooks; + var ua = navigator.userAgent; + if (ua.indexOf("DumpRenderTree") >= 0) return hooks; + if (ua.indexOf("Chrome") >= 0) { + function confirm(p) { + return typeof window == "object" && window[p] && window[p].name == p; + } + if (confirm("Window") && confirm("HTMLElement")) return hooks; + } + hooks.getTag = getTagFallback; + }; +} +B.B=function(hooks) { + if (typeof dartExperimentalFixupGetTag != "function") return hooks; + hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag); +} +B.C=function(hooks) { + var getTag = hooks.getTag; + var prototypeForTag = hooks.prototypeForTag; + function getTagFixed(o) { + var tag = getTag(o); + if (tag == "Document") { + if (!!o.xmlVersion) return "!Document"; + return "!HTMLDocument"; + } + return tag; + } + function prototypeForTagFixed(tag) { + if (tag == "Document") return null; + return prototypeForTag(tag); + } + hooks.getTag = getTagFixed; + hooks.prototypeForTag = prototypeForTagFixed; +} +B.E=function(hooks) { + var userAgent = typeof navigator == "object" ? navigator.userAgent : ""; + if (userAgent.indexOf("Firefox") == -1) return hooks; + var getTag = hooks.getTag; + var quickMap = { + "BeforeUnloadEvent": "Event", + "DataTransfer": "Clipboard", + "GeoGeolocation": "Geolocation", + "Location": "!Location", + "WorkerMessageEvent": "MessageEvent", + "XMLDocument": "!Document"}; + function getTagFirefox(o) { + var tag = getTag(o); + return quickMap[tag] || tag; + } + hooks.getTag = getTagFirefox; +} +B.D=function(hooks) { + var userAgent = typeof navigator == "object" ? navigator.userAgent : ""; + if (userAgent.indexOf("Trident/") == -1) return hooks; + var getTag = hooks.getTag; + var quickMap = { + "BeforeUnloadEvent": "Event", + "DataTransfer": "Clipboard", + "HTMLDDElement": "HTMLElement", + "HTMLDTElement": "HTMLElement", + "HTMLPhraseElement": "HTMLElement", + "Position": "Geoposition" + }; + function getTagIE(o) { + var tag = getTag(o); + var newTag = quickMap[tag]; + if (newTag) return newTag; + if (tag == "Object") { + if (window.DataView && (o instanceof window.DataView)) return "DataView"; + } + return tag; + } + function prototypeForTagIE(tag) { + var constructor = window[tag]; + if (constructor == null) return null; + return constructor.prototype; + } + hooks.getTag = getTagIE; + hooks.prototypeForTag = prototypeForTagIE; +} +B.q=function(hooks) { return hooks; } + +B.G=new A.fH() +B.H=new A.dz() +B.k=new A.fU() +B.h=new A.h2() +B.I=new A.h6() +B.c=new A.hw() +B.J=new A.eR() +B.P=new A.fI(null) +B.r=A.n(s(["bind","if","ref","repeat","syntax"]),t.s) +B.l=A.n(s(["A::href","AREA::href","BLOCKQUOTE::cite","BODY::background","COMMAND::icon","DEL::cite","FORM::action","IMG::src","INPUT::src","INS::cite","Q::cite","VIDEO::poster"]),t.s) +B.i=A.n(s([0,0,24576,1023,65534,34815,65534,18431]),t.t) +B.ac=A.n(s(["HEAD","AREA","BASE","BASEFONT","BR","COL","COLGROUP","EMBED","FRAME","FRAMESET","HR","IMAGE","IMG","INPUT","ISINDEX","LINK","META","PARAM","SOURCE","STYLE","TITLE","WBR"]),t.s) +B.t=A.n(s([0,0,26624,1023,65534,2047,65534,2047]),t.t) +B.ad=A.n(s([0,0,32722,12287,65534,34815,65534,18431]),t.t) +B.Q=new A.A(0,"accessor") +B.R=new A.A(1,"constant") +B.a1=new A.A(2,"constructor") +B.a5=new A.A(3,"class_") +B.a6=new A.A(4,"dynamic") +B.a7=new A.A(5,"enum_") +B.a8=new A.A(6,"extension") +B.a9=new A.A(7,"extensionType") +B.aa=new A.A(8,"function") +B.ab=new A.A(9,"library") +B.S=new A.A(10,"method") +B.T=new A.A(11,"mixin") +B.U=new A.A(12,"never") +B.V=new A.A(13,"package") +B.W=new A.A(14,"parameter") +B.X=new A.A(15,"prefix") +B.Y=new A.A(16,"property") +B.Z=new A.A(17,"sdk") +B.a_=new A.A(18,"topic") +B.a0=new A.A(19,"topLevelConstant") +B.a2=new A.A(20,"topLevelProperty") +B.a3=new A.A(21,"typedef") +B.a4=new A.A(22,"typeParameter") +B.u=A.n(s([B.Q,B.R,B.a1,B.a5,B.a6,B.a7,B.a8,B.a9,B.aa,B.ab,B.S,B.T,B.U,B.V,B.W,B.X,B.Y,B.Z,B.a_,B.a0,B.a2,B.a3,B.a4]),A.ff("B")) +B.v=A.n(s([0,0,65490,12287,65535,34815,65534,18431]),t.t) +B.w=A.n(s([0,0,32776,33792,1,10240,0,0]),t.t) +B.ae=A.n(s([0,0,32754,11263,65534,34815,65534,18431]),t.t) +B.af=A.n(s([]),t.s) +B.j=A.n(s([0,0,65490,45055,65535,34815,65534,18431]),t.t) +B.ag=A.n(s(["*::class","*::dir","*::draggable","*::hidden","*::id","*::inert","*::itemprop","*::itemref","*::itemscope","*::lang","*::spellcheck","*::title","*::translate","A::accesskey","A::coords","A::hreflang","A::name","A::shape","A::tabindex","A::target","A::type","AREA::accesskey","AREA::alt","AREA::coords","AREA::nohref","AREA::shape","AREA::tabindex","AREA::target","AUDIO::controls","AUDIO::loop","AUDIO::mediagroup","AUDIO::muted","AUDIO::preload","BDO::dir","BODY::alink","BODY::bgcolor","BODY::link","BODY::text","BODY::vlink","BR::clear","BUTTON::accesskey","BUTTON::disabled","BUTTON::name","BUTTON::tabindex","BUTTON::type","BUTTON::value","CANVAS::height","CANVAS::width","CAPTION::align","COL::align","COL::char","COL::charoff","COL::span","COL::valign","COL::width","COLGROUP::align","COLGROUP::char","COLGROUP::charoff","COLGROUP::span","COLGROUP::valign","COLGROUP::width","COMMAND::checked","COMMAND::command","COMMAND::disabled","COMMAND::label","COMMAND::radiogroup","COMMAND::type","DATA::value","DEL::datetime","DETAILS::open","DIR::compact","DIV::align","DL::compact","FIELDSET::disabled","FONT::color","FONT::face","FONT::size","FORM::accept","FORM::autocomplete","FORM::enctype","FORM::method","FORM::name","FORM::novalidate","FORM::target","FRAME::name","H1::align","H2::align","H3::align","H4::align","H5::align","H6::align","HR::align","HR::noshade","HR::size","HR::width","HTML::version","IFRAME::align","IFRAME::frameborder","IFRAME::height","IFRAME::marginheight","IFRAME::marginwidth","IFRAME::width","IMG::align","IMG::alt","IMG::border","IMG::height","IMG::hspace","IMG::ismap","IMG::name","IMG::usemap","IMG::vspace","IMG::width","INPUT::accept","INPUT::accesskey","INPUT::align","INPUT::alt","INPUT::autocomplete","INPUT::autofocus","INPUT::checked","INPUT::disabled","INPUT::inputmode","INPUT::ismap","INPUT::list","INPUT::max","INPUT::maxlength","INPUT::min","INPUT::multiple","INPUT::name","INPUT::placeholder","INPUT::readonly","INPUT::required","INPUT::size","INPUT::step","INPUT::tabindex","INPUT::type","INPUT::usemap","INPUT::value","INS::datetime","KEYGEN::disabled","KEYGEN::keytype","KEYGEN::name","LABEL::accesskey","LABEL::for","LEGEND::accesskey","LEGEND::align","LI::type","LI::value","LINK::sizes","MAP::name","MENU::compact","MENU::label","MENU::type","METER::high","METER::low","METER::max","METER::min","METER::value","OBJECT::typemustmatch","OL::compact","OL::reversed","OL::start","OL::type","OPTGROUP::disabled","OPTGROUP::label","OPTION::disabled","OPTION::label","OPTION::selected","OPTION::value","OUTPUT::for","OUTPUT::name","P::align","PRE::width","PROGRESS::max","PROGRESS::min","PROGRESS::value","SELECT::autocomplete","SELECT::disabled","SELECT::multiple","SELECT::name","SELECT::required","SELECT::size","SELECT::tabindex","SOURCE::type","TABLE::align","TABLE::bgcolor","TABLE::border","TABLE::cellpadding","TABLE::cellspacing","TABLE::frame","TABLE::rules","TABLE::summary","TABLE::width","TBODY::align","TBODY::char","TBODY::charoff","TBODY::valign","TD::abbr","TD::align","TD::axis","TD::bgcolor","TD::char","TD::charoff","TD::colspan","TD::headers","TD::height","TD::nowrap","TD::rowspan","TD::scope","TD::valign","TD::width","TEXTAREA::accesskey","TEXTAREA::autocomplete","TEXTAREA::cols","TEXTAREA::disabled","TEXTAREA::inputmode","TEXTAREA::name","TEXTAREA::placeholder","TEXTAREA::readonly","TEXTAREA::required","TEXTAREA::rows","TEXTAREA::tabindex","TEXTAREA::wrap","TFOOT::align","TFOOT::char","TFOOT::charoff","TFOOT::valign","TH::abbr","TH::align","TH::axis","TH::bgcolor","TH::char","TH::charoff","TH::colspan","TH::headers","TH::height","TH::nowrap","TH::rowspan","TH::scope","TH::valign","TH::width","THEAD::align","THEAD::char","THEAD::charoff","THEAD::valign","TR::align","TR::bgcolor","TR::char","TR::charoff","TR::valign","TRACK::default","TRACK::kind","TRACK::label","TRACK::srclang","UL::compact","UL::type","VIDEO::controls","VIDEO::height","VIDEO::loop","VIDEO::mediagroup","VIDEO::muted","VIDEO::preload","VIDEO::width"]),t.s) +B.ak={} +B.ah=new A.bH(B.ak,[],A.ff("bH")) +B.am=A.a0("nB") +B.an=A.a0("nC") +B.ao=A.a0("l3") +B.ap=A.a0("l4") +B.aq=A.a0("l7") +B.ar=A.a0("l8") +B.as=A.a0("l9") +B.at=A.a0("t") +B.au=A.a0("lq") +B.av=A.a0("lr") +B.aw=A.a0("ls") +B.ax=A.a0("b6") +B.ay=new A.h3(!1) +B.az=new A.Q(0,"isExactly") +B.aA=new A.Q(1,"startsWith") +B.aB=new A.Q(2,"contains")})();(function staticFields(){$.ht=null +$.be=A.n([],A.ff("B")) +$.jp=null +$.jb=null +$.ja=null +$.kg=null +$.kc=null +$.km=null +$.i7=null +$.il=null +$.iY=null +$.hv=A.n([],A.ff("B?>")) +$.bB=null +$.cz=null +$.cA=null +$.iT=!1 +$.C=B.c +$.aI=null +$.it=null +$.jf=null +$.je=null +$.en=A.dh(t.N,t.Z) +$.iV=10 +$.i5=0 +$.b9=A.dh(t.N,t.h)})();(function lazyInitializers(){var s=hunkHelpers.lazyFinal +s($,"nM","kq",()=>A.n5("_$dart_dartClosure")) +s($,"o1","kr",()=>A.aw(A.fX({ +toString:function(){return"$receiver$"}}))) +s($,"o2","ks",()=>A.aw(A.fX({$method$:null, +toString:function(){return"$receiver$"}}))) +s($,"o3","kt",()=>A.aw(A.fX(null))) +s($,"o4","ku",()=>A.aw(function(){var $argumentsExpr$="$arguments$" +try{null.$method$($argumentsExpr$)}catch(r){return r.message}}())) +s($,"o7","kx",()=>A.aw(A.fX(void 0))) +s($,"o8","ky",()=>A.aw(function(){var $argumentsExpr$="$arguments$" +try{(void 0).$method$($argumentsExpr$)}catch(r){return r.message}}())) +s($,"o6","kw",()=>A.aw(A.jx(null))) +s($,"o5","kv",()=>A.aw(function(){try{null.$method$}catch(r){return r.message}}())) +s($,"oa","kA",()=>A.aw(A.jx(void 0))) +s($,"o9","kz",()=>A.aw(function(){try{(void 0).$method$}catch(r){return r.message}}())) +s($,"of","j1",()=>A.lw()) +s($,"ob","kB",()=>new A.h5().$0()) +s($,"oc","kC",()=>new A.h4().$0()) +s($,"og","kD",()=>A.lk(A.mn(A.n([-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-1,-2,-2,-2,-2,-2,62,-2,62,-2,63,52,53,54,55,56,57,58,59,60,61,-2,-2,-2,-1,-2,-2,-2,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-2,-2,-2,-2,63,-2,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-2,-2,-2,-2,-2],t.t)))) +s($,"oj","kF",()=>A.iD("^[\\-\\.0-9A-Z_a-z~]*$",!0)) +s($,"ow","iq",()=>A.kj(B.at)) +s($,"oy","kG",()=>A.mm()) +s($,"oh","kE",()=>A.jl(["A","ABBR","ACRONYM","ADDRESS","AREA","ARTICLE","ASIDE","AUDIO","B","BDI","BDO","BIG","BLOCKQUOTE","BR","BUTTON","CANVAS","CAPTION","CENTER","CITE","CODE","COL","COLGROUP","COMMAND","DATA","DATALIST","DD","DEL","DETAILS","DFN","DIR","DIV","DL","DT","EM","FIELDSET","FIGCAPTION","FIGURE","FONT","FOOTER","FORM","H1","H2","H3","H4","H5","H6","HEADER","HGROUP","HR","I","IFRAME","IMG","INPUT","INS","KBD","LABEL","LEGEND","LI","MAP","MARK","MENU","METER","NAV","NOBR","OL","OPTGROUP","OPTION","OUTPUT","P","PRE","PROGRESS","Q","S","SAMP","SECTION","SELECT","SMALL","SOURCE","SPAN","STRIKE","STRONG","SUB","SUMMARY","SUP","TABLE","TBODY","TD","TEXTAREA","TFOOT","TH","THEAD","TIME","TR","TRACK","TT","U","UL","VAR","VIDEO","WBR"],t.N)) +s($,"nG","kp",()=>A.iD("^\\S+$",!0)) +s($,"ox","cG",()=>new A.i1().$0())})();(function nativeSupport(){!function(){var s=function(a){var m={} +m[a]=1 +return Object.keys(hunkHelpers.convertToFastObject(m))[0]} +v.getIsolateTag=function(a){return s("___dart_"+a+v.isolateTag)} +var r="___dart_isolate_tags_" +var q=Object[r]||(Object[r]=Object.create(null)) +var p="_ZxYxX" +for(var o=0;;o++){var n=s(p+"_"+o+"_") +if(!(n in q)){q[n]=1 +v.isolateTag=n +break}}v.dispatchPropertyName=v.getIsolateTag("dispatch_record")}() +hunkHelpers.setOrUpdateInterceptorsByTag({WebGL:J.bj,AnimationEffectReadOnly:J.a,AnimationEffectTiming:J.a,AnimationEffectTimingReadOnly:J.a,AnimationTimeline:J.a,AnimationWorkletGlobalScope:J.a,AuthenticatorAssertionResponse:J.a,AuthenticatorAttestationResponse:J.a,AuthenticatorResponse:J.a,BackgroundFetchFetch:J.a,BackgroundFetchManager:J.a,BackgroundFetchSettledFetch:J.a,BarProp:J.a,BarcodeDetector:J.a,BluetoothRemoteGATTDescriptor:J.a,Body:J.a,BudgetState:J.a,CacheStorage:J.a,CanvasGradient:J.a,CanvasPattern:J.a,CanvasRenderingContext2D:J.a,Client:J.a,Clients:J.a,CookieStore:J.a,Coordinates:J.a,Credential:J.a,CredentialUserData:J.a,CredentialsContainer:J.a,Crypto:J.a,CryptoKey:J.a,CSS:J.a,CSSVariableReferenceValue:J.a,CustomElementRegistry:J.a,DataTransfer:J.a,DataTransferItem:J.a,DeprecatedStorageInfo:J.a,DeprecatedStorageQuota:J.a,DeprecationReport:J.a,DetectedBarcode:J.a,DetectedFace:J.a,DetectedText:J.a,DeviceAcceleration:J.a,DeviceRotationRate:J.a,DirectoryEntry:J.a,webkitFileSystemDirectoryEntry:J.a,FileSystemDirectoryEntry:J.a,DirectoryReader:J.a,WebKitDirectoryReader:J.a,webkitFileSystemDirectoryReader:J.a,FileSystemDirectoryReader:J.a,DocumentOrShadowRoot:J.a,DocumentTimeline:J.a,DOMError:J.a,DOMImplementation:J.a,Iterator:J.a,DOMMatrix:J.a,DOMMatrixReadOnly:J.a,DOMParser:J.a,DOMPoint:J.a,DOMPointReadOnly:J.a,DOMQuad:J.a,DOMStringMap:J.a,Entry:J.a,webkitFileSystemEntry:J.a,FileSystemEntry:J.a,External:J.a,FaceDetector:J.a,FederatedCredential:J.a,FileEntry:J.a,webkitFileSystemFileEntry:J.a,FileSystemFileEntry:J.a,DOMFileSystem:J.a,WebKitFileSystem:J.a,webkitFileSystem:J.a,FileSystem:J.a,FontFace:J.a,FontFaceSource:J.a,FormData:J.a,GamepadButton:J.a,GamepadPose:J.a,Geolocation:J.a,Position:J.a,GeolocationPosition:J.a,Headers:J.a,HTMLHyperlinkElementUtils:J.a,IdleDeadline:J.a,ImageBitmap:J.a,ImageBitmapRenderingContext:J.a,ImageCapture:J.a,ImageData:J.a,InputDeviceCapabilities:J.a,IntersectionObserver:J.a,IntersectionObserverEntry:J.a,InterventionReport:J.a,KeyframeEffect:J.a,KeyframeEffectReadOnly:J.a,MediaCapabilities:J.a,MediaCapabilitiesInfo:J.a,MediaDeviceInfo:J.a,MediaError:J.a,MediaKeyStatusMap:J.a,MediaKeySystemAccess:J.a,MediaKeys:J.a,MediaKeysPolicy:J.a,MediaMetadata:J.a,MediaSession:J.a,MediaSettingsRange:J.a,MemoryInfo:J.a,MessageChannel:J.a,Metadata:J.a,MutationObserver:J.a,WebKitMutationObserver:J.a,MutationRecord:J.a,NavigationPreloadManager:J.a,Navigator:J.a,NavigatorAutomationInformation:J.a,NavigatorConcurrentHardware:J.a,NavigatorCookies:J.a,NavigatorUserMediaError:J.a,NodeFilter:J.a,NodeIterator:J.a,NonDocumentTypeChildNode:J.a,NonElementParentNode:J.a,NoncedElement:J.a,OffscreenCanvasRenderingContext2D:J.a,OverconstrainedError:J.a,PaintRenderingContext2D:J.a,PaintSize:J.a,PaintWorkletGlobalScope:J.a,PasswordCredential:J.a,Path2D:J.a,PaymentAddress:J.a,PaymentInstruments:J.a,PaymentManager:J.a,PaymentResponse:J.a,PerformanceEntry:J.a,PerformanceLongTaskTiming:J.a,PerformanceMark:J.a,PerformanceMeasure:J.a,PerformanceNavigation:J.a,PerformanceNavigationTiming:J.a,PerformanceObserver:J.a,PerformanceObserverEntryList:J.a,PerformancePaintTiming:J.a,PerformanceResourceTiming:J.a,PerformanceServerTiming:J.a,PerformanceTiming:J.a,Permissions:J.a,PhotoCapabilities:J.a,PositionError:J.a,GeolocationPositionError:J.a,Presentation:J.a,PresentationReceiver:J.a,PublicKeyCredential:J.a,PushManager:J.a,PushMessageData:J.a,PushSubscription:J.a,PushSubscriptionOptions:J.a,Range:J.a,RelatedApplication:J.a,ReportBody:J.a,ReportingObserver:J.a,ResizeObserver:J.a,ResizeObserverEntry:J.a,RTCCertificate:J.a,RTCIceCandidate:J.a,mozRTCIceCandidate:J.a,RTCLegacyStatsReport:J.a,RTCRtpContributingSource:J.a,RTCRtpReceiver:J.a,RTCRtpSender:J.a,RTCSessionDescription:J.a,mozRTCSessionDescription:J.a,RTCStatsResponse:J.a,Screen:J.a,ScrollState:J.a,ScrollTimeline:J.a,Selection:J.a,SharedArrayBuffer:J.a,SpeechRecognitionAlternative:J.a,SpeechSynthesisVoice:J.a,StaticRange:J.a,StorageManager:J.a,StyleMedia:J.a,StylePropertyMap:J.a,StylePropertyMapReadonly:J.a,SyncManager:J.a,TaskAttributionTiming:J.a,TextDetector:J.a,TextMetrics:J.a,TrackDefault:J.a,TreeWalker:J.a,TrustedHTML:J.a,TrustedScriptURL:J.a,TrustedURL:J.a,UnderlyingSourceBase:J.a,URLSearchParams:J.a,VRCoordinateSystem:J.a,VRDisplayCapabilities:J.a,VREyeParameters:J.a,VRFrameData:J.a,VRFrameOfReference:J.a,VRPose:J.a,VRStageBounds:J.a,VRStageBoundsPoint:J.a,VRStageParameters:J.a,ValidityState:J.a,VideoPlaybackQuality:J.a,VideoTrack:J.a,VTTRegion:J.a,WindowClient:J.a,WorkletAnimation:J.a,WorkletGlobalScope:J.a,XPathEvaluator:J.a,XPathExpression:J.a,XPathNSResolver:J.a,XPathResult:J.a,XMLSerializer:J.a,XSLTProcessor:J.a,Bluetooth:J.a,BluetoothCharacteristicProperties:J.a,BluetoothRemoteGATTServer:J.a,BluetoothRemoteGATTService:J.a,BluetoothUUID:J.a,BudgetService:J.a,Cache:J.a,DOMFileSystemSync:J.a,DirectoryEntrySync:J.a,DirectoryReaderSync:J.a,EntrySync:J.a,FileEntrySync:J.a,FileReaderSync:J.a,FileWriterSync:J.a,HTMLAllCollection:J.a,Mojo:J.a,MojoHandle:J.a,MojoWatcher:J.a,NFC:J.a,PagePopupController:J.a,Report:J.a,Request:J.a,Response:J.a,SubtleCrypto:J.a,USBAlternateInterface:J.a,USBConfiguration:J.a,USBDevice:J.a,USBEndpoint:J.a,USBInTransferResult:J.a,USBInterface:J.a,USBIsochronousInTransferPacket:J.a,USBIsochronousInTransferResult:J.a,USBIsochronousOutTransferPacket:J.a,USBIsochronousOutTransferResult:J.a,USBOutTransferResult:J.a,WorkerLocation:J.a,WorkerNavigator:J.a,Worklet:J.a,IDBCursor:J.a,IDBCursorWithValue:J.a,IDBFactory:J.a,IDBIndex:J.a,IDBKeyRange:J.a,IDBObjectStore:J.a,IDBObservation:J.a,IDBObserver:J.a,IDBObserverChanges:J.a,SVGAngle:J.a,SVGAnimatedAngle:J.a,SVGAnimatedBoolean:J.a,SVGAnimatedEnumeration:J.a,SVGAnimatedInteger:J.a,SVGAnimatedLength:J.a,SVGAnimatedLengthList:J.a,SVGAnimatedNumber:J.a,SVGAnimatedNumberList:J.a,SVGAnimatedPreserveAspectRatio:J.a,SVGAnimatedRect:J.a,SVGAnimatedString:J.a,SVGAnimatedTransformList:J.a,SVGMatrix:J.a,SVGPoint:J.a,SVGPreserveAspectRatio:J.a,SVGRect:J.a,SVGUnitTypes:J.a,AudioListener:J.a,AudioParam:J.a,AudioTrack:J.a,AudioWorkletGlobalScope:J.a,AudioWorkletProcessor:J.a,PeriodicWave:J.a,WebGLActiveInfo:J.a,ANGLEInstancedArrays:J.a,ANGLE_instanced_arrays:J.a,WebGLBuffer:J.a,WebGLCanvas:J.a,WebGLColorBufferFloat:J.a,WebGLCompressedTextureASTC:J.a,WebGLCompressedTextureATC:J.a,WEBGL_compressed_texture_atc:J.a,WebGLCompressedTextureETC1:J.a,WEBGL_compressed_texture_etc1:J.a,WebGLCompressedTextureETC:J.a,WebGLCompressedTexturePVRTC:J.a,WEBGL_compressed_texture_pvrtc:J.a,WebGLCompressedTextureS3TC:J.a,WEBGL_compressed_texture_s3tc:J.a,WebGLCompressedTextureS3TCsRGB:J.a,WebGLDebugRendererInfo:J.a,WEBGL_debug_renderer_info:J.a,WebGLDebugShaders:J.a,WEBGL_debug_shaders:J.a,WebGLDepthTexture:J.a,WEBGL_depth_texture:J.a,WebGLDrawBuffers:J.a,WEBGL_draw_buffers:J.a,EXTsRGB:J.a,EXT_sRGB:J.a,EXTBlendMinMax:J.a,EXT_blend_minmax:J.a,EXTColorBufferFloat:J.a,EXTColorBufferHalfFloat:J.a,EXTDisjointTimerQuery:J.a,EXTDisjointTimerQueryWebGL2:J.a,EXTFragDepth:J.a,EXT_frag_depth:J.a,EXTShaderTextureLOD:J.a,EXT_shader_texture_lod:J.a,EXTTextureFilterAnisotropic:J.a,EXT_texture_filter_anisotropic:J.a,WebGLFramebuffer:J.a,WebGLGetBufferSubDataAsync:J.a,WebGLLoseContext:J.a,WebGLExtensionLoseContext:J.a,WEBGL_lose_context:J.a,OESElementIndexUint:J.a,OES_element_index_uint:J.a,OESStandardDerivatives:J.a,OES_standard_derivatives:J.a,OESTextureFloat:J.a,OES_texture_float:J.a,OESTextureFloatLinear:J.a,OES_texture_float_linear:J.a,OESTextureHalfFloat:J.a,OES_texture_half_float:J.a,OESTextureHalfFloatLinear:J.a,OES_texture_half_float_linear:J.a,OESVertexArrayObject:J.a,OES_vertex_array_object:J.a,WebGLProgram:J.a,WebGLQuery:J.a,WebGLRenderbuffer:J.a,WebGLRenderingContext:J.a,WebGL2RenderingContext:J.a,WebGLSampler:J.a,WebGLShader:J.a,WebGLShaderPrecisionFormat:J.a,WebGLSync:J.a,WebGLTexture:J.a,WebGLTimerQueryEXT:J.a,WebGLTransformFeedback:J.a,WebGLUniformLocation:J.a,WebGLVertexArrayObject:J.a,WebGLVertexArrayObjectOES:J.a,WebGL2RenderingContextBase:J.a,ArrayBuffer:A.dn,ArrayBufferView:A.bZ,DataView:A.dp,Float32Array:A.dq,Float64Array:A.dr,Int16Array:A.ds,Int32Array:A.dt,Int8Array:A.du,Uint16Array:A.dv,Uint32Array:A.dw,Uint8ClampedArray:A.c_,CanvasPixelArray:A.c_,Uint8Array:A.c0,HTMLAudioElement:A.l,HTMLBRElement:A.l,HTMLButtonElement:A.l,HTMLCanvasElement:A.l,HTMLContentElement:A.l,HTMLDListElement:A.l,HTMLDataElement:A.l,HTMLDataListElement:A.l,HTMLDetailsElement:A.l,HTMLDialogElement:A.l,HTMLDivElement:A.l,HTMLEmbedElement:A.l,HTMLFieldSetElement:A.l,HTMLHRElement:A.l,HTMLHeadElement:A.l,HTMLHeadingElement:A.l,HTMLHtmlElement:A.l,HTMLIFrameElement:A.l,HTMLImageElement:A.l,HTMLLIElement:A.l,HTMLLabelElement:A.l,HTMLLegendElement:A.l,HTMLLinkElement:A.l,HTMLMapElement:A.l,HTMLMediaElement:A.l,HTMLMenuElement:A.l,HTMLMetaElement:A.l,HTMLMeterElement:A.l,HTMLModElement:A.l,HTMLOListElement:A.l,HTMLObjectElement:A.l,HTMLOptGroupElement:A.l,HTMLOptionElement:A.l,HTMLOutputElement:A.l,HTMLParagraphElement:A.l,HTMLParamElement:A.l,HTMLPictureElement:A.l,HTMLPreElement:A.l,HTMLProgressElement:A.l,HTMLQuoteElement:A.l,HTMLScriptElement:A.l,HTMLShadowElement:A.l,HTMLSlotElement:A.l,HTMLSourceElement:A.l,HTMLSpanElement:A.l,HTMLStyleElement:A.l,HTMLTableCaptionElement:A.l,HTMLTableCellElement:A.l,HTMLTableDataCellElement:A.l,HTMLTableHeaderCellElement:A.l,HTMLTableColElement:A.l,HTMLTimeElement:A.l,HTMLTitleElement:A.l,HTMLTrackElement:A.l,HTMLUListElement:A.l,HTMLUnknownElement:A.l,HTMLVideoElement:A.l,HTMLDirectoryElement:A.l,HTMLFontElement:A.l,HTMLFrameElement:A.l,HTMLFrameSetElement:A.l,HTMLMarqueeElement:A.l,HTMLElement:A.l,AccessibleNodeList:A.cI,HTMLAnchorElement:A.cJ,HTMLAreaElement:A.cK,HTMLBaseElement:A.bg,Blob:A.bF,HTMLBodyElement:A.aX,CDATASection:A.a3,CharacterData:A.a3,Comment:A.a3,ProcessingInstruction:A.a3,Text:A.a3,CSSPerspective:A.d_,CSSCharsetRule:A.w,CSSConditionRule:A.w,CSSFontFaceRule:A.w,CSSGroupingRule:A.w,CSSImportRule:A.w,CSSKeyframeRule:A.w,MozCSSKeyframeRule:A.w,WebKitCSSKeyframeRule:A.w,CSSKeyframesRule:A.w,MozCSSKeyframesRule:A.w,WebKitCSSKeyframesRule:A.w,CSSMediaRule:A.w,CSSNamespaceRule:A.w,CSSPageRule:A.w,CSSRule:A.w,CSSStyleRule:A.w,CSSSupportsRule:A.w,CSSViewportRule:A.w,CSSStyleDeclaration:A.bi,MSStyleCSSProperties:A.bi,CSS2Properties:A.bi,CSSImageValue:A.P,CSSKeywordValue:A.P,CSSNumericValue:A.P,CSSPositionValue:A.P,CSSResourceValue:A.P,CSSUnitValue:A.P,CSSURLImageValue:A.P,CSSStyleValue:A.P,CSSMatrixComponent:A.a_,CSSRotation:A.a_,CSSScale:A.a_,CSSSkew:A.a_,CSSTranslation:A.a_,CSSTransformComponent:A.a_,CSSTransformValue:A.d0,CSSUnparsedValue:A.d1,DataTransferItemList:A.d2,XMLDocument:A.aZ,Document:A.aZ,DOMException:A.d3,ClientRectList:A.bI,DOMRectList:A.bI,DOMRectReadOnly:A.bJ,DOMStringList:A.d4,DOMTokenList:A.d5,MathMLElement:A.q,Element:A.q,AbortPaymentEvent:A.h,AnimationEvent:A.h,AnimationPlaybackEvent:A.h,ApplicationCacheErrorEvent:A.h,BackgroundFetchClickEvent:A.h,BackgroundFetchEvent:A.h,BackgroundFetchFailEvent:A.h,BackgroundFetchedEvent:A.h,BeforeInstallPromptEvent:A.h,BeforeUnloadEvent:A.h,BlobEvent:A.h,CanMakePaymentEvent:A.h,ClipboardEvent:A.h,CloseEvent:A.h,CustomEvent:A.h,DeviceMotionEvent:A.h,DeviceOrientationEvent:A.h,ErrorEvent:A.h,ExtendableEvent:A.h,ExtendableMessageEvent:A.h,FetchEvent:A.h,FontFaceSetLoadEvent:A.h,ForeignFetchEvent:A.h,GamepadEvent:A.h,HashChangeEvent:A.h,InstallEvent:A.h,MediaEncryptedEvent:A.h,MediaKeyMessageEvent:A.h,MediaQueryListEvent:A.h,MediaStreamEvent:A.h,MediaStreamTrackEvent:A.h,MessageEvent:A.h,MIDIConnectionEvent:A.h,MIDIMessageEvent:A.h,MutationEvent:A.h,NotificationEvent:A.h,PageTransitionEvent:A.h,PaymentRequestEvent:A.h,PaymentRequestUpdateEvent:A.h,PopStateEvent:A.h,PresentationConnectionAvailableEvent:A.h,PresentationConnectionCloseEvent:A.h,PromiseRejectionEvent:A.h,PushEvent:A.h,RTCDataChannelEvent:A.h,RTCDTMFToneChangeEvent:A.h,RTCPeerConnectionIceEvent:A.h,RTCTrackEvent:A.h,SecurityPolicyViolationEvent:A.h,SensorErrorEvent:A.h,SpeechRecognitionError:A.h,SpeechRecognitionEvent:A.h,SpeechSynthesisEvent:A.h,StorageEvent:A.h,SyncEvent:A.h,TrackEvent:A.h,TransitionEvent:A.h,WebKitTransitionEvent:A.h,VRDeviceEvent:A.h,VRDisplayEvent:A.h,VRSessionEvent:A.h,MojoInterfaceRequestEvent:A.h,USBConnectionEvent:A.h,IDBVersionChangeEvent:A.h,AudioProcessingEvent:A.h,OfflineAudioCompletionEvent:A.h,WebGLContextEvent:A.h,Event:A.h,InputEvent:A.h,SubmitEvent:A.h,AbsoluteOrientationSensor:A.c,Accelerometer:A.c,AccessibleNode:A.c,AmbientLightSensor:A.c,Animation:A.c,ApplicationCache:A.c,DOMApplicationCache:A.c,OfflineResourceList:A.c,BackgroundFetchRegistration:A.c,BatteryManager:A.c,BroadcastChannel:A.c,CanvasCaptureMediaStreamTrack:A.c,DedicatedWorkerGlobalScope:A.c,EventSource:A.c,FileReader:A.c,FontFaceSet:A.c,Gyroscope:A.c,LinearAccelerationSensor:A.c,Magnetometer:A.c,MediaDevices:A.c,MediaKeySession:A.c,MediaQueryList:A.c,MediaRecorder:A.c,MediaSource:A.c,MediaStream:A.c,MediaStreamTrack:A.c,MessagePort:A.c,MIDIAccess:A.c,MIDIInput:A.c,MIDIOutput:A.c,MIDIPort:A.c,NetworkInformation:A.c,Notification:A.c,OffscreenCanvas:A.c,OrientationSensor:A.c,PaymentRequest:A.c,Performance:A.c,PermissionStatus:A.c,PresentationAvailability:A.c,PresentationConnection:A.c,PresentationConnectionList:A.c,PresentationRequest:A.c,RelativeOrientationSensor:A.c,RemotePlayback:A.c,RTCDataChannel:A.c,DataChannel:A.c,RTCDTMFSender:A.c,RTCPeerConnection:A.c,webkitRTCPeerConnection:A.c,mozRTCPeerConnection:A.c,ScreenOrientation:A.c,Sensor:A.c,ServiceWorker:A.c,ServiceWorkerContainer:A.c,ServiceWorkerGlobalScope:A.c,ServiceWorkerRegistration:A.c,SharedWorker:A.c,SharedWorkerGlobalScope:A.c,SpeechRecognition:A.c,webkitSpeechRecognition:A.c,SpeechSynthesis:A.c,SpeechSynthesisUtterance:A.c,VR:A.c,VRDevice:A.c,VRDisplay:A.c,VRSession:A.c,VisualViewport:A.c,WebSocket:A.c,Window:A.c,DOMWindow:A.c,Worker:A.c,WorkerGlobalScope:A.c,WorkerPerformance:A.c,BluetoothDevice:A.c,BluetoothRemoteGATTCharacteristic:A.c,Clipboard:A.c,MojoInterfaceInterceptor:A.c,USB:A.c,IDBDatabase:A.c,IDBOpenDBRequest:A.c,IDBVersionChangeRequest:A.c,IDBRequest:A.c,IDBTransaction:A.c,AnalyserNode:A.c,RealtimeAnalyserNode:A.c,AudioBufferSourceNode:A.c,AudioDestinationNode:A.c,AudioNode:A.c,AudioScheduledSourceNode:A.c,AudioWorkletNode:A.c,BiquadFilterNode:A.c,ChannelMergerNode:A.c,AudioChannelMerger:A.c,ChannelSplitterNode:A.c,AudioChannelSplitter:A.c,ConstantSourceNode:A.c,ConvolverNode:A.c,DelayNode:A.c,DynamicsCompressorNode:A.c,GainNode:A.c,AudioGainNode:A.c,IIRFilterNode:A.c,MediaElementAudioSourceNode:A.c,MediaStreamAudioDestinationNode:A.c,MediaStreamAudioSourceNode:A.c,OscillatorNode:A.c,Oscillator:A.c,PannerNode:A.c,AudioPannerNode:A.c,webkitAudioPannerNode:A.c,ScriptProcessorNode:A.c,JavaScriptAudioNode:A.c,StereoPannerNode:A.c,WaveShaperNode:A.c,EventTarget:A.c,File:A.a4,FileList:A.d6,FileWriter:A.d7,HTMLFormElement:A.d9,Gamepad:A.a5,History:A.da,HTMLCollection:A.b0,HTMLFormControlsCollection:A.b0,HTMLOptionsCollection:A.b0,HTMLDocument:A.bP,XMLHttpRequest:A.a6,XMLHttpRequestUpload:A.b1,XMLHttpRequestEventTarget:A.b1,HTMLInputElement:A.aK,KeyboardEvent:A.bn,Location:A.di,MediaList:A.dj,MIDIInputMap:A.dk,MIDIOutputMap:A.dl,MimeType:A.a8,MimeTypeArray:A.dm,DocumentFragment:A.m,ShadowRoot:A.m,DocumentType:A.m,Node:A.m,NodeList:A.bp,RadioNodeList:A.bp,Plugin:A.aa,PluginArray:A.dB,ProgressEvent:A.as,ResourceProgressEvent:A.as,RTCStatsReport:A.dE,HTMLSelectElement:A.dG,SourceBuffer:A.ab,SourceBufferList:A.dH,SpeechGrammar:A.ac,SpeechGrammarList:A.dI,SpeechRecognitionResult:A.ad,Storage:A.dL,CSSStyleSheet:A.X,StyleSheet:A.X,HTMLTableElement:A.c5,HTMLTableRowElement:A.dN,HTMLTableSectionElement:A.dO,HTMLTemplateElement:A.bs,HTMLTextAreaElement:A.b5,TextTrack:A.af,TextTrackCue:A.Y,VTTCue:A.Y,TextTrackCueList:A.dQ,TextTrackList:A.dR,TimeRanges:A.dS,Touch:A.ag,TouchList:A.dT,TrackDefaultList:A.dU,CompositionEvent:A.S,FocusEvent:A.S,MouseEvent:A.S,DragEvent:A.S,PointerEvent:A.S,TextEvent:A.S,TouchEvent:A.S,WheelEvent:A.S,UIEvent:A.S,URL:A.e1,VideoTrackList:A.e2,Attr:A.bv,CSSRuleList:A.e8,ClientRect:A.c8,DOMRect:A.c8,GamepadList:A.em,NamedNodeMap:A.cd,MozNamedAttrMap:A.cd,SpeechRecognitionResultList:A.eM,StyleSheetList:A.eS,SVGLength:A.am,SVGLengthList:A.df,SVGNumber:A.aq,SVGNumberList:A.dx,SVGPointList:A.dC,SVGScriptElement:A.bq,SVGStringList:A.dM,SVGAElement:A.i,SVGAnimateElement:A.i,SVGAnimateMotionElement:A.i,SVGAnimateTransformElement:A.i,SVGAnimationElement:A.i,SVGCircleElement:A.i,SVGClipPathElement:A.i,SVGDefsElement:A.i,SVGDescElement:A.i,SVGDiscardElement:A.i,SVGEllipseElement:A.i,SVGFEBlendElement:A.i,SVGFEColorMatrixElement:A.i,SVGFEComponentTransferElement:A.i,SVGFECompositeElement:A.i,SVGFEConvolveMatrixElement:A.i,SVGFEDiffuseLightingElement:A.i,SVGFEDisplacementMapElement:A.i,SVGFEDistantLightElement:A.i,SVGFEFloodElement:A.i,SVGFEFuncAElement:A.i,SVGFEFuncBElement:A.i,SVGFEFuncGElement:A.i,SVGFEFuncRElement:A.i,SVGFEGaussianBlurElement:A.i,SVGFEImageElement:A.i,SVGFEMergeElement:A.i,SVGFEMergeNodeElement:A.i,SVGFEMorphologyElement:A.i,SVGFEOffsetElement:A.i,SVGFEPointLightElement:A.i,SVGFESpecularLightingElement:A.i,SVGFESpotLightElement:A.i,SVGFETileElement:A.i,SVGFETurbulenceElement:A.i,SVGFilterElement:A.i,SVGForeignObjectElement:A.i,SVGGElement:A.i,SVGGeometryElement:A.i,SVGGraphicsElement:A.i,SVGImageElement:A.i,SVGLineElement:A.i,SVGLinearGradientElement:A.i,SVGMarkerElement:A.i,SVGMaskElement:A.i,SVGMetadataElement:A.i,SVGPathElement:A.i,SVGPatternElement:A.i,SVGPolygonElement:A.i,SVGPolylineElement:A.i,SVGRadialGradientElement:A.i,SVGRectElement:A.i,SVGSetElement:A.i,SVGStopElement:A.i,SVGStyleElement:A.i,SVGSVGElement:A.i,SVGSwitchElement:A.i,SVGSymbolElement:A.i,SVGTSpanElement:A.i,SVGTextContentElement:A.i,SVGTextElement:A.i,SVGTextPathElement:A.i,SVGTextPositioningElement:A.i,SVGTitleElement:A.i,SVGUseElement:A.i,SVGViewElement:A.i,SVGGradientElement:A.i,SVGComponentTransferFunctionElement:A.i,SVGFEDropShadowElement:A.i,SVGMPathElement:A.i,SVGElement:A.i,SVGTransform:A.au,SVGTransformList:A.dV,AudioBuffer:A.cP,AudioParamMap:A.cQ,AudioTrackList:A.cR,AudioContext:A.aF,webkitAudioContext:A.aF,BaseAudioContext:A.aF,OfflineAudioContext:A.dy}) +hunkHelpers.setOrUpdateLeafTags({WebGL:true,AnimationEffectReadOnly:true,AnimationEffectTiming:true,AnimationEffectTimingReadOnly:true,AnimationTimeline:true,AnimationWorkletGlobalScope:true,AuthenticatorAssertionResponse:true,AuthenticatorAttestationResponse:true,AuthenticatorResponse:true,BackgroundFetchFetch:true,BackgroundFetchManager:true,BackgroundFetchSettledFetch:true,BarProp:true,BarcodeDetector:true,BluetoothRemoteGATTDescriptor:true,Body:true,BudgetState:true,CacheStorage:true,CanvasGradient:true,CanvasPattern:true,CanvasRenderingContext2D:true,Client:true,Clients:true,CookieStore:true,Coordinates:true,Credential:true,CredentialUserData:true,CredentialsContainer:true,Crypto:true,CryptoKey:true,CSS:true,CSSVariableReferenceValue:true,CustomElementRegistry:true,DataTransfer:true,DataTransferItem:true,DeprecatedStorageInfo:true,DeprecatedStorageQuota:true,DeprecationReport:true,DetectedBarcode:true,DetectedFace:true,DetectedText:true,DeviceAcceleration:true,DeviceRotationRate:true,DirectoryEntry:true,webkitFileSystemDirectoryEntry:true,FileSystemDirectoryEntry:true,DirectoryReader:true,WebKitDirectoryReader:true,webkitFileSystemDirectoryReader:true,FileSystemDirectoryReader:true,DocumentOrShadowRoot:true,DocumentTimeline:true,DOMError:true,DOMImplementation:true,Iterator:true,DOMMatrix:true,DOMMatrixReadOnly:true,DOMParser:true,DOMPoint:true,DOMPointReadOnly:true,DOMQuad:true,DOMStringMap:true,Entry:true,webkitFileSystemEntry:true,FileSystemEntry:true,External:true,FaceDetector:true,FederatedCredential:true,FileEntry:true,webkitFileSystemFileEntry:true,FileSystemFileEntry:true,DOMFileSystem:true,WebKitFileSystem:true,webkitFileSystem:true,FileSystem:true,FontFace:true,FontFaceSource:true,FormData:true,GamepadButton:true,GamepadPose:true,Geolocation:true,Position:true,GeolocationPosition:true,Headers:true,HTMLHyperlinkElementUtils:true,IdleDeadline:true,ImageBitmap:true,ImageBitmapRenderingContext:true,ImageCapture:true,ImageData:true,InputDeviceCapabilities:true,IntersectionObserver:true,IntersectionObserverEntry:true,InterventionReport:true,KeyframeEffect:true,KeyframeEffectReadOnly:true,MediaCapabilities:true,MediaCapabilitiesInfo:true,MediaDeviceInfo:true,MediaError:true,MediaKeyStatusMap:true,MediaKeySystemAccess:true,MediaKeys:true,MediaKeysPolicy:true,MediaMetadata:true,MediaSession:true,MediaSettingsRange:true,MemoryInfo:true,MessageChannel:true,Metadata:true,MutationObserver:true,WebKitMutationObserver:true,MutationRecord:true,NavigationPreloadManager:true,Navigator:true,NavigatorAutomationInformation:true,NavigatorConcurrentHardware:true,NavigatorCookies:true,NavigatorUserMediaError:true,NodeFilter:true,NodeIterator:true,NonDocumentTypeChildNode:true,NonElementParentNode:true,NoncedElement:true,OffscreenCanvasRenderingContext2D:true,OverconstrainedError:true,PaintRenderingContext2D:true,PaintSize:true,PaintWorkletGlobalScope:true,PasswordCredential:true,Path2D:true,PaymentAddress:true,PaymentInstruments:true,PaymentManager:true,PaymentResponse:true,PerformanceEntry:true,PerformanceLongTaskTiming:true,PerformanceMark:true,PerformanceMeasure:true,PerformanceNavigation:true,PerformanceNavigationTiming:true,PerformanceObserver:true,PerformanceObserverEntryList:true,PerformancePaintTiming:true,PerformanceResourceTiming:true,PerformanceServerTiming:true,PerformanceTiming:true,Permissions:true,PhotoCapabilities:true,PositionError:true,GeolocationPositionError:true,Presentation:true,PresentationReceiver:true,PublicKeyCredential:true,PushManager:true,PushMessageData:true,PushSubscription:true,PushSubscriptionOptions:true,Range:true,RelatedApplication:true,ReportBody:true,ReportingObserver:true,ResizeObserver:true,ResizeObserverEntry:true,RTCCertificate:true,RTCIceCandidate:true,mozRTCIceCandidate:true,RTCLegacyStatsReport:true,RTCRtpContributingSource:true,RTCRtpReceiver:true,RTCRtpSender:true,RTCSessionDescription:true,mozRTCSessionDescription:true,RTCStatsResponse:true,Screen:true,ScrollState:true,ScrollTimeline:true,Selection:true,SharedArrayBuffer:true,SpeechRecognitionAlternative:true,SpeechSynthesisVoice:true,StaticRange:true,StorageManager:true,StyleMedia:true,StylePropertyMap:true,StylePropertyMapReadonly:true,SyncManager:true,TaskAttributionTiming:true,TextDetector:true,TextMetrics:true,TrackDefault:true,TreeWalker:true,TrustedHTML:true,TrustedScriptURL:true,TrustedURL:true,UnderlyingSourceBase:true,URLSearchParams:true,VRCoordinateSystem:true,VRDisplayCapabilities:true,VREyeParameters:true,VRFrameData:true,VRFrameOfReference:true,VRPose:true,VRStageBounds:true,VRStageBoundsPoint:true,VRStageParameters:true,ValidityState:true,VideoPlaybackQuality:true,VideoTrack:true,VTTRegion:true,WindowClient:true,WorkletAnimation:true,WorkletGlobalScope:true,XPathEvaluator:true,XPathExpression:true,XPathNSResolver:true,XPathResult:true,XMLSerializer:true,XSLTProcessor:true,Bluetooth:true,BluetoothCharacteristicProperties:true,BluetoothRemoteGATTServer:true,BluetoothRemoteGATTService:true,BluetoothUUID:true,BudgetService:true,Cache:true,DOMFileSystemSync:true,DirectoryEntrySync:true,DirectoryReaderSync:true,EntrySync:true,FileEntrySync:true,FileReaderSync:true,FileWriterSync:true,HTMLAllCollection:true,Mojo:true,MojoHandle:true,MojoWatcher:true,NFC:true,PagePopupController:true,Report:true,Request:true,Response:true,SubtleCrypto:true,USBAlternateInterface:true,USBConfiguration:true,USBDevice:true,USBEndpoint:true,USBInTransferResult:true,USBInterface:true,USBIsochronousInTransferPacket:true,USBIsochronousInTransferResult:true,USBIsochronousOutTransferPacket:true,USBIsochronousOutTransferResult:true,USBOutTransferResult:true,WorkerLocation:true,WorkerNavigator:true,Worklet:true,IDBCursor:true,IDBCursorWithValue:true,IDBFactory:true,IDBIndex:true,IDBKeyRange:true,IDBObjectStore:true,IDBObservation:true,IDBObserver:true,IDBObserverChanges:true,SVGAngle:true,SVGAnimatedAngle:true,SVGAnimatedBoolean:true,SVGAnimatedEnumeration:true,SVGAnimatedInteger:true,SVGAnimatedLength:true,SVGAnimatedLengthList:true,SVGAnimatedNumber:true,SVGAnimatedNumberList:true,SVGAnimatedPreserveAspectRatio:true,SVGAnimatedRect:true,SVGAnimatedString:true,SVGAnimatedTransformList:true,SVGMatrix:true,SVGPoint:true,SVGPreserveAspectRatio:true,SVGRect:true,SVGUnitTypes:true,AudioListener:true,AudioParam:true,AudioTrack:true,AudioWorkletGlobalScope:true,AudioWorkletProcessor:true,PeriodicWave:true,WebGLActiveInfo:true,ANGLEInstancedArrays:true,ANGLE_instanced_arrays:true,WebGLBuffer:true,WebGLCanvas:true,WebGLColorBufferFloat:true,WebGLCompressedTextureASTC:true,WebGLCompressedTextureATC:true,WEBGL_compressed_texture_atc:true,WebGLCompressedTextureETC1:true,WEBGL_compressed_texture_etc1:true,WebGLCompressedTextureETC:true,WebGLCompressedTexturePVRTC:true,WEBGL_compressed_texture_pvrtc:true,WebGLCompressedTextureS3TC:true,WEBGL_compressed_texture_s3tc:true,WebGLCompressedTextureS3TCsRGB:true,WebGLDebugRendererInfo:true,WEBGL_debug_renderer_info:true,WebGLDebugShaders:true,WEBGL_debug_shaders:true,WebGLDepthTexture:true,WEBGL_depth_texture:true,WebGLDrawBuffers:true,WEBGL_draw_buffers:true,EXTsRGB:true,EXT_sRGB:true,EXTBlendMinMax:true,EXT_blend_minmax:true,EXTColorBufferFloat:true,EXTColorBufferHalfFloat:true,EXTDisjointTimerQuery:true,EXTDisjointTimerQueryWebGL2:true,EXTFragDepth:true,EXT_frag_depth:true,EXTShaderTextureLOD:true,EXT_shader_texture_lod:true,EXTTextureFilterAnisotropic:true,EXT_texture_filter_anisotropic:true,WebGLFramebuffer:true,WebGLGetBufferSubDataAsync:true,WebGLLoseContext:true,WebGLExtensionLoseContext:true,WEBGL_lose_context:true,OESElementIndexUint:true,OES_element_index_uint:true,OESStandardDerivatives:true,OES_standard_derivatives:true,OESTextureFloat:true,OES_texture_float:true,OESTextureFloatLinear:true,OES_texture_float_linear:true,OESTextureHalfFloat:true,OES_texture_half_float:true,OESTextureHalfFloatLinear:true,OES_texture_half_float_linear:true,OESVertexArrayObject:true,OES_vertex_array_object:true,WebGLProgram:true,WebGLQuery:true,WebGLRenderbuffer:true,WebGLRenderingContext:true,WebGL2RenderingContext:true,WebGLSampler:true,WebGLShader:true,WebGLShaderPrecisionFormat:true,WebGLSync:true,WebGLTexture:true,WebGLTimerQueryEXT:true,WebGLTransformFeedback:true,WebGLUniformLocation:true,WebGLVertexArrayObject:true,WebGLVertexArrayObjectOES:true,WebGL2RenderingContextBase:true,ArrayBuffer:true,ArrayBufferView:false,DataView:true,Float32Array:true,Float64Array:true,Int16Array:true,Int32Array:true,Int8Array:true,Uint16Array:true,Uint32Array:true,Uint8ClampedArray:true,CanvasPixelArray:true,Uint8Array:false,HTMLAudioElement:true,HTMLBRElement:true,HTMLButtonElement:true,HTMLCanvasElement:true,HTMLContentElement:true,HTMLDListElement:true,HTMLDataElement:true,HTMLDataListElement:true,HTMLDetailsElement:true,HTMLDialogElement:true,HTMLDivElement:true,HTMLEmbedElement:true,HTMLFieldSetElement:true,HTMLHRElement:true,HTMLHeadElement:true,HTMLHeadingElement:true,HTMLHtmlElement:true,HTMLIFrameElement:true,HTMLImageElement:true,HTMLLIElement:true,HTMLLabelElement:true,HTMLLegendElement:true,HTMLLinkElement:true,HTMLMapElement:true,HTMLMediaElement:true,HTMLMenuElement:true,HTMLMetaElement:true,HTMLMeterElement:true,HTMLModElement:true,HTMLOListElement:true,HTMLObjectElement:true,HTMLOptGroupElement:true,HTMLOptionElement:true,HTMLOutputElement:true,HTMLParagraphElement:true,HTMLParamElement:true,HTMLPictureElement:true,HTMLPreElement:true,HTMLProgressElement:true,HTMLQuoteElement:true,HTMLScriptElement:true,HTMLShadowElement:true,HTMLSlotElement:true,HTMLSourceElement:true,HTMLSpanElement:true,HTMLStyleElement:true,HTMLTableCaptionElement:true,HTMLTableCellElement:true,HTMLTableDataCellElement:true,HTMLTableHeaderCellElement:true,HTMLTableColElement:true,HTMLTimeElement:true,HTMLTitleElement:true,HTMLTrackElement:true,HTMLUListElement:true,HTMLUnknownElement:true,HTMLVideoElement:true,HTMLDirectoryElement:true,HTMLFontElement:true,HTMLFrameElement:true,HTMLFrameSetElement:true,HTMLMarqueeElement:true,HTMLElement:false,AccessibleNodeList:true,HTMLAnchorElement:true,HTMLAreaElement:true,HTMLBaseElement:true,Blob:false,HTMLBodyElement:true,CDATASection:true,CharacterData:true,Comment:true,ProcessingInstruction:true,Text:true,CSSPerspective:true,CSSCharsetRule:true,CSSConditionRule:true,CSSFontFaceRule:true,CSSGroupingRule:true,CSSImportRule:true,CSSKeyframeRule:true,MozCSSKeyframeRule:true,WebKitCSSKeyframeRule:true,CSSKeyframesRule:true,MozCSSKeyframesRule:true,WebKitCSSKeyframesRule:true,CSSMediaRule:true,CSSNamespaceRule:true,CSSPageRule:true,CSSRule:true,CSSStyleRule:true,CSSSupportsRule:true,CSSViewportRule:true,CSSStyleDeclaration:true,MSStyleCSSProperties:true,CSS2Properties:true,CSSImageValue:true,CSSKeywordValue:true,CSSNumericValue:true,CSSPositionValue:true,CSSResourceValue:true,CSSUnitValue:true,CSSURLImageValue:true,CSSStyleValue:false,CSSMatrixComponent:true,CSSRotation:true,CSSScale:true,CSSSkew:true,CSSTranslation:true,CSSTransformComponent:false,CSSTransformValue:true,CSSUnparsedValue:true,DataTransferItemList:true,XMLDocument:true,Document:false,DOMException:true,ClientRectList:true,DOMRectList:true,DOMRectReadOnly:false,DOMStringList:true,DOMTokenList:true,MathMLElement:true,Element:false,AbortPaymentEvent:true,AnimationEvent:true,AnimationPlaybackEvent:true,ApplicationCacheErrorEvent:true,BackgroundFetchClickEvent:true,BackgroundFetchEvent:true,BackgroundFetchFailEvent:true,BackgroundFetchedEvent:true,BeforeInstallPromptEvent:true,BeforeUnloadEvent:true,BlobEvent:true,CanMakePaymentEvent:true,ClipboardEvent:true,CloseEvent:true,CustomEvent:true,DeviceMotionEvent:true,DeviceOrientationEvent:true,ErrorEvent:true,ExtendableEvent:true,ExtendableMessageEvent:true,FetchEvent:true,FontFaceSetLoadEvent:true,ForeignFetchEvent:true,GamepadEvent:true,HashChangeEvent:true,InstallEvent:true,MediaEncryptedEvent:true,MediaKeyMessageEvent:true,MediaQueryListEvent:true,MediaStreamEvent:true,MediaStreamTrackEvent:true,MessageEvent:true,MIDIConnectionEvent:true,MIDIMessageEvent:true,MutationEvent:true,NotificationEvent:true,PageTransitionEvent:true,PaymentRequestEvent:true,PaymentRequestUpdateEvent:true,PopStateEvent:true,PresentationConnectionAvailableEvent:true,PresentationConnectionCloseEvent:true,PromiseRejectionEvent:true,PushEvent:true,RTCDataChannelEvent:true,RTCDTMFToneChangeEvent:true,RTCPeerConnectionIceEvent:true,RTCTrackEvent:true,SecurityPolicyViolationEvent:true,SensorErrorEvent:true,SpeechRecognitionError:true,SpeechRecognitionEvent:true,SpeechSynthesisEvent:true,StorageEvent:true,SyncEvent:true,TrackEvent:true,TransitionEvent:true,WebKitTransitionEvent:true,VRDeviceEvent:true,VRDisplayEvent:true,VRSessionEvent:true,MojoInterfaceRequestEvent:true,USBConnectionEvent:true,IDBVersionChangeEvent:true,AudioProcessingEvent:true,OfflineAudioCompletionEvent:true,WebGLContextEvent:true,Event:false,InputEvent:false,SubmitEvent:false,AbsoluteOrientationSensor:true,Accelerometer:true,AccessibleNode:true,AmbientLightSensor:true,Animation:true,ApplicationCache:true,DOMApplicationCache:true,OfflineResourceList:true,BackgroundFetchRegistration:true,BatteryManager:true,BroadcastChannel:true,CanvasCaptureMediaStreamTrack:true,DedicatedWorkerGlobalScope:true,EventSource:true,FileReader:true,FontFaceSet:true,Gyroscope:true,LinearAccelerationSensor:true,Magnetometer:true,MediaDevices:true,MediaKeySession:true,MediaQueryList:true,MediaRecorder:true,MediaSource:true,MediaStream:true,MediaStreamTrack:true,MessagePort:true,MIDIAccess:true,MIDIInput:true,MIDIOutput:true,MIDIPort:true,NetworkInformation:true,Notification:true,OffscreenCanvas:true,OrientationSensor:true,PaymentRequest:true,Performance:true,PermissionStatus:true,PresentationAvailability:true,PresentationConnection:true,PresentationConnectionList:true,PresentationRequest:true,RelativeOrientationSensor:true,RemotePlayback:true,RTCDataChannel:true,DataChannel:true,RTCDTMFSender:true,RTCPeerConnection:true,webkitRTCPeerConnection:true,mozRTCPeerConnection:true,ScreenOrientation:true,Sensor:true,ServiceWorker:true,ServiceWorkerContainer:true,ServiceWorkerGlobalScope:true,ServiceWorkerRegistration:true,SharedWorker:true,SharedWorkerGlobalScope:true,SpeechRecognition:true,webkitSpeechRecognition:true,SpeechSynthesis:true,SpeechSynthesisUtterance:true,VR:true,VRDevice:true,VRDisplay:true,VRSession:true,VisualViewport:true,WebSocket:true,Window:true,DOMWindow:true,Worker:true,WorkerGlobalScope:true,WorkerPerformance:true,BluetoothDevice:true,BluetoothRemoteGATTCharacteristic:true,Clipboard:true,MojoInterfaceInterceptor:true,USB:true,IDBDatabase:true,IDBOpenDBRequest:true,IDBVersionChangeRequest:true,IDBRequest:true,IDBTransaction:true,AnalyserNode:true,RealtimeAnalyserNode:true,AudioBufferSourceNode:true,AudioDestinationNode:true,AudioNode:true,AudioScheduledSourceNode:true,AudioWorkletNode:true,BiquadFilterNode:true,ChannelMergerNode:true,AudioChannelMerger:true,ChannelSplitterNode:true,AudioChannelSplitter:true,ConstantSourceNode:true,ConvolverNode:true,DelayNode:true,DynamicsCompressorNode:true,GainNode:true,AudioGainNode:true,IIRFilterNode:true,MediaElementAudioSourceNode:true,MediaStreamAudioDestinationNode:true,MediaStreamAudioSourceNode:true,OscillatorNode:true,Oscillator:true,PannerNode:true,AudioPannerNode:true,webkitAudioPannerNode:true,ScriptProcessorNode:true,JavaScriptAudioNode:true,StereoPannerNode:true,WaveShaperNode:true,EventTarget:false,File:true,FileList:true,FileWriter:true,HTMLFormElement:true,Gamepad:true,History:true,HTMLCollection:true,HTMLFormControlsCollection:true,HTMLOptionsCollection:true,HTMLDocument:true,XMLHttpRequest:true,XMLHttpRequestUpload:true,XMLHttpRequestEventTarget:false,HTMLInputElement:true,KeyboardEvent:true,Location:true,MediaList:true,MIDIInputMap:true,MIDIOutputMap:true,MimeType:true,MimeTypeArray:true,DocumentFragment:true,ShadowRoot:true,DocumentType:true,Node:false,NodeList:true,RadioNodeList:true,Plugin:true,PluginArray:true,ProgressEvent:true,ResourceProgressEvent:true,RTCStatsReport:true,HTMLSelectElement:true,SourceBuffer:true,SourceBufferList:true,SpeechGrammar:true,SpeechGrammarList:true,SpeechRecognitionResult:true,Storage:true,CSSStyleSheet:true,StyleSheet:true,HTMLTableElement:true,HTMLTableRowElement:true,HTMLTableSectionElement:true,HTMLTemplateElement:true,HTMLTextAreaElement:true,TextTrack:true,TextTrackCue:true,VTTCue:true,TextTrackCueList:true,TextTrackList:true,TimeRanges:true,Touch:true,TouchList:true,TrackDefaultList:true,CompositionEvent:true,FocusEvent:true,MouseEvent:true,DragEvent:true,PointerEvent:true,TextEvent:true,TouchEvent:true,WheelEvent:true,UIEvent:false,URL:true,VideoTrackList:true,Attr:true,CSSRuleList:true,ClientRect:true,DOMRect:true,GamepadList:true,NamedNodeMap:true,MozNamedAttrMap:true,SpeechRecognitionResultList:true,StyleSheetList:true,SVGLength:true,SVGLengthList:true,SVGNumber:true,SVGNumberList:true,SVGPointList:true,SVGScriptElement:true,SVGStringList:true,SVGAElement:true,SVGAnimateElement:true,SVGAnimateMotionElement:true,SVGAnimateTransformElement:true,SVGAnimationElement:true,SVGCircleElement:true,SVGClipPathElement:true,SVGDefsElement:true,SVGDescElement:true,SVGDiscardElement:true,SVGEllipseElement:true,SVGFEBlendElement:true,SVGFEColorMatrixElement:true,SVGFEComponentTransferElement:true,SVGFECompositeElement:true,SVGFEConvolveMatrixElement:true,SVGFEDiffuseLightingElement:true,SVGFEDisplacementMapElement:true,SVGFEDistantLightElement:true,SVGFEFloodElement:true,SVGFEFuncAElement:true,SVGFEFuncBElement:true,SVGFEFuncGElement:true,SVGFEFuncRElement:true,SVGFEGaussianBlurElement:true,SVGFEImageElement:true,SVGFEMergeElement:true,SVGFEMergeNodeElement:true,SVGFEMorphologyElement:true,SVGFEOffsetElement:true,SVGFEPointLightElement:true,SVGFESpecularLightingElement:true,SVGFESpotLightElement:true,SVGFETileElement:true,SVGFETurbulenceElement:true,SVGFilterElement:true,SVGForeignObjectElement:true,SVGGElement:true,SVGGeometryElement:true,SVGGraphicsElement:true,SVGImageElement:true,SVGLineElement:true,SVGLinearGradientElement:true,SVGMarkerElement:true,SVGMaskElement:true,SVGMetadataElement:true,SVGPathElement:true,SVGPatternElement:true,SVGPolygonElement:true,SVGPolylineElement:true,SVGRadialGradientElement:true,SVGRectElement:true,SVGSetElement:true,SVGStopElement:true,SVGStyleElement:true,SVGSVGElement:true,SVGSwitchElement:true,SVGSymbolElement:true,SVGTSpanElement:true,SVGTextContentElement:true,SVGTextElement:true,SVGTextPathElement:true,SVGTextPositioningElement:true,SVGTitleElement:true,SVGUseElement:true,SVGViewElement:true,SVGGradientElement:true,SVGComponentTransferFunctionElement:true,SVGFEDropShadowElement:true,SVGMPathElement:true,SVGElement:false,SVGTransform:true,SVGTransformList:true,AudioBuffer:true,AudioParamMap:true,AudioTrackList:true,AudioContext:true,webkitAudioContext:true,BaseAudioContext:false,OfflineAudioContext:true}) +A.bo.$nativeSuperclassTag="ArrayBufferView" +A.ce.$nativeSuperclassTag="ArrayBufferView" +A.cf.$nativeSuperclassTag="ArrayBufferView" +A.bX.$nativeSuperclassTag="ArrayBufferView" +A.cg.$nativeSuperclassTag="ArrayBufferView" +A.ch.$nativeSuperclassTag="ArrayBufferView" +A.bY.$nativeSuperclassTag="ArrayBufferView" +A.cl.$nativeSuperclassTag="EventTarget" +A.cm.$nativeSuperclassTag="EventTarget" +A.co.$nativeSuperclassTag="EventTarget" +A.cp.$nativeSuperclassTag="EventTarget"})() +Function.prototype.$2=function(a,b){return this(a,b)} +Function.prototype.$0=function(){return this()} +Function.prototype.$1=function(a){return this(a)} +Function.prototype.$3=function(a,b,c){return this(a,b,c)} +Function.prototype.$4=function(a,b,c,d){return this(a,b,c,d)} +Function.prototype.$1$1=function(a){return this(a)} +Function.prototype.$1$0=function(){return this()} +convertAllToFastObject(w) +convertToFastObject($);(function(a){if(typeof document==="undefined"){a(null) +return}if(typeof document.currentScript!="undefined"){a(document.currentScript) +return}var s=document.scripts +function onLoad(b){for(var q=0;q","JsLinkedHashMap_values_closure","LinkedHashMapKeyIterable.length","LinkedHashMapKeyIterable.iterator","LinkedHashMapKeyIterator","LinkedHashMapKeyIterator.current","LinkedHashMapKeyIterator.moveNext","initHooks.","_Record.toString","_Record._toString","_Record._fieldKeys","_Record._computeFieldKeys","_Record2._getFieldValues","_Record2.==","_Record2.hashCode","JSSyntaxRegExp.toString","JSSyntaxRegExp._nativeGlobalVersion","JSSyntaxRegExp._execGlobal","_MatchImplementation.end","_MatchImplementation.[]","_AllMatchesIterator.current","_AllMatchesIterator.moveNext","JSSyntaxRegExp.isUnicode","NativeByteBuffer.runtimeType","NativeByteData.runtimeType","NativeTypedArray.length","NativeTypedArrayOfDouble.[]","NativeTypedArrayOfDouble.[]=","NativeTypedArrayOfInt.[]=","NativeFloat32List.runtimeType","NativeFloat64List.runtimeType","NativeInt16List.runtimeType","NativeInt16List.[]","NativeInt32List.runtimeType","NativeInt32List.[]","NativeInt8List.runtimeType","NativeInt8List.[]","NativeUint16List.runtimeType","NativeUint16List.[]","NativeUint32List.runtimeType","NativeUint32List.[]","NativeUint8ClampedList.runtimeType","NativeUint8ClampedList.length","NativeUint8ClampedList.[]","NativeUint8List.runtimeType","NativeUint8List.length","NativeUint8List.[]","Rti._eval","Rti._bind","_Type.toString","_Error.toString","_AsyncRun._initializeScheduleImmediate.internalCallback","_AsyncRun._initializeScheduleImmediate.","_AsyncRun._scheduleImmediateJsOverride.internalCallback","_AsyncRun._scheduleImmediateWithSetImmediate.internalCallback","_TimerImpl.internalCallback","_AsyncAwaitCompleter.complete","_AsyncAwaitCompleter.completeError","_awaitOnObject.","_wrapJsFunctionForAsync.","AsyncError.toString","_Completer.completeError","_Completer.completeError[function-entry$1]","_AsyncCompleter.complete","_FutureListener.matchesErrorTest","_FutureListener.handleError","_Future._setChained","_Future.then","_Future.then[function-entry$1]","_Future._thenAwait","_Future._setErrorObject","_Future._cloneResult","_Future._addListener","_Future._prependListeners","_Future._removeListeners","_Future._reverseListeners","_Future._chainForeignFuture","_Future._completeWithValue","_Future._completeError","_Future._asyncComplete","_Future._asyncCompleteWithValue","_Future._chainFuture","_Future._asyncCompleteError","_Future._addListener.","_Future._prependListeners.","_Future._chainForeignFuture.","_Future._chainCoreFutureAsync.","_Future._asyncCompleteWithValue.","_Future._asyncCompleteError.","_Future._propagateToListeners.handleWhenCompleteCallback","_FutureListener.handleWhenComplete","_Future._propagateToListeners.handleWhenCompleteCallback.","_Future._propagateToListeners.handleValueCallback","_FutureListener.handleValue","_Future._propagateToListeners.handleError","_FutureListener.hasErrorCallback","_rootHandleError.","_RootZone.runGuarded","_RootZone.runUnaryGuarded","_RootZone.runUnaryGuarded[function-entry$2]","_RootZone.bindCallbackGuarded","_RootZone.bindUnaryCallbackGuarded","_RootZone.run","_RootZone.run[function-entry$1]","_RootZone.runUnary","_RootZone.runUnary[function-entry$2]","_RootZone.runBinary","_RootZone.runBinary[function-entry$3]","_RootZone.registerBinaryCallback","_RootZone.registerBinaryCallback[function-entry$1]","_RootZone.bindCallbackGuarded.","_RootZone.bindUnaryCallbackGuarded.","_RootZone_bindUnaryCallbackGuarded_closure","_LinkedHashSet.iterator","_LinkedHashSet.length","_LinkedHashSet.contains","_LinkedHashSet._contains","_LinkedHashSet.add","_LinkedHashSet._add","_LinkedHashSet.remove","_LinkedHashSet._remove","_LinkedHashSet._addHashTableEntry","_LinkedHashSet._removeHashTableEntry","_LinkedHashSet._modified","_LinkedHashSet._newLinkedCell","_LinkedHashSet._unlinkCell","_LinkedHashSet._computeHashCode","_LinkedHashSet._findBucketIndex","_LinkedHashSetIterator.current","_LinkedHashSetIterator.moveNext","ListBase.iterator","ListBase.elementAt","ListBase.forEach","ListBase.cast","ListBase.fillRange","ListBase.toString","MapBase.forEach","MapBase.length","MapBase.toString","MapBase.mapToString.","_UnmodifiableMapMixin.[]=","MapView.[]","MapView.[]=","MapView.length","MapView.toString","SetBase.addAll","SetBase.toString","SetBase.join","SetBase.elementAt","_JsonMap.[]","_JsonMap.length","_JsonMap.keys","_JsonMap.[]=","_JsonMap.containsKey","_JsonMap.forEach","_JsonMap._computeKeys","_JsonMap._upgrade","_JsonMap._process","_JsonMapKeyIterable.length","_JsonMapKeyIterable.elementAt","_JsonMapKeyIterable.iterator","Utf8Decoder._decoder.","Utf8Decoder._decoderNonfatal.","Base64Codec.normalize","HtmlEscapeMode.toString","HtmlEscape.convert","HtmlEscape._convert","JsonCodec.decode","JsonCodec.decoder","Utf8Encoder.convert","_Utf8Encoder._writeReplacementCharacter","_Utf8Encoder._writeSurrogate","_Utf8Encoder._fillBuffer","Utf8Decoder.convert","_Utf8Decoder.convertGeneral","_Utf8Decoder._convertRecursive","_Utf8Decoder.decodeGeneral","_Enum.toString","Error.stackTrace","AssertionError.toString","ArgumentError._errorName","ArgumentError._errorExplanation","ArgumentError.toString","RangeError.invalidValue","RangeError._errorName","RangeError._errorExplanation","IndexError.invalidValue","IndexError._errorName","IndexError._errorExplanation","UnsupportedError.toString","UnimplementedError.toString","StateError.toString","ConcurrentModificationError.toString","OutOfMemoryError.toString","OutOfMemoryError.stackTrace","StackOverflowError.toString","StackOverflowError.stackTrace","_Exception.toString","FormatException.toString","Iterable.cast","Iterable.where","Iterable.length","Iterable.single","Iterable.elementAt","Iterable.toString","Null.hashCode","Null.toString","Object.hashCode","Object.==","Object.toString","Object.runtimeType","_StringStackTrace.toString","StringBuffer.length","StringBuffer.toString","Uri.splitQueryString.","Uri._parseIPv4Address.error","Uri.parseIPv6Address.error","Uri.parseIPv6Address.parseHex","_Uri._text","_Uri._initializeText","_Uri._writeAuthority","_Uri.hashCode","_Uri.queryParameters","_Uri.userInfo","_Uri.host","_Uri.port","_Uri.query","_Uri.fragment","_Uri.replace","_Uri.isAbsolute","_Uri.hasAuthority","_Uri.hasQuery","_Uri.hasFragment","_Uri.toString","_Uri.==","_Uri._makeQuery.writeParameter","_Uri._makeQuery.","UriData.uri","UriData._computeUri","UriData.toString","_createTables.build","_createTables.setChars","_createTables.setRange","_SimpleUri.hasAuthority","_SimpleUri.hasPort","_SimpleUri.hasQuery","_SimpleUri.hasFragment","_SimpleUri.isAbsolute","_SimpleUri.scheme","_SimpleUri._computeScheme","_SimpleUri.userInfo","_SimpleUri.host","_SimpleUri.port","_SimpleUri.path","_SimpleUri.query","_SimpleUri.fragment","_SimpleUri.queryParameters","_SimpleUri.replace","_SimpleUri.hashCode","_SimpleUri.==","_SimpleUri.toString","AccessibleNodeList.length","AnchorElement.toString","AreaElement.toString","CharacterData.length","CssPerspective.length","CssStyleDeclaration.length","CssTransformValue.length","CssUnparsedValue.length","DataTransferItemList.length","DomException.toString","DomRectList.length","DomRectList.[]","DomRectList.[]=","DomRectList.elementAt","DomRectReadOnly.toString","DomRectReadOnly.==","DomRectReadOnly.hashCode","DomRectReadOnly._height","DomRectReadOnly.height","DomRectReadOnly._width","DomRectReadOnly.width","DomStringList.length","DomStringList.[]","DomStringList.[]=","DomStringList.elementAt","DomTokenList.length","Element.classes","Element.toString","Element.createFragment","NodeValidatorBuilder.common","NodeValidatorBuilder.allowHtml5","NodeValidatorBuilder.allowTemplating","Element._canBeUsedToCreateContextualFragment","Element.createFragment[function-entry$1$treeSanitizer]","Element.innerHtml","Element.setInnerHtml","Element.setInnerHtml[function-entry$1]","Element.html.","EventTarget.addEventListener","EventTarget.addEventListener[function-entry$2]","EventTarget._addEventListener","FileList.length","FileList.[]","FileList.[]=","FileList.elementAt","FileWriter.length","FormElement.length","History.length","HtmlCollection.length","HtmlCollection.[]","HtmlCollection.[]=","HtmlCollection.elementAt","HttpRequest.open","HttpRequest.getString.","HttpRequest.request.","Location.toString","MediaList.length","MidiInputMap.[]","MidiInputMap.forEach","MidiInputMap.keys","MidiInputMap.length","MidiInputMap.[]=","MidiInputMap.keys.","MidiOutputMap.[]","MidiOutputMap.forEach","MidiOutputMap.keys","MidiOutputMap.length","MidiOutputMap.[]=","MidiOutputMap.keys.","MimeTypeArray.length","MimeTypeArray.[]","MimeTypeArray.[]=","MimeTypeArray.elementAt","_ChildNodeListLazy.single","_ChildNodeListLazy.addAll","_ChildNodeListLazy.[]=","_ChildNodeListLazy.iterator","ImmutableListMixin.iterator","_ChildNodeListLazy.length","_ChildNodeListLazy.[]","Node.remove","Node.replaceWith","Node._clearChildren","Node.toString","Node._replaceChild","NodeList.length","NodeList.[]","NodeList.[]=","NodeList.elementAt","Plugin.length","PluginArray.length","PluginArray.[]","PluginArray.[]=","PluginArray.elementAt","RtcStatsReport.[]","RtcStatsReport.forEach","RtcStatsReport.keys","RtcStatsReport.length","RtcStatsReport.[]=","RtcStatsReport.keys.","SelectElement.length","SourceBufferList.length","SourceBufferList.[]","SourceBufferList.[]=","SourceBufferList.elementAt","SpeechGrammarList.length","SpeechGrammarList.[]","SpeechGrammarList.[]=","SpeechGrammarList.elementAt","SpeechRecognitionResult.length","Storage.[]","Storage.[]=","Storage.forEach","Storage.keys","Storage.length","Storage.keys.","TableElement.createFragment","TableRowElement.createFragment","TableSectionElement.createFragment","TemplateElement.setInnerHtml","TemplateElement.setInnerHtml[function-entry$1]","TextTrackCueList.length","TextTrackCueList.[]","TextTrackCueList.[]=","TextTrackCueList.elementAt","TextTrackList.length","TextTrackList.[]","TextTrackList.[]=","TextTrackList.elementAt","TimeRanges.length","TouchList.length","TouchList.[]","TouchList.[]=","TouchList.elementAt","TrackDefaultList.length","Url.toString","VideoTrackList.length","_CssRuleList.length","_CssRuleList.[]","_CssRuleList.[]=","_CssRuleList.elementAt","_DomRect.toString","_DomRect.==","_DomRect.hashCode","_DomRect._height","_DomRect.height","_DomRect._width","_DomRect.width","_GamepadList.length","_GamepadList.[]","_GamepadList.[]=","_GamepadList.elementAt","_NamedNodeMap.length","_NamedNodeMap.[]","_NamedNodeMap.[]=","_NamedNodeMap.elementAt","_SpeechRecognitionResultList.length","_SpeechRecognitionResultList.[]","_SpeechRecognitionResultList.[]=","_SpeechRecognitionResultList.elementAt","_StyleSheetList.length","_StyleSheetList.[]","_StyleSheetList.[]=","_StyleSheetList.elementAt","_AttributeMap.forEach","_AttributeMap.keys","_ElementAttributeMap.length","_DataAttributeMap.[]=","_DataAttributeMap.forEach","_DataAttributeMap.keys","_DataAttributeMap.length","_DataAttributeMap._toCamelCase","_DataAttributeMap._toHyphenedName","_DataAttributeMap.forEach.","_DataAttributeMap.keys.","_ElementCssClassSet.readClasses","_ElementCssClassSet.writeClasses","_ElementCssClassSet.length","_ElementCssClassSet.add","_ElementCssClassSet.remove","_ElementCssClassSet.toggle","_ElementCssClassSet._toggle","_EventStreamSubscription.","_Html5NodeValidator.allowsElement","_Html5NodeValidator.allowsAttribute","NodeValidatorBuilder.allowsElement","NodeValidatorBuilder.allowsAttribute","NodeValidatorBuilder.allowsElement.","NodeValidatorBuilder.allowsAttribute.","_SimpleNodeValidator.allowsElement","_SimpleNodeValidator.allowsAttribute","_SimpleNodeValidator.","_TemplatingNodeValidator.allowsAttribute","_TemplatingNodeValidator.","_SvgNodeValidator.allowsElement","_SvgNodeValidator.allowsAttribute","FixedSizeListIterator.moveNext","FixedSizeListIterator.current","_ValidatingTreeSanitizer.sanitizeTree","_ValidatingTreeSanitizer._removeNode","_ValidatingTreeSanitizer._sanitizeUntrustedElement","_ValidatingTreeSanitizer._sanitizeElement","JSArray.toList","_ValidatingTreeSanitizer.sanitizeNode","_ValidatingTreeSanitizer.sanitizeTree.walk","CssClassSetImpl._validateToken","CssClassSetImpl.toString","CssClassSetImpl.toggle","CssClassSetImpl.iterator","CssClassSetImpl.length","CssClassSetImpl.add","CssClassSetImpl.remove","CssClassSetImpl.elementAt","CssClassSetImpl.modify","CssClassSetImpl.add.","FilteredElementList._iterable","WhereIterable.map","FilteredElementList.[]=","FilteredElementList.[]","FilteredElementList.length","FilteredElementList.iterator","FilteredElementList._iterable.","promiseToFuture.","NullRejectionException.toString","LengthList.length","LengthList.[]","LengthList.[]=","LengthList.elementAt","NumberList.length","NumberList.[]","NumberList.[]=","NumberList.elementAt","PointList.length","StringList.length","StringList.[]","StringList.[]=","StringList.elementAt","AttributeClassSet.readClasses","AttributeClassSet.writeClasses","SvgElement.classes","SvgElement.innerHtml","SvgElement.children","SvgElement.createFragment","NodeValidatorBuilder.allowSvg","NodeTreeSanitizer","TransformList.length","TransformList.[]","TransformList.[]=","TransformList.elementAt","AudioBuffer.length","AudioParamMap.[]","AudioParamMap.forEach","AudioParamMap.keys","AudioParamMap.length","AudioParamMap.[]=","AudioParamMap.keys.","AudioTrackList.length","OfflineAudioContext.length","Kind._enumToString","Kind.toString","_MatchPosition._enumToString","Index.find","Index.find.score","Index.find.","IndexItem._scope","initializeSidebars.","_SidebarNodeTreeSanitizer.sanitizeTree","_htmlBase.","init.disableSearch","print","init.","Index.fromJson","ListBase.map","_Search.listBox","_Search.moreResults","_Search.searchResults","_Search.initialize","_Search.showSearchResultPage","JsLinkedHashMap.isNotEmpty","_Search.hideSuggestions","_Search.updateSuggestions","_Search.showSuggestions","_Search.updateSuggestions[function-entry$2]","_Search.handleSearch","_Search.handleSearch[function-entry$1$isSearchPage]","_Search.handleSearch[function-entry$1]","_Search.handleSearch[function-entry$1$forceUpdate]","_Search.clearSearch","_Search.setEventListeners","_Search.initialize.","_Search.setEventListeners.","_createSuggestion.","_highlight.","init.toggleDrawerAndOverlay","DART_CLOSURE_PROPERTY_NAME","TypeErrorDecoder.noSuchMethodPattern","TypeErrorDecoder.notClosurePattern","TypeErrorDecoder.nullCallPattern","TypeErrorDecoder.nullLiteralCallPattern","TypeErrorDecoder.undefinedCallPattern","TypeErrorDecoder.undefinedLiteralCallPattern","TypeErrorDecoder.nullPropertyPattern","TypeErrorDecoder.nullLiteralPropertyPattern","TypeErrorDecoder.undefinedPropertyPattern","TypeErrorDecoder.undefinedLiteralPropertyPattern","_AsyncRun._scheduleImmediateClosure","Utf8Decoder._decoder","Utf8Decoder._decoderNonfatal","_Base64Decoder._inverseAlphabet","_Uri._needsNoEncoding","_hashSeed","_scannerTables","_Html5NodeValidator._allowedElements","CssClassSetImpl._validTokenRE","_htmlBase","setDispatchProperty","JS_INTEROP_INTERCEPTOR_TAG","","$intercepted$$eq$Iux","$intercepted$__$asx","$intercepted$___$ax","$intercepted$_clearChildren0$x","$intercepted$_replaceChild2$x","$intercepted$addEventListener2$x","$intercepted$addEventListener3$x","$intercepted$cast10$ax","$intercepted$compareTo1$ns","$intercepted$elementAt1$ax","$intercepted$forEach1$ax","$intercepted$get$attributes$x","$intercepted$get$classes$x","$intercepted$get$hashCode$IJavaScriptBigIntJavaScriptSymbolLegacyJavaScriptObjectabnsux","$intercepted$get$innerHtml$x","$intercepted$get$iterator$ax","$intercepted$get$length$asx","$intercepted$get$runtimeType$Ibdinsux","$intercepted$remove0$x","$intercepted$replaceWith1$x","$intercepted$set$innerHtml$x","$intercepted$setInnerHtml2treeSanitizer$x","$intercepted$toLowerCase0$s","$intercepted$toString0$IJavaScriptBigIntJavaScriptFunctionJavaScriptSymbolLegacyJavaScriptObjectabnsux","$intercepted$trim0$s","AElement","AbortPaymentEvent","AbsoluteOrientationSensor","AccessibleNodeList","AnchorElement","AnimationEffectReadOnly","AreaElement","ArrayIterator","AttributeClassSet","AudioBuffer","AudioContext","AudioElement","AudioParamMap","AudioParamMap_keys_closure","AudioTrackList","Base64Codec","Base64Encoder","BaseAudioContext","BaseElement","Blob","BodyElement","BoundClosure","ByteBuffer","ByteData","CDataSection","CastIterator","CastList","CharacterData","Closure","Closure0Args","Closure2Args","CodeUnits","Codec","CompositionEvent","ConstantMap","ConstantStringMap","Converter","CssCharsetRule","CssClassSetImpl","CssClassSetImpl_add_closure","CssImageValue","CssMatrixComponent","CssPerspective","CssResourceValue","CssRule","CssStyleDeclaration","CssStyleDeclarationBase","CssStyleSheet","CssStyleValue","CssTransformComponent","CssTransformValue","CssUnparsedValue","CssurlImageValue","DataTransferItemList","Document","DocumentFragment","DomException","DomRectList","DomRectReadOnly","DomStringList","DomTokenList","EfficientLengthIterable","EfficientLengthMappedIterable","Element","Element_Element$html_closure","EnclosedBy","Encoding","Error","Event","EventStreamProvider","EventTarget","ExceptionAndStackTrace","ExtendableEvent","File","FileList","FileWriter","FilteredElementList","FilteredElementList__iterable_closure","FixedLengthListMixin","FixedSizeListIterator","Float32List","Float64List","FormElement","Function","Future","Gamepad","GraphicsElement","History","HtmlCollection","HtmlDocument","HtmlElement","HtmlEscape","HtmlEscapeMode","HtmlFormControlsCollection","HttpRequest","HttpRequestEventTarget","HttpRequestUpload","HttpRequest_getString_closure","HttpRequest_request_closure","ImmutableListMixin","Index","IndexError","IndexItem","Index_find_closure","Index_find_score","InputElement","Int16List","Int32List","Int8List","Interceptor","Iterable","JSArray","JSBool","JSInt","JSNull","JSNumNotInt","JSNumber","JSString","JSSyntaxRegExp","JSUnmodifiableArray","JS_CONST","JavaScriptBigInt","JavaScriptFunction","JavaScriptIndexingBehavior","JavaScriptObject","JavaScriptSymbol","JsLinkedHashMap","JsonCodec","JsonDecoder","KeyboardEvent","KeyframeEffect","KeyframeEffectReadOnly","Kind","LateError","LegacyJavaScriptObject","Length","LengthList","LinkedHashMapCell","LinkedHashMapKeyIterable","List","ListBase","ListIterable","ListIterator","Location","Map","MapBase","MapBase_mapToString_closure","MapView","MappedIterator","MappedListIterable","Match","MathMLElement","MediaElement","MediaList","MidiInputMap","MidiInputMap_keys_closure","MidiOutputMap","MidiOutputMap_keys_closure","MimeType","MimeTypeArray","NativeByteBuffer","NativeByteData","NativeFloat32List","NativeFloat64List","NativeInt16List","NativeInt32List","NativeInt8List","NativeTypedArray","NativeTypedArrayOfDouble","NativeTypedArrayOfInt","NativeTypedData","NativeUint16List","NativeUint32List","NativeUint8ClampedList","NativeUint8List","Node","NodeList","NodeValidator","NodeValidatorBuilder","NodeValidatorBuilder_allowsAttribute_closure","NodeValidatorBuilder_allowsElement_closure","Null","NullError","NullRejectionException","NullThrownFromJavaScriptException","Number","NumberList","Object","OfflineAudioContext","OrientationSensor","OutOfMemoryError","PlainJavaScriptObject","Plugin","PluginArray","PointList","ProgressEvent","RangeError","Record","Rectangle","RegExpMatch","RtcStatsReport","RtcStatsReport_keys_closure","Rti","RuntimeError","ScriptElement","SelectElement","Sensor","SentinelValue","Set","SetBase","ShadowRoot","SourceBuffer","SourceBufferList","SpeechGrammar","SpeechGrammarList","SpeechRecognitionResult","StackOverflowError","StackTrace","StaticClosure","Storage","Storage_keys_closure","String","StringBuffer","StringList","StyleSheet","SvgElement","TableElement","TableRowElement","TableSectionElement","TearOffClosure","TemplateElement","Text","TextAreaElement","TextTrack","TextTrackCue","TextTrackCueList","TextTrackList","TimeRanges","Touch","TouchList","TrackDefaultList","Transform","TransformList","TrustedGetRuntimeType","TypeError","TypeErrorDecoder","UIEvent","Uint16List","Uint32List","Uint8ClampedList","Uint8List","UnknownJavaScriptObject","UnknownJsTypeError","UnmodifiableListBase","UnmodifiableListMixin","UnmodifiableMapView","Uri","UriData","Uri__parseIPv4Address_error","Uri_parseIPv6Address_error","Uri_parseIPv6Address_parseHex","Uri_splitQueryString_closure","Url","Utf8Codec","Utf8Decoder","Utf8Decoder__decoderNonfatal_closure","Utf8Decoder__decoder_closure","Utf8Encoder","VideoTrackList","VttCue","WhereIterable","WhereIterator","XmlDocument","_#fromMap#tearOff","_AllMatchesIterator","_AsyncAwaitCompleter","_AsyncCallbackEntry","_AsyncCompleter","_AsyncRun__initializeScheduleImmediate_closure","_AsyncRun__initializeScheduleImmediate_internalCallback","_AsyncRun__scheduleImmediateJsOverride_internalCallback","_AsyncRun__scheduleImmediateWithSetImmediate_internalCallback","_Attr","_AttributeMap","_AudioParamMap&JavaScriptObject&MapMixin","_CastIterableBase","_CastListBase","_ChildNodeListLazy","_Completer","_CssRuleList","_CssStyleDeclaration&JavaScriptObject&CssStyleDeclarationBase","_CyclicInitializationError","_DataAttributeMap","_DataAttributeMap_forEach_closure","_DataAttributeMap_keys_closure","_DataUri","_DomRect","_DomRectList&JavaScriptObject&ListMixin","_DomRectList&JavaScriptObject&ListMixin&ImmutableListMixin","_DomStringList&JavaScriptObject&ListMixin","_DomStringList&JavaScriptObject&ListMixin&ImmutableListMixin","_EfficientLengthCastIterable","_ElementAttributeMap","_ElementCssClassSet","_Enum","_Error","_EventStreamSubscription_closure","_Exception","_FileList&JavaScriptObject&ListMixin","_FileList&JavaScriptObject&ListMixin&ImmutableListMixin","_FunctionParameters","_Future","_FutureListener","_Future__addListener_closure","_Future__asyncCompleteError_closure","_Future__asyncCompleteWithValue_closure","_Future__chainCoreFutureAsync_closure","_Future__chainForeignFuture_closure","_Future__prependListeners_closure","_Future__propagateToListeners_handleError","_Future__propagateToListeners_handleValueCallback","_Future__propagateToListeners_handleWhenCompleteCallback","_Future__propagateToListeners_handleWhenCompleteCallback_closure","_GamepadList","_HtmlCollection&JavaScriptObject&ListMixin","_HtmlCollection&JavaScriptObject&ListMixin&ImmutableListMixin","_JS_INTEROP_INTERCEPTOR_TAG","_JsonMap","_JsonMapKeyIterable","_LengthList&JavaScriptObject&ListMixin","_LengthList&JavaScriptObject&ListMixin&ImmutableListMixin","_LinkedHashSet","_LinkedHashSetCell","_MatchImplementation","_MatchPosition","_MidiInputMap&JavaScriptObject&MapMixin","_MidiOutputMap&JavaScriptObject&MapMixin","_MimeTypeArray&JavaScriptObject&ListMixin","_MimeTypeArray&JavaScriptObject&ListMixin&ImmutableListMixin","_NamedNodeMap","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin&FixedLengthListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin&FixedLengthListMixin","_NodeList&JavaScriptObject&ListMixin","_NodeList&JavaScriptObject&ListMixin&ImmutableListMixin","_NumberList&JavaScriptObject&ListMixin","_NumberList&JavaScriptObject&ListMixin&ImmutableListMixin","_PluginArray&JavaScriptObject&ListMixin","_PluginArray&JavaScriptObject&ListMixin&ImmutableListMixin","_Record","_Record2","_Record_2_item_matchPosition","_ResourceProgressEvent","_RootZone","_RootZone_bindCallbackGuarded_closure","_RtcStatsReport&JavaScriptObject&MapMixin","_SameOriginUriPolicy","_Search_initialize_closure","_Search_setEventListeners_closure","_SetBase","_SidebarNodeTreeSanitizer","_SimpleNodeValidator_closure","_SimpleUri","_SourceBufferList&EventTarget&ListMixin","_SourceBufferList&EventTarget&ListMixin&ImmutableListMixin","_SpeechGrammarList&JavaScriptObject&ListMixin","_SpeechGrammarList&JavaScriptObject&ListMixin&ImmutableListMixin","_SpeechRecognitionResultList","_StackTrace","_Storage&JavaScriptObject&MapMixin","_StreamIterator","_StringList&JavaScriptObject&ListMixin","_StringList&JavaScriptObject&ListMixin&ImmutableListMixin","_StringStackTrace","_StyleSheetList","_SvgNodeValidator","_TemplatingNodeValidator_closure","_TextTrackCueList&JavaScriptObject&ListMixin","_TextTrackCueList&JavaScriptObject&ListMixin&ImmutableListMixin","_TextTrackList&EventTarget&ListMixin","_TextTrackList&EventTarget&ListMixin&ImmutableListMixin","_TimerImpl_internalCallback","_TouchList&JavaScriptObject&ListMixin","_TouchList&JavaScriptObject&ListMixin&ImmutableListMixin","_TransformList&JavaScriptObject&ListMixin","_TransformList&JavaScriptObject&ListMixin&ImmutableListMixin","_TypeError","_UnmodifiableMapMixin","_UnmodifiableMapView&MapView&_UnmodifiableMapMixin","_Uri","_Uri__makeQuery_closure","_Uri__makeQuery_writeParameter","_Utf8Decoder","_Utf8Encoder","_ValidatingTreeSanitizer","_ValidatingTreeSanitizer_sanitizeTree_walk","_Zone","__CastListBase&_CastIterableBase&ListMixin","__CssRuleList&JavaScriptObject&ListMixin","__CssRuleList&JavaScriptObject&ListMixin&ImmutableListMixin","__GamepadList&JavaScriptObject&ListMixin","__GamepadList&JavaScriptObject&ListMixin&ImmutableListMixin","__NamedNodeMap&JavaScriptObject&ListMixin","__NamedNodeMap&JavaScriptObject&ListMixin&ImmutableListMixin","__SpeechRecognitionResultList&JavaScriptObject&ListMixin","__SpeechRecognitionResultList&JavaScriptObject&ListMixin&ImmutableListMixin","__StyleSheetList&JavaScriptObject&ListMixin","__StyleSheetList&JavaScriptObject&ListMixin&ImmutableListMixin","_addAll","_allowedElements","_attributeValidators","_awaitOnObject_closure","_canonicalRecipeJoin","_canonicalRecipeJoinNamed","_canonicalizeScheme","_chainCoreFutureAsync","_chainCoreFutureSync","_checkPadding","_checkZoneID","_compareAny","_computeFieldNamed","_computeSignatureFunctionNewRti","_computedFieldKeys","_containerMap","_convertIntercepted","_convertInterceptedUint8List","_create1","_createFutureOrRti","_createGenericFunctionRti","_createQuestionRti","_createStarRti","_createSuggestion_closure","_createTables_build","_createTables_setChars","_createTables_setRange","_current","_decoder","_decoderNonfatal","_defaultPort","_defaultSanitizer","_defaultValidator","_empty","_escapeChar","_escapeScheme","_fail","_getCanonicalRecipe","_getFutureFromFutureOr","_getIsSubtypeCache","_getQuestionFromStar","_hexCharPairToByte","_highlight_closure","_htmlBase_closure","_identityHashCodeProperty","_initializeScheduleImmediate","_installTypeTests","_interceptorFieldNameCache","_interceptors_JSArray__compareAny$closure","_internal","_inverseAlphabet","_isAlphabeticCharacter","_isInCallbackLoop","_isUnionOfFunctionType","_isWhitespace","_lastCallback","_lastPriorityCallback","_literal","_lookupBindingRti","_lookupFunctionRti","_lookupFutureOrRti","_lookupGenericFunctionParameterRti","_lookupGenericFunctionRti","_lookupInterfaceRti","_lookupQuestionRti","_lookupRecordRti","_lookupStarRti","_lookupTerminalRti","_makeFragment","_makeHost","_makePath","_makePort","_makeQuery","_makeScheme","_makeUint8List","_makeUserInfo","_mayContainDotSegments","_needsNoEncoding","_newHashTable","_nextCallback","_normalize","_normalizeEscape","_normalizeOrSubstring","_normalizePath","_normalizeRegName","_normalizeRelativePath","_normalizeZoneID","_objectTypeNameNewRti","_of","_parse","_parseDocument","_parseIPv4Address","_parseRange","_propagateToListeners","_receiverFieldNameCache","_removeDotSegments","_rootHandleError_closure","_safeTagName","_scheduleImmediateClosure","_scheduleImmediateJsOverride","_scheduleImmediateWithSetImmediate","_scheduleImmediateWithTimer","_skipLeadingWhitespace","_skipTrailingWhitespace","_standardAttributeValidator","_suggestionLength","_suggestionLimit","_throw","_throwUnmodifiable","_uriAttributeValidator","_uriDecode","_uriEncode","_useTextDecoder","_validTokenRE","_wrapJsFunctionForAsync_closure","_writeAll","addErasedTypes","addRules","allocateGrowable","alternateTagFunction","async__AsyncRun__scheduleImmediateJsOverride$closure","async__AsyncRun__scheduleImmediateWithSetImmediate$closure","async__AsyncRun__scheduleImmediateWithTimer$closure","async___startMicrotaskLoop$closure","bind","bool","checkNotNegative","checkValidRange","collectArray","combine","compose","create","cspForwardCall","cspForwardInterceptedCall","defaultStackTrace","dispatchRecordsForInstanceTags","double","errorDescription","eval","evalInEnvironment","evalRecipe","extractPattern","filled","findErasedType","findRule","finish","fixed","forType","forwardCallTo","forwardInterceptedCallTo","from","fromCharCodes","fromMessage","fromTearOff","getInterceptor$","getInterceptor$asx","getInterceptor$ax","getInterceptor$ns","getInterceptor$s","getInterceptor$x","getString","getTagFunction","growable","handleArguments","handleDigit","handleExtendedOperations","handleIdentifier","handleTypeArguments","hash","html","html__Html5NodeValidator__standardAttributeValidator$closure","html__Html5NodeValidator__uriAttributeValidator$closure","indexToType","initHooks_closure","initNativeDispatchFlag","init_closure","init_disableSearch","init_toggleDrawerAndOverlay","initializeSidebars_closure","int","interceptorOf","interceptorsForUncacheableTags","iterableToFullString","iterableToShortString","makeNative","mapToString","markFixed","markFixedList","newArrayOrEmpty","noElement","noSuchMethodPattern","notClosurePattern","nullCallPattern","nullLiteralCallPattern","nullLiteralPropertyPattern","nullPropertyPattern","num","objectAssign","objectTypeName","of","parse","parseIPv6Address","parseInt","promiseToFuture_closure","prototypeForTagFunction","provokeCallErrorOn","provokePropertyErrorOn","range","receiverOf","request","safeToString","search_IndexItem___fromMap_tearOff$closure","splitQueryString","stringFromCharCode","stringFromNativeUint8List","throwWithStackTrace","toStringVisiting","toType","toTypes","toTypesNamed","tooMany","undefinedCallPattern","undefinedLiteralCallPattern","undefinedLiteralPropertyPattern","undefinedPropertyPattern","value","withLength","$add","$eq","$index","$indexSet","$mod","$mul","add","addAll","addEventListener","allowsAttribute","allowsElement","allowsUri","any","attributes","bindCallbackGuarded","bindUnaryCallbackGuarded","call","cast","classes","clear","clearSearch","compareTo","complete","completeError","contains","containsKey","convert","convertGeneral","createFragment","current","dart:_interceptors#_replaceSomeNullsWithUndefined","dart:_interceptors#_shrBothPositive","dart:_interceptors#_shrOtherPositive","dart:_interceptors#_shrReceiverPositive","dart:_interceptors#_tdivFast","dart:_interceptors#_tdivSlow","dart:_internal#_source","dart:_js_helper#_addHashTableEntry","dart:_js_helper#_computeFieldKeys","dart:_js_helper#_execGlobal","dart:_js_helper#_fieldKeys","dart:_js_helper#_getFieldValues","dart:_js_helper#_keys","dart:_js_helper#_modified","dart:_js_helper#_nativeGlobalVersion","dart:_js_helper#_newHashTable","dart:_js_helper#_newLinkedCell","dart:_js_helper#_toString","dart:_rti#_bind","dart:_rti#_eval","dart:async#_addListener","dart:async#_asyncComplete","dart:async#_asyncCompleteError","dart:async#_asyncCompleteWithValue","dart:async#_chainForeignFuture","dart:async#_chainFuture","dart:async#_cloneResult","dart:async#_completeError","dart:async#_completeWithValue","dart:async#_prependListeners","dart:async#_removeListeners","dart:async#_reverseListeners","dart:async#_setChained","dart:async#_setErrorObject","dart:async#_thenAwait","dart:collection#_add","dart:collection#_addHashTableEntry","dart:collection#_computeHashCode","dart:collection#_contains","dart:collection#_findBucketIndex","dart:collection#_modified","dart:collection#_newLinkedCell","dart:collection#_remove","dart:collection#_removeHashTableEntry","dart:collection#_unlinkCell","dart:convert#_computeKeys","dart:convert#_convert","dart:convert#_convertRecursive","dart:convert#_fillBuffer","dart:convert#_process","dart:convert#_upgrade","dart:convert#_writeReplacementCharacter","dart:convert#_writeSurrogate","dart:core#_computeScheme","dart:core#_enumToString","dart:core#_errorExplanation","dart:core#_errorName","dart:core#_text","dart:html#_addEventListener","dart:html#_clearChildren","dart:html#_height","dart:html#_removeNode","dart:html#_replaceChild","dart:html#_sanitizeElement","dart:html#_sanitizeUntrustedElement","dart:html#_toCamelCase","dart:html#_toHyphenedName","dart:html#_width","dart:html_common#_iterable","dart:html_common#_validateToken","decode","decodeGeneral","decoder","elementAt","end","fillRange","find","first","fold","forEach","fragment","handleError","handleSearch","hasAuthority","hasFragment","hasPort","hasQuery","hashCode","height","hideSuggestions","host","indexOf","initialize","innerHtml=","internalComputeHashCode","internalFindBucketIndex","internalGet","invalidValue","isAbsolute","isNegative","iterator","join","keys","last","length","listBox","matchTypeError","matchesErrorTest","modify","moreResults","moveNext","normalize","open","package:dartdoc/src/search.dart#_scope","path","port","query","queryParameters","readClasses","registerBinaryCallback","remove","replace","replaceRange","replaceWith","round","run","runBinary","runGuarded","runUnary","runUnaryGuarded","runtimeType","sanitizeNode","sanitizeTree","scheme","searchResults","setEventListeners","setInnerHtml","showSearchResultPage","single","sort","stackTrace","startsWith","sublist","substring","then","toLowerCase","toString","toggle","trim","updateSuggestions","uri","userInfo","values","where","width","writeClasses","_instanceFunctionType","patchInstance","-","FetchResponseExtension|get#text","[]","[]=","_","_add","_attr","_canBeUsedToCreateContextualFragment","_cannotBeUsedToCreateContextualFragment","_canonicalRecipeOfBinding","_canonicalRecipeOfFunction","_canonicalRecipeOfFunctionParameters","_canonicalRecipeOfFutureOr","_canonicalRecipeOfGenericFunction","_canonicalRecipeOfInterface","_canonicalRecipeOfQuestion","_canonicalRecipeOfRecord","_canonicalRecipeOfStar","_chainSource","_classListLength","_cloneResult","_combineSurrogatePair","_completeError","_computeUri","_containsTableEntry","_createBindingRti","_createFunctionRti","_createGenericFunctionParameterRti","_createInterfaceRti","_createRecordRti","_createTerminalRti","_createTimer","_equalFields","_error","_errorTest","_filtered","_future","_getBindCache","_getBucket","_getEvalCache","_getGenericFunctionParameterIndex","_getInterfaceTypeArguments","_getItem","_getKind","_getPrimary","_getRest","_getReturnType","_getRti","_getRuntimeTypeOfArrayAsRti","_getSpecializedTestResource","_hasError","_hiddenAnchor","_initializeText","_isChained","_isCheck","_isComplete","_isFile","_isGeneralDelimiter","_isHttp","_isHttps","_isLeadSurrogate","_isMultiLine","_isPackage","_isRegNameChar","_isSchemeCharacter","_isTrailSurrogate","_isUnicode","_isUnreservedChar","_isUpgraded","_isZoneIDChar","_lookupAnyRti","_lookupDynamicRti","_lookupErasedRti","_lookupFutureRti","_lookupNeverRti","_lookupVoidRti","_matches","_mayAddListener","_mayComplete","_objectToString","_onError","_onValue","_parseRecipe","_recipeJoin","_recipeJoin4","_recipeJoin5","_recordSpecializedIsTest","_remove","_removeListeners","_removeNode","_rtiBind","_rtiEval","_scheduleImmediate","_setAsCheckFunction","_setBindCache","_setCachedRuntimeType","_setCanonicalRecipe","_setError","_setErrorObject","_setEvalCache","_setIsTestFunction","_setKind","_setNamed","_setOptionalPositional","_setPrecomputed1","_setPrimary","_setRequiredPositional","_setRest","_setSpecializedTestResource","_setValue","_startsWithData","_stringFromUint8List","_strip","_toListGrowable","_toggle","_toggleDefault","_tryResume","_validators","_whenCompleteAction","_writeAuthority","_writeOne","_writeString","_zone","allocate","allowHtml5","allowSvg","allowTemplating","allowedAttributes","allowedElements","allowedUriAttributes","arrayConcat","arraySplice","asBool","asRti","asString","castFrom","charCodeAt","checkGrowable","checkMutable","checkString","children","codeUnits","collectNamed","common","compare","constructorNameFallback","convertSingle","dataset","decodeQueryComponent","encode","encodeQueryComponent","evalTypeVariable","extractStackTrace","fetch","fieldADI","fromCharCode","fromJson","fromList","fromMap","future","getAttribute","getRuntimeTypeOfInterceptorNotArray","group","handleNamedGroup","handleOptionalGroup","handleStartRecord","handleUncaughtError","handleValue","handleWhenComplete","handlesComplete","handlesValue","hasErrorCallback","hasErrorTest","hasMatch","hasScheme","hash2","hash3","hash4","head","identityHashCode","innerHtml","instanceOf","instanceTypeName","interceptorFieldName","internalSet","isDigit","isEmpty","isJavaScriptSimpleObject","isNotEmpty","isUnicode","jsonDecode","left","listToString","listen","lookupSupertype","makeListFixedLength","map","nodes","notSimple","objectToHumanReadableString","offsetHeight","offsetTop","parseHexByte","printToConsole","propertyGet","provokeCallErrorOnNull","provokeCallErrorOnUndefined","provokePropertyErrorOnNull","provokePropertyErrorOnUndefined","push","pushStackFrame","receiverFieldName","removeSelectedElement","replaceAllMapped","scrollHeight","scrollIntoView","scrollTop","setAttribute","setPosition","setToString","sharedEmptyArray","shouldChain","showEnterMessage","showSuggestions","splitMapJoin","start","stringLessThan","stringReplaceRangeUnchecked","suggestionElements","suggestionsInfo","thenAwait","toGenericFunctionParameter","toList","top","tryParse","unmangleGlobalNameIfPreservedAnyways","unmodifiable","withBufferSize","write","writeAll","writeCharCode"], + "mappings": "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", + "x_org_dartlang_dart2js": { + "minified_names": { + "global": "A,1261,B,1240,C,1565,D,1228,E,1764,F,1310,G,225,H,1674,I,1440,J,110,K,1231,L,1697,M,1416,N,1103,O,1351,P,1177,Q,1463,R,1685,S,1375,T,167,U,1734,V,1745,W,1331,X,1353,Y,1363,Z,295,a,1253,a0,122,a1,1116,a2,1119,a3,1156,a4,1202,a5,1214,a6,1223,a7,1270,a8,1287,a9,1306,aA,90,aB,124,aC,232,aD,1127,aE,1103,aF,1146,aG,1157,aH,1103,aI,1628,aJ,1213,aK,1234,aL,1246,aM,1263,aN,1337,aO,1667,aP,1414,aQ,1421,aR,1755,aS,98,aT,368,aU,49,aV,47,aW,1120,aX,1149,aY,13,aZ,1183,a_,1178,aa,1321,ab,1340,ac,1342,ad,1344,ae,1346,af,1362,ag,1367,ah,1663,ai,46,aj,1117,ak,1155,al,1251,am,1264,an,1267,ao,19,ap,1278,aq,1314,ar,1751,as,1324,at,1338,au,1370,av,1373,aw,1679,ax,1399,ay,1431,az,1584,b,36,b0,1217,b1,1224,b2,1255,b3,1665,b4,1327,b5,1361,b6,1379,b7,1380,b8,1406,b9,1553,bA,159,bB,1617,bC,80,bD,107,bE,1104,bF,1148,bG,1163,bH,1164,bI,1186,bJ,1187,bK,1191,bL,1635,bM,1200,bN,1207,bO,1208,bP,1218,bQ,1242,bR,1243,bS,1262,bT,1103,bU,1271,bV,1276,bW,1277,bX,1297,bY,1298,bZ,1299,b_,1212,ba,264,bb,54,bc,117,bd,1692,be,1754,bf,1136,bg,1147,bh,1150,bi,1174,bj,1238,bk,1245,bl,1250,bm,1254,bn,1258,bo,1296,bp,1305,bq,1333,br,304,bs,1359,bt,1382,bu,1384,bv,1411,bw,1441,bx,358,by,1574,bz,109,c,1199,c0,1303,c1,1307,c2,1311,c3,1325,c4,1345,c5,1355,c6,1415,c7,1417,c8,1425,c9,1430,cA,1594,cB,99,cC,1693,cD,231,cE,41,cF,390,cG,1100,cH,1113,cI,1132,cJ,1133,cK,1135,cL,294,cM,1103,cN,248,cO,1137,cP,1138,cQ,1141,cR,1143,cS,1154,cT,1158,cU,1159,cV,1160,cW,1161,cX,305,cY,1165,cZ,1167,c_,1302,ca,1631,cb,1460,cc,269,cd,1468,ce,1469,cf,1470,cg,1471,ch,1472,ci,1479,cj,1489,ck,364,cl,1493,cm,1494,cn,1498,co,1509,cp,1510,cq,1516,cr,1542,cs,1601,ct,1605,cu,1677,cv,1518,cw,1519,cx,1620,cy,1527,cz,1593,d,1350,d0,1179,d1,1180,d2,1182,d3,1185,d4,1188,d5,1189,d6,1203,d7,1204,d8,1205,d9,1211,dA,1320,dB,1322,dC,1323,dD,50,dE,1329,dF,1332,dG,1334,dH,1341,dI,1343,dJ,1103,dK,1347,dL,1348,dM,1352,dN,1356,dO,1357,dP,1358,dQ,1364,dR,1365,dS,1366,dT,1368,dU,1369,dV,1371,dW,303,dX,1381,dY,1383,dZ,302,d_,1171,da,1216,db,1230,dc,1241,dd,1244,de,45,df,1265,dg,529,dh,1571,di,1272,dj,1282,dk,1283,dl,1285,dm,1288,dn,1289,dp,1290,dq,1291,dr,1292,ds,1293,dt,1294,du,1295,dv,1300,dw,1301,dx,1315,dy,1317,dz,1319,e,1269,e0,1738,e1,1391,e2,1397,e3,1400,e4,1404,e5,1405,e6,1412,e7,1413,e8,1418,e9,1419,eA,1474,eB,1475,eC,1476,eD,1477,eE,1478,eF,1480,eG,1481,eH,1485,eI,1490,eJ,1492,eK,1495,eL,1496,eM,1497,eN,1499,eO,1500,eP,1501,eQ,1502,eR,1503,eS,1504,eT,1505,eU,363,eV,1507,eW,1508,eX,1512,eY,1513,eZ,1514,e_,1385,ea,1420,eb,1424,ec,1426,ed,1427,ee,1428,ef,1429,eg,1432,eh,1434,ei,357,ej,1437,ek,1438,el,1439,em,1452,en,1540,eo,1453,ep,1454,eq,1456,er,1457,es,1458,et,1459,eu,1462,ev,1464,ew,1465,ex,1466,ey,1467,ez,1473,f,1190,f0,1676,f1,1517,f2,1524,f3,1528,f4,1529,f5,1530,f6,1531,f7,1532,f8,1533,f9,1534,fA,1229,fB,1232,fC,1232,fD,1233,fE,1247,fF,1248,fG,526,fH,1256,fI,1257,fJ,1266,fK,1275,fL,1279,fM,1284,fN,1286,fO,1308,fP,1309,fQ,1312,fR,1313,fS,1736,fT,1330,fU,1336,fV,1349,fW,1374,fX,1743,fY,1386,fZ,1387,f_,1515,fa,1535,fb,1536,fc,1537,fd,126,fe,17,ff,97,fg,1694,fh,39,fi,1106,fj,1103,fk,1142,fl,1144,fm,1145,fn,1168,fo,1175,fp,1193,fq,1194,fr,1195,fs,1748,ft,1206,fu,1206,fv,306,fw,1220,fx,1221,fy,1226,fz,1227,h,1197,h0,1389,h1,1390,h2,1392,h3,1393,h4,1394,h5,1395,h6,1396,h7,1403,h8,1407,h9,1408,hA,380,hB,1487,hC,1488,hD,1488,hE,1488,hF,1488,hG,1491,hH,1491,hI,1506,hJ,239,hK,1511,hL,120,hM,1520,hN,1521,hO,1522,hP,1523,hQ,1726,hR,1525,hS,1526,hT,1541,hU,1541,hV,273,hW,1561,hX,1561,hY,1562,hZ,1563,h_,1388,ha,1409,hb,1410,hc,1422,hd,1423,he,1433,hf,1435,hg,1436,hh,1442,hi,1443,hj,1444,hk,1445,hl,1446,hm,1446,hn,1446,ho,1447,hp,1448,hq,1449,hr,1450,hs,1451,ht,1455,hu,1461,hv,1552,hw,1483,hx,1484,hy,637,hz,1486,i,1354,i0,1580,i1,1581,i2,143,i3,260,i4,1634,i5,1643,i6,1652,i7,1673,i8,1,i9,14,iA,1723,iB,1706,iC,1328,iD,1103,iE,1576,iF,1683,iG,1616,iH,1103,iI,1596,iJ,1600,iK,1602,iL,1587,iM,1572,iN,1610,iO,1619,iP,1648,iQ,151,iR,386,iS,111,iT,1590,iU,115,iV,1644,iW,62,iX,33,iY,1712,iZ,18,i_,1564,ia,1711,ib,1711,ic,1711,id,1713,ie,1713,ig,1714,ih,1715,ii,1716,ij,1716,ik,1738,il,1719,im,74,io,1741,ip,1741,iq,1096,ir,1105,is,1763,it,1630,iu,1198,iv,1727,iw,1720,ix,1725,iy,1249,iz,1103,j,1268,j0,83,j1,1636,j2,1109,j3,1122,j4,1124,j5,1125,j6,1128,j7,1672,j8,1547,j9,1550,jA,1739,jB,1750,jC,1650,jD,1668,jE,1103,jF,1546,jG,1103,jH,1666,jI,1669,jJ,1704,jK,1738,jL,1756,jM,1103,jN,1597,jO,1598,jP,1604,jQ,1662,jR,1568,jS,1573,jT,1589,jU,1614,jV,1618,jW,1624,jX,1649,jY,1735,jZ,229,j_,0,ja,1585,jb,1632,jc,1746,jd,1686,je,1569,jf,1570,jg,1698,jh,1656,ji,1592,jj,1722,jk,1595,jl,1688,jm,1680,jn,1688,jo,1737,jp,1582,jq,1740,jr,1748,js,1664,jt,1578,ju,1591,jv,1653,jw,1689,jx,1744,jy,1103,jz,1627,k,1717,k0,119,k1,133,k2,164,k3,226,k4,150,k5,142,k6,261,k7,262,k8,162,k9,347,kA,1762,kB,1566,kC,1567,kD,1588,kE,1539,kF,1615,kG,1097,kH,1107,kI,1108,kJ,1110,kK,1111,kL,1112,kM,1114,kN,1115,kO,1118,kP,1121,kQ,1123,kR,1126,kS,1678,kT,1718,kU,1103,kV,1551,kW,1670,kX,1671,kY,1687,kZ,1691,k_,367,ka,256,kb,85,kc,1657,kd,1661,ke,104,kf,1696,kg,1699,kh,37,ki,24,kj,50,kk,73,kl,369,km,1742,kn,40,ko,23,kp,1651,kq,1080,kr,1728,ks,1729,kt,1730,ku,1731,kv,1732,kw,1733,kx,1759,ky,1760,kz,1761,l,1219,l0,1707,l1,1645,l2,1753,l3,1209,l4,1210,l5,1747,l6,1402,l7,1235,l8,1236,l9,1237,lA,1538,lB,1545,lC,1642,lD,1647,lE,1103,lF,1701,lG,1702,lH,1703,lI,1705,lJ,1710,lK,1757,lL,1103,lM,1690,lN,1543,lO,1557,lP,1558,lQ,1559,lR,1560,lS,1599,lT,1603,lU,1654,lV,1655,lW,1681,lX,1682,lY,1544,lZ,1548,l_,1646,la,1758,lb,1721,lc,1684,ld,1700,le,1724,lf,1549,lg,1640,lh,1641,li,1626,lj,1103,lk,1556,ll,1625,lm,1752,ln,1763,lo,1575,lp,1577,lq,1376,lr,1377,ls,1378,lt,1629,lu,1554,lv,1555,lw,1583,lx,1637,ly,1638,lz,1639,m,1304,m0,1606,m1,1607,m2,1608,m3,1609,m4,1611,m5,1613,m6,1621,m7,1622,m8,1623,m9,1633,mA,154,mB,138,mC,230,mD,158,mE,129,mF,140,mG,309,mH,240,mI,385,mJ,254,mK,272,mL,163,mM,253,mN,263,mO,257,mP,255,mQ,101,mR,100,mS,169,mT,48,mU,247,mV,366,mW,35,mX,1658,mY,1659,mZ,1660,m_,1579,ma,1612,mb,1675,mc,153,md,139,me,141,mf,243,mg,245,mh,244,mi,242,mj,246,mk,91,ml,381,mm,346,mn,88,mo,131,mp,127,mq,132,mr,128,ms,125,mt,123,mu,112,mv,1586,mw,52,mx,137,my,227,mz,130,n,103,n0,81,n1,34,n2,121,n3,51,n4,1695,n5,69,n6,114,n7,113,n8,1708,n9,1709,nA,1140,nB,1151,nC,1152,nD,1153,nE,1162,nF,1166,nG,1651,nH,1169,nI,1170,nJ,1172,nK,1176,nL,1181,nM,1080,nN,1184,nO,1201,nP,1215,nQ,1222,nR,1225,nS,1259,nT,1260,nU,1280,nV,1281,nW,1318,nX,1326,nY,1335,nZ,1339,n_,55,na,379,nb,379,nc,379,nd,79,ne,76,nf,77,ng,373,nh,105,ni,224,nj,165,nk,71,nl,372,nm,75,nn,388,no,84,np,258,nq,1749,nr,86,ns,68,nt,389,nu,38,nv,1129,nw,1130,nx,1131,ny,1134,nz,1139,o,1252,o0,1360,o1,1728,o2,1729,o3,1730,o4,1731,o5,1732,o6,1733,o7,1759,o8,1760,o9,1761,o_,1103,oa,1762,ob,1566,oc,1567,od,1398,oe,1401,of,1636,og,1588,oh,1539,oi,1482,oj,1615,ok,144,ol,146,om,145,on,147,oo,149,op,148,oq,152,or,155,os,157,ot,156,ou,161,ov,160,ow,1096,ox,1100,oy,1097,oz,70,p,25,q,1192,r,1103,t,1316,u,1372,v,1274,w,1173,x,1239,y,1273,z,1196", + "instance": "A,1895,B,1936,C,1925,D,1897,E,1789,F,1936,G,1813,H,1793,I,1888,J,1901,K,1766,L,1773,M,1938,N,1772,O,1774,P,1783,R,1913,S,1861,T,1896,U,1900,V,1933,W,1775,X,1791,Y,1883,Z,1917,a0,1822,a1,1840,a2,1856,a3,1801,a4,1790,a5,1915,a6,1919,a7,1939,a8,1927,a9,1929,aA,1836,aB,1823,aC,1832,aD,1842,aE,1850,aF,1851,aG,1834,aH,1810,aI,1811,aJ,1824,aK,1825,aL,1864,aM,1846,aN,1877,aO,1884,aP,1885,aQ,1887,aR,1892,aS,1894,aT,1911,aU,1912,aV,1916,aW,1923,aX,1939,aY,1942,aZ,1802,a_,1949,aa,1931,ab,1931,ac,1935,ad,1821,ae,1863,af,1826,ag,1797,ah,1852,ai,1782,aj,1784,ak,1787,al,1788,am,1788,an,1886,ao,1898,ap,1910,aq,1948,ar,1950,au,1769,av,1928,aw,1793,az,1815,b0,1817,b1,1820,b2,1831,b3,1835,b4,1849,b5,1806,b6,1855,b7,1808,b8,1908,b9,1827,bA,1944,bB,1945,bC,1946,bD,1947,bE,1765,bF,1770,bG,1926,bH,1927,bI,1930,bJ,1932,bK,1934,bL,1937,bM,1941,bN,1948,bO,1941,bP,1774,bQ,1103,bR,1103,bS,1103,bT,1830,bU,1853,bV,1818,bW,1819,bX,1854,bY,1803,bZ,1848,b_,1816,ba,1796,bb,1829,bc,1860,bd,1812,be,1839,bf,1862,bg,1773,bh,1777,bi,1779,bj,1785,bk,1786,bl,1871,bm,1875,bn,1877,bo,1878,bp,1879,bq,1880,br,1881,bs,1886,bt,1889,bu,1890,bv,1893,bw,1904,bx,1909,by,1914,bz,1918,c0,1841,c1,1804,c2,1805,c3,1843,c4,1807,c5,1809,c6,1844,c7,1837,c8,1838,c9,1857,cA,1873,cB,1876,cC,1877,cD,1877,cE,1891,cF,1902,cG,1903,cH,1906,cI,1907,cJ,1914,cK,1915,cL,1920,cM,1920,cN,1921,cO,1921,cP,1922,cQ,1923,cR,1924,cS,1924,cT,1940,cU,1943,cV,1944,cW,1781,c_,1833,ca,1795,cb,1858,cc,1859,cd,1828,ce,1798,cf,1799,cg,1800,ci,1845,cj,1847,ck,1776,cl,1778,cm,1780,cn,1788,co,1789,cp,1792,cq,1793,cr,1865,cs,1866,ct,1867,cu,1869,cv,1870,cw,1872,cz,1873,gA,1895,gC,1925,gD,1897,gI,1888,gP,1783,gU,1900,gV,1933,gY,1883,ga3,1801,ga9,1929,gaE,1850,gaF,1851,gaP,1885,gaR,1892,gaS,1894,gaT,1911,gaU,1912,ga_,1949,gac,1935,gae,1863,gah,1852,gao,1898,gap,1910,gav,1928,gb6,1855,gb8,1908,gbB,1945,gbC,1946,gbD,1947,gbH,1927,gbf,1862,gbm,1875,gbo,1878,gbp,1879,gbq,1880,gbr,1881,gbv,1893,gbw,1904,gbx,1909,gc4,1807,gc5,1809,gcW,1781,gcl,1778,gcn,1788,gct,1867,gcu,1869,gcw,1872,gh,1899,gq,1794,gt,1882,h,1899,i,1767,j,1941,k,1814,l,1768,m,1938,n,1905,p,1868,q,1794,sI,1888,sh,1899,t,1882,u,1771,v,1874" + }, + "frames": "o0IA4JoBEAA8CgB4kC0D,A;qMAfhC3kCAAmB0B2kCqF,A;sdC6bRm+BqB;orHGpkBLl+ByC;QAEFs1ByC;sXEsSFt1B2C;QAEFs1B2C;eAuqBwBt1BsB;eAEFA6B;+tDGhmBbwgCiB;cAAAAa;6CAuBQrCM;gJAYVqCiB;6MA+BIiBW;qbAkmBUrYoB;0KAgCnBAwB;gBASAAuB;8DAyCcppBsC;yfAyQZAmR;iZA4MJAW;sfA0DyBAW;0WAkCJAW;eAOpBAkC;wFAKCAU;4EAWiBA2E;wHASjBAU;0EAiCuBAW;sCAGtBAc;4XAkIFAAGh5D0BAgE,A;2fHijEtBAgD;AAEAA6O;gvCAyPFA4D;6sBAqF6BygCuC;AACH4BmC;yEA4HtBpjEACr/DT47DoB,M;qDD2gEc76BiD;kKAuJXAY;u2BEz/EDvgCAA2BTqgC4G,A;8HAZSrgCAAYTqgC4G,A;6dArEuB//BAAzChB+hEmD,A;qrBAiRS7hE4D;2nBItIhBuxDADjBQxxBgD,A;WCiBRmrB0B;AAC+DgYa;AAA7DaQ;oBACAAI;yBAGFAQ;6wDL7HQtImB;WASe/BO;mBACf+BiB;AADe/BM;uuCA+jBA6DO;AACIFS;2LA4BsBTAAjRR78Bc,A;AAkRrB47BM;AAEAHM;AAEADK;iHAwCF+BS;iEAaZ57DAA9CkC4+DK,A;sEAqEpC1+DAAxEuC0+DG,A;sUA8Jd5+DAA3JW4+DoE,A;uGAiL5Br/D4B;mEAyEyBmBAG14BtB41DqB,A;aH04BsB51DAG14BtB41DW,A;CH24BKjDgBAlFlBrzDAAzKsC4+DiB,A,A;4EAiQLrIO;wBAOM31DU;gBAAAAAAKrC04DY,A;oBAQgBzd0B;iBAGXxdAAmCTAAAAAAAACMi7BG,A,A,W;6BAhCF14DM;gBAAAAAAfA04DY,A;sDAuBWJsB;mCAQFDwB;mBAGNCwB;qBAKkB35D0B;iEAgErBoEmD;8BAGIuyDG;sRAuCAiEU;wEAUCtBgB;mEASLcK;0CAsCAh2DoC;8EAUAy1DK;gYA8CU5CG;iBAKVt2DAAvhBuC0+DG,A;8IA8iB7BpIG;iBAKVt2DAAnjBuC0+DG,A;uYA4nBvB5buB;sDAiBT6TS;imEAqPFlzDAAw6DPmEG,6E;2DA/5DmBuuDAA3zCCFO,A;20BA+8CJJAA37CIIG,A;gDDvPF+LmB;qNCs3DHnKgB;iMA0DLUoC;gCAOM3CG;cAGV4Da;+BAIIjBkC;kCAMM7CI;cAGVyDiB;+FAiDFDS;AACAOQ;+DAyF8BtEAAIpB6FAAvzDP78BsB,A,AAwzDHu7BM,AACALM,0B;8BAKS/EAA/CXkEsB,A;oKAkEYwCAAj1DP78BsB,A;AAk1DHu7BM;AACAIK;CACATM;sCAMSjFAAzEXoEsB,A;yTAyGYwCAA13DP78BsB,A;AA23DHu7BM;AACAIK;CACATM;sCAMSpFAAhHXuEsB,A;4FA2HmBxCG;AACfvyDiE;8BAGKq0DgB;sCAKGkDAAv5DP78BsB,A;AAw5DHu7BM;AACAIK;CACATM;gFAUArEAAKUgGAAz6DP78BsB,A,AA06DHu7BO,AACAIM,AACATM,0B;kKAqBmBsCO;wEA0BVxH6B;kCAKMcAAKL+FAAr+DP78BsB,A,AAs+DHu7BM,AACAIM,AACAES,WAGEHS,AAEFRM,0B;2DAyBSkCkB;QAEAzHGAlBN4EuB,A;kCAuBY5DAAKLkGAAlhEP78BsB,A,AAmhEHu7BO,AACAIM,AACAEM,AACAXM,0B;qBAgBShFoC;gCAKTaAAKU8FAAhjEP78BsB,A,AAijEHu7BO,AACAIM,AACAEM,AACAXM,0B;qBA6CStFAAtCPCiB,AADYrYO,AACZqYkJ,A;8CA2CFeAAKUiGAA3mEP78BsB,A,AA4mEHu7BO,AACAIM,AACAEM,AACAXM,0B;uBAcSnFSARXuEwB,A;8PA4CYuCAAjqEP78BsB,A;AAkqEHu7BO;AACAIM;AACAEK;CACAXM;6FAyKOwCgB;qUA4BC+FmB;qBAIkB/JiB;qBAIADiB;sBAIAIiB;sBAItBuIAAgFRDS,AACASQ,A;qQAtCQRAAqCRDS,AACASQ,A;8CA9BQRAA6BRDS,AACASQ,A;cA1BQtDAA2KSncYAoCEkaI,gBAEnBuFiC,A,A;uBA7MQRAAqBRDS,AACASQ,A;eAlBQvDAAyKSrBYAqCEXI,gBAEnBuFiC,A,A;cA5MYrD0BA+KZ4CqC,AAEACAApKADS,AACASQ,A,M;oXAsBoDjCoB;2DAUpClCiH;6eAsFyC5BAAv+ElB78Bc,A;AAw+Ef47BM;AAEAHM;AAEADY;sKA+CA5BkB;wBAIAJkB;0FAOL6DI;gBAEnBuFY;2sBA0JEt9D0B;q6CAgMsBi4DI;sDAQAAI;wDASAAM;8FAoBX6FS;oGAQA9FM;sBAEQCM;kIAuCE6DQ;2NAgBTzJAAtqGwBIG,A;GAuqGxBJAAvqGwBIG,A;uFA2rGpBwFO;AACAAI;sxCUn4GZtGS;4BA2BRj3BU;wBA4GWASAxCSs3BAAAAt3ByB,A,a;uCAuDHi/BE;yMA2DMj/BqB;AAAA+7BW;4HAiCX5QM;oLC8OIoNiB;AACInCG;6GAqBJmCkB;AACInCI;mGAoBXjrDgB;uFA+IkBitDqB;gCAGYjBG;AACxBqIM;sHA+BcIG;2CACDhDK;0CAIb4CM;mDA4EIGG;wLAkBToDwB;wBAMgBtKe;AACFiCuB;AACZpEyB;gDAcIoEyB;iBAEVqBiB;AAGAXmB;uQG91BQNU;iBAUqB96BqB;qCAKrB86BU;sFAoBkB96BiB;+KAuD3B70BW;iBCi5EG60BqB;OAAAAU;6pDEngEmCAwC;kBAQ9BAuC;gBA0eMAsB;uIAqdnBAAAAAAO,A;uKGh3CeAkB;kFAoBNs0BG;oqBC7BAt0B+B;qmDfmFM4jCgB;0TAqQNvCO;+LA2EEpFmC;0BA8EHj8BiC;kDA+DQ4gCgB;AAEDlEO;2BAGFAO;qBAGEAU;2FAiIoBqDgBF7qBclCK,A;cEorBnCUkB;oEAKR2FAAjLarFyC,A;sKT1iBV5EO;4zB4B4vBCgKmB;8EAqBcjkCa;qBAGpBikC6B;qBAMK3PG;gtBCrqBa2Le;iEAGACoB;2DAIAC2B;wHCsrBFnEkH;+sBAAAAS;YAAAAI;4eAsOTh8B0B;CAIGwhCiF;KAAAAsEA0dAoCO,iG;KA1dApCyD;OAAAA4C;28DAi7BM3lBkC;iMAoCP7biD;+GAeIAc;2GASXgkCArBp+CJrHO,A;+BqBw+CapD0B;+BAGIv5Bc;wJAHJu5Ba;2BAqBGv5Bc;AAAJgkCoB;kFAYL1PG;0LA4BQt0Bc;6GAWXgkCArBhjDJrHO,A;+BqBojDa1D2B;+BAGIj5Bc;wDAQJ24ByB;+MAaG34Bc;AAAJgkCoB;0GAaL1PG;gNAeA4E0B;iYA4CI0Ha;sFAeAAY;iPAoBE5gCe;wCAuBNs0BG;yNAiCH+E2C;OAIYwFkC;0vBAmGoBlG0B;wMAkBpB34Bc;AAAJgkCa;oBAAAACrBx2DZrHY,A;0DqBq3DOrIG;iOAwEQwMApC/1DOFa,A;YoCi2DLAY;4OAsCDAgC;iFAYLAQ;sBAA4CAiB;0mBAuZhDlRK;2BAAAAU;mCAtBgCqOAlChpFV/9BW,A;oRkCsqFtB0vBS;8nBAg1BQ4Fe;ggHC6mRCTAWhxYyB70BW,A;AXgxYzBuhCAA6tULvhCQ,A;2BA7tUK60BAWhxYyB70BmB,A;mKXuijBrBAA2BljhBKAA5C7nCvBAAA9B0Bi/BAAAAj/B0B,A,A,kB,A;0CiB2ujBxBmhCc;kBAmBAAe;wEA0mlBNnhCAAAAAAAQEs8B8B,A,A;kCA8mB6Bt8BAAi2FJAAAeaq4BAAAAr4BoC,A,4B,A;cAj3FxCAQ;6DAoCiBiqBoL;6EAgtDXjqBAA5KkCk9BQ,AACEDQ,AACGEc,A;AA2E7Cn9BU;AAkGcshCArC/5sCDthCU,A;qDqC22uCJmrBG;89GChqvCL0V2B;gdCudc7gCAyBosBSAA5C7nCvBAAA9B0Bi/BAAAAj/BiC,A,A,gC,A;+sBoBuHtBg/B4FAIoB1JW,+O;OAJpB0JAAUW1JoB,gB;qcClHYFAJgimCKAAA9G3B8JyB,A,A;AIl7lCsBbAJgzZQr+BS,AAAkBmqBAA9LfnqBa,A,A;AIlnZXo1BAJgimCiBIsB,A;iCIzhmCpBJAJyhmCQAAA9G3B8JyB,A,A;AI36lCmBbAJyyZWr+BS,AAAkBmqBAA9LfnqBa,A,A;AI3mZdo1BAJyhmCoBIgB,A;6FI/gmCXJAJ+gmCDAAA9G3B8JyB,A,A;AIj6lC4BbAJ+xZEr+BS,AAAkBmqBAA9LfnqBa,A,A;AIjmZLo1BAJ+gmCWIoB,A;mDI7gmC9Bx1B2B;AAEG8gCAvCuWGFqB,A;qCuCjWaxLAJqgmCDAAA9G3B8JyB,A,A;AIv5lC4BbAJqxZEr+BS,AAAkBmqBAA9LfnqBa,A,A;AIvlZLo1BAJqgmCWIoB,A;yDIlgmC3BsLAvC8VGFqB,A;sSwC/WxBjCS;SAAAAuC;gDA0EkD2EoB;AACLCY;0HAoRjBZyC;+UAmBqB7BAxCHzBF6C,A;2EwCMI7tDSAoEpButDgB,kB;AApEFjLALojlCJsN0B,A;kJKlilCE1vDyIAkCoB0vDyB,kD;+JAMsBJAxClZrCWO,A;y7B0CvCE9NyC;AACcAsD;eAErBuN0B;AACAA0B;AACOtN2C;AAEPsN0B;AACAA0B;AACOtNwC;+REX0BuJmE;yBAkBAA8D;sJ/C2RL6CW;gBAqB5BtCgB;giBCtLsB1BAiE8FuBz9BkB,A;gCjE9FvBy9BAiE8FuBz9B4B,A;6BjEuC/C29B6B;gtBA0RACqB;4ZAsJ4BsDe;gBAcElhCoB;kJAmD9B49BuC;umDEjrBOyFiC;+wCC/FuBrjCS;iBAAAAe;OAAAAa;4YAoKPAmB;6BAAAAqC;gNEpIGAmB;yBAAAAc;iPA2UAAmB;0XA6DAAmB;s2CGgrCE4gC+B;g5BA66BVaS;gKmBj+EPzhCmB;yDAAAAW;UAIqB0xBgB;YAAAAAAJrB1xB4B,A;8EAWF02BS;qSA8CIcG;wPAiBXkJkI;kRA6G2B1gCiC;ghBAwHlBAU;sBAAAAAA0BbAAAAAAO,A,A;kiBfpUMgkCO;iYA4CQF2D;8HAoDqC5MkC;gKCzFpC6BG;0JAmFF/4BW;qCAgDGmjCG;+CAQkB/DK;mNAuElB+DkB;AAIIpCAA5GE3He,A;4EA+GVD0B;6rCJnLH0BiB;qDAMyBDM;AAi1GD7TAA2KjB+bqB,A;02BUr0GN9iCc;iMC5QIg6BW;iEAQZxDS;6EAgBYwDW;qFA2HP8FW;oBACElDY;AAA6BxFI;8CAazBwFK;kGAQLgDU;qTAmIkBzUW;kGAoBAnrBuC;QACPo0BwD;wDASOp0B+B;QACPwjCyD;6GAgGbzJG;6CAQiB3DQ;AACLqCY;uBAQdttDgB;gFAQE4uDG;kGAiBiB3DQ;AACLqCY;mCAQdttDgB;mSAqJF4wDW;oCAQAZmB;iGAkEAhwDmB;kGAwBAAmB;kkBAwEyBu0DGAnmBlB9CS,AAAUJa,A;gCAqmBwBrFE;2BACDAQ;mDAOcsBiB;AAC3BLmB;IACqBjBI;+LAkBjBsIC;IAAAAAA5qBxB7CS,AAA+BzCO,A;gIAqrBChDS;iBAElB0IAA7rBd3FU,A;0DAksBsB/Ca;6QCqtB3BqIU;4GAYAAU;soBKvdSx/BwB;KAAAAAA6XbAAAAAAU,A,A;yMAnWew3BiB;qzBA+JiBx3B+B;qhBsBxvCJAkB;sBAAAAW;mJA6QFy9BAiBlDuBz9BW,A;QjBkDvBy9BAiBlDuBz9B8B,A;sFjB6R5BkhCe;sSnBlaf8Ce;AACAAAd2fJrHU,A;Ac1fIqHW;sUsBGenBkB;4DA0CE1XG;eAAAAiB;mBAMKAe;AAFSyVuB;AAETzVG;AAAtB6Ye;AAAsB7YgB;0BAMHAG;AAFnB6YkB;AAEmB7YgB;sHA+FeAM;qBAAAAS;iIrB5IlCmOG;iJAWYAa;AAA2B1HK;sCAMvC0HU;AAAiC5HAH9G1B1xBM,G;kBG8G0B0xBOH9G1B1xBW,A;QG+GJAc;+BASHs5BS;4HA+BAAS;4GAiCAAS;4QAgDAAS;2VA0DWAiB;0CASAAU;kCAEc9HA9B4YCxxBuB,A;6d+BtnBjB4hCqE;wNAqBmBhQqB;oEAQd5xBc;AAAJgkCa;mBAAAEAhBgfGrFiB,A;0FgBheYjNQ;uGASvBoSAhBkdNrHK,A;QgB9cyCrIG;kmBqBsE1Bt0Bc;0FAQRs0BG;2DCnCqBtJa;UAAAAI;4LrB5GD+Yc;gDAYZ7PqB;iKAmDFqCiC;6UAqCAuCU;0YAoJN94BY;AAAAo+Be;8VA8QqBp+BoC;0lBAatBkkCAjBCWrFa,A;iFiBQLqFAjBRKrFa,A;ciBaLqFAjBbKrFa,A;kBiBoBLqFAjBpBKrFe,A;AiBqBLqFAjBrBKrFC,AAAjBlCa,A;wMiBiDQuHAjBjDSrFW,A;iFiB6DbqFAjB7DarFmB,A;oCiBsEVvKG;yEjB7dgCoKmB;s1BToQfrNK;2hD4BzOiBrxBgB;UAAAAa;8fnBnMXyhCc;qRqBgvCpBnDsB;wEAKFAwB;AACAAyB;weAoNgBhGMAg2CbwIAlCt9EWF2B,A,AkC09ElBrQa,+BAIFkMOA/BYqEAlC/7EQFsB,A,4BkCs8EpBoD4B,A,yD;sLAt0C8DxRG;qCAA9DxyBG;wVAwacuwBG;iBAEIuQAlC1iDEFmC,A;qBkCojDyBAiB;uHAojBVxQG;qPAwYjCGmB;IACAoEa;oEAIAjEa;sBACA8BK;oBACAhCa;sBADAgCK;kPAnlBegMuC;AACUsCAlCp6DPFc,A;AkCq6DlBoDArB/rDJrHS,A;AqBgsDqB6BW;AAHFAa;0NAssCE/H2FAgBdz2BG,A;0BAhBcy2B2B;8fA41BAuJU;AAAcxPiB;mGAc/BoIgC;aACAC6B;cACAHwB;aACAM+B;8OAaAJ+B;UACAC6B;oNAoDG74BI;AADF0wBQ;4MAgEeoQAlCvlIEFgC,A;wCkCimIkBAiB;koCC0rNpBKoB;AAAO0CgB;wIAKzB1CoB;AAAcAiB;aACd0CmB;AAAaAgB;0HAIe1CoB;AAAM0CK;CAAAAU;odAi9CI3jCmB;sCA8JXAW;mFAumBCi+BAA28xBuB1Bc,cAyBvD0BAAAAAAACEnBAAoFAlTO,Y,AAnFAoTAAiKApTO,+B,A,A,A;2BAloyB4B5pB+B;+LAkBVogCwB;iLAkBd3KAA0BDCiF,A;qtDAk7P4BkCkB;4TA0GAAkB;+lBAmhClBhGyB;sMAeuBAuB;0JAsFLwDe;SAGe5DAA86cnCxxBU,A;iCA96cmCwxBAA86cnCxxBQ,A;06BA55UoB43BkB;wiCAg0DlBxCgB;mVA0aMp1BoC;AACVuhCAA1sMEvhCW,A;IA0sMiBuhCAA1sMjBvhCY,A;0IAiyMQA6B;AAIduhCAAryMMvhCU,A;uCAuyMOuhCAAvyMPvhCU,A;SAwyMFuhCAAxyMEvhCW,A;IAwyMeuhCAAxyMfvhCQ,A;oJAg2MQA6B;AAIduhCAAp2MMvhCU,A;uCAs2MFuhCAAt2MEvhCW,A;IAs2MmBuhCAAt2MnBvhCQ,A;kGA27MFyqBQ;q1CAiqJWwWoB;AAAO0CmB;AAAM7OqB;AAASlEmB;qHAKxCqQoB;AAAcAiB;aACd0CmB;AAAaAgB;aACb7OkB;6BACAlEmB;wFAE4BqQoB;AAAM0CmB;AAAK7OqB;AAAOlEQ;CAAAAU;upCA4oC9BwEU;8CAAAAAA4DX8JoB,A;kJAjDDpFwB;uCAiDCoFkB;qDAIPyDI;2DA0GkCvNAA9G3B8JkB,A;mBA8G2B9JwB;AAAYIO;qBAG9CHAA7GAsNI,A;EA6GAtNwB;AAAYGY;6bAiBNsEoB;UACAoCI;MAAAAc;kCAQApCoB;YACOoCI;MAAAAY;iIA+yBE0EY;2EAWCvKiB;sBAaTdoC;mBAImBkFU;EAAAAuC;+BAInB2BAAiDDCqB,A;uIAkhCmBuEQ;sPA+Cd5gCkB;sBAAAAW;g2BAitDCo1BAA9xHL8JmC,A;mrBAogKI9JAApgKJ8JG,kvB;iwBA4jKUwEArCzyuCJvHS,A;AqC0yuCMvK0B;AAObwD6C;iCAAAAQ;YAAAAAApkKC8J2B,A;AAskKiB9JAAtkKjB8JmH,A;sVA+8JDvEK;iEAAAAsBAwBJ/HiC,iB;iyBoBv6vCEmNW;8OAqCyCvOW;wBAyBfIE;qTC3C5BiDU;mBAAYyMArD0ZZhMS,A;AqD1ZATAVkJuC70BW,A;WUlJvC60BAVkJuC70BgB,A;WUlJ3BshCArD0ZZhMiB,A;YqD/YEFiB;KAAAAAAuG4BvFsB,A;gBADN+BK;UAAAAG;kCACM/BmB;SAGAwH8B;OAAU7FA1DslBZxxBoB,A;0MuC/PxBAwB;u+BqB46EmBo1BAvBqjgClB8JkB,A;qHuB1igCQ0BY;0BAQf+BI;sCA6B6B3iCkB;4FAoBnB6pBO;AAAuBiUAAlBD99BWFh7FTuhCArBqotBZvhCa,A,A,A;QuBlsnBMsgCU;+DAWGrCAvBq3mCiC1Bc,AAyBvD0BAAAAAAACEnBAAoFAlTO,Y,AAnFAoTAAiKApTO,Q,A,A,A;AuBjjnCoBmTAvB0+mCpBnTO,AAAQ5pBY,A;AuBx+mCcAAvBozpChBAW,A;AuBtzpCci+B2B;gEAUEj+B6B;AAEFuhCAvB2qnBTvhCa,A;+gBwBptsBoB43BkB;mvCrB3alBgJY;uSAuBE9VgB;AACPAmB;AADOAK;sCAsCG4YM;YAAXpCAxCoOIthCW,A;iBwCpOO0jCY;yGA3BGxOI;EAAAAG;81BCUKEAJi4lCnB8JyB,A;6BI73lCDyD0B;qGC9DCvNAL27lCA8JqD,A;AKz7lCK9JALy7lCL8JmC,A;uGK56lCPliCAwBnBA6kCuD,A;uUxBmCoB/CAFtBHkCG,A;gBEqBS7L6B;QACN2JWFtBHkCqB,AACJMAQ0JuBthCkC,A,AR1Jb0jCgB,aAAAAc,A;gFE6BT5CA1CkqBQFa,A;6T0C5nBM+BiC;AAAAA2C;kcA2B5BA2D;8FAcAAqC;AAAAAsC;AAII/YALoxnCG2L2B,A;6iBKlunCWuLAf/IIFO,A;uBegJpBpPArC0LwBxxBS,iB;AqC1LxBmrBY;WAAAAG;sBAAAAwC;8QAaoBwXsB;AACKrO6C;qFAOHqOwC;6GAmBR/BQ;6KAgBhB0BM;AAEAWiEAlFENuC,A;AAmFFKmF;kGAUqCpCa;oOAiBrC0BS;+pBA+BqDlNALuwlCnBAAA9G3B8JyB,A,A;AKzplC8CbALuhZhBr+BS,AAAkBmqBAA9LfnqBa,A,A;AKz1Yao1BALuwlCPIW,A;qJK3vlCjBlBS;uHAgBvBgOY;kOA0BQIO;AAAoBFO;2BAEHbsB;AACQDS;qBAEcAiE;AAC7Ce6D;gmBE5VNE0B;AACAA0B;AACOtN2C;AAEPsN0B;AACAA0B;AACOtNM;yuuBpC6wCQ0M0G;mEAUAC8G;iEAUACuD;mEAUAC2D;wHuBjyBgCnDU;2cIkB/BsBM;qtCzB1ZOpLAAsE3Bn1BAXlJAvgCuB,A,A;AA+EkBpEAA8CgB4kCAANKzgC" + } +} diff --git a/dart/static-assets/favicon.png b/dart/static-assets/favicon.png new file mode 100644 index 000000000..43d2ffa07 Binary files /dev/null and b/dart/static-assets/favicon.png differ diff --git a/dart/static-assets/github.css b/dart/static-assets/github.css new file mode 100644 index 000000000..791932b87 --- /dev/null +++ b/dart/static-assets/github.css @@ -0,0 +1,99 @@ +/* + +github.com style (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #f8f8f8; +} + +.hljs-comment, +.hljs-quote { + color: #998; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold; +} + +.hljs-number, +.hljs-literal, +.hljs-variable, +.hljs-template-variable, +.hljs-tag .hljs-attr { + color: #008080; +} + +.hljs-string, +.hljs-doctag { + color: #d14; +} + +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #900; + font-weight: bold; +} + +.hljs-subst { + font-weight: normal; +} + +.hljs-type, +.hljs-class .hljs-title { + color: #458; + font-weight: bold; +} + +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal; +} + +.hljs-regexp, +.hljs-link { + color: #009926; +} + +.hljs-symbol, +.hljs-bullet { + color: #990073; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #0086b3; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + background: #fdd; +} + +.hljs-addition { + background: #dfd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/dart/static-assets/highlight.pack.js b/dart/static-assets/highlight.pack.js new file mode 100644 index 000000000..3cf5abcf6 --- /dev/null +++ b/dart/static-assets/highlight.pack.js @@ -0,0 +1,780 @@ +/*! + Highlight.js v11.8.0 (git: d27be507cb) + (c) 2006-2023 Ivan Sagalaev and other contributors + License: BSD-3-Clause + */ +var hljs=function(){"use strict";function e(n){ +return n instanceof Map?n.clear=n.delete=n.set=()=>{ +throw Error("map is read-only")}:n instanceof Set&&(n.add=n.clear=n.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(n),Object.getOwnPropertyNames(n).forEach((t=>{ +const a=n[t],i=typeof a;"object"!==i&&"function"!==i||Object.isFrozen(a)||e(a) +})),n}class n{constructor(e){ +void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1} +ignoreMatch(){this.isMatchIgnored=!0}}function t(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function a(e,...n){const t=Object.create(null);for(const n in e)t[n]=e[n] +;return n.forEach((e=>{for(const n in e)t[n]=e[n]})),t}const i=e=>!!e.scope +;class s{constructor(e,n){ +this.buffer="",this.classPrefix=n.classPrefix,e.walk(this)}addText(e){ +this.buffer+=t(e)}openNode(e){if(!i(e))return;const n=((e,{prefix:n})=>{ +if(e.startsWith("language:"))return e.replace("language:","language-") +;if(e.includes(".")){const t=e.split(".") +;return[`${n}${t.shift()}`,...t.map(((e,n)=>`${e}${"_".repeat(n+1)}`))].join(" ") +}return`${n}${e}`})(e.scope,{prefix:this.classPrefix});this.span(n)} +closeNode(e){i(e)&&(this.buffer+="")}value(){return this.buffer}span(e){ +this.buffer+=``}}const r=(e={})=>{const n={children:[]} +;return Object.assign(n,e),n};class o{constructor(){ +this.rootNode=r(),this.stack=[this.rootNode]}get top(){ +return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){ +this.top.children.push(e)}openNode(e){const n=r({scope:e}) +;this.add(n),this.stack.push(n)}closeNode(){ +if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){ +for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)} +walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,n){ +return"string"==typeof n?e.addText(n):n.children&&(e.openNode(n), +n.children.forEach((n=>this._walk(e,n))),e.closeNode(n)),e}static _collapse(e){ +"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{ +o._collapse(e)})))}}class l extends o{constructor(e){super(),this.options=e} +addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){ +this.closeNode()}__addSublanguage(e,n){const t=e.root +;n&&(t.scope="language:"+n),this.add(t)}toHTML(){ +return new s(this,this.options).value()}finalize(){ +return this.closeAllNodes(),!0}}function c(e){ +return e?"string"==typeof e?e:e.source:null}function d(e){return b("(?=",e,")")} +function g(e){return b("(?:",e,")*")}function u(e){return b("(?:",e,")?")} +function b(...e){return e.map((e=>c(e))).join("")}function m(...e){const n=(e=>{ +const n=e[e.length-1] +;return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{} +})(e);return"("+(n.capture?"":"?:")+e.map((e=>c(e))).join("|")+")"} +function p(e){return RegExp(e.toString()+"|").exec("").length-1} +const h=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./ +;function f(e,{joinWith:n}){let t=0;return e.map((e=>{t+=1;const n=t +;let a=c(e),i="";for(;a.length>0;){const e=h.exec(a);if(!e){i+=a;break} +i+=a.substring(0,e.index), +a=a.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?i+="\\"+(Number(e[1])+n):(i+=e[0], +"("===e[0]&&t++)}return i})).map((e=>`(${e})`)).join(n)} +const _="[a-zA-Z]\\w*",E="[a-zA-Z_]\\w*",N="\\b\\d+(\\.\\d+)?",y="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",w="\\b(0b[01]+)",v={ +begin:"\\\\[\\s\\S]",relevance:0},k={scope:"string",begin:"'",end:"'", +illegal:"\\n",contains:[v]},x={scope:"string",begin:'"',end:'"',illegal:"\\n", +contains:[v]},O=(e,n,t={})=>{const i=a({scope:"comment",begin:e,end:n, +contains:[]},t);i.contains.push({scope:"doctag", +begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)", +end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0}) +;const s=m("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/) +;return i.contains.push({begin:b(/[ ]+/,"(",s,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i +},S=O("//","$"),A=O("/\\*","\\*/"),M=O("#","$");var C=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:_,UNDERSCORE_IDENT_RE:E, +NUMBER_RE:N,C_NUMBER_RE:y,BINARY_NUMBER_RE:w, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const n=/^#![ ]*\// +;return e.binary&&(e.begin=b(n,/.*\b/,e.binary,/\b.*/)),a({scope:"meta",begin:n, +end:/$/,relevance:0,"on:begin":(e,n)=>{0!==e.index&&n.ignoreMatch()}},e)}, +BACKSLASH_ESCAPE:v,APOS_STRING_MODE:k,QUOTE_STRING_MODE:x,PHRASAL_WORDS_MODE:{ +begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/ +},COMMENT:O,C_LINE_COMMENT_MODE:S,C_BLOCK_COMMENT_MODE:A,HASH_COMMENT_MODE:M, +NUMBER_MODE:{scope:"number",begin:N,relevance:0},C_NUMBER_MODE:{scope:"number", +begin:y,relevance:0},BINARY_NUMBER_MODE:{scope:"number",begin:w,relevance:0}, +REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//, +end:/\/[gimuy]*/,illegal:/\n/,contains:[v,{begin:/\[/,end:/\]/,relevance:0, +contains:[v]}]}]},TITLE_MODE:{scope:"title",begin:_,relevance:0}, +UNDERSCORE_TITLE_MODE:{scope:"title",begin:E,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*"+E,relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,n)=>{n.data._beginMatch=e[1]},"on:end":(e,n)=>{ +n.data._beginMatch!==e[1]&&n.ignoreMatch()}})});function T(e,n){ +"."===e.input[e.index-1]&&n.ignoreMatch()}function R(e,n){ +void 0!==e.className&&(e.scope=e.className,delete e.className)}function D(e,n){ +n&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=T,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function I(e,n){ +Array.isArray(e.illegal)&&(e.illegal=m(...e.illegal))}function B(e,n){ +if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function L(e,n){ +void 0===e.relevance&&(e.relevance=1)}const $=(e,n)=>{if(!e.beforeMatch)return +;if(e.starts)throw Error("beforeMatch cannot be used with starts") +;const t=Object.assign({},e);Object.keys(e).forEach((n=>{delete e[n] +})),e.keywords=t.keywords,e.begin=b(t.beforeMatch,d(t.begin)),e.starts={ +relevance:0,contains:[Object.assign(t,{endsParent:!0})] +},e.relevance=0,delete t.beforeMatch +},F=["of","and","for","in","not","or","if","then","parent","list","value"],z="keyword" +;function U(e,n,t=z){const a=Object.create(null) +;return"string"==typeof e?i(t,e.split(" ")):Array.isArray(e)?i(t,e):Object.keys(e).forEach((t=>{ +Object.assign(a,U(e[t],n,t))})),a;function i(e,t){ +n&&(t=t.map((e=>e.toLowerCase()))),t.forEach((n=>{const t=n.split("|") +;a[t[0]]=[e,j(t[0],t[1])]}))}}function j(e,n){ +return n?Number(n):(e=>F.includes(e.toLowerCase()))(e)?0:1}const P={},K=e=>{ +console.error(e)},H=(e,...n)=>{console.log("WARN: "+e,...n)},Z=(e,n)=>{ +P[`${e}/${n}`]||(console.log(`Deprecated as of ${e}. ${n}`),P[`${e}/${n}`]=!0) +},G=Error();function q(e,n,{key:t}){let a=0;const i=e[t],s={},r={} +;for(let e=1;e<=n.length;e++)r[e+a]=i[e],s[e+a]=!0,a+=p(n[e-1]) +;e[t]=r,e[t]._emit=s,e[t]._multi=!0}function W(e){(e=>{ +e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope, +delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={ +_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope +}),(e=>{if(Array.isArray(e.begin)){ +if(e.skip||e.excludeBegin||e.returnBegin)throw K("skip, excludeBegin, returnBegin not compatible with beginScope: {}"), +G +;if("object"!=typeof e.beginScope||null===e.beginScope)throw K("beginScope must be object"), +G;q(e,e.begin,{key:"beginScope"}),e.begin=f(e.begin,{joinWith:""})}})(e),(e=>{ +if(Array.isArray(e.end)){ +if(e.skip||e.excludeEnd||e.returnEnd)throw K("skip, excludeEnd, returnEnd not compatible with endScope: {}"), +G +;if("object"!=typeof e.endScope||null===e.endScope)throw K("endScope must be object"), +G;q(e,e.end,{key:"endScope"}),e.end=f(e.end,{joinWith:""})}})(e)}function X(e){ +function n(n,t){ +return RegExp(c(n),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(t?"g":"")) +}class t{constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,n){ +n.position=this.position++,this.matchIndexes[this.matchAt]=n,this.regexes.push([n,e]), +this.matchAt+=p(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null) +;const e=this.regexes.map((e=>e[1]));this.matcherRe=n(f(e,{joinWith:"|" +}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex +;const n=this.matcherRe.exec(e);if(!n)return null +;const t=n.findIndex(((e,n)=>n>0&&void 0!==e)),a=this.matchIndexes[t] +;return n.splice(0,t),Object.assign(n,a)}}class i{constructor(){ +this.rules=[],this.multiRegexes=[], +this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){ +if(this.multiRegexes[e])return this.multiRegexes[e];const n=new t +;return this.rules.slice(e).forEach((([e,t])=>n.addRule(e,t))), +n.compile(),this.multiRegexes[e]=n,n}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,n){ +this.rules.push([e,n]),"begin"===n.type&&this.count++}exec(e){ +const n=this.getMatcher(this.regexIndex);n.lastIndex=this.lastIndex +;let t=n.exec(e) +;if(this.resumingScanAtSamePosition())if(t&&t.index===this.lastIndex);else{ +const n=this.getMatcher(0);n.lastIndex=this.lastIndex+1,t=n.exec(e)} +return t&&(this.regexIndex+=t.position+1, +this.regexIndex===this.count&&this.considerAll()),t}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=a(e.classNameAliases||{}),function t(s,r){const o=s +;if(s.isCompiled)return o +;[R,B,W,$].forEach((e=>e(s,r))),e.compilerExtensions.forEach((e=>e(s,r))), +s.__beforeBegin=null,[D,I,L].forEach((e=>e(s,r))),s.isCompiled=!0;let l=null +;return"object"==typeof s.keywords&&s.keywords.$pattern&&(s.keywords=Object.assign({},s.keywords), +l=s.keywords.$pattern, +delete s.keywords.$pattern),l=l||/\w+/,s.keywords&&(s.keywords=U(s.keywords,e.case_insensitive)), +o.keywordPatternRe=n(l,!0), +r&&(s.begin||(s.begin=/\B|\b/),o.beginRe=n(o.begin),s.end||s.endsWithParent||(s.end=/\B|\b/), +s.end&&(o.endRe=n(o.end)), +o.terminatorEnd=c(o.end)||"",s.endsWithParent&&r.terminatorEnd&&(o.terminatorEnd+=(s.end?"|":"")+r.terminatorEnd)), +s.illegal&&(o.illegalRe=n(s.illegal)), +s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((n=>a(e,{ +variants:null},n)))),e.cachedVariants?e.cachedVariants:Q(e)?a(e,{ +starts:e.starts?a(e.starts):null +}):Object.isFrozen(e)?a(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{t(e,o) +})),s.starts&&t(s.starts,r),o.matcher=(e=>{const n=new i +;return e.contains.forEach((e=>n.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&n.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&n.addRule(e.illegal,{type:"illegal"}),n})(o),o}(e)}function Q(e){ +return!!e&&(e.endsWithParent||Q(e.starts))}class V extends Error{ +constructor(e,n){super(e),this.name="HTMLInjectionError",this.html=n}} +const J=t,Y=a,ee=Symbol("nomatch"),ne=t=>{ +const a=Object.create(null),i=Object.create(null),s=[];let r=!0 +;const o="Could not find the language '{}', did you forget to load/include a language module?",c={ +disableAutodetect:!0,name:"Plain text",contains:[]};let p={ +ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +cssSelector:"pre code",languages:null,__emitter:l};function h(e){ +return p.noHighlightRe.test(e)}function f(e,n,t){let a="",i="" +;"object"==typeof n?(a=e, +t=n.ignoreIllegals,i=n.language):(Z("10.7.0","highlight(lang, code, ...args) has been deprecated."), +Z("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"), +i=e,a=n),void 0===t&&(t=!0);const s={code:a,language:i};O("before:highlight",s) +;const r=s.result?s.result:_(s.language,s.code,t) +;return r.code=s.code,O("after:highlight",r),r}function _(e,t,i,s){ +const l=Object.create(null);function c(){if(!O.keywords)return void A.addText(M) +;let e=0;O.keywordPatternRe.lastIndex=0;let n=O.keywordPatternRe.exec(M),t="" +;for(;n;){t+=M.substring(e,n.index) +;const i=w.case_insensitive?n[0].toLowerCase():n[0],s=(a=i,O.keywords[a]);if(s){ +const[e,a]=s +;if(A.addText(t),t="",l[i]=(l[i]||0)+1,l[i]<=7&&(C+=a),e.startsWith("_"))t+=n[0];else{ +const t=w.classNameAliases[e]||e;g(n[0],t)}}else t+=n[0] +;e=O.keywordPatternRe.lastIndex,n=O.keywordPatternRe.exec(M)}var a +;t+=M.substring(e),A.addText(t)}function d(){null!=O.subLanguage?(()=>{ +if(""===M)return;let e=null;if("string"==typeof O.subLanguage){ +if(!a[O.subLanguage])return void A.addText(M) +;e=_(O.subLanguage,M,!0,S[O.subLanguage]),S[O.subLanguage]=e._top +}else e=E(M,O.subLanguage.length?O.subLanguage:null) +;O.relevance>0&&(C+=e.relevance),A.__addSublanguage(e._emitter,e.language) +})():c(),M=""}function g(e,n){ +""!==e&&(A.startScope(n),A.addText(e),A.endScope())}function u(e,n){let t=1 +;const a=n.length-1;for(;t<=a;){if(!e._emit[t]){t++;continue} +const a=w.classNameAliases[e[t]]||e[t],i=n[t];a?g(i,a):(M=i,c(),M=""),t++}} +function b(e,n){ +return e.scope&&"string"==typeof e.scope&&A.openNode(w.classNameAliases[e.scope]||e.scope), +e.beginScope&&(e.beginScope._wrap?(g(M,w.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap), +M=""):e.beginScope._multi&&(u(e.beginScope,n),M="")),O=Object.create(e,{parent:{ +value:O}}),O}function m(e,t,a){let i=((e,n)=>{const t=e&&e.exec(n) +;return t&&0===t.index})(e.endRe,a);if(i){if(e["on:end"]){const a=new n(e) +;e["on:end"](t,a),a.isMatchIgnored&&(i=!1)}if(i){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return m(e.parent,t,a)}function h(e){ +return 0===O.matcher.regexIndex?(M+=e[0],1):(D=!0,0)}function f(e){ +const n=e[0],a=t.substring(e.index),i=m(O,e,a);if(!i)return ee;const s=O +;O.endScope&&O.endScope._wrap?(d(), +g(n,O.endScope._wrap)):O.endScope&&O.endScope._multi?(d(), +u(O.endScope,e)):s.skip?M+=n:(s.returnEnd||s.excludeEnd||(M+=n), +d(),s.excludeEnd&&(M=n));do{ +O.scope&&A.closeNode(),O.skip||O.subLanguage||(C+=O.relevance),O=O.parent +}while(O!==i.parent);return i.starts&&b(i.starts,e),s.returnEnd?0:n.length} +let N={};function y(a,s){const o=s&&s[0];if(M+=a,null==o)return d(),0 +;if("begin"===N.type&&"end"===s.type&&N.index===s.index&&""===o){ +if(M+=t.slice(s.index,s.index+1),!r){const n=Error(`0 width match regex (${e})`) +;throw n.languageName=e,n.badRule=N.rule,n}return 1} +if(N=s,"begin"===s.type)return(e=>{ +const t=e[0],a=e.rule,i=new n(a),s=[a.__beforeBegin,a["on:begin"]] +;for(const n of s)if(n&&(n(e,i),i.isMatchIgnored))return h(t) +;return a.skip?M+=t:(a.excludeBegin&&(M+=t), +d(),a.returnBegin||a.excludeBegin||(M=t)),b(a,e),a.returnBegin?0:t.length})(s) +;if("illegal"===s.type&&!i){ +const e=Error('Illegal lexeme "'+o+'" for mode "'+(O.scope||"")+'"') +;throw e.mode=O,e}if("end"===s.type){const e=f(s);if(e!==ee)return e} +if("illegal"===s.type&&""===o)return 1 +;if(R>1e5&&R>3*s.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=o,o.length}const w=v(e) +;if(!w)throw K(o.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const k=X(w);let x="",O=s||k;const S={},A=new p.__emitter(p);(()=>{const e=[] +;for(let n=O;n!==w;n=n.parent)n.scope&&e.unshift(n.scope) +;e.forEach((e=>A.openNode(e)))})();let M="",C=0,T=0,R=0,D=!1;try{ +if(w.__emitTokens)w.__emitTokens(t,A);else{for(O.matcher.considerAll();;){ +R++,D?D=!1:O.matcher.considerAll(),O.matcher.lastIndex=T +;const e=O.matcher.exec(t);if(!e)break;const n=y(t.substring(T,e.index),e) +;T=e.index+n}y(t.substring(T))}return A.finalize(),x=A.toHTML(),{language:e, +value:x,relevance:C,illegal:!1,_emitter:A,_top:O}}catch(n){ +if(n.message&&n.message.includes("Illegal"))return{language:e,value:J(t), +illegal:!0,relevance:0,_illegalBy:{message:n.message,index:T, +context:t.slice(T-100,T+100),mode:n.mode,resultSoFar:x},_emitter:A};if(r)return{ +language:e,value:J(t),illegal:!1,relevance:0,errorRaised:n,_emitter:A,_top:O} +;throw n}}function E(e,n){n=n||p.languages||Object.keys(a);const t=(e=>{ +const n={value:J(e),illegal:!1,relevance:0,_top:c,_emitter:new p.__emitter(p)} +;return n._emitter.addText(e),n})(e),i=n.filter(v).filter(x).map((n=>_(n,e,!1))) +;i.unshift(t);const s=i.sort(((e,n)=>{ +if(e.relevance!==n.relevance)return n.relevance-e.relevance +;if(e.language&&n.language){if(v(e.language).supersetOf===n.language)return 1 +;if(v(n.language).supersetOf===e.language)return-1}return 0})),[r,o]=s,l=r +;return l.secondBest=o,l}function N(e){let n=null;const t=(e=>{ +let n=e.className+" ";n+=e.parentNode?e.parentNode.className:"" +;const t=p.languageDetectRe.exec(n);if(t){const n=v(t[1]) +;return n||(H(o.replace("{}",t[1])), +H("Falling back to no-highlight mode for this block.",e)),n?t[1]:"no-highlight"} +return n.split(/\s+/).find((e=>h(e)||v(e)))})(e);if(h(t))return +;if(O("before:highlightElement",{el:e,language:t +}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e) +;if(e.children.length>0&&(p.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."), +console.warn("https://github.com/highlightjs/highlight.js/wiki/security"), +console.warn("The element with unescaped HTML:"), +console.warn(e)),p.throwUnescapedHTML))throw new V("One of your code blocks includes unescaped HTML.",e.innerHTML) +;n=e;const a=n.textContent,s=t?f(a,{language:t,ignoreIllegals:!0}):E(a) +;e.innerHTML=s.value,e.dataset.highlighted="yes",((e,n,t)=>{const a=n&&i[n]||t +;e.classList.add("hljs"),e.classList.add("language-"+a) +})(e,t,s.language),e.result={language:s.language,re:s.relevance, +relevance:s.relevance},s.secondBest&&(e.secondBest={ +language:s.secondBest.language,relevance:s.secondBest.relevance +}),O("after:highlightElement",{el:e,result:s,text:a})}let y=!1;function w(){ +"loading"!==document.readyState?document.querySelectorAll(p.cssSelector).forEach(N):y=!0 +}function v(e){return e=(e||"").toLowerCase(),a[e]||a[i[e]]} +function k(e,{languageName:n}){"string"==typeof e&&(e=[e]),e.forEach((e=>{ +i[e.toLowerCase()]=n}))}function x(e){const n=v(e) +;return n&&!n.disableAutodetect}function O(e,n){const t=e;s.forEach((e=>{ +e[t]&&e[t](n)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +y&&w()}),!1),Object.assign(t,{highlight:f,highlightAuto:E,highlightAll:w, +highlightElement:N, +highlightBlock:e=>(Z("10.7.0","highlightBlock will be removed entirely in v12.0"), +Z("10.7.0","Please use highlightElement now."),N(e)),configure:e=>{p=Y(p,e)}, +initHighlighting:()=>{ +w(),Z("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")}, +initHighlightingOnLoad:()=>{ +w(),Z("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.") +},registerLanguage:(e,n)=>{let i=null;try{i=n(t)}catch(n){ +if(K("Language definition for '{}' could not be registered.".replace("{}",e)), +!r)throw n;K(n),i=c} +i.name||(i.name=e),a[e]=i,i.rawDefinition=n.bind(null,t),i.aliases&&k(i.aliases,{ +languageName:e})},unregisterLanguage:e=>{delete a[e] +;for(const n of Object.keys(i))i[n]===e&&delete i[n]}, +listLanguages:()=>Object.keys(a),getLanguage:v,registerAliases:k, +autoDetection:x,inherit:Y,addPlugin:e=>{(e=>{ +e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=n=>{ +e["before:highlightBlock"](Object.assign({block:n.el},n)) +}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=n=>{ +e["after:highlightBlock"](Object.assign({block:n.el},n))})})(e),s.push(e)}, +removePlugin:e=>{const n=s.indexOf(e);-1!==n&&s.splice(n,1)}}),t.debugMode=()=>{ +r=!1},t.safeMode=()=>{r=!0},t.versionString="11.8.0",t.regex={concat:b, +lookahead:d,either:m,optional:u,anyNumberOfTimes:g} +;for(const n in C)"object"==typeof C[n]&&e(C[n]);return Object.assign(t,C),t +},te=ne({});te.newInstance=()=>ne({});var ae=te +;const ie=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],se=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],re=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],oe=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],le=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse() +;var ce="[0-9](_*[0-9])*",de=`\\.(${ce})`,ge="[0-9a-fA-F](_*[0-9a-fA-F])*",ue={ +className:"number",variants:[{ +begin:`(\\b(${ce})((${de})|\\.)?|(${de}))[eE][+-]?(${ce})[fFdD]?\\b`},{ +begin:`\\b(${ce})((${de})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${de})[fFdD]?\\b`},{begin:`\\b(${ce})[fFdD]\\b`},{ +begin:`\\b0[xX]((${ge})\\.?|(${ge})?\\.(${ge}))[pP][+-]?(${ce})[fFdD]?\\b`},{ +begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${ge})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};function be(e,n,t){return-1===t?"":e.replace(n,(a=>be(e,n,t-1)))} +const me="[A-Za-z$_][0-9A-Za-z$_]*",pe=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],he=["true","false","null","undefined","NaN","Infinity"],fe=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],_e=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],Ee=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],Ne=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],ye=[].concat(Ee,fe,_e),we=e=>b(/\b/,e,/\w$/.test(e)?/\b/:/\B/),ve=["Protocol","Type"].map(we),ke=["init","self"].map(we),xe=["Any","Self"],Oe=["actor","any","associatedtype","async","await",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","distributed","do","dynamic","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","isolated","nonisolated","lazy","let","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],Se=["false","nil","true"],Ae=["assignment","associativity","higherThan","left","lowerThan","none","right"],Me=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],Ce=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],Te=m(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),Re=m(Te,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),De=b(Te,Re,"*"),Ie=m(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),Be=m(Ie,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),Le=b(Ie,Be,"*"),$e=b(/[A-Z]/,Be,"*"),Fe=["autoclosure",b(/convention\(/,m("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",b(/objc\(/,Le,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","testable","UIApplicationMain","unknown","usableFromInline"],ze=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"] +;var Ue=Object.freeze({__proto__:null,grmr_bash:e=>{const n=e.regex,t={},a={ +begin:/\$\{/,end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]} +;Object.assign(t,{className:"variable",variants:[{ +begin:n.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},a]});const i={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]},s={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},r={className:"string",begin:/"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,t,i]};i.contains.push(r);const o={begin:/\$?\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t] +},l=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),c={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{ +name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/, +keyword:["if","then","else","elif","fi","for","while","until","in","do","done","case","esac","function","select"], +literal:["true","false"], +built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"] +},contains:[l,e.SHEBANG(),c,o,e.HASH_COMMENT_MODE,s,{match:/(\/[a-z._-]+)+/},r,{ +className:"",begin:/\\"/},{className:"string",begin:/'/,end:/'/},t]}}, +grmr_c:e=>{const n=e.regex,t=e.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),a="decltype\\(auto\\)",i="[a-zA-Z_]\\w*::",s="("+a+"|"+n.optional(i)+"[a-zA-Z_]\\w*"+n.optional("<[^<>]+>")+")",r={ +className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{ +match:/\batomic_[a-z]{3,6}\b/}]},o={className:"string",variants:[{ +begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{ +begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", +end:"'",illegal:"."},e.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},l={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ +keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" +},contains:[{begin:/\\\n/,relevance:0},e.inherit(o,{className:"string"}),{ +className:"string",begin:/<.*?>/},t,e.C_BLOCK_COMMENT_MODE]},d={ +className:"title",begin:n.optional(i)+e.IDENT_RE,relevance:0 +},g=n.optional(i)+e.IDENT_RE+"\\s*\\(",u={ +keyword:["asm","auto","break","case","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"], +type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","const","static","complex","bool","imaginary"], +literal:"true false NULL", +built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr" +},b=[c,r,t,e.C_BLOCK_COMMENT_MODE,l,o],m={variants:[{begin:/=/,end:/;/},{ +begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}], +keywords:u,contains:b.concat([{begin:/\(/,end:/\)/,keywords:u, +contains:b.concat(["self"]),relevance:0}]),relevance:0},p={ +begin:"("+s+"[\\*&\\s]+)+"+g,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, +keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:a,keywords:u,relevance:0},{ +begin:g,returnBegin:!0,contains:[e.inherit(d,{className:"title.function"})], +relevance:0},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/, +keywords:u,relevance:0,contains:[t,e.C_BLOCK_COMMENT_MODE,o,l,r,{begin:/\(/, +end:/\)/,keywords:u,relevance:0,contains:["self",t,e.C_BLOCK_COMMENT_MODE,o,l,r] +}]},r,t,e.C_BLOCK_COMMENT_MODE,c]};return{name:"C",aliases:["h"],keywords:u, +disableAutodetect:!0,illegal:"=]/,contains:[{ +beginKeywords:"final class struct"},e.TITLE_MODE]}]),exports:{preprocessor:c, +strings:o,keywords:u}}},grmr_css:e=>{const n=e.regex,t=(e=>({IMPORTANT:{ +scope:"meta",begin:"!important"},BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{ +scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/}, +FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/}, +ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$", +contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{ +scope:"number", +begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", +relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z][A-Za-z0-9_-]*/} +}))(e),a=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"},contains:[t.BLOCK_COMMENT,{ +begin:/-(webkit|moz|ms|o)-(?=[a-z])/},t.CSS_NUMBER_MODE,{ +className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{ +className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},t.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+re.join("|")+")"},{begin:":(:)?("+oe.join("|")+")"}] +},t.CSS_VARIABLE,{className:"attribute",begin:"\\b("+le.join("|")+")\\b"},{ +begin:/:/,end:/[;}{]/, +contains:[t.BLOCK_COMMENT,t.HEXCOLOR,t.IMPORTANT,t.CSS_NUMBER_MODE,...a,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[...a,{className:"string",begin:/[^)]/,endsWithParent:!0, +excludeEnd:!0}]},t.FUNCTION_DISPATCH]},{begin:n.lookahead(/@/),end:"[{;]", +relevance:0,illegal:/:/,contains:[{className:"keyword",begin:/@-?\w[\w]*(-\w+)*/ +},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{ +$pattern:/[a-z-]+/,keyword:"and or not only",attribute:se.join(" ")},contains:[{ +begin:/[a-z-]+(?=:)/,className:"attribute"},...a,t.CSS_NUMBER_MODE]}]},{ +className:"selector-tag",begin:"\\b("+ie.join("|")+")\\b"}]}},grmr_xml:e=>{ +const n=e.regex,t=n.concat(/[\p{L}_]/u,n.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),a={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},i={begin:/\s/, +contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},s=e.inherit(i,{begin:/\(/,end:/\)/}),r=e.inherit(e.APOS_STRING_MODE,{ +className:"string"}),o=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),l={ +endsWithParent:!0,illegal:/`]+/}]}]}]};return{ +name:"HTML, XML", +aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"], +case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[i,o,r,s,{begin:/\[/,end:/\]/,contains:[{ +className:"meta",begin://,contains:[i,s,o,r]}]}] +},e.COMMENT(//,{relevance:10}),{begin://, +relevance:10},a,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/, +relevance:10,contains:[o]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[l],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[l],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:n.concat(//,/>/,/\s/)))), +end:/\/?>/,contains:[{className:"name",begin:t,relevance:0,starts:l}]},{ +className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(t,/>/))),contains:[{ +className:"name",begin:t,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]} +},grmr_markdown:e=>{const n={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml", +relevance:0},t={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{ +begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{ +begin:e.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/ +},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},a={className:"strong",contains:[], +variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}] +},i={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{ +begin:/_(?![_\s])/,end:/_/,relevance:0}]},s=e.inherit(a,{contains:[] +}),r=e.inherit(i,{contains:[]});a.contains.push(r),i.contains.push(s) +;let o=[n,t];return[a,i,s,r].forEach((e=>{e.contains=e.contains.concat(o) +})),o=o.concat(a,i),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:o},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:o}]}]},n,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},a,i,{className:"quote",begin:"^>\\s+",contains:o, +end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{ +begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{ +begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))", +contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{ +begin:"^[-\\*]{3,}",end:"$"},t,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}},grmr_dart:e=>{ +const n={className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"}]},t={ +className:"subst",variants:[{begin:/\$\{/,end:/\}/}], +keywords:"true false null this is new super"},a={className:"string",variants:[{ +begin:"r'''",end:"'''"},{begin:'r"""',end:'"""'},{begin:"r'",end:"'", +illegal:"\\n"},{begin:'r"',end:'"',illegal:"\\n"},{begin:"'''",end:"'''", +contains:[e.BACKSLASH_ESCAPE,n,t]},{begin:'"""',end:'"""', +contains:[e.BACKSLASH_ESCAPE,n,t]},{begin:"'",end:"'",illegal:"\\n", +contains:[e.BACKSLASH_ESCAPE,n,t]},{begin:'"',end:'"',illegal:"\\n", +contains:[e.BACKSLASH_ESCAPE,n,t]}]};t.contains=[e.C_NUMBER_MODE,a] +;const i=["Comparable","DateTime","Duration","Function","Iterable","Iterator","List","Map","Match","Object","Pattern","RegExp","Set","Stopwatch","String","StringBuffer","StringSink","Symbol","Type","Uri","bool","double","int","num","Element","ElementList"],s=i.map((e=>e+"?")) +;return{name:"Dart",keywords:{ +keyword:["abstract","as","assert","async","await","base","break","case","catch","class","const","continue","covariant","default","deferred","do","dynamic","else","enum","export","extends","extension","external","factory","false","final","finally","for","Function","get","hide","if","implements","import","in","interface","is","late","library","mixin","new","null","on","operator","part","required","rethrow","return","sealed","set","show","static","super","switch","sync","this","throw","true","try","typedef","var","void","when","while","with","yield"], +built_in:i.concat(s).concat(["Never","Null","dynamic","print","document","querySelector","querySelectorAll","window"]), +$pattern:/[A-Za-z][A-Za-z0-9_]*\??/}, +contains:[a,e.COMMENT(/\/\*\*(?!\/)/,/\*\//,{subLanguage:"markdown",relevance:0 +}),e.COMMENT(/\/{3,} ?/,/$/,{contains:[{subLanguage:"markdown",begin:".", +end:"$",relevance:0}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE] +},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{begin:"=>"}]}}, +grmr_diff:e=>{const n=e.regex;return{name:"Diff",aliases:["patch"],contains:[{ +className:"meta",relevance:10, +match:n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/) +},{className:"comment",variants:[{ +begin:n.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/), +end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]}},grmr_java:e=>{ +const n=e.regex,t="[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",a=t+be("(?:<"+t+"~~~(?:\\s*,\\s*"+t+"~~~)*>)?",/~~~/g,2),i={ +keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do","sealed","yield","permits"], +literal:["false","true","null"], +type:["char","boolean","long","float","int","byte","short","double"], +built_in:["super","this"]},s={className:"meta",begin:"@"+t,contains:[{ +begin:/\(/,end:/\)/,contains:["self"]}]},r={className:"params",begin:/\(/, +end:/\)/,keywords:i,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0} +;return{name:"Java",aliases:["jsp"],keywords:i,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/, +className:"string",contains:[e.BACKSLASH_ESCAPE] +},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,t],className:{ +1:"keyword",3:"title.class"}},{match:/non-sealed/,scope:"keyword"},{ +begin:[n.concat(/(?!else)/,t),/\s+/,t,/\s+/,/=(?!=)/],className:{1:"type", +3:"variable",5:"operator"}},{begin:[/record/,/\s+/,t],className:{1:"keyword", +3:"title.class"},contains:[r,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{ +begin:["(?:"+a+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{ +2:"title.function"},keywords:i,contains:[{className:"params",begin:/\(/, +end:/\)/,keywords:i,relevance:0, +contains:[s,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,ue,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},ue,s]}},grmr_javascript:e=>{ +const n=e.regex,t=me,a={begin:/<[A-Za-z0-9\\._:-]+/, +end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{ +const t=e[0].length+e.index,a=e.input[t] +;if("<"===a||","===a)return void n.ignoreMatch();let i +;">"===a&&(((e,{after:n})=>{const t="",S={ +match:[/const|var|let/,/\s+/,t,/\s*/,/=\s*/,/(async\s*)?/,n.lookahead(O)], +keywords:"async",className:{1:"keyword",3:"title.function"},contains:[_]} +;return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:i,exports:{ +PARAMS_CONTAINS:f,CLASS_REFERENCE:N},illegal:/#(?![$_A-z])/, +contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),{ +label:"use_strict",className:"meta",relevance:10, +begin:/^\s*['"]use (strict|asm)['"]/ +},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,d,g,u,b,m,{match:/\$\d+/},l,N,{ +className:"attr",begin:t+n.lookahead(":"),relevance:0},S,{ +begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*", +keywords:"return throw case",relevance:0,contains:[m,e.REGEXP_MODE,{ +className:"function",begin:O,returnBegin:!0,end:"\\s*=>",contains:[{ +className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{ +className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0, +excludeEnd:!0,keywords:i,contains:f}]}]},{begin:/,/,relevance:0},{match:/\s+/, +relevance:0},{variants:[{begin:"<>",end:""},{ +match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:a.begin, +"on:begin":a.isTrulyOpeningTag,end:a.end}],subLanguage:"xml",contains:[{ +begin:a.begin,end:a.end,skip:!0,contains:["self"]}]}]},y,{ +beginKeywords:"while if switch catch for"},{ +begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,label:"func.def",contains:[_,e.inherit(e.TITLE_MODE,{begin:t, +className:"title.function"})]},{match:/\.\.\./,relevance:0},k,{match:"\\$"+t, +relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"}, +contains:[_]},w,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, +className:"variable.constant"},E,x,{match:/\$[(.]/}]}},grmr_json:e=>{ +const n=["true","false","null"],t={scope:"literal",beginKeywords:n.join(" ")} +;return{name:"JSON",keywords:{literal:n},contains:[{className:"attr", +begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},{match:/[{}[\],:]/, +className:"punctuation",relevance:0 +},e.QUOTE_STRING_MODE,t,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE], +illegal:"\\S"}},grmr_kotlin:e=>{const n={ +keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual", +built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing", +literal:"true false null"},t={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@" +},a={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},i={ +className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},s={className:"string", +variants:[{begin:'"""',end:'"""(?=[^"])',contains:[i,a]},{begin:"'",end:"'", +illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/, +contains:[e.BACKSLASH_ESCAPE,i,a]}]};a.contains.push(s);const r={ +className:"meta", +begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?" +},o={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/, +end:/\)/,contains:[e.inherit(s,{className:"string"}),"self"]}] +},l=ue,c=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),d={ +variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/, +contains:[]}]},g=d;return g.variants[1].contains=[d],d.variants[1].contains=[g], +{name:"Kotlin",aliases:["kt","kts"],keywords:n, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag", +begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,c,{className:"keyword", +begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol", +begin:/@\w+/}]}},t,r,o,{className:"function",beginKeywords:"fun",end:"[(]|$", +returnBegin:!0,excludeEnd:!0,keywords:n,relevance:5,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin://, +keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/, +endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/, +endsWithParent:!0,contains:[d,e.C_LINE_COMMENT_MODE,c],relevance:0 +},e.C_LINE_COMMENT_MODE,c,r,o,s,e.C_NUMBER_MODE]},c]},{ +begin:[/class|interface|trait/,/\s+/,e.UNDERSCORE_IDENT_RE],beginScope:{ +3:"title.class"},keywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0, +illegal:"extends implements",contains:[{ +beginKeywords:"public protected internal private constructor" +},e.UNDERSCORE_TITLE_MODE,{className:"type",begin://,excludeBegin:!0, +excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,){\s]|$/, +excludeBegin:!0,returnEnd:!0},r,o]},s,{className:"meta",begin:"^#!/usr/bin/env", +end:"$",illegal:"\n"},l]}},grmr_objectivec:e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,t={$pattern:n, +keyword:["@interface","@class","@protocol","@implementation"]};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"], +keywords:{"variable.language":["this","super"],$pattern:n, +keyword:["while","export","sizeof","typedef","const","struct","for","union","volatile","static","mutable","if","do","return","goto","enum","else","break","extern","asm","case","default","register","explicit","typename","switch","continue","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"], +literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"], +built_in:["dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"], +type:["int","float","char","unsigned","signed","short","long","double","wchar_t","unichar","void","bool","BOOL","id|0","_Bool"] +},illegal:"/,end:/$/,illegal:"\\n" +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class", +begin:"("+t.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:t, +contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE, +relevance:0}]}},grmr_plaintext:e=>({name:"Plain text",aliases:["text","txt"], +disableAutodetect:!0}),grmr_shell:e=>({name:"Shell Session", +aliases:["console","shellsession"],contains:[{className:"meta.prompt", +begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/, +subLanguage:"bash"}}]}),grmr_swift:e=>{const n={match:/\s+/,relevance:0 +},t=e.COMMENT("/\\*","\\*/",{contains:["self"]}),a=[e.C_LINE_COMMENT_MODE,t],i={ +match:[/\./,m(...ve,...ke)],className:{2:"keyword"}},s={match:b(/\./,m(...Oe)), +relevance:0},r=Oe.filter((e=>"string"==typeof e)).concat(["_|0"]),o={variants:[{ +className:"keyword", +match:m(...Oe.filter((e=>"string"!=typeof e)).concat(xe).map(we),...ke)}]},l={ +$pattern:m(/\b\w+/,/#\w+/),keyword:r.concat(Me),literal:Se},c=[i,s,o],g=[{ +match:b(/\./,m(...Ce)),relevance:0},{className:"built_in", +match:b(/\b/,m(...Ce),/(?=\()/)}],u={match:/->/,relevance:0},p=[u,{ +className:"operator",relevance:0,variants:[{match:De},{match:`\\.(\\.|${Re})+`}] +}],h="([0-9]_*)+",f="([0-9a-fA-F]_*)+",_={className:"number",relevance:0, +variants:[{match:`\\b(${h})(\\.(${h}))?([eE][+-]?(${h}))?\\b`},{ +match:`\\b0x(${f})(\\.(${f}))?([pP][+-]?(${h}))?\\b`},{match:/\b0o([0-7]_*)+\b/ +},{match:/\b0b([01]_*)+\b/}]},E=(e="")=>({className:"subst",variants:[{ +match:b(/\\/,e,/[0\\tnr"']/)},{match:b(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}] +}),N=(e="")=>({className:"subst",match:b(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/) +}),y=(e="")=>({className:"subst",label:"interpol",begin:b(/\\/,e,/\(/),end:/\)/ +}),w=(e="")=>({begin:b(e,/"""/),end:b(/"""/,e),contains:[E(e),N(e),y(e)] +}),v=(e="")=>({begin:b(e,/"/),end:b(/"/,e),contains:[E(e),y(e)]}),k={ +className:"string", +variants:[w(),w("#"),w("##"),w("###"),v(),v("#"),v("##"),v("###")]},x={ +match:b(/`/,Le,/`/)},O=[x,{className:"variable",match:/\$\d+/},{ +className:"variable",match:`\\$${Be}+`}],S=[{match:/(@|#(un)?)available/, +className:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:ze, +contains:[...p,_,k]}]}},{className:"keyword",match:b(/@/,m(...Fe))},{ +className:"meta",match:b(/@/,Le)}],A={match:d(/\b[A-Z]/),relevance:0,contains:[{ +className:"type", +match:b(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,Be,"+") +},{className:"type",match:$e,relevance:0},{match:/[?!]+/,relevance:0},{ +match:/\.\.\./,relevance:0},{match:b(/\s+&\s+/,d($e)),relevance:0}]},M={ +begin://,keywords:l,contains:[...a,...c,...S,u,A]};A.contains.push(M) +;const C={begin:/\(/,end:/\)/,relevance:0,keywords:l,contains:["self",{ +match:b(Le,/\s*:/),keywords:"_|0",relevance:0 +},...a,...c,...g,...p,_,k,...O,...S,A]},T={begin://,contains:[...a,A] +},R={begin:/\(/,end:/\)/,keywords:l,contains:[{ +begin:m(d(b(Le,/\s*:/)),d(b(Le,/\s+/,Le,/\s*:/))),end:/:/,relevance:0, +contains:[{className:"keyword",match:/\b_\b/},{className:"params",match:Le}] +},...a,...c,...p,_,k,...S,A,C],endsParent:!0,illegal:/["']/},D={ +match:[/func/,/\s+/,m(x.match,Le,De)],className:{1:"keyword",3:"title.function" +},contains:[T,R,n],illegal:[/\[/,/%/]},I={ +match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"}, +contains:[T,R,n],illegal:/\[|%/},B={match:[/operator/,/\s+/,De],className:{ +1:"keyword",3:"title"}},L={begin:[/precedencegroup/,/\s+/,$e],className:{ +1:"keyword",3:"title"},contains:[A],keywords:[...Ae,...Se],end:/}/} +;for(const e of k.variants){const n=e.contains.find((e=>"interpol"===e.label)) +;n.keywords=l;const t=[...c,...g,...p,_,k,...O];n.contains=[...t,{begin:/\(/, +end:/\)/,contains:["self",...t]}]}return{name:"Swift",keywords:l, +contains:[...a,D,I,{beginKeywords:"struct protocol class extension enum actor", +end:"\\{",excludeEnd:!0,keywords:l,contains:[e.inherit(e.TITLE_MODE,{ +className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),...c] +},B,L,{beginKeywords:"import",end:/$/,contains:[...a],relevance:0 +},...c,...g,...p,_,k,...O,...S,A,C]}},grmr_ruby:e=>{ +const n=e.regex,t="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",a=n.either(/\b([A-Z]+[a-z0-9]+)+/,/\b([A-Z]+[a-z0-9]+)+[A-Z]+/),i=n.concat(a,/(::\w+)*/),s={ +"variable.constant":["__FILE__","__LINE__","__ENCODING__"], +"variable.language":["self","super"], +keyword:["alias","and","begin","BEGIN","break","case","class","defined","do","else","elsif","end","END","ensure","for","if","in","module","next","not","or","redo","require","rescue","retry","return","then","undef","unless","until","when","while","yield","include","extend","prepend","public","private","protected","raise","throw"], +built_in:["proc","lambda","attr_accessor","attr_reader","attr_writer","define_method","private_constant","module_function"], +literal:["true","false","nil"]},r={className:"doctag",begin:"@[A-Za-z]+"},o={ +begin:"#<",end:">"},l=[e.COMMENT("#","$",{contains:[r] +}),e.COMMENT("^=begin","^=end",{contains:[r],relevance:10 +}),e.COMMENT("^__END__",e.MATCH_NOTHING_RE)],c={className:"subst",begin:/#\{/, +end:/\}/,keywords:s},d={className:"string",contains:[e.BACKSLASH_ESCAPE,c], +variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{ +begin:/%[qQwWx]?\(/,end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{ +begin:/%[qQwWx]?\{/,end:/\}/},{begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//, +end:/\//},{begin:/%[qQwWx]?%/,end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{ +begin:/%[qQwWx]?\|/,end:/\|/},{begin:/\B\?(\\\d{1,3})/},{ +begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:n.concat(/<<[-~]?'?/,n.lookahead(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)), +contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[e.BACKSLASH_ESCAPE,c]})]}]},g="[0-9](_?[0-9])*",u={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${g}))?([eE][+-]?(${g})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},b={variants:[{match:/\(\)/},{ +className:"params",begin:/\(/,end:/(?=\))/,excludeBegin:!0,endsParent:!0, +keywords:s}]},m=[d,{variants:[{match:[/class\s+/,i,/\s+<\s+/,i]},{ +match:[/\b(class|module)\s+/,i]}],scope:{2:"title.class", +4:"title.class.inherited"},keywords:s},{match:[/(include|extend)\s+/,i],scope:{ +2:"title.class"},keywords:s},{relevance:0,match:[i,/\.new[. (]/],scope:{ +1:"title.class"}},{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/, +className:"variable.constant"},{relevance:0,match:a,scope:"title.class"},{ +match:[/def/,/\s+/,t],scope:{1:"keyword",3:"title.function"},contains:[b]},{ +begin:e.IDENT_RE+"::"},{className:"symbol", +begin:e.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[d,{begin:t}],relevance:0},u,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,excludeBegin:!0,excludeEnd:!0, +relevance:0,keywords:s},{begin:"("+e.RE_STARTERS_RE+"|unless)\\s*", +keywords:"unless",contains:[{className:"regexp",contains:[e.BACKSLASH_ESCAPE,c], +illegal:/\n/,variants:[{begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{ +begin:"%r\\(",end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[", +end:"\\][a-z]*"}]}].concat(o,l),relevance:0}].concat(o,l) +;c.contains=m,b.contains=m;const p=[{begin:/^\s*=>/,starts:{end:"$",contains:m} +},{className:"meta.prompt", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+[>*]|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",keywords:s,contains:m}}];return l.unshift(o),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:s,illegal:/\/\*/, +contains:[e.SHEBANG({binary:"ruby"})].concat(p).concat(l).concat(m)}}, +grmr_yaml:e=>{ +const n="true false yes no null",t="[\\w#;/?:@&=+$,.~*'()[\\]]+",a={ +className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/ +},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable", +variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},i=e.inherit(a,{ +variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),s={ +end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},r={begin:/\{/, +end:/\}/,contains:[s],illegal:"\\n",relevance:0},o={begin:"\\[",end:"\\]", +contains:[s],illegal:"\\n",relevance:0},l=[{className:"attr",variants:[{ +begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{ +begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$", +relevance:10},{className:"string", +begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{ +begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0, +relevance:0},{className:"type",begin:"!\\w+!"+t},{className:"type", +begin:"!<"+t+">"},{className:"type",begin:"!"+t},{className:"type",begin:"!!"+t +},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta", +begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)", +relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{ +className:"number", +begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b" +},{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},r,o,a],c=[...l] +;return c.pop(),c.push(i),s.contains=c,{name:"YAML",case_insensitive:!0, +aliases:["yml"],contains:l}}});const je=ae;for(const e of Object.keys(Ue)){ +const n=e.replace("grmr_","").replace("_","-");je.registerLanguage(n,Ue[e])} +return je}() +;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs); diff --git a/dart/static-assets/play_button.svg b/dart/static-assets/play_button.svg new file mode 100644 index 000000000..c39a2f4a8 --- /dev/null +++ b/dart/static-assets/play_button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dart/static-assets/readme.md b/dart/static-assets/readme.md new file mode 100644 index 000000000..357c11ca4 --- /dev/null +++ b/dart/static-assets/readme.md @@ -0,0 +1,22 @@ +# highlight.js + +Generated from https://highlightjs.org/download/ on 2021-07-13 + +**Included languages:** + +* bash +* c +* css +* dart +* diff +* html, xml +* java +* javascript +* json +* kotlin +* markdown +* objective-c +* plaintext +* shell +* swift +* yaml diff --git a/dart/static-assets/search.svg b/dart/static-assets/search.svg new file mode 100644 index 000000000..58f4299fc --- /dev/null +++ b/dart/static-assets/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dart/static-assets/styles.css b/dart/static-assets/styles.css new file mode 100644 index 000000000..7db8a1c11 --- /dev/null +++ b/dart/static-assets/styles.css @@ -0,0 +1,1199 @@ +.light-theme { + /*background-color body, listdropdown*/ + --main-bg-color: #fff; + /*header id-tittle*/ + --main-header-color: #eeeeee; + /*package-name*/ + --main-sidebar-color: #727272; + /*section-title and section subtitle, desc markdown(body, dd, h3), header a*/ + --main-text-color: #111111; + /*typehead search-box*/ + --main-search-bar: #fff; + /* scrollbar-thumb */ + --main-scrollbar-color: #CCC; + /* footer */ + --main-footer-background: #111111; + /*header text color*/ + --main-h-text: black; + /* hyperlinks*/ + --main-hyperlinks-color: #0175C2; + /*search background*/ + --main-search-background: transparent; + + /*code snippets*/ + --main-code-bg: #f8f8f8; + --main-keyword-color: #333; + --main-tag-color: #000080; + --main-section-color: #900; + --main-comment-color: #998; + --main-var-color: #008080; + --main-string-color: #d14; + + --main-number-filter: invert(0%); + --main-icon-color: black; +} + +.dark-theme { + /*background-color body, listdropdown*/ + --main-bg-color: #10161E; + /*header id-tittle*/ + --main-header-color: #1C2834; + /*package-name*/ + --main-sidebar-color: #fff; + /*section-title and section subtitle, desc markdown(body, dd, h3), header a*/ + --main-text-color: #fff; + /*typehead search-box*/ + --main-search-bar: #454545; + /* scrollbar-thumb */ + --main-scrollbar-color: #5f6368; + /* footer */ + --main-footer-background: #27323a; + /* hyperlinks*/ + --main-hyperlinks-color: #00D2FA; + /*search background*/ + --main-search-background: black; + + /*code snippets*/ + --main-code-bg: #10161E; + --main-keyword-color: white; + --main-tag-color: #00D2FA; + --main-section-color: #FF2D64; + --main-comment-color: #909CC3; + --main-var-color: #55A09B; + --main-string-color: #FF2D64; + + --main-number-filter: invert(100%); + --main-icon-color: white; +} + +#theme { + display: none; +} + +#theme-button { + position: absolute; + right: 30px; + height: 24px; +} + +#theme-button .material-symbols-outlined { + color: var(--main-icon-color); + user-select: none; + cursor: pointer; +} + +.light-theme #light-theme-button { + display: none; +} + +.dark-theme #dark-theme-button { + display: none; +} + +/* +Only show images that fit their theme using GitHub's syntax, see: +https://github.blog/changelog/2021-11-24-specify-theme-context-for-images-in-markdown/ +*/ +.dark-theme img[src$="#gh-light-mode-only"] { + display: none; +} + +.light-theme img[src$="#gh-dark-mode-only"] { + display: none; +} + +/* for layout */ +html, +body { + margin: 0; + padding: 0; + height: 100%; + width: 100%; + overflow: hidden; + box-sizing: border-box; +} + +*, *:before, *:after { + box-sizing: inherit; +} + +body { + display: flex; + flex-direction: column; + -webkit-overflow-scrolling: touch; +} + +header { + flex: 0 0 50px; + display: flex; + flex-direction: row; + align-items: center; + padding-left: 30px; + padding-right: 30px; + background-color: var(--main-header-color); +} + +header ol { + list-style: none; + margin: 0; + padding: 0; +} + +header ol li { + display: inline; +} + +header form { + display: flex; + flex: 1; + justify-content: flex-end; +} + +header#header-search-sidebar { + height: 50px; + margin-bottom: 25px; +} + +footer { + flex: 0 0 16px; + text-align: center; + padding: 16px 20px; +} + +main { + flex: 1; + display: flex; + flex-direction: row; + min-height: 0; +} + +.sidebar-offcanvas-left { + flex: 0 1 230px; + order: 1; + overflow-y: scroll; + padding: 20px 0 15px 30px; + margin: 5px 20px 0 0; +} + +::-webkit-scrollbar-button{ display: none; height: 13px; border-radius: 0; background-color: #AAA; } +::-webkit-scrollbar-button:hover{ background-color: #AAA; } +::-webkit-scrollbar-thumb{ background-color: var(--main-scrollbar-color); } +::-webkit-scrollbar-thumb:hover{ background-color: var(--main-scrollbar-color); } +::-webkit-scrollbar{ width: 4px; } + +.main-content::-webkit-scrollbar{ width: 8px; } + +.main-content { + flex: 1; + order: 2; + overflow-y: scroll; + padding: 10px 20px 0 20px; +} + +.sidebar-offcanvas-right { + flex: 0 1 12em; + order: 3; + overflow-y: scroll; + padding: 20px 15px 15px 15px; + margin-top: 5px; + margin-right: 20px; +} +/* end for layout */ + +body { + -webkit-text-size-adjust: 100%; + overflow-x: hidden; + font-family: Roboto, sans-serif; + font-size: 16px; + line-height: 1.42857143; + color: var(--main-text-color); + background-color: var(--main-bg-color); +} + +nav.navbar { + background-color: inherit; + min-height: 50px; + border: 0; +} + +@media (max-width: 840px) { + .hidden-xs { + display: none !important; + } +} + +@media (min-width: 841px) { + .hidden-l { + display: none !important; + } +} + +nav.navbar .row { + padding-top: 8px; +} + +nav .container { + white-space: nowrap; +} + +header { + background-color: var(--main-header-color); + box-shadow: 0 3px 5px rgba(0,0,0,0.1); +} + +.pre { + border: 1px solid #ddd; + font-size: 14px; +} + +.hljs-string, .hljs-doctag { + color: var(--main-string-color); +} + +.hljs-number, .hljs-literal, .hljs-variable, .hljs-template-variable, .hljs-tag .hljs-attr { + color: var(--main-var-color); +} + +.hljs-comment, .hljs-quote { + color: var(--main-comment-color); + font-style: italic; +} + +.hljs-title, .hljs-section, .hljs-selector-id { + color: var(--main-section-color); + font-weight: bold; +} + +.hljs-tag, .hljs-name, .hljs-attribute { + color: var(--main-tag-color); + font-weight: normal; +} + +.hljs-keyword, .hljs-selector-tag, .hljs-subst { + color: var(--main-keyword-color); + font-weight: bold; +} + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: var(--main-text-color); + background: var(--main-code-bg); +} + +a { + text-decoration: none; +} + +section { + margin-bottom: 36px; +} + +dl { + margin: 0; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: Roboto, sans-serif; + font-weight: 400; + margin-top: 1.5em; + color: var(--main-text-color); +} + +h1.title { + overflow: hidden; + text-overflow: ellipsis; +} + +h1 { + font-size: 37px; + margin-top: 0; + margin-bottom: 0.67em; +} + +h2 { + font-size: 28px; +} + +h5 { + font-size: 16px; +} + +p { + margin-bottom: 1em; + margin-top: 0; +} + +a { + color: var(--main-hyperlinks-color); +} + +a:hover { + color: #13B9FD; +} + +pre.prettyprint { + font-family: 'Roboto Mono', Menlo, monospace; + color: black; + border-radius: 0; + font-size: 15px; + word-wrap: normal; + line-height: 1.4; + border: 0; + margin: 16px 0 16px 0; + padding: 8px; +} + +pre code { + white-space: pre; + word-wrap: initial; + font-size: 100% +} + +.fixed { + white-space: pre; +} + +pre { + border: 1px solid #ddd; + background-color: #eee; + font-size: 14px; +} + +code { + font-family: 'Roboto Mono', Menlo, monospace; + color: inherit; + padding: 0.2em 0.4em; + font-size: 85%; + background-color: rgba(27,31,35,0.05); + border-radius: 3px; +} + +@media(max-width: 840px) { + nav .container { + width: 100% + } + + h1 { + font-size: 24px; + } + + pre { + margin: 16px 0; + } +} + +header h1 { + font-weight: 400; + margin-bottom: 16px; +} + +header a, +header p, +header li { + color: #0175C2; +} + +header a:hover { + color: #0175C2; +} + +header h1 .kind { + color: #555; +} + +dt { + font-weight: normal; +} + +dd { + color: var(--main-text-color); + margin-bottom: 1em; + margin-left: 0; +} + +dd.callable, dd.constant, dd.property { + margin-bottom: 24px; +} + +dd p { + overflow-x: hidden; + text-overflow: ellipsis; + margin-bottom: 0; +} + +/* Enum values do not have their own pages; their full docs are presented on the + * enum class's page. */ +dt.constant + dd p { + margin-bottom: 1em; +} + +/* indents wrapped lines */ +section.summary dt { + margin-left: 24px; + text-indent: -24px; +} + +.dl-horizontal dd { + margin-left: initial; +} + +dl.dl-horizontal dt { + font-style: normal; + text-align: left; + color: #727272; + margin-right: 20px; + width: initial; +} + +dt .name { + font-weight: 500; +} + +dl dt.callable .name { + float: none; + width: auto; +} + +.type-parameter { + white-space: nowrap; +} + +.multi-line-signature .type-parameter .parameter { + margin-left: 0; + display: unset; +} + +.parameter-list { + display: table-cell; + margin-left: 10px; + list-style-type: none; + padding-inline-start: unset; +} + +.signature { + color: var(--main-text-color); +} + +.signature a { + color: var(--main-hyperlinks-color); +} + +.optional { + font-style: italic; +} + +.undocumented { + font-style: italic; +} + +.is-const { + font-style: italic; +} + +.deprecated { + text-decoration: line-through; +} + +.category.linked { + font-weight: bold; + opacity: 1; +} + +/* Colors for category based on categoryOrder in dartdoc_options.config. */ +.category.cp-0 { + background-color: #54b7c4 +} + +.category.cp-1 { + background-color: #54c47f +} + +.category.cp-2 { + background-color: #c4c254 +} + +.category.cp-3 { + background-color: #c49f54 +} + +.category.cp-4 { + background-color: #c45465 +} + +.category.cp-5 { + background-color: #c454c4 +} + +.category a { + color: white; +} + +.category { + padding: 2px 4px; + font-size: 12px; + border-radius: 4px; + background-color: #999; + text-transform: uppercase; + color: white; + opacity: .5; +} + +h1 .category { + vertical-align: middle; +} + +/* The badge under a declaration for things like "const", "read-only", etc. and for the badges inline like sealed or interface */ +/* See https://github.com/dart-lang/dartdoc/blob/main/lib/src/model/feature.dart */ +.feature { + display: inline-block; + background: var(--main-bg-color); + border: 1px solid var(--main-hyperlinks-color); + border-radius: 20px; + color: var(--main-hyperlinks-color); + + font-size: 12px; + padding: 1px 6px; + margin: 0 8px 0 0; +} + +a.feature:hover { + border-color: #13B9FD; +} + +h1 .feature { + vertical-align: middle; + margin: 0 -2px 0 0; +} + +.source-link { + padding: 18px 4px; + font-size: 18px; + vertical-align: middle; +} + +@media (max-width: 840px) { + .source-link { + padding: 7px 2px; + font-size: 10px; + } +} + +#external-links { + float: right; +} + +.btn-group { + position: relative; + display: inline-flex; + vertical-align: middle; +} + +footer { + color: #fff; + background-color: var(--main-footer-background); + width: 100%; +} + +footer p { + margin: 0; +} + +footer .no-break { + white-space: nowrap; +} + +footer .container { + padding-left: 0; + padding-right: 0; +} + +footer a, footer a:hover { + color: #fff; +} + +.markdown.desc { + max-width: 700px; +} + +.markdown h1 { + font-size: 24px; + margin-bottom: 8px; +} + +.markdown h2 { + font-size: 20px; + margin-top: 24px; + margin-bottom: 8px; +} + +.markdown h3 { + font-size: 18px; + margin-bottom: 8px; + color: var(--main-text-color); +} + +.markdown h4 { + font-size: 16px; + margin-bottom: 0; +} + +.markdown li p { + margin: 0; +} + +table { + margin-bottom: 1em; +} + +table, +th, +td { + border: 1px solid lightgrey; + border-collapse: collapse; +} + +th, +td { + padding: 8px; +} + +.gt-separated { + list-style: none; + padding: 0; + margin: 0; +} + +.gt-separated li { + display: inline-block; +} + +.gt-separated li:before { + background-image: url("data:image/svg+xml;utf8,"); + background-position: center; + content: "\00a0"; + margin: 0 6px 0 4px; + padding: 0 3px 0 0; +} + +.gt-separated.dark li:before { + background-image: url("data:image/svg+xml;utf8,"); +} + +.gt-separated li:first-child:before { + background-image: none; + content: ""; + margin: 0; + padding: 0; +} + +.multi-line-signature { + font-size: 17px; + color: #727272; +} + +.multi-line-signature .parameter { + margin-left: 24px; + display: block; +} + +.breadcrumbs { + padding: 0; + margin: 8px 0 8px 0; + white-space: nowrap; + line-height: 1; +} + +@media screen and (min-width: 840px) { + nav ol.breadcrumbs { + float: left; + } +} + +@media screen and (max-width: 840px) { + .breadcrumbs { + margin: 0 0 24px 0; + overflow-x: hidden; + } +} + +.breadcrumbs .gt-separated .dark .hidden-xs li+li:before { + color: var(--main-h-text); +} + +ol.breadcrumbs li a { + color: var(--main-hyperlinks-color); +} + +.self-crumb { + color: var(--main-h-text); +} + +.self-name { + color: #555; + display: none; +} + +.annotation-list { + list-style: none; + padding: 0; + display: inline; +} + +.comma-separated { + list-style: none; + padding: 0; + display: inline; +} + +.comma-separated li { + display: inline; +} + +.comma-separated li:after { + content: ", "; +} + +.comma-separated li:last-child:after { + content: ""; +} + +.end-with-period li:last-child:after { + content: "."; +} + +.container > section:first-child { + border: 0; +} + +.constructor-modifier { + font-style: italic; +} + +section.multi-line-signature div.parameters { + margin-left: 24px; +} + +/* sidebar styles */ + +.sidebar ol { + list-style: none; + line-height: 22px; + margin-top: 0; + margin-bottom: 0; + padding: 0 0 15px 0; +} + +.sidebar h5 a, +.sidebar h5 a:hover { + color: var(--main-sidebar-color); +} + +.sidebar h5, +.sidebar ol li { + text-overflow: ellipsis; + overflow: hidden; + padding: 3px 0 3px 3px; +} + +.sidebar h5 { + color: var(--main-sidebar-color); + font-size: 18px; + margin: 0 0 22px 0; + padding-top: 0; +} + +.sidebar ol li.section-title { + font-size: 18px; + font-weight: normal; + text-transform: uppercase; + padding-top: 25px; +} + +.sidebar ol li.section-subtitle a { + color: inherit; +} + +.sidebar ol li.section-subtitle { + font-weight: 400; + text-transform: uppercase; +} + +.sidebar ol li.section-subitem { + margin-left: 12px; +} + +.sidebar ol li:first-child { + padding-top: 3px; + margin-top: 0; +} + +button { + padding: 0; +} + +#sidenav-left-toggle { + display: none; + vertical-align: text-bottom; + padding: 0; + color: var(--main-icon-color); + user-select: none; + cursor: pointer; +} + +/* left-nav disappears, and can transition in from the left */ +@media screen and (max-width:840px) { + #sidenav-left-toggle { + display: inline; + width: 24px; + height: 24px; + border: none; + margin-right: 24px; + margin-left: 24px; + font-size: 24px; + } + + #overlay-under-drawer.active { + opacity: 0.4; + height: 100%; + z-index: 1999; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: black; + display: block; + } + + .sidebar-offcanvas-left { + left: -100%; + position: fixed; + -webkit-transition:all .25s ease-out; + -o-transition:all .25s ease-out; + transition:all .25s ease-out; + z-index: 2000; + top: 0; + width: 280px; /* works all the way down to an iphone 4 */ + height: 90%; + background-color: var(--main-bg-color); + overflow-y: scroll; /* TODO: how to hide scroll bars? */ + padding: 10px; + margin: 10px 10px; + box-shadow: 5px 5px 5px 5px #444444; + } + + ol#sidebar-nav { + font-size: 18px; + white-space: pre-line; + } + + .sidebar-offcanvas-left.active { + left: 0; /* this animates our drawer into the page */ + } + + .self-name { + display: inline-block; + color: var(--main-hyperlinks-color); + } +} + +.sidebar-offcanvas-left h5 { + margin-bottom: 10px; +} + +.sidebar-offcanvas-left h5:last-of-type { + border: 0; + margin-bottom: 25px; +} + +/* the right nav disappears out of view when the window shrinks */ +@media screen and (max-width: 992px) { + .sidebar-offcanvas-right { + display: none; + } +} + +#overlay-under-drawer { + display: none; +} + +/* find-as-you-type search box */ + +.form-control { + border-radius: 0; + border: 0; +} + +@media screen and (max-width: 840px) { + form.search { + display: none; + } +} + +.typeahead { + width: 200px; + padding: 2px 7px 1px 7px; + line-height: 20px; + outline: none; +} + +.tt-wrapper { + position: relative; + display: inline-block; +} + +.tt-input { + position: relative; + vertical-align: top; +} + +.navbar-right .tt-menu { + right: 0; + left: inherit !important; + width: 540px; + max-height: 280px; + overflow-y: scroll; +} + +.navbar-right { + padding-right: 60px; +} + +.tt-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 100; + font-size: 14px; + margin: 0; + background-color: var(--main-bg-color); + border: 1px solid var(--main-header-color); + -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2); + -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2); + box-shadow: 0 5px 10px rgba(0,0,0,.2); +} + + +.typeahead { + padding: 17px 17px 17px 50px; + width: 422px; + height: 20px; + font-size: 13px; + background-image: url("http://github.com/search.svg"); + background-repeat: no-repeat; + background-position: 4%; + outline: 0; + background-size: 20px; + filter: var(--main-number-filter); + -webkit-filter: var(--main-number-filter); +} + +.search-summary { + margin-bottom: 10px; +} + +a.tt-container { + font-size: 16px; + color: var(--main-hyperlinks-color); +} + +.enter-search-message { + position: -webkit-sticky; + position: sticky; + top: 0; + background-color: #AAA; + padding: 0; + font-size: 14px; + margin: 0; + clear: both; + text-align: center; + color: black; +} + +.tt-suggestion:hover { + cursor: pointer; + color: #fff; + background-color: #0097cf; +} + +.tt-suggestion:hover .search-from-lib { + color: #ddd; +} + +.tt-suggestion.tt-cursor { + color: #fff; + background-color: #0097cf; +} + +.tt-suggestion.tt-cursor .search-from-lib { + color: #ddd; +} + +.tt-suggestion p { + margin: 0; +} + +.tt-container { + font-size: 14px; + margin-bottom: 0; + margin-top: 15px; +} + +.tt-container-text { + color: var(--main-text-color); +} + + +/* Search results formatting for mini results below search bar. */ + +.tt-search-results .tt-container { + margin-top: 5px; + margin-bottom: 5px; +} + +/* Do not show the container as a section. */ +.tt-search-results .tt-container-text { + display: none +} + +/* An inline style. */ +.tt-search-results .tt-suggestion { + color: var(--main-text-color); + margin-top: 5px; + overflow: hidden; + padding-left: 10px; + padding-right: 10px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.tt-search-results .tt-suggestion-title { + font-size: 14px; + padding-right: 5px; +} + +.tt-search-results .tt-suggestion-container { + color: var(--main-keyword-color); + font-size: 14px; + font-style: italic; + padding-right: 5px; +} + +.tt-search-results .one-line-description { + color: var(--main-keyword-color); + display: inline; + margin-left: 0; +} + + +.tt-search-results .one-line-description::before { + content: open-quote; +} + +.tt-search-results .one-line-description::after { + content: close-quote; +} + +/* Search results formatting for `search.html`. */ + +/* A block style. */ +#dartdoc-main-content .tt-suggestion { + color: var(--main-text-color); + margin-top: 5px; + margin-bottom: 10px; + border-style: solid; + border-color: lightgrey; + border-width: 0.5px; +} + +#dartdoc-main-content .tt-suggestion-title { + display: block; + font-weight: 500; + margin: 4px 10px 0; +} + +#dartdoc-main-content .one-line-description { + display: block; + margin: 2px 10px 3px; +} + +/* Do not show a result's container. */ +#dartdoc-main-content .tt-suggestion-container { + display: none; +} + +@media screen and (max-width: 840px) { + .typeahead { + padding: 17px 17px 17px 33px; + width: 240px; + height: 17px; + border: 1px solid #f5f5f5; + background-position: 3%; + margin: 10px 10px 10px 9px; + } + + header { + padding-left: 0; + } +} + +@media screen and (max-width: 320px) { + #sidenav-left-toggle { + margin-right: 10px; + margin-left: 20px; + } + + .self-name { + margin-right: 10px; + } +} + +::placeholder { + filter: brightness(0.85); +} + +.search-body { + border: 1px solid #7f7f7f; + max-width: 400px; + box-shadow: 3px 3px 5px rgba(0,0,0,0.1); +} + +section#setter { + border-top: 1px solid #ddd; + padding-top: 36px; +} + +li.inherited a { + opacity: 0.65; + font-style: italic; +} + +#instance-methods dt.inherited .name, +#instance-properties dt.inherited .name, +#operators dt.inherited .name { + font-weight: 400; + font-style: italic; +} + +#instance-methods dt.inherited .signature, +#instance-properties dt.inherited .signature, +#operators dt.inherited .signature { + font-weight: 400; +} + +@media print { + .subnav, .sidebar { + display: none; + } + + a[href]:after { + content: "" !important; + } +} diff --git a/docs/migrate-1-0-28.md b/docs/migrate-1-0-28.md deleted file mode 120000 index fd18cf428..000000000 --- a/docs/migrate-1-0-28.md +++ /dev/null @@ -1 +0,0 @@ -migrate-2-0-0.md \ No newline at end of file diff --git a/docs/migrate-2-0-0.md b/docs/migrate-2-0-0.md deleted file mode 100644 index 802859310..000000000 --- a/docs/migrate-2-0-0.md +++ /dev/null @@ -1,53 +0,0 @@ -# Migrate your Flutter application to version 2.0.0 - -Starting with version 2.0.0, this repository is now separated in a pure dart (parse_server_sdk) and a flutter package (parse_server_sdk_flutter). -This was done in order to provide a dart package for the parse-server, while keeping maintenance simple. -You can find both packages in the package directory. - -### 1. pubspec.yaml -In your projects pubspec.yaml at the dependencies section, you have to change -``` -dependencies: - parse_server_sdk: ^1.0.27 -``` -to -``` -dependencies: - parse_server_sdk_flutter: ^2.0.0 -``` -This is the current released version of the parse_server_sdk_flutter package: [![pub package](https://img.shields.io/pub/v/parse_server_sdk_flutter.svg)](https://pub.dev/packages/parse_server_sdk_flutter) - -### 2. imports -As the package name changed, you have to change -``` -import 'package:parse_server_sdk/parse_server_sdk.dart'; -``` - to -``` -import 'package:parse_server_sdk_flutter/parse_server_sdk.dart'; -``` -in every file. - -It is recommended to do so by the replacement feature of your IDE. - -### optional: provide app information on web -As flutter web is now in beta, this SDK aims to be web compatible. -But there are some parts completely different on web. For example, the wep-app cant determine it's name, version or packagename. -That's why you should provide this information on web. -```dart -Parse().initialize( - ... - appName: kIsWeb ? "MyApplication" : null, - appVersion: kIsWeb ? "Version 1" : null, - appPackageName: kIsWeb ? "com.example.myapplication" : null, -); -``` - -### optional: adjust your tests -You tests might fail if the package tries to automatically discover facts like you applications name, version, package name or the default file directory. -You can avoid this automatic discovery by providing values for `appName`, `appVersion`, `appPackageName` as well as `fileDirectory` at you `Parse().initialize()` call. - -### changed network library -In order to provide a `ProgressCallback` for heavy file operations, -the network library was switched from [http](https://pub.dev/packages/http) to [dio](https://pub.dev/packages/dio). -There should be no breaking changes regarding this change, except if you are overriding the `ParseHTTPClient`. \ No newline at end of file diff --git a/flutter/__404error.html b/flutter/__404error.html new file mode 100644 index 000000000..f6fa0fcec --- /dev/null +++ b/flutter/__404error.html @@ -0,0 +1,111 @@ + + + + + + + + + parse_server_sdk_flutter - Dart API docs + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
parse_server_sdk_flutter
+ +
+ +
+
+
+ +
+

404: Something's gone wrong :-(

+ +
+

You've tried to visit a page that doesn't exist. Luckily this site + has other pages.

+

If you were looking for something specific, try searching: +

+

+ +
+
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/categories.json b/flutter/categories.json new file mode 100644 index 000000000..fe51488c7 --- /dev/null +++ b/flutter/categories.json @@ -0,0 +1 @@ +[] diff --git a/flutter/flutter_parse_sdk_flutter/ChildBuilder.html b/flutter/flutter_parse_sdk_flutter/ChildBuilder.html new file mode 100644 index 000000000..3a62e47e1 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ChildBuilder.html @@ -0,0 +1,292 @@ + + + + + + + + ChildBuilder typedef - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ChildBuilder
+ +
+ +
+
+
+ +
+
+

ChildBuilder<T extends ParseObject> typedef + +

+ +
+ ChildBuilder<T extends ParseObject> = + Widget Function(BuildContext context, ParseLiveListElementSnapshot<T> snapshot) + +
+ + + + +
+

Implementation

+
typedef ChildBuilder<T extends sdk.ParseObject> = Widget Function(
+    BuildContext context, sdk.ParseLiveListElementSnapshot<T> snapshot);
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html new file mode 100644 index 000000000..d859f1be2 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html @@ -0,0 +1,629 @@ + + + + + + + + CoreStoreSembastImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
CoreStoreSembastImp
+ +
+ +
+
+
+ +
+
+

CoreStoreSembastImp class + +

+ + + + +
+
+ + + +
Implemented types
+
+ +
+ + + + + + + +
+
+ + + +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
read-onlyinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
read-onlyinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ clear() + Future<bool> + + + +
+
+ +
override
+ +
+ +
+ containsKey(String key) + Future<bool> + + + +
+
+ +
override
+ +
+ +
+ get(String key) + Future + + + +
+
+ +
override
+ +
+ +
+ getBool(String key) + Future<bool?> + + + +
+
+ +
override
+ +
+ +
+ getDouble(String key) + Future<double?> + + + +
+
+ +
override
+ +
+ +
+ getInt(String key) + Future<int?> + + + +
+
+ +
override
+ +
+ +
+ getString(String key) + Future<String?> + + + +
+
+ +
override
+ +
+ +
+ getStringList(String key) + Future<List<String>?> + + + +
+
+ +
override
+ +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ remove(String key) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ setBool(String key, bool value) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ setDouble(String key, double value) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ setInt(String key, int value) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ setString(String key, String value) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ setStringList(String key, List<String> values) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + +
+

Static Methods

+
+
+ getInstance({DatabaseFactory? factory, String? password}) + Future<CoreStoreSembastImp> + + + +
+
+ +
override
+ +
+ +
+
+ + + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/clear.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/clear.html new file mode 100644 index 000000000..aed719c4e --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/clear.html @@ -0,0 +1,169 @@ + + + + + + + + clear method - CoreStoreSembastImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
clear
+ +
+ +
+
+
+ +
+
+

clear method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<bool> +clear() + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<bool> clear() async {
+  await _sembastImp!.clear();
+  return true;
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/containsKey.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/containsKey.html new file mode 100644 index 000000000..3b63b83fb --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/containsKey.html @@ -0,0 +1,167 @@ + + + + + + + + containsKey method - CoreStoreSembastImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
containsKey
+ +
+ +
+
+
+ +
+
+

containsKey method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<bool> +containsKey(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<bool> containsKey(String key) => _sembastImp!.containsKey(key);
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/get.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/get.html new file mode 100644 index 000000000..522e42697 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/get.html @@ -0,0 +1,167 @@ + + + + + + + + get method - CoreStoreSembastImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
get
+ +
+ +
+
+
+ +
+
+

get method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future +get(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<dynamic> get(String key) => _sembastImp!.get(key);
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/getBool.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/getBool.html new file mode 100644 index 000000000..49b93cd3e --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/getBool.html @@ -0,0 +1,167 @@ + + + + + + + + getBool method - CoreStoreSembastImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getBool
+ +
+ +
+
+
+ +
+
+

getBool method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<bool?> +getBool(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<bool?> getBool(String key) => _sembastImp!.getBool(key);
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/getDouble.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/getDouble.html new file mode 100644 index 000000000..d79e47eba --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/getDouble.html @@ -0,0 +1,167 @@ + + + + + + + + getDouble method - CoreStoreSembastImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getDouble
+ +
+ +
+
+
+ +
+
+

getDouble method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<double?> +getDouble(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<double?> getDouble(String key) => _sembastImp!.getDouble(key);
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/getInstance.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/getInstance.html new file mode 100644 index 000000000..7f20b3eed --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/getInstance.html @@ -0,0 +1,169 @@ + + + + + + + + getInstance method - CoreStoreSembastImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getInstance
+ +
+ +
+
+
+ +
+
+

getInstance static method +

+ +
+ + +Future<CoreStoreSembastImp> +getInstance(
  1. {DatabaseFactory? factory,
  2. +
  3. String? password}
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
static Future<CoreStoreSembastImp> getInstance(
+    {DatabaseFactory? factory, String? password}) async {
+  _sembastImp ??= await sdk.CoreStoreSembastImp.getInstance(
+      await dbDirectory(),
+      factory: factory,
+      password: password);
+  return CoreStoreSembastImp._();
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/getInt.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/getInt.html new file mode 100644 index 000000000..1b573f21b --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/getInt.html @@ -0,0 +1,167 @@ + + + + + + + + getInt method - CoreStoreSembastImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getInt
+ +
+ +
+
+
+ +
+
+

getInt method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<int?> +getInt(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<int?> getInt(String key) => _sembastImp!.getInt(key);
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/getString.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/getString.html new file mode 100644 index 000000000..af75efc55 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/getString.html @@ -0,0 +1,167 @@ + + + + + + + + getString method - CoreStoreSembastImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getString
+ +
+ +
+
+
+ +
+
+

getString method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<String?> +getString(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<String?> getString(String key) => _sembastImp!.getString(key);
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/getStringList.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/getStringList.html new file mode 100644 index 000000000..f855b6e08 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/getStringList.html @@ -0,0 +1,168 @@ + + + + + + + + getStringList method - CoreStoreSembastImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getStringList
+ +
+ +
+
+
+ +
+
+

getStringList method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<List<String>?> +getStringList(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<List<String>?> getStringList(String key) =>
+    _sembastImp!.getStringList(key);
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/remove.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/remove.html new file mode 100644 index 000000000..5c0cf8011 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/remove.html @@ -0,0 +1,167 @@ + + + + + + + + remove method - CoreStoreSembastImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
remove
+ +
+ +
+
+
+ +
+
+

remove method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +remove(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> remove(String key) => _sembastImp!.remove(key);
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/setBool.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/setBool.html new file mode 100644 index 000000000..910a69a74 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/setBool.html @@ -0,0 +1,169 @@ + + + + + + + + setBool method - CoreStoreSembastImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setBool
+ +
+ +
+
+
+ +
+
+

setBool method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setBool(
  1. String key,
  2. +
  3. bool value
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setBool(String key, bool value) =>
+    _sembastImp!.setBool(key, value);
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/setDouble.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/setDouble.html new file mode 100644 index 000000000..3ad11d185 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/setDouble.html @@ -0,0 +1,169 @@ + + + + + + + + setDouble method - CoreStoreSembastImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setDouble
+ +
+ +
+
+
+ +
+
+

setDouble method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setDouble(
  1. String key,
  2. +
  3. double value
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setDouble(String key, double value) =>
+    _sembastImp!.setDouble(key, value);
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/setInt.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/setInt.html new file mode 100644 index 000000000..0c3b56d44 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/setInt.html @@ -0,0 +1,168 @@ + + + + + + + + setInt method - CoreStoreSembastImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setInt
+ +
+ +
+
+
+ +
+
+

setInt method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setInt(
  1. String key,
  2. +
  3. int value
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setInt(String key, int value) => _sembastImp!.setInt(key, value);
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/setString.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/setString.html new file mode 100644 index 000000000..236918e6c --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/setString.html @@ -0,0 +1,169 @@ + + + + + + + + setString method - CoreStoreSembastImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setString
+ +
+ +
+
+
+ +
+
+

setString method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setString(
  1. String key,
  2. +
  3. String value
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setString(String key, String value) =>
+    _sembastImp!.setString(key, value);
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/setStringList.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/setStringList.html new file mode 100644 index 000000000..fee50f443 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSembastImp/setStringList.html @@ -0,0 +1,169 @@ + + + + + + + + setStringList method - CoreStoreSembastImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setStringList
+ +
+ +
+
+
+ +
+
+

setStringList method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setStringList(
  1. String key,
  2. +
  3. List<String> values
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setStringList(String key, List<String> values) =>
+    _sembastImp!.setStringList(key, values);
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html new file mode 100644 index 000000000..a804071d7 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html @@ -0,0 +1,629 @@ + + + + + + + + CoreStoreSharedPrefsImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
CoreStoreSharedPrefsImp
+ +
+ +
+
+
+ +
+
+

CoreStoreSharedPrefsImp class + +

+ + + + +
+
+ + + +
Implemented types
+
+ +
+ + + + + + + +
+
+ + + +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
read-onlyinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
read-onlyinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ clear() + Future<bool> + + + +
+
+ +
override
+ +
+ +
+ containsKey(String key) + Future<bool> + + + +
+
+ +
override
+ +
+ +
+ get(String key) + Future + + + +
+
+ +
override
+ +
+ +
+ getBool(String key) + Future<bool?> + + + +
+
+ +
override
+ +
+ +
+ getDouble(String key) + Future<double?> + + + +
+
+ +
override
+ +
+ +
+ getInt(String key) + Future<int?> + + + +
+
+ +
override
+ +
+ +
+ getString(String key) + Future<String?> + + + +
+
+ +
override
+ +
+ +
+ getStringList(String key) + Future<List<String>?> + + + +
+
+ +
override
+ +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ remove(String key) + Future<bool> + + + +
+
+ +
override
+ +
+ +
+ setBool(String key, bool value) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ setDouble(String key, double value) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ setInt(String key, int value) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ setString(String key, String value) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ setStringList(String key, List<String> values) + Future<void> + + + +
+
+ +
override
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + +
+

Static Methods

+
+
+ getInstance({SharedPreferences? store}) + Future<CoreStoreSharedPrefsImp> + + + +
+
+ + + +
+ +
+
+ + + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/clear.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/clear.html new file mode 100644 index 000000000..b3634fd70 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/clear.html @@ -0,0 +1,168 @@ + + + + + + + + clear method - CoreStoreSharedPrefsImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
clear
+ +
+ +
+
+
+ +
+
+

clear method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<bool> +clear() + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<bool> clear() {
+  return _store.clear();
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/containsKey.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/containsKey.html new file mode 100644 index 000000000..3618339fb --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/containsKey.html @@ -0,0 +1,169 @@ + + + + + + + + containsKey method - CoreStoreSharedPrefsImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
containsKey
+ +
+ +
+
+
+ +
+
+

containsKey method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<bool> +containsKey(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<bool> containsKey(String key) async {
+  return _store.containsKey(key);
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/get.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/get.html new file mode 100644 index 000000000..18355b419 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/get.html @@ -0,0 +1,169 @@ + + + + + + + + get method - CoreStoreSharedPrefsImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
get
+ +
+ +
+
+
+ +
+
+

get method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future +get(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<dynamic> get(String key) async {
+  return _store.get(key);
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getBool.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getBool.html new file mode 100644 index 000000000..953b01bec --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getBool.html @@ -0,0 +1,169 @@ + + + + + + + + getBool method - CoreStoreSharedPrefsImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getBool
+ +
+ +
+
+
+ +
+
+

getBool method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<bool?> +getBool(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<bool?> getBool(String key) async {
+  return _store.getBool(key);
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getDouble.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getDouble.html new file mode 100644 index 000000000..9da213729 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getDouble.html @@ -0,0 +1,169 @@ + + + + + + + + getDouble method - CoreStoreSharedPrefsImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getDouble
+ +
+ +
+
+
+ +
+
+

getDouble method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<double?> +getDouble(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<double?> getDouble(String key) async {
+  return _store.getDouble(key);
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getInstance.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getInstance.html new file mode 100644 index 000000000..01c0d4b8a --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getInstance.html @@ -0,0 +1,169 @@ + + + + + + + + getInstance method - CoreStoreSharedPrefsImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getInstance
+ +
+ +
+
+
+ +
+
+

getInstance static method +

+ +
+ + +Future<CoreStoreSharedPrefsImp> +getInstance(
  1. {SharedPreferences? store}
  2. +
) + + + +
+ + + + +
+

Implementation

+
static Future<CoreStoreSharedPrefsImp> getInstance(
+    {SharedPreferences? store}) async {
+  if (_instance == null) {
+    store ??= await SharedPreferences.getInstance();
+    _instance = CoreStoreSharedPrefsImp._internal(store);
+  }
+
+  return _instance!;
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getInt.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getInt.html new file mode 100644 index 000000000..d748bdac0 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getInt.html @@ -0,0 +1,169 @@ + + + + + + + + getInt method - CoreStoreSharedPrefsImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getInt
+ +
+ +
+
+
+ +
+
+

getInt method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<int?> +getInt(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<int?> getInt(String key) async {
+  return _store.getInt(key);
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getString.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getString.html new file mode 100644 index 000000000..a9da48391 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getString.html @@ -0,0 +1,169 @@ + + + + + + + + getString method - CoreStoreSharedPrefsImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getString
+ +
+ +
+
+
+ +
+
+

getString method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<String?> +getString(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<String?> getString(String key) async {
+  return _store.getString(key);
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getStringList.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getStringList.html new file mode 100644 index 000000000..a449aeffa --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getStringList.html @@ -0,0 +1,169 @@ + + + + + + + + getStringList method - CoreStoreSharedPrefsImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getStringList
+ +
+ +
+
+
+ +
+
+

getStringList method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<List<String>?> +getStringList(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<List<String>?> getStringList(String key) async {
+  return _store.getStringList(key);
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/remove.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/remove.html new file mode 100644 index 000000000..d68c904fe --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/remove.html @@ -0,0 +1,169 @@ + + + + + + + + remove method - CoreStoreSharedPrefsImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
remove
+ +
+ +
+
+
+ +
+
+

remove method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<bool> +remove(
  1. String key
  2. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<bool> remove(String key) async {
+  return _store.remove(key);
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setBool.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setBool.html new file mode 100644 index 000000000..95a09bab9 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setBool.html @@ -0,0 +1,170 @@ + + + + + + + + setBool method - CoreStoreSharedPrefsImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setBool
+ +
+ +
+
+
+ +
+
+

setBool method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setBool(
  1. String key,
  2. +
  3. bool value
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setBool(String key, bool value) {
+  return _store.setBool(key, value);
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setDouble.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setDouble.html new file mode 100644 index 000000000..d219a72f8 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setDouble.html @@ -0,0 +1,170 @@ + + + + + + + + setDouble method - CoreStoreSharedPrefsImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setDouble
+ +
+ +
+
+
+ +
+
+

setDouble method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setDouble(
  1. String key,
  2. +
  3. double value
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setDouble(String key, double value) {
+  return _store.setDouble(key, value);
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setInt.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setInt.html new file mode 100644 index 000000000..caa71e7cc --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setInt.html @@ -0,0 +1,170 @@ + + + + + + + + setInt method - CoreStoreSharedPrefsImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setInt
+ +
+ +
+
+
+ +
+
+

setInt method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setInt(
  1. String key,
  2. +
  3. int value
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setInt(String key, int value) {
+  return _store.setInt(key, value);
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setString.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setString.html new file mode 100644 index 000000000..130fad935 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setString.html @@ -0,0 +1,170 @@ + + + + + + + + setString method - CoreStoreSharedPrefsImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setString
+ +
+ +
+
+
+ +
+
+

setString method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setString(
  1. String key,
  2. +
  3. String value
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setString(String key, String value) {
+  return _store.setString(key, value);
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setStringList.html b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setStringList.html new file mode 100644 index 000000000..228a2e80a --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setStringList.html @@ -0,0 +1,170 @@ + + + + + + + + setStringList method - CoreStoreSharedPrefsImp class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
setStringList
+ +
+ +
+
+
+ +
+
+

setStringList method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<void> +setStringList(
  1. String key,
  2. +
  3. List<String> values
  4. +
) + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<void> setStringList(String key, List<String> values) {
+  return _store.setStringList(key, values);
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/DataGetter.html b/flutter/flutter_parse_sdk_flutter/DataGetter.html new file mode 100644 index 000000000..fab0e3038 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/DataGetter.html @@ -0,0 +1,291 @@ + + + + + + + + DataGetter typedef - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
DataGetter
+ +
+ +
+
+
+ +
+
+

DataGetter<T extends ParseObject> typedef + +

+ +
+ DataGetter<T extends ParseObject> = + T? Function() + +
+ + + + +
+

Implementation

+
typedef DataGetter<T extends sdk.ParseObject> = T? Function();
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/Parse-class.html b/flutter/flutter_parse_sdk_flutter/Parse-class.html new file mode 100644 index 000000000..3823d439b --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/Parse-class.html @@ -0,0 +1,672 @@ + + + + + + + + Parse class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
Parse
+ +
+ +
+
+
+ +
+
+

Parse class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + +
Implemented types
+
+ +
+ +
Mixed in types
+
+ +
+ + + + + + +
+
+ + +
+

Constructors

+ +
+
+ Parse() +
+
+ +
+
+
+ +
+

Properties

+ +
+
+ connectivityStream + Stream<ParseConnectivityResult> + +
+
+ +
read-onlyoverride
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
read-onlyinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
read-onlyinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ checkConnectivity() + Future<ParseConnectivityResult> + + + +
+
+ +
override
+ +
+ +
+ didChangeAccessibilityFeatures() + → void + + + +
+
+ Called when the system changes the set of currently active accessibility +features. +
inherited
+ +
+ +
+ didChangeAppLifecycleState(AppLifecycleState state) + → void + + + +
+
+ Called when the system puts the app in the background or returns +the app to the foreground. +
override
+ +
+ +
+ didChangeLocales(List<Locale>? locales) + → void + + + +
+
+ Called when the system tells the app that the user's locale has +changed. For example, if the user changes the system language +settings. +
inherited
+ +
+ +
+ didChangeMetrics() + → void + + + +
+
+ Called when the application's dimensions change. For example, +when a phone is rotated. +
inherited
+ +
+ +
+ didChangePlatformBrightness() + → void + + + +
+
+ Called when the platform brightness changes. +
inherited
+ +
+ +
+ didChangeTextScaleFactor() + → void + + + +
+
+ Called when the platform's text scale factor changes. +
inherited
+ +
+ +
+ didHaveMemoryPressure() + → void + + + +
+
+ Called when the system is running low on memory. +
inherited
+ +
+ +
+ didPopRoute() + Future<bool> + + + +
+
+ Called when the system tells the app to pop the current route. +For example, on Android, this is called when the user presses +the back button. +
inherited
+ +
+ +
+ didPushRoute(String route) + Future<bool> + + + +
+
+ Called when the host tells the application to push a new route onto the +navigator. +
inherited
+ +
+ +
+ didPushRouteInformation(RouteInformation routeInformation) + Future<bool> + + + +
+
+ Called when the host tells the application to push a new +RouteInformation and a restoration state onto the router. +
inherited
+ +
+ +
+ didRequestAppExit() + Future<AppExitResponse> + + + +
+
+ Called when a request is received from the system to exit the application. +
inherited
+ +
+ +
+ hasParseBeenInitialized() + bool + + + +
+
+ +
inherited
+ +
+ +
+ healthCheck({bool? debug, ParseClient? client, bool? sendSessionIdByDefault}) + Future<ParseResponse> + + + +
+
+ +
inherited
+ +
+ +
+ initialize(String appId, String serverUrl, {bool debug = false, String? appName, String? appVersion, String? appPackageName, String? locale, String? liveQueryUrl, String? clientKey, String? masterKey, String? sessionId, bool autoSendSessionId = true, SecurityContext? securityContext, CoreStore? coreStore, Map<String, ParseObjectConstructor>? registeredSubClassMap, ParseUserConstructor? parseUserConstructor, ParseFileConstructor? parseFileConstructor, List<int>? liveListRetryIntervals, ParseConnectivityProvider? connectivityProvider, String? fileDirectory, Stream<void>? appResumedStream, ParseClientCreator? clientCreator}) + Future<Parse> + + + +
+
+ To initialize Parse Server in your application +
override
+ +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/Parse/Parse.html b/flutter/flutter_parse_sdk_flutter/Parse/Parse.html new file mode 100644 index 000000000..256507f43 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/Parse/Parse.html @@ -0,0 +1,154 @@ + + + + + + + + Parse constructor - Parse - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
Parse
+ +
+ +
+
+
+ +
+
+

Parse constructor +

+ +
+ + Parse() +
+ + + + + + + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/Parse/checkConnectivity.html b/flutter/flutter_parse_sdk_flutter/Parse/checkConnectivity.html new file mode 100644 index 000000000..02c12fd1a --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/Parse/checkConnectivity.html @@ -0,0 +1,179 @@ + + + + + + + + checkConnectivity method - Parse class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
checkConnectivity
+ +
+ +
+
+
+ +
+
+

checkConnectivity method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<ParseConnectivityResult> +checkConnectivity() + +
override
+ +
+ + + + +
+

Implementation

+
@override
+Future<sdk.ParseConnectivityResult> checkConnectivity() async {
+  switch (await Connectivity().checkConnectivity()) {
+    case ConnectivityResult.wifi:
+      return sdk.ParseConnectivityResult.wifi;
+    case ConnectivityResult.mobile:
+      return sdk.ParseConnectivityResult.mobile;
+    case ConnectivityResult.none:
+      return sdk.ParseConnectivityResult.none;
+    default:
+      return sdk.ParseConnectivityResult.wifi;
+  }
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/Parse/connectivityStream.html b/flutter/flutter_parse_sdk_flutter/Parse/connectivityStream.html new file mode 100644 index 000000000..3af78ac18 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/Parse/connectivityStream.html @@ -0,0 +1,183 @@ + + + + + + + + connectivityStream property - Parse class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
connectivityStream
+ +
+ +
+
+
+ +
+
+

connectivityStream property +

+ + + +
+ +
+ +
+
    +
  1. @override
  2. +
+
+ Stream<ParseConnectivityResult> + connectivityStream +
override
+ +
+ + + + +
+

Implementation

+
@override
+Stream<sdk.ParseConnectivityResult> get connectivityStream {
+  return Connectivity().onConnectivityChanged.map((ConnectivityResult event) {
+    switch (event) {
+      case ConnectivityResult.wifi:
+        return sdk.ParseConnectivityResult.wifi;
+      case ConnectivityResult.mobile:
+        return sdk.ParseConnectivityResult.mobile;
+      default:
+        return sdk.ParseConnectivityResult.none;
+    }
+  });
+}
+
+ +
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/Parse/didChangeAppLifecycleState.html b/flutter/flutter_parse_sdk_flutter/Parse/didChangeAppLifecycleState.html new file mode 100644 index 000000000..551d40189 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/Parse/didChangeAppLifecycleState.html @@ -0,0 +1,178 @@ + + + + + + + + didChangeAppLifecycleState method - Parse class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
didChangeAppLifecycleState
+ +
+ +
+
+
+ +
+
+

didChangeAppLifecycleState method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +void +didChangeAppLifecycleState(
  1. AppLifecycleState state
  2. +
) + +
override
+ +
+ +
+

Called when the system puts the app in the background or returns +the app to the foreground.

+

An example of implementing this method is provided in the class-level +documentation for the WidgetsBindingObserver class.

+

This method exposes notifications from SystemChannels.lifecycle.

+
+ + + +
+

Implementation

+
@override
+void didChangeAppLifecycleState(AppLifecycleState state) {
+  _appResumedStreamController.sink.add(null);
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/Parse/initialize.html b/flutter/flutter_parse_sdk_flutter/Parse/initialize.html new file mode 100644 index 000000000..ffc7e5f0a --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/Parse/initialize.html @@ -0,0 +1,262 @@ + + + + + + + + initialize method - Parse class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
initialize
+ +
+ +
+
+
+ +
+
+

initialize method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +Future<Parse> +initialize(
  1. String appId,
  2. +
  3. String serverUrl,
  4. +
  5. {bool debug = false,
  6. +
  7. String? appName,
  8. +
  9. String? appVersion,
  10. +
  11. String? appPackageName,
  12. +
  13. String? locale,
  14. +
  15. String? liveQueryUrl,
  16. +
  17. String? clientKey,
  18. +
  19. String? masterKey,
  20. +
  21. String? sessionId,
  22. +
  23. bool autoSendSessionId = true,
  24. +
  25. SecurityContext? securityContext,
  26. +
  27. CoreStore? coreStore,
  28. +
  29. Map<String, ParseObjectConstructor>? registeredSubClassMap,
  30. +
  31. ParseUserConstructor? parseUserConstructor,
  32. +
  33. ParseFileConstructor? parseFileConstructor,
  34. +
  35. List<int>? liveListRetryIntervals,
  36. +
  37. ParseConnectivityProvider? connectivityProvider,
  38. +
  39. String? fileDirectory,
  40. +
  41. Stream<void>? appResumedStream,
  42. +
  43. ParseClientCreator? clientCreator}
  44. +
) + +
override
+ +
+ +
+

To initialize Parse Server in your application

+

This should be initialized in MyApp() creation

+
Parse().initialize(
+       "PARSE_APP_ID",
+       "https://parse.myaddress.com/parse/,+%20%20%20%20%20%20%20clientKey:"asd23rjh234r234r234r",
+       debug: true,
+       liveQuery: true);
+
+

appName, appVersion and appPackageName are automatically set on Android and IOS, if they are not defined. You should provide a value on web. +fileDirectory is not used on web

+
+ + + +
+

Implementation

+
@override
+Future<Parse> initialize(
+  String appId,
+  String serverUrl, {
+  bool debug = false,
+  String? appName,
+  String? appVersion,
+  String? appPackageName,
+  String? locale,
+  String? liveQueryUrl,
+  String? clientKey,
+  String? masterKey,
+  String? sessionId,
+  bool autoSendSessionId = true,
+  SecurityContext? securityContext,
+  sdk.CoreStore? coreStore,
+  Map<String, sdk.ParseObjectConstructor>? registeredSubClassMap,
+  sdk.ParseUserConstructor? parseUserConstructor,
+  sdk.ParseFileConstructor? parseFileConstructor,
+  List<int>? liveListRetryIntervals,
+  sdk.ParseConnectivityProvider? connectivityProvider,
+  String? fileDirectory,
+  Stream<void>? appResumedStream,
+  sdk.ParseClientCreator? clientCreator,
+}) async {
+  if (appName == null || appVersion == null || appPackageName == null) {
+    final PackageInfo packageInfo = await PackageInfo.fromPlatform();
+    appName ??= packageInfo.appName;
+    appVersion ??= packageInfo.version;
+    appPackageName ??= packageInfo.packageName;
+  }
+
+  return await super.initialize(
+    appId,
+    serverUrl,
+    debug: debug,
+    appName: appName,
+    appVersion: appVersion,
+    appPackageName: appPackageName,
+    locale: locale ??
+        (sdk.parseIsWeb
+            ? PlatformDispatcher.instance.locale.toString()
+            : Platform.localeName),
+    liveQueryUrl: liveQueryUrl,
+    clientKey: clientKey,
+    masterKey: masterKey,
+    sessionId: sessionId,
+    autoSendSessionId: autoSendSessionId,
+    securityContext: securityContext,
+    coreStore: coreStore ?? await CoreStoreSharedPrefsImp.getInstance(),
+    registeredSubClassMap: registeredSubClassMap,
+    parseUserConstructor: parseUserConstructor,
+    parseFileConstructor: parseFileConstructor,
+    liveListRetryIntervals: liveListRetryIntervals,
+    connectivityProvider: connectivityProvider ?? this,
+    fileDirectory:
+        fileDirectory ?? (await CoreStoreDirectory().getTempDirectory()),
+    appResumedStream: appResumedStream ?? _appResumedStreamController.stream,
+    clientCreator: clientCreator,
+  ) as Parse;
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html new file mode 100644 index 000000000..2fb112838 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html @@ -0,0 +1,842 @@ + + + + + + + + ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveGridWidget
+ +
+ +
+
+
+ +
+
+

ParseLiveGridWidget<T extends ParseObject> class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseLiveGridWidget({Key? key, required QueryBuilder<T> query, Widget? gridLoadingElement, Widget? queryEmptyElement, Duration duration = const Duration(milliseconds: 300), ScrollPhysics? scrollPhysics, ScrollController? scrollController, Axis scrollDirection = Axis.vertical, EdgeInsetsGeometry? padding, bool? primary, bool reverse = false, ChildBuilder<T>? childBuilder, bool shrinkWrap = false, ChildBuilder<T>? removedItemBuilder, bool? listenOnAllSubItems, List<String>? listeningIncludes, bool lazyLoading = true, List<String>? preloadedColumns, AnimationController? animationController, int crossAxisCount = 3, double crossAxisSpacing = 5.0, double mainAxisSpacing = 5.0, double childAspectRatio = 0.80}) +
+
+ +
const
+
+
+
+ +
+

Properties

+ +
+
+ animationController + AnimationController? + +
+
+ +
final
+ +
+ +
+ childAspectRatio + double + +
+
+ +
final
+ +
+ +
+ childBuilder + ChildBuilder<T>? + +
+
+ +
final
+ +
+ +
+ crossAxisCount + int + +
+
+ +
final
+ +
+ +
+ crossAxisSpacing + double + +
+
+ +
final
+ +
+ +
+ duration + Duration + +
+
+ +
final
+ +
+ +
+ gridLoadingElement + Widget? + +
+
+ +
final
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
read-onlyinherited
+ +
+ +
+ key + Key? + +
+
+ Controls how one widget replaces another widget in the tree. +
finalinherited
+ +
+ +
+ lazyLoading + bool + +
+
+ +
final
+ +
+ +
+ listeningIncludes + List<String>? + +
+
+ +
final
+ +
+ +
+ listenOnAllSubItems + bool? + +
+
+ +
final
+ +
+ +
+ mainAxisSpacing + double + +
+
+ +
final
+ +
+ +
+ padding + EdgeInsetsGeometry? + +
+
+ +
final
+ +
+ +
+ preloadedColumns + List<String>? + +
+
+ +
final
+ +
+ +
+ primary + bool? + +
+
+ +
final
+ +
+ +
+ query + QueryBuilder<T> + +
+
+ +
final
+ +
+ +
+ queryEmptyElement + Widget? + +
+
+ +
final
+ +
+ +
+ removedItemBuilder + ChildBuilder<T>? + +
+
+ +
final
+ +
+ +
+ reverse + bool + +
+
+ +
final
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
read-onlyinherited
+ +
+ +
+ scrollController + ScrollController? + +
+
+ +
final
+ +
+ +
+ scrollDirection + Axis + +
+
+ +
final
+ +
+ +
+ scrollPhysics + ScrollPhysics? + +
+
+ +
final
+ +
+ +
+ shrinkWrap + bool + +
+
+ +
final
+ +
+ +
+
+ + +
+

Methods

+
+
+ createElement() + StatefulElement + + + +
+
+ Creates a StatefulElement to manage this widget's location in the tree. +
inherited
+ +
+ +
+ createState() + State<ParseLiveGridWidget<T>> + + + +
+
+ Creates the mutable state for this widget at a given location in the tree. +
override
+ +
+ +
+ debugDescribeChildren() + List<DiagnosticsNode> + + + +
+
+ Returns a list of DiagnosticsNode objects describing this node's +children. +
inherited
+ +
+ +
+ debugFillProperties(DiagnosticPropertiesBuilder properties) + → void + + + +
+
+ Add additional properties associated with the node. +
inherited
+ +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) + DiagnosticsNode + + + +
+
+ Returns a debug representation of the object that is used by debugging +tools and by DiagnosticsNode.toStringDeep. +
inherited
+ +
+ +
+ toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+ toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug}) + String + + + +
+
+ Returns a string representation of this node and its descendants. +
inherited
+ +
+ +
+ toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) + String + + + +
+
+ Returns a one-line detailed description of the object. +
inherited
+ +
+ +
+ toStringShort() + String + + + +
+
+ A short, textual description of this widget. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + +
+

Static Methods

+
+
+ defaultChildBuilder<T extends ParseObject>(BuildContext context, ParseLiveListElementSnapshot<T> snapshot) + Widget + + + +
+
+ + + +
+ +
+
+ + + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/ParseLiveGridWidget.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/ParseLiveGridWidget.html new file mode 100644 index 000000000..670348034 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/ParseLiveGridWidget.html @@ -0,0 +1,222 @@ + + + + + + + + ParseLiveGridWidget constructor - ParseLiveGridWidget - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveGridWidget
+ +
+ +
+
+
+ +
+
+

ParseLiveGridWidget<T extends ParseObject> constructor +

+ +
+ const + ParseLiveGridWidget<T extends ParseObject>(
  1. {Key? key,
  2. +
  3. required QueryBuilder<T> query,
  4. +
  5. Widget? gridLoadingElement,
  6. +
  7. Widget? queryEmptyElement,
  8. +
  9. Duration duration = const Duration(milliseconds: 300),
  10. +
  11. ScrollPhysics? scrollPhysics,
  12. +
  13. ScrollController? scrollController,
  14. +
  15. Axis scrollDirection = Axis.vertical,
  16. +
  17. EdgeInsetsGeometry? padding,
  18. +
  19. bool? primary,
  20. +
  21. bool reverse = false,
  22. +
  23. ChildBuilder<T>? childBuilder,
  24. +
  25. bool shrinkWrap = false,
  26. +
  27. ChildBuilder<T>? removedItemBuilder,
  28. +
  29. bool? listenOnAllSubItems,
  30. +
  31. List<String>? listeningIncludes,
  32. +
  33. bool lazyLoading = true,
  34. +
  35. List<String>? preloadedColumns,
  36. +
  37. AnimationController? animationController,
  38. +
  39. int crossAxisCount = 3,
  40. +
  41. double crossAxisSpacing = 5.0,
  42. +
  43. double mainAxisSpacing = 5.0,
  44. +
  45. double childAspectRatio = 0.80}
  46. +
) +
+ + + + + +
+

Implementation

+
const ParseLiveGridWidget({
+  Key? key,
+  required this.query,
+  this.gridLoadingElement,
+  this.queryEmptyElement,
+  this.duration = const Duration(milliseconds: 300),
+  this.scrollPhysics,
+  this.scrollController,
+  this.scrollDirection = Axis.vertical,
+  this.padding,
+  this.primary,
+  this.reverse = false,
+  this.childBuilder,
+  this.shrinkWrap = false,
+  this.removedItemBuilder,
+  this.listenOnAllSubItems,
+  this.listeningIncludes,
+  this.lazyLoading = true,
+  this.preloadedColumns,
+  this.animationController,
+  this.crossAxisCount = 3,
+  this.crossAxisSpacing = 5.0,
+  this.mainAxisSpacing = 5.0,
+  this.childAspectRatio = 0.80,
+}) : super(key: key);
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/animationController.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/animationController.html new file mode 100644 index 000000000..161da72db --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/animationController.html @@ -0,0 +1,176 @@ + + + + + + + + animationController property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
animationController
+ +
+ +
+
+
+ +
+
+

animationController property +

+ +
+ + AnimationController? + animationController +
final
+ +
+ + + +
+

Implementation

+
final AnimationController? animationController;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/childAspectRatio.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/childAspectRatio.html new file mode 100644 index 000000000..fdf1aaecc --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/childAspectRatio.html @@ -0,0 +1,176 @@ + + + + + + + + childAspectRatio property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
childAspectRatio
+ +
+ +
+
+
+ +
+
+

childAspectRatio property +

+ +
+ + double + childAspectRatio +
final
+ +
+ + + +
+

Implementation

+
final double childAspectRatio;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/childBuilder.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/childBuilder.html new file mode 100644 index 000000000..960572521 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/childBuilder.html @@ -0,0 +1,176 @@ + + + + + + + + childBuilder property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
childBuilder
+ +
+ +
+
+
+ +
+
+

childBuilder property +

+ +
+ + ChildBuilder<T>? + childBuilder +
final
+ +
+ + + +
+

Implementation

+
final ChildBuilder<T>? childBuilder;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/createState.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/createState.html new file mode 100644 index 000000000..100aa17dd --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/createState.html @@ -0,0 +1,200 @@ + + + + + + + + createState method - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
createState
+ +
+ +
+
+
+ +
+
+

createState method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +State<ParseLiveGridWidget<T>> +createState() + +
override
+ +
+ +
+

Creates the mutable state for this widget at a given location in the tree.

+

Subclasses should override this method to return a newly created +instance of their associated State subclass:

+
@override
+State<SomeWidget> createState() => _SomeWidgetState();
+
+

The framework can call this method multiple times over the lifetime of +a StatefulWidget. For example, if the widget is inserted into the tree +in multiple locations, the framework will create a separate State object +for each location. Similarly, if the widget is removed from the tree and +later inserted into the tree again, the framework will call createState +again to create a fresh State object, simplifying the lifecycle of +State objects.

+
+ + + +
+

Implementation

+
@override
+State<ParseLiveGridWidget<T>> createState() => _ParseLiveGridWidgetState<T>();
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/crossAxisCount.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/crossAxisCount.html new file mode 100644 index 000000000..413f5510c --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/crossAxisCount.html @@ -0,0 +1,176 @@ + + + + + + + + crossAxisCount property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
crossAxisCount
+ +
+ +
+
+
+ +
+
+

crossAxisCount property +

+ +
+ + int + crossAxisCount +
final
+ +
+ + + +
+

Implementation

+
final int crossAxisCount;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/crossAxisSpacing.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/crossAxisSpacing.html new file mode 100644 index 000000000..28f6ba73f --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/crossAxisSpacing.html @@ -0,0 +1,176 @@ + + + + + + + + crossAxisSpacing property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
crossAxisSpacing
+ +
+ +
+
+
+ +
+
+

crossAxisSpacing property +

+ +
+ + double + crossAxisSpacing +
final
+ +
+ + + +
+

Implementation

+
final double crossAxisSpacing;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/defaultChildBuilder.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/defaultChildBuilder.html new file mode 100644 index 000000000..a7b93dc98 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/defaultChildBuilder.html @@ -0,0 +1,198 @@ + + + + + + + + defaultChildBuilder method - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
defaultChildBuilder
+ +
+ +
+
+
+ +
+
+

defaultChildBuilder<T extends ParseObject> static method +

+ +
+ + +Widget +defaultChildBuilder<T extends ParseObject>(
  1. BuildContext context,
  2. +
  3. ParseLiveListElementSnapshot<T> snapshot
  4. +
) + + + +
+ + + + +
+

Implementation

+
static Widget defaultChildBuilder<T extends sdk.ParseObject>(
+    BuildContext context, sdk.ParseLiveListElementSnapshot<T> snapshot) {
+  Widget child;
+  if (snapshot.failed) {
+    child = const Text('something went wrong!');
+  } else if (snapshot.hasData) {
+    child = ListTile(
+      title: Text(
+        snapshot.loadedData!.get<String>(sdk.keyVarObjectId)!,
+      ),
+    );
+  } else {
+    child = const ListTile(
+      leading: CircularProgressIndicator(),
+    );
+  }
+  return child;
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/duration.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/duration.html new file mode 100644 index 000000000..fc936afa6 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/duration.html @@ -0,0 +1,176 @@ + + + + + + + + duration property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
duration
+ +
+ +
+
+
+ +
+
+

duration property +

+ +
+ + Duration + duration +
final
+ +
+ + + +
+

Implementation

+
final Duration duration;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/gridLoadingElement.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/gridLoadingElement.html new file mode 100644 index 000000000..3b610ac2a --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/gridLoadingElement.html @@ -0,0 +1,176 @@ + + + + + + + + gridLoadingElement property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
gridLoadingElement
+ +
+ +
+
+
+ +
+
+

gridLoadingElement property +

+ +
+ + Widget? + gridLoadingElement +
final
+ +
+ + + +
+

Implementation

+
final Widget? gridLoadingElement;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/lazyLoading.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/lazyLoading.html new file mode 100644 index 000000000..0de9f85d3 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/lazyLoading.html @@ -0,0 +1,176 @@ + + + + + + + + lazyLoading property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
lazyLoading
+ +
+ +
+
+
+ +
+
+

lazyLoading property +

+ +
+ + bool + lazyLoading +
final
+ +
+ + + +
+

Implementation

+
final bool lazyLoading;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/listenOnAllSubItems.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/listenOnAllSubItems.html new file mode 100644 index 000000000..c7d171b1b --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/listenOnAllSubItems.html @@ -0,0 +1,176 @@ + + + + + + + + listenOnAllSubItems property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
listenOnAllSubItems
+ +
+ +
+
+
+ +
+
+

listenOnAllSubItems property +

+ +
+ + bool? + listenOnAllSubItems +
final
+ +
+ + + +
+

Implementation

+
final bool? listenOnAllSubItems;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/listeningIncludes.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/listeningIncludes.html new file mode 100644 index 000000000..2d5ad175a --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/listeningIncludes.html @@ -0,0 +1,176 @@ + + + + + + + + listeningIncludes property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
listeningIncludes
+ +
+ +
+
+
+ +
+
+

listeningIncludes property +

+ +
+ + List<String>? + listeningIncludes +
final
+ +
+ + + +
+

Implementation

+
final List<String>? listeningIncludes;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/mainAxisSpacing.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/mainAxisSpacing.html new file mode 100644 index 000000000..e978303b1 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/mainAxisSpacing.html @@ -0,0 +1,176 @@ + + + + + + + + mainAxisSpacing property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
mainAxisSpacing
+ +
+ +
+
+
+ +
+
+

mainAxisSpacing property +

+ +
+ + double + mainAxisSpacing +
final
+ +
+ + + +
+

Implementation

+
final double mainAxisSpacing;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/padding.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/padding.html new file mode 100644 index 000000000..03540750a --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/padding.html @@ -0,0 +1,176 @@ + + + + + + + + padding property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
padding
+ +
+ +
+
+
+ +
+
+

padding property +

+ +
+ + EdgeInsetsGeometry? + padding +
final
+ +
+ + + +
+

Implementation

+
final EdgeInsetsGeometry? padding;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/preloadedColumns.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/preloadedColumns.html new file mode 100644 index 000000000..a9733f8bc --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/preloadedColumns.html @@ -0,0 +1,176 @@ + + + + + + + + preloadedColumns property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
preloadedColumns
+ +
+ +
+
+
+ +
+
+

preloadedColumns property +

+ +
+ + List<String>? + preloadedColumns +
final
+ +
+ + + +
+

Implementation

+
final List<String>? preloadedColumns;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/primary.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/primary.html new file mode 100644 index 000000000..9b2a7e781 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/primary.html @@ -0,0 +1,176 @@ + + + + + + + + primary property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
primary
+ +
+ +
+
+
+ +
+
+

primary property +

+ +
+ + bool? + primary +
final
+ +
+ + + +
+

Implementation

+
final bool? primary;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/query.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/query.html new file mode 100644 index 000000000..a4a7d92f0 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/query.html @@ -0,0 +1,176 @@ + + + + + + + + query property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
query
+ +
+ +
+
+
+ +
+
+

query property +

+ +
+ + QueryBuilder<T> + query +
final
+ +
+ + + +
+

Implementation

+
final sdk.QueryBuilder<T> query;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/queryEmptyElement.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/queryEmptyElement.html new file mode 100644 index 000000000..6aa0ed8b0 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/queryEmptyElement.html @@ -0,0 +1,176 @@ + + + + + + + + queryEmptyElement property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
queryEmptyElement
+ +
+ +
+
+
+ +
+
+

queryEmptyElement property +

+ +
+ + Widget? + queryEmptyElement +
final
+ +
+ + + +
+

Implementation

+
final Widget? queryEmptyElement;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/removedItemBuilder.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/removedItemBuilder.html new file mode 100644 index 000000000..6db1d222a --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/removedItemBuilder.html @@ -0,0 +1,176 @@ + + + + + + + + removedItemBuilder property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
removedItemBuilder
+ +
+ +
+
+
+ +
+
+

removedItemBuilder property +

+ +
+ + ChildBuilder<T>? + removedItemBuilder +
final
+ +
+ + + +
+

Implementation

+
final ChildBuilder<T>? removedItemBuilder;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/reverse.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/reverse.html new file mode 100644 index 000000000..68d1914e4 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/reverse.html @@ -0,0 +1,176 @@ + + + + + + + + reverse property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
reverse
+ +
+ +
+
+
+ +
+
+

reverse property +

+ +
+ + bool + reverse +
final
+ +
+ + + +
+

Implementation

+
final bool reverse;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/scrollController.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/scrollController.html new file mode 100644 index 000000000..3a373ce31 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/scrollController.html @@ -0,0 +1,176 @@ + + + + + + + + scrollController property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
scrollController
+ +
+ +
+
+
+ +
+
+

scrollController property +

+ +
+ + ScrollController? + scrollController +
final
+ +
+ + + +
+

Implementation

+
final ScrollController? scrollController;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/scrollDirection.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/scrollDirection.html new file mode 100644 index 000000000..3387eec4d --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/scrollDirection.html @@ -0,0 +1,176 @@ + + + + + + + + scrollDirection property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
scrollDirection
+ +
+ +
+
+
+ +
+
+

scrollDirection property +

+ +
+ + Axis + scrollDirection +
final
+ +
+ + + +
+

Implementation

+
final Axis scrollDirection;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/scrollPhysics.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/scrollPhysics.html new file mode 100644 index 000000000..6e929e224 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/scrollPhysics.html @@ -0,0 +1,176 @@ + + + + + + + + scrollPhysics property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
scrollPhysics
+ +
+ +
+
+
+ +
+
+

scrollPhysics property +

+ +
+ + ScrollPhysics? + scrollPhysics +
final
+ +
+ + + +
+

Implementation

+
final ScrollPhysics? scrollPhysics;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/shrinkWrap.html b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/shrinkWrap.html new file mode 100644 index 000000000..0e197a11b --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveGridWidget/shrinkWrap.html @@ -0,0 +1,176 @@ + + + + + + + + shrinkWrap property - ParseLiveGridWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
shrinkWrap
+ +
+ +
+
+
+ +
+
+

shrinkWrap property +

+ +
+ + bool + shrinkWrap +
final
+ +
+ + + +
+

Implementation

+
final bool shrinkWrap;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget-class.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget-class.html new file mode 100644 index 000000000..b189bdc32 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget-class.html @@ -0,0 +1,630 @@ + + + + + + + + ParseLiveListElementWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveListElementWidget
+ +
+ +
+
+
+ +
+
+

ParseLiveListElementWidget<T extends ParseObject> class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseLiveListElementWidget({Key? key, StreamGetter<T>? stream, DataGetter<T>? loadedData, DataGetter<T>? preLoadedData, required Animation<double> sizeFactor, required Duration duration, required ChildBuilder<T> childBuilder}) +
+
+ +
const
+
+
+
+ +
+

Properties

+ +
+
+ childBuilder + ChildBuilder<T> + +
+
+ +
final
+ +
+ +
+ duration + Duration + +
+
+ +
final
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
read-onlyinherited
+ +
+ +
+ key + Key? + +
+
+ Controls how one widget replaces another widget in the tree. +
finalinherited
+ +
+ +
+ loadedData + DataGetter<T>? + +
+
+ +
final
+ +
+ +
+ preLoadedData + DataGetter<T>? + +
+
+ +
final
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
read-onlyinherited
+ +
+ +
+ sizeFactor + Animation<double> + +
+
+ +
final
+ +
+ +
+ stream + StreamGetter<T>? + +
+
+ +
final
+ +
+ +
+
+ + +
+

Methods

+
+
+ createElement() + StatefulElement + + + +
+
+ Creates a StatefulElement to manage this widget's location in the tree. +
inherited
+ +
+ +
+ createState() + State<ParseLiveListElementWidget<T>> + + + +
+
+ Creates the mutable state for this widget at a given location in the tree. +
override
+ +
+ +
+ debugDescribeChildren() + List<DiagnosticsNode> + + + +
+
+ Returns a list of DiagnosticsNode objects describing this node's +children. +
inherited
+ +
+ +
+ debugFillProperties(DiagnosticPropertiesBuilder properties) + → void + + + +
+
+ Add additional properties associated with the node. +
inherited
+ +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) + DiagnosticsNode + + + +
+
+ Returns a debug representation of the object that is used by debugging +tools and by DiagnosticsNode.toStringDeep. +
inherited
+ +
+ +
+ toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+ toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug}) + String + + + +
+
+ Returns a string representation of this node and its descendants. +
inherited
+ +
+ +
+ toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) + String + + + +
+
+ Returns a one-line detailed description of the object. +
inherited
+ +
+ +
+ toStringShort() + String + + + +
+
+ A short, textual description of this widget. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + + + + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/ParseLiveListElementWidget.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/ParseLiveListElementWidget.html new file mode 100644 index 000000000..45525f603 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/ParseLiveListElementWidget.html @@ -0,0 +1,172 @@ + + + + + + + + ParseLiveListElementWidget constructor - ParseLiveListElementWidget - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveListElementWidget
+ +
+ +
+
+
+ +
+
+

ParseLiveListElementWidget<T extends ParseObject> constructor +

+ +
+ const + ParseLiveListElementWidget<T extends ParseObject>(
  1. {Key? key,
  2. +
  3. StreamGetter<T>? stream,
  4. +
  5. DataGetter<T>? loadedData,
  6. +
  7. DataGetter<T>? preLoadedData,
  8. +
  9. required Animation<double> sizeFactor,
  10. +
  11. required Duration duration,
  12. +
  13. required ChildBuilder<T> childBuilder}
  14. +
) +
+ + + + + +
+

Implementation

+
const ParseLiveListElementWidget(
+    {Key? key,
+    this.stream,
+    this.loadedData,
+    this.preLoadedData,
+    required this.sizeFactor,
+    required this.duration,
+    required this.childBuilder})
+    : super(key: key);
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/childBuilder.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/childBuilder.html new file mode 100644 index 000000000..7a57e33bb --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/childBuilder.html @@ -0,0 +1,158 @@ + + + + + + + + childBuilder property - ParseLiveListElementWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
childBuilder
+ +
+ +
+
+
+ +
+
+

childBuilder property +

+ +
+ + ChildBuilder<T> + childBuilder +
final
+ +
+ + + +
+

Implementation

+
final ChildBuilder<T> childBuilder;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/createState.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/createState.html new file mode 100644 index 000000000..3de9b3751 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/createState.html @@ -0,0 +1,184 @@ + + + + + + + + createState method - ParseLiveListElementWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
createState
+ +
+ +
+
+
+ +
+
+

createState method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +State<ParseLiveListElementWidget<T>> +createState() + +
override
+ +
+ +
+

Creates the mutable state for this widget at a given location in the tree.

+

Subclasses should override this method to return a newly created +instance of their associated State subclass:

+
@override
+State<SomeWidget> createState() => _SomeWidgetState();
+
+

The framework can call this method multiple times over the lifetime of +a StatefulWidget. For example, if the widget is inserted into the tree +in multiple locations, the framework will create a separate State object +for each location. Similarly, if the widget is removed from the tree and +later inserted into the tree again, the framework will call createState +again to create a fresh State object, simplifying the lifecycle of +State objects.

+
+ + + +
+

Implementation

+
@override
+State<ParseLiveListElementWidget<T>> createState() {
+  return _ParseLiveListElementWidgetState<T>();
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/duration.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/duration.html new file mode 100644 index 000000000..8f0ab55be --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/duration.html @@ -0,0 +1,158 @@ + + + + + + + + duration property - ParseLiveListElementWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
duration
+ +
+ +
+
+
+ +
+
+

duration property +

+ +
+ + Duration + duration +
final
+ +
+ + + +
+

Implementation

+
final Duration duration;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/loadedData.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/loadedData.html new file mode 100644 index 000000000..2ea2ce92b --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/loadedData.html @@ -0,0 +1,158 @@ + + + + + + + + loadedData property - ParseLiveListElementWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
loadedData
+ +
+ +
+
+
+ +
+
+

loadedData property +

+ +
+ + DataGetter<T>? + loadedData +
final
+ +
+ + + +
+

Implementation

+
final DataGetter<T>? loadedData;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/preLoadedData.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/preLoadedData.html new file mode 100644 index 000000000..425533b70 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/preLoadedData.html @@ -0,0 +1,158 @@ + + + + + + + + preLoadedData property - ParseLiveListElementWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
preLoadedData
+ +
+ +
+
+
+ +
+
+

preLoadedData property +

+ +
+ + DataGetter<T>? + preLoadedData +
final
+ +
+ + + +
+

Implementation

+
final DataGetter<T>? preLoadedData;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/sizeFactor.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/sizeFactor.html new file mode 100644 index 000000000..9c73c97b1 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/sizeFactor.html @@ -0,0 +1,158 @@ + + + + + + + + sizeFactor property - ParseLiveListElementWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
sizeFactor
+ +
+ +
+
+
+ +
+
+

sizeFactor property +

+ +
+ + Animation<double> + sizeFactor +
final
+ +
+ + + +
+

Implementation

+
final Animation<double> sizeFactor;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/stream.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/stream.html new file mode 100644 index 000000000..d555fd3fc --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListElementWidget/stream.html @@ -0,0 +1,158 @@ + + + + + + + + stream property - ParseLiveListElementWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
stream
+ +
+ +
+
+
+ +
+
+

stream property +

+ +
+ + StreamGetter<T>? + stream +
final
+ +
+ + + +
+

Implementation

+
final StreamGetter<T>? stream;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget-class.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget-class.html new file mode 100644 index 000000000..69aece7c8 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget-class.html @@ -0,0 +1,782 @@ + + + + + + + + ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveListWidget
+ +
+ +
+
+
+ +
+
+

ParseLiveListWidget<T extends ParseObject> class + +

+ + + + +
+
+ +
Inheritance
+
+ +
+ + + + + + + + + +
+
+ + +
+

Constructors

+ +
+
+ ParseLiveListWidget({Key? key, required QueryBuilder<T> query, Widget? listLoadingElement, Widget? queryEmptyElement, Duration duration = const Duration(milliseconds: 300), ScrollPhysics? scrollPhysics, ScrollController? scrollController, Axis scrollDirection = Axis.vertical, EdgeInsetsGeometry? padding, bool? primary, bool reverse = false, ChildBuilder<T>? childBuilder, bool shrinkWrap = false, ChildBuilder<T>? removedItemBuilder, bool? listenOnAllSubItems, List<String>? listeningIncludes, bool lazyLoading = true, List<String>? preloadedColumns}) +
+
+ +
const
+
+
+
+ +
+

Properties

+ +
+
+ childBuilder + ChildBuilder<T>? + +
+
+ +
final
+ +
+ +
+ duration + Duration + +
+
+ +
final
+ +
+ +
+ hashCode + int + +
+
+ The hash code for this object. +
read-onlyinherited
+ +
+ +
+ key + Key? + +
+
+ Controls how one widget replaces another widget in the tree. +
finalinherited
+ +
+ +
+ lazyLoading + bool + +
+
+ +
final
+ +
+ +
+ listeningIncludes + List<String>? + +
+
+ +
final
+ +
+ +
+ listenOnAllSubItems + bool? + +
+
+ +
final
+ +
+ +
+ listLoadingElement + Widget? + +
+
+ +
final
+ +
+ +
+ padding + EdgeInsetsGeometry? + +
+
+ +
final
+ +
+ +
+ preloadedColumns + List<String>? + +
+
+ +
final
+ +
+ +
+ primary + bool? + +
+
+ +
final
+ +
+ +
+ query + QueryBuilder<T> + +
+
+ +
final
+ +
+ +
+ queryEmptyElement + Widget? + +
+
+ +
final
+ +
+ +
+ removedItemBuilder + ChildBuilder<T>? + +
+
+ +
final
+ +
+ +
+ reverse + bool + +
+
+ +
final
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
read-onlyinherited
+ +
+ +
+ scrollController + ScrollController? + +
+
+ +
final
+ +
+ +
+ scrollDirection + Axis + +
+
+ +
final
+ +
+ +
+ scrollPhysics + ScrollPhysics? + +
+
+ +
final
+ +
+ +
+ shrinkWrap + bool + +
+
+ +
final
+ +
+ +
+
+ + +
+

Methods

+
+
+ createElement() + StatefulElement + + + +
+
+ Creates a StatefulElement to manage this widget's location in the tree. +
inherited
+ +
+ +
+ createState() + State<ParseLiveListWidget<T>> + + + +
+
+ Creates the mutable state for this widget at a given location in the tree. +
override
+ +
+ +
+ debugDescribeChildren() + List<DiagnosticsNode> + + + +
+
+ Returns a list of DiagnosticsNode objects describing this node's +children. +
inherited
+ +
+ +
+ debugFillProperties(DiagnosticPropertiesBuilder properties) + → void + + + +
+
+ Add additional properties associated with the node. +
inherited
+ +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) + DiagnosticsNode + + + +
+
+ Returns a debug representation of the object that is used by debugging +tools and by DiagnosticsNode.toStringDeep. +
inherited
+ +
+ +
+ toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+ toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug}) + String + + + +
+
+ Returns a string representation of this node and its descendants. +
inherited
+ +
+ +
+ toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) + String + + + +
+
+ Returns a one-line detailed description of the object. +
inherited
+ +
+ +
+ toStringShort() + String + + + +
+
+ A short, textual description of this widget. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ + +
+

Static Methods

+
+
+ defaultChildBuilder<T extends ParseObject>(BuildContext context, ParseLiveListElementSnapshot<T> snapshot) + Widget + + + +
+
+ + + +
+ +
+
+ + + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/ParseLiveListWidget.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/ParseLiveListWidget.html new file mode 100644 index 000000000..37ed2e2c8 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/ParseLiveListWidget.html @@ -0,0 +1,207 @@ + + + + + + + + ParseLiveListWidget constructor - ParseLiveListWidget - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseLiveListWidget
+ +
+ +
+
+
+ +
+
+

ParseLiveListWidget<T extends ParseObject> constructor +

+ +
+ const + ParseLiveListWidget<T extends ParseObject>(
  1. {Key? key,
  2. +
  3. required QueryBuilder<T> query,
  4. +
  5. Widget? listLoadingElement,
  6. +
  7. Widget? queryEmptyElement,
  8. +
  9. Duration duration = const Duration(milliseconds: 300),
  10. +
  11. ScrollPhysics? scrollPhysics,
  12. +
  13. ScrollController? scrollController,
  14. +
  15. Axis scrollDirection = Axis.vertical,
  16. +
  17. EdgeInsetsGeometry? padding,
  18. +
  19. bool? primary,
  20. +
  21. bool reverse = false,
  22. +
  23. ChildBuilder<T>? childBuilder,
  24. +
  25. bool shrinkWrap = false,
  26. +
  27. ChildBuilder<T>? removedItemBuilder,
  28. +
  29. bool? listenOnAllSubItems,
  30. +
  31. List<String>? listeningIncludes,
  32. +
  33. bool lazyLoading = true,
  34. +
  35. List<String>? preloadedColumns}
  36. +
) +
+ + + + + +
+

Implementation

+
const ParseLiveListWidget({
+  Key? key,
+  required this.query,
+  this.listLoadingElement,
+  this.queryEmptyElement,
+  this.duration = const Duration(milliseconds: 300),
+  this.scrollPhysics,
+  this.scrollController,
+  this.scrollDirection = Axis.vertical,
+  this.padding,
+  this.primary,
+  this.reverse = false,
+  this.childBuilder,
+  this.shrinkWrap = false,
+  this.removedItemBuilder,
+  this.listenOnAllSubItems,
+  this.listeningIncludes,
+  this.lazyLoading = true,
+  this.preloadedColumns,
+}) : super(key: key);
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/childBuilder.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/childBuilder.html new file mode 100644 index 000000000..a609a7a2f --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/childBuilder.html @@ -0,0 +1,171 @@ + + + + + + + + childBuilder property - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
childBuilder
+ +
+ +
+
+
+ +
+
+

childBuilder property +

+ +
+ + ChildBuilder<T>? + childBuilder +
final
+ +
+ + + +
+

Implementation

+
final ChildBuilder<T>? childBuilder;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/createState.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/createState.html new file mode 100644 index 000000000..5bf72e9b3 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/createState.html @@ -0,0 +1,195 @@ + + + + + + + + createState method - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
createState
+ +
+ +
+
+
+ +
+
+

createState method +

+ +
+ +
+
    +
  1. @override
  2. +
+
+ +State<ParseLiveListWidget<T>> +createState() + +
override
+ +
+ +
+

Creates the mutable state for this widget at a given location in the tree.

+

Subclasses should override this method to return a newly created +instance of their associated State subclass:

+
@override
+State<SomeWidget> createState() => _SomeWidgetState();
+
+

The framework can call this method multiple times over the lifetime of +a StatefulWidget. For example, if the widget is inserted into the tree +in multiple locations, the framework will create a separate State object +for each location. Similarly, if the widget is removed from the tree and +later inserted into the tree again, the framework will call createState +again to create a fresh State object, simplifying the lifecycle of +State objects.

+
+ + + +
+

Implementation

+
@override
+State<ParseLiveListWidget<T>> createState() => _ParseLiveListWidgetState<T>();
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/defaultChildBuilder.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/defaultChildBuilder.html new file mode 100644 index 000000000..be3d38a57 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/defaultChildBuilder.html @@ -0,0 +1,194 @@ + + + + + + + + defaultChildBuilder method - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
defaultChildBuilder
+ +
+ +
+
+
+ +
+
+

defaultChildBuilder<T extends ParseObject> static method +

+ +
+ + +Widget +defaultChildBuilder<T extends ParseObject>(
  1. BuildContext context,
  2. +
  3. ParseLiveListElementSnapshot<T> snapshot
  4. +
) + + + +
+ + + + +
+

Implementation

+
static Widget defaultChildBuilder<T extends sdk.ParseObject>(
+    BuildContext context, sdk.ParseLiveListElementSnapshot<T> snapshot) {
+  Widget child;
+  if (snapshot.failed) {
+    child = const Text('something went wrong!');
+  } else if (snapshot.hasData) {
+    child = ListTile(
+      title: Text(
+        snapshot.loadedData?.get<String>(sdk.keyVarObjectId) ??
+            'Missing Data!',
+      ),
+    );
+  } else {
+    child = const ListTile(
+      leading: CircularProgressIndicator(),
+    );
+  }
+  return child;
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/duration.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/duration.html new file mode 100644 index 000000000..e4f5e595c --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/duration.html @@ -0,0 +1,171 @@ + + + + + + + + duration property - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
duration
+ +
+ +
+
+
+ +
+
+

duration property +

+ +
+ + Duration + duration +
final
+ +
+ + + +
+

Implementation

+
final Duration duration;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/lazyLoading.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/lazyLoading.html new file mode 100644 index 000000000..6f9dab18e --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/lazyLoading.html @@ -0,0 +1,171 @@ + + + + + + + + lazyLoading property - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
lazyLoading
+ +
+ +
+
+
+ +
+
+

lazyLoading property +

+ +
+ + bool + lazyLoading +
final
+ +
+ + + +
+

Implementation

+
final bool lazyLoading;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/listLoadingElement.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/listLoadingElement.html new file mode 100644 index 000000000..b18c01243 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/listLoadingElement.html @@ -0,0 +1,171 @@ + + + + + + + + listLoadingElement property - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
listLoadingElement
+ +
+ +
+
+
+ +
+
+

listLoadingElement property +

+ +
+ + Widget? + listLoadingElement +
final
+ +
+ + + +
+

Implementation

+
final Widget? listLoadingElement;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/listenOnAllSubItems.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/listenOnAllSubItems.html new file mode 100644 index 000000000..fe8d27eea --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/listenOnAllSubItems.html @@ -0,0 +1,171 @@ + + + + + + + + listenOnAllSubItems property - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
listenOnAllSubItems
+ +
+ +
+
+
+ +
+
+

listenOnAllSubItems property +

+ +
+ + bool? + listenOnAllSubItems +
final
+ +
+ + + +
+

Implementation

+
final bool? listenOnAllSubItems;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/listeningIncludes.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/listeningIncludes.html new file mode 100644 index 000000000..1754b78d6 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/listeningIncludes.html @@ -0,0 +1,171 @@ + + + + + + + + listeningIncludes property - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
listeningIncludes
+ +
+ +
+
+
+ +
+
+

listeningIncludes property +

+ +
+ + List<String>? + listeningIncludes +
final
+ +
+ + + +
+

Implementation

+
final List<String>? listeningIncludes;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/padding.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/padding.html new file mode 100644 index 000000000..933c5378b --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/padding.html @@ -0,0 +1,171 @@ + + + + + + + + padding property - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
padding
+ +
+ +
+
+
+ +
+
+

padding property +

+ +
+ + EdgeInsetsGeometry? + padding +
final
+ +
+ + + +
+

Implementation

+
final EdgeInsetsGeometry? padding;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/preloadedColumns.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/preloadedColumns.html new file mode 100644 index 000000000..5e0ac6453 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/preloadedColumns.html @@ -0,0 +1,171 @@ + + + + + + + + preloadedColumns property - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
preloadedColumns
+ +
+ +
+
+
+ +
+
+

preloadedColumns property +

+ +
+ + List<String>? + preloadedColumns +
final
+ +
+ + + +
+

Implementation

+
final List<String>? preloadedColumns;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/primary.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/primary.html new file mode 100644 index 000000000..295f7dad6 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/primary.html @@ -0,0 +1,171 @@ + + + + + + + + primary property - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
primary
+ +
+ +
+
+
+ +
+
+

primary property +

+ +
+ + bool? + primary +
final
+ +
+ + + +
+

Implementation

+
final bool? primary;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/query.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/query.html new file mode 100644 index 000000000..23661b9fb --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/query.html @@ -0,0 +1,171 @@ + + + + + + + + query property - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
query
+ +
+ +
+
+
+ +
+
+

query property +

+ +
+ + QueryBuilder<T> + query +
final
+ +
+ + + +
+

Implementation

+
final sdk.QueryBuilder<T> query;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/queryEmptyElement.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/queryEmptyElement.html new file mode 100644 index 000000000..c1301c738 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/queryEmptyElement.html @@ -0,0 +1,171 @@ + + + + + + + + queryEmptyElement property - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
queryEmptyElement
+ +
+ +
+
+
+ +
+
+

queryEmptyElement property +

+ +
+ + Widget? + queryEmptyElement +
final
+ +
+ + + +
+

Implementation

+
final Widget? queryEmptyElement;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/removedItemBuilder.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/removedItemBuilder.html new file mode 100644 index 000000000..eb319013a --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/removedItemBuilder.html @@ -0,0 +1,171 @@ + + + + + + + + removedItemBuilder property - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
removedItemBuilder
+ +
+ +
+
+
+ +
+
+

removedItemBuilder property +

+ +
+ + ChildBuilder<T>? + removedItemBuilder +
final
+ +
+ + + +
+

Implementation

+
final ChildBuilder<T>? removedItemBuilder;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/reverse.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/reverse.html new file mode 100644 index 000000000..798aff4c1 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/reverse.html @@ -0,0 +1,171 @@ + + + + + + + + reverse property - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
reverse
+ +
+ +
+
+
+ +
+
+

reverse property +

+ +
+ + bool + reverse +
final
+ +
+ + + +
+

Implementation

+
final bool reverse;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/scrollController.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/scrollController.html new file mode 100644 index 000000000..6d6d1fefc --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/scrollController.html @@ -0,0 +1,171 @@ + + + + + + + + scrollController property - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
scrollController
+ +
+ +
+
+
+ +
+
+

scrollController property +

+ +
+ + ScrollController? + scrollController +
final
+ +
+ + + +
+

Implementation

+
final ScrollController? scrollController;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/scrollDirection.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/scrollDirection.html new file mode 100644 index 000000000..d0f1f57c7 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/scrollDirection.html @@ -0,0 +1,171 @@ + + + + + + + + scrollDirection property - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
scrollDirection
+ +
+ +
+
+
+ +
+
+

scrollDirection property +

+ +
+ + Axis + scrollDirection +
final
+ +
+ + + +
+

Implementation

+
final Axis scrollDirection;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/scrollPhysics.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/scrollPhysics.html new file mode 100644 index 000000000..9e39619e0 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/scrollPhysics.html @@ -0,0 +1,171 @@ + + + + + + + + scrollPhysics property - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
scrollPhysics
+ +
+ +
+
+
+ +
+
+

scrollPhysics property +

+ +
+ + ScrollPhysics? + scrollPhysics +
final
+ +
+ + + +
+

Implementation

+
final ScrollPhysics? scrollPhysics;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/shrinkWrap.html b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/shrinkWrap.html new file mode 100644 index 000000000..91c1d3b46 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseLiveListWidget/shrinkWrap.html @@ -0,0 +1,171 @@ + + + + + + + + shrinkWrap property - ParseLiveListWidget class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
shrinkWrap
+ +
+ +
+
+
+ +
+
+

shrinkWrap property +

+ +
+ + bool + shrinkWrap +
final
+ +
+ + + +
+

Implementation

+
final bool shrinkWrap;
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseNotification-class.html b/flutter/flutter_parse_sdk_flutter/ParseNotification-class.html new file mode 100644 index 000000000..6546213ff --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseNotification-class.html @@ -0,0 +1,453 @@ + + + + + + + + ParseNotification class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseNotification
+ +
+ +
+
+
+ +
+
+

ParseNotification class + +

+ + + + + + +
+

Constructors

+ +
+
+ ParseNotification() +
+
+ +
factory
+
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
read-onlyinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
read-onlyinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ showNotification(dynamic title) + → void + + + +
+
+ Show notification + + +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ +
+

Static Properties

+ +
+
+ instance + ParseNotification + +
+
+ +
final
+ +
+ +
+ keyNotificationChannelName + String + +
+
+ +
read / write
+ +
+ +
+
+ + + + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseNotification/ParseNotification.html b/flutter/flutter_parse_sdk_flutter/ParseNotification/ParseNotification.html new file mode 100644 index 000000000..2f7803ef3 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseNotification/ParseNotification.html @@ -0,0 +1,148 @@ + + + + + + + + ParseNotification constructor - ParseNotification - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParseNotification
+ +
+ +
+
+
+ +
+
+

ParseNotification constructor +

+ +
+ + ParseNotification() +
+ + + + + +
+

Implementation

+
factory ParseNotification() {
+  return instance;
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseNotification/instance.html b/flutter/flutter_parse_sdk_flutter/ParseNotification/instance.html new file mode 100644 index 000000000..0042fc0ab --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseNotification/instance.html @@ -0,0 +1,147 @@ + + + + + + + + instance property - ParseNotification class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
instance
+ +
+ +
+
+
+ +
+
+

instance property +

+ +
+ + ParseNotification + instance +
final
+ +
+ + + +
+

Implementation

+
static final ParseNotification instance = ParseNotification._internal();
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseNotification/keyNotificationChannelName.html b/flutter/flutter_parse_sdk_flutter/ParseNotification/keyNotificationChannelName.html new file mode 100644 index 000000000..73918c5a8 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseNotification/keyNotificationChannelName.html @@ -0,0 +1,147 @@ + + + + + + + + keyNotificationChannelName property - ParseNotification class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyNotificationChannelName
+ +
+ +
+
+
+ +
+
+

keyNotificationChannelName property +

+ +
+ + String + keyNotificationChannelName +
read / write
+ +
+ + + +
+

Implementation

+
static String keyNotificationChannelName = "parse";
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParseNotification/showNotification.html b/flutter/flutter_parse_sdk_flutter/ParseNotification/showNotification.html new file mode 100644 index 000000000..87e2354fa --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParseNotification/showNotification.html @@ -0,0 +1,161 @@ + + + + + + + + showNotification method - ParseNotification class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
showNotification
+ +
+ +
+
+
+ +
+
+

showNotification method +

+ +
+ + +void +showNotification(
  1. dynamic title
  2. +
) + + + +
+ +
+

Show notification

+
+ + + +
+

Implementation

+
void showNotification(title) {
+  AwesomeNotifications().createNotification(
+      content: NotificationContent(
+    id: Random().nextInt(1000),
+    channelKey: keyNotificationChannelName,
+    title: title,
+  ));
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParsePush-class.html b/flutter/flutter_parse_sdk_flutter/ParsePush-class.html new file mode 100644 index 000000000..1a4d154f1 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParsePush-class.html @@ -0,0 +1,521 @@ + + + + + + + + ParsePush class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParsePush
+ +
+ +
+
+
+ +
+
+

ParsePush class + +

+ + + + + + +
+

Constructors

+ +
+
+ ParsePush() +
+
+ +
factory
+
+
+
+ +
+

Properties

+ +
+
+ hashCode + int + +
+
+ The hash code for this object. +
read-onlyinherited
+ +
+ +
+ runtimeType + Type + +
+
+ A representation of the runtime type of the object. +
read-onlyinherited
+ +
+ +
+
+ + +
+

Methods

+
+
+ getSubscribedChannels() + Future<List> + + + +
+
+ Returns an <List> containing all the channel names this device is subscribed to + + +
+ +
+ initialize(dynamic firebaseMessaging, {String? vapidKey}) + Future<void> + + + +
+
+ Initialize ParsePush; for web a vapidKey is required. + + +
+ +
+ noSuchMethod(Invocation invocation) + → dynamic + + + +
+
+ Invoked when a nonexistent method or property is accessed. +
inherited
+ +
+ +
+ onMessage(dynamic message) + → void + + + +
+
+ Handle push notification message + + +
+ +
+ subscribeToChannel(String value) + Future<void> + + + +
+
+ Subscribes the device to a channel of push notifications + + +
+ +
+ toString() + String + + + +
+
+ A string representation of this object. +
inherited
+ +
+ +
+ unsubscribeFromChannel(String value) + Future<void> + + + +
+
+ Unsubscribes the device to a channel of push notifications + + +
+ +
+
+ +
+

Operators

+
+
+ operator ==(Object other) + bool + + + +
+
+ The equality operator. +
inherited
+ +
+ +
+
+ +
+

Static Properties

+ +
+
+ instance + ParsePush + +
+
+ +
final
+ +
+ +
+ keyPushType + String + +
+
+ +
read / write
+ +
+ +
+ keyType + String + +
+
+ +
read / write
+ +
+ +
+
+ + + + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParsePush/ParsePush.html b/flutter/flutter_parse_sdk_flutter/ParsePush/ParsePush.html new file mode 100644 index 000000000..f437f52e1 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParsePush/ParsePush.html @@ -0,0 +1,153 @@ + + + + + + + + ParsePush constructor - ParsePush - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
ParsePush
+ +
+ +
+
+
+ +
+
+

ParsePush constructor +

+ +
+ + ParsePush() +
+ + + + + +
+

Implementation

+
factory ParsePush() {
+  return instance;
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParsePush/getSubscribedChannels.html b/flutter/flutter_parse_sdk_flutter/ParsePush/getSubscribedChannels.html new file mode 100644 index 000000000..e61902a16 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParsePush/getSubscribedChannels.html @@ -0,0 +1,163 @@ + + + + + + + + getSubscribedChannels method - ParsePush class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
getSubscribedChannels
+ +
+ +
+
+
+ +
+
+

getSubscribedChannels method +

+ +
+ + +Future<List> +getSubscribedChannels() + + + +
+ +
+

Returns an <List> containing all the channel names this device is subscribed to

+
+ + + +
+

Implementation

+
Future<List<dynamic>> getSubscribedChannels() async {
+  sdk.ParseInstallation parseInstallation =
+      await sdk.ParseInstallation.currentInstallation();
+
+  return await parseInstallation.getSubscribedChannels();
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParsePush/initialize.html b/flutter/flutter_parse_sdk_flutter/ParsePush/initialize.html new file mode 100644 index 000000000..1d014720a --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParsePush/initialize.html @@ -0,0 +1,178 @@ + + + + + + + + initialize method - ParsePush class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
initialize
+ +
+ +
+
+
+ +
+
+

initialize method +

+ +
+ + +Future<void> +initialize(
  1. dynamic firebaseMessaging,
  2. +
  3. {String? vapidKey}
  4. +
) + + + +
+ +
+

Initialize ParsePush; for web a vapidKey is required.

+
+ + + +
+

Implementation

+
Future<void> initialize(
+  firebaseMessaging, {
+  String? vapidKey,
+}) async {
+  // Get Google Cloud Messaging (GCM) token
+  firebaseMessaging
+      .getToken(vapidKey: vapidKey)
+      .asStream()
+      .listen((event) async {
+    // Set token in installation
+    sdk.ParseInstallation parseInstallation =
+        await sdk.ParseInstallation.currentInstallation();
+
+    parseInstallation.deviceToken = event;
+    parseInstallation.set(keyPushType, keyType);
+
+    await parseInstallation.save();
+  });
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParsePush/instance.html b/flutter/flutter_parse_sdk_flutter/ParsePush/instance.html new file mode 100644 index 000000000..2cad22a3f --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParsePush/instance.html @@ -0,0 +1,152 @@ + + + + + + + + instance property - ParsePush class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
instance
+ +
+ +
+
+
+ +
+
+

instance property +

+ +
+ + ParsePush + instance +
final
+ +
+ + + +
+

Implementation

+
static final ParsePush instance = ParsePush._internal();
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParsePush/keyPushType.html b/flutter/flutter_parse_sdk_flutter/ParsePush/keyPushType.html new file mode 100644 index 000000000..a4d1273d8 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParsePush/keyPushType.html @@ -0,0 +1,152 @@ + + + + + + + + keyPushType property - ParsePush class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyPushType
+ +
+ +
+
+
+ +
+
+

keyPushType property +

+ +
+ + String + keyPushType +
read / write
+ +
+ + + +
+

Implementation

+
static String keyPushType = 'pushType';
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParsePush/keyType.html b/flutter/flutter_parse_sdk_flutter/ParsePush/keyType.html new file mode 100644 index 000000000..72c0aac20 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParsePush/keyType.html @@ -0,0 +1,152 @@ + + + + + + + + keyType property - ParsePush class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
keyType
+ +
+ +
+
+
+ +
+
+

keyType property +

+ +
+ + String + keyType +
read / write
+ +
+ + + +
+

Implementation

+
static String keyType = "gcm";
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParsePush/onMessage.html b/flutter/flutter_parse_sdk_flutter/ParsePush/onMessage.html new file mode 100644 index 000000000..735f14c61 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParsePush/onMessage.html @@ -0,0 +1,171 @@ + + + + + + + + onMessage method - ParsePush class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
onMessage
+ +
+ +
+
+
+ +
+
+

onMessage method +

+ +
+ + +void +onMessage(
  1. dynamic message
  2. +
) + + + +
+ +
+

Handle push notification message

+
+ + + +
+

Implementation

+
void onMessage(message) {
+  String pushId = message.data["push_id"] ?? "";
+  String timestamp = message.data["time"] ?? "";
+  String dataString = message.data["data"] ?? "";
+  String channel = message.data["channel"] ?? "";
+
+  Map<String, dynamic>? data;
+  try {
+    data = json.decode(dataString);
+  } catch (_) {}
+
+  _handlePush(pushId, timestamp, channel, data);
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParsePush/subscribeToChannel.html b/flutter/flutter_parse_sdk_flutter/ParsePush/subscribeToChannel.html new file mode 100644 index 000000000..6af7385a3 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParsePush/subscribeToChannel.html @@ -0,0 +1,164 @@ + + + + + + + + subscribeToChannel method - ParsePush class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
subscribeToChannel
+ +
+ +
+
+
+ +
+
+

subscribeToChannel method +

+ +
+ + +Future<void> +subscribeToChannel(
  1. String value
  2. +
) + + + +
+ +
+

Subscribes the device to a channel of push notifications

+
+ + + +
+

Implementation

+
Future<void> subscribeToChannel(String value) async {
+  sdk.ParseInstallation parseInstallation =
+      await sdk.ParseInstallation.currentInstallation();
+
+  await parseInstallation.subscribeToChannel(value);
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/ParsePush/unsubscribeFromChannel.html b/flutter/flutter_parse_sdk_flutter/ParsePush/unsubscribeFromChannel.html new file mode 100644 index 000000000..93ec572c1 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/ParsePush/unsubscribeFromChannel.html @@ -0,0 +1,164 @@ + + + + + + + + unsubscribeFromChannel method - ParsePush class - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
unsubscribeFromChannel
+ +
+ +
+
+
+ +
+
+

unsubscribeFromChannel method +

+ +
+ + +Future<void> +unsubscribeFromChannel(
  1. String value
  2. +
) + + + +
+ +
+

Unsubscribes the device to a channel of push notifications

+
+ + + +
+

Implementation

+
Future<void> unsubscribeFromChannel(String value) async {
+  sdk.ParseInstallation parseInstallation =
+      await sdk.ParseInstallation.currentInstallation();
+
+  await parseInstallation.unsubscribeFromChannel(value);
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/StreamGetter.html b/flutter/flutter_parse_sdk_flutter/StreamGetter.html new file mode 100644 index 000000000..257dc0c27 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/StreamGetter.html @@ -0,0 +1,291 @@ + + + + + + + + StreamGetter typedef - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
StreamGetter
+ +
+ +
+
+
+ +
+
+

StreamGetter<T extends ParseObject> typedef + +

+ +
+ StreamGetter<T extends ParseObject> = + Stream<T> Function() + +
+ + + + +
+

Implementation

+
typedef StreamGetter<T extends sdk.ParseObject> = Stream<T> Function();
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/dbDirectory.html b/flutter/flutter_parse_sdk_flutter/dbDirectory.html new file mode 100644 index 000000000..5569570a3 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/dbDirectory.html @@ -0,0 +1,299 @@ + + + + + + + + dbDirectory function - flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
dbDirectory
+ +
+ +
+
+
+ +
+
+

dbDirectory function + +

+ +
+ + +Future<String> +dbDirectory() + + + +
+ + + + +
+

Implementation

+
Future<String> dbDirectory() async {
+  String dbDirectory = '';
+  dbDirectory = await CoreStoreDirectory().getDatabaseDirectory();
+  return path.join('$dbDirectory/parse', 'parse.db');
+}
+
+ + +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/flutter_parse_sdk_flutter/flutter_parse_sdk_flutter-library.html b/flutter/flutter_parse_sdk_flutter/flutter_parse_sdk_flutter-library.html new file mode 100644 index 000000000..3010abe40 --- /dev/null +++ b/flutter/flutter_parse_sdk_flutter/flutter_parse_sdk_flutter-library.html @@ -0,0 +1,2228 @@ + + + + + + + + flutter_parse_sdk_flutter library - Dart API + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
flutter_parse_sdk_flutter
+ +
+ +
+
+
+ +
+ +
+

flutter_parse_sdk_flutter library + +

+ + + + +
+

Classes

+ +
+
+ CoreStore + +
+
+ +
+ +
+ CoreStoreMemoryImp + +
+
+ +
+ +
+ CoreStoreSembastImp + +
+
+ +
+ +
+ CoreStoreSharedPrefsImp + +
+
+ +
+ +
+ LiveQuery + +
+
+ +
+ +
+ LiveQueryClient + +
+
+ +
+ +
+ LiveQueryReconnectingController + +
+
+ +
+ +
+ Parse + +
+
+ +
+ +
+ ParseACL + +
+
+ ParseACL is used to control which users can access or modify a particular object +ParseObject can have its own ParseACL +You can grant read and write permissions separately to specific users + or you can grant permissions to "the public" so that, for example, any user could read a particular object but +only a particular set of users could write to that object +
+ +
+ ParseBase + +
+
+ +
+ +
+ ParseClient + +
+
+ +
+ +
+ ParseCloneable + +
+
+ Creates method which can be used to deep clone objects +
+ +
+ ParseCloudFunction + +
+
+ +
+ +
+ ParseConfig + +
+
+ +
+ +
+ ParseConnectivityProvider + +
+
+ +
+ +
+ ParseCoreData + +
+
+ Singleton class that defines all user keys and data +
+ +
+ ParseDioClient + +
+
+ +
+ +
+ ParseError + +
+
+ ParseException is used in ParseResult to inform the user of the exception +
+ +
+ ParseFile + +
+
+ +
+ +
+ ParseFileBase + +
+
+ +
+ +
+ ParseGeoPoint + +
+
+ +
+ +
+ ParseHTTPClient + +
+
+ +
+ +
+ ParseInstallation + +
+
+ +
+ +
+ ParseLiveElement<T extends ParseObject> + +
+
+ +
+ +
+ ParseLiveGridWidget<T extends ParseObject> + +
+
+ +
+ +
+ ParseLiveList<T extends ParseObject> + +
+
+ +
+ +
+ ParseLiveListAddEvent<T extends ParseObject> + +
+
+ +
+ +
+ ParseLiveListDeleteEvent<T extends ParseObject> + +
+
+ +
+ +
+ ParseLiveListElement<T extends ParseObject> + +
+
+ +
+ +
+ ParseLiveListElementSnapshot<T extends ParseObject> + +
+
+ +
+ +
+ ParseLiveListElementWidget<T extends ParseObject> + +
+
+ +
+ +
+ ParseLiveListEvent<T extends ParseObject> + +
+
+ +
+ +
+ ParseLiveListUpdateEvent<T extends ParseObject> + +
+
+ +
+ +
+ ParseLiveListWidget<T extends ParseObject> + +
+
+ +
+ +
+ ParseNetworkByteResponse + +
+
+ +
+ +
+ ParseNetworkOptions + +
+
+ +
+ +
+ ParseNetworkResponse + +
+
+ +
+ +
+ ParseNotification + +
+
+ +
+ +
+ ParseObject + +
+
+ ParseObject is a local representation of data that can be saved and +retrieved from the Parse cloud. +
+ +
+ ParsePush + +
+
+ +
+ +
+ ParseRelation<T extends ParseObject> + +
+
+ +
+ +
+ ParseResponse + +
+
+ +
+ +
+ ParseSession + +
+
+ +
+ +
+ ParseSubClassHandler + +
+
+ +
+ +
+ ParseUser + +
+
+ +
+ +
+ ParseWebFile + +
+
+ +
+ +
+ PathKey + +
+
+ +
+ +
+ QueryBuilder<T extends ParseObject> + +
+
+ Class to create complex queries +
+ +
+ Subscription<T extends ParseObject> + +
+
+ +
+ +
+
+ + + +
+

Constants

+ +
+
+ keyAppIdentifier + → const String + + +
+
+ + + +
+ 'appIdentifier' +
+
+ +
+ keyAppName + → const String + + +
+
+ + + +
+ 'appName' +
+
+ +
+ keyAppVersion + → const String + + +
+
+ + + +
+ 'appVersion' +
+
+ +
+ keyClassInstallation + → const String + + +
+
+ + + +
+ '_Installation' +
+
+ +
+ keyClassMain + → const String + + +
+
+ + + +
+ 'ParseMain' +
+
+ +
+ keyClassSession + → const String + + +
+
+ + + +
+ '_Session' +
+
+ +
+ keyClassUser + → const String + + +
+
+ + + +
+ '_User' +
+
+ +
+ keyCode + → const String + + +
+
+ + + +
+ 'code' +
+
+ +
+ keyDeviceToken + → const String + + +
+
+ + + +
+ 'deviceToken' +
+
+ +
+ keyDeviceType + → const String + + +
+
+ + + +
+ 'deviceType' +
+
+ +
+ keyEndPointAggregate + → const String + + +
+
+ + + +
+ '/aggregate/' +
+
+ +
+ keyEndPointClasses + → const String + + +
+
+ + + +
+ '/classes/' +
+
+ +
+ keyEndPointHealth + → const String + + +
+
+ + + +
+ '/health' +
+
+ +
+ keyEndPointInstallations + → const String + + +
+
+ + + +
+ '/installations' +
+
+ +
+ keyEndPointLogin + → const String + + +
+
+ + + +
+ '/login' +
+
+ +
+ keyEndPointLogout + → const String + + +
+
+ + + +
+ '/logout' +
+
+ +
+ keyEndPointRequestPasswordReset + → const String + + +
+
+ + + +
+ '/requestPasswordReset' +
+
+ +
+ keyEndPointSessions + → const String + + +
+
+ + + +
+ '/sessions' +
+
+ +
+ keyEndPointUserName + → const String + + +
+
+ + + +
+ '/users/me' +
+
+ +
+ keyEndPointUsers + → const String + + +
+
+ + + +
+ '/users' +
+
+ +
+ keyEndPointVerificationEmail + → const String + + +
+
+ + + +
+ '/verificationEmailRequest' +
+
+ +
+ keyError + → const String + + +
+
+ + + +
+ 'error' +
+
+ +
+ keyFile + → const String + + +
+
+ + + +
+ 'File' +
+
+ +
+ keyFileClassname + → const String + + +
+
+ + + +
+ 'ParseFile' +
+
+ +
+ keyGeoPoint + → const String + + +
+
+ + + +
+ 'GeoPoint' +
+
+ +
+ keyHeaderApplicationId + → const String + + +
+
+ + + +
+ 'X-Parse-Application-Id' +
+
+ +
+ keyHeaderClientKey + → const String + + +
+
+ + + +
+ 'X-Parse-Client-Key' +
+
+ +
+ keyHeaderContentType + → const String + + +
+
+ + + +
+ 'content-type' +
+
+ +
+ keyHeaderContentTypeJson + → const String + + +
+
+ + + +
+ 'application/json' +
+
+ +
+ keyHeaderInstallationId + → const String + + +
+
+ + + +
+ 'X-Parse-Installation-Id' +
+
+ +
+ keyHeaderMasterKey + → const String + + +
+
+ + + +
+ 'X-Parse-Master-Key' +
+
+ +
+ keyHeaderRevocableSession + → const String + + +
+
+ + + +
+ 'X-Parse-Revocable-Session' +
+
+ +
+ keyHeaderSessionToken + → const String + + +
+
+ + + +
+ 'X-Parse-Session-Token' +
+
+ +
+ keyHeaderUserAgent + → const String + + +
+
+ + + +
+ 'user-agent' +
+
+ +
+ keyInstallationId + → const String + + +
+
+ + + +
+ 'installationId' +
+
+ +
+ keyLatitude + → const String + + +
+
+ + + +
+ 'latitude' +
+
+ +
+ keyLibraryName + → const String + + +
+
+ + + +
+ 'Flutter Parse SDK' +
+
+ +
+ keyLocaleIdentifier + → const String + + +
+
+ + + +
+ 'localeIdentifier' +
+
+ +
+ keyLongitude + → const String + + +
+
+ + + +
+ 'longitude' +
+
+ +
+ keyParamSessionToken + → const String + + +
+
+ + + +
+ 'sessionToken' +
+
+ +
+ keyParseStoreBase + → const String + + +
+
+ + + +
+ 'flutter_parse_sdk_' +
+
+ +
+ keyParseStoreInstallation + → const String + + +
+
+ + + +
+ '${keyParseStoreBase}installation' +
+
+ +
+ keyParseStoreUser + → const String + + +
+
+ + + +
+ '${keyParseStoreBase}user' +
+
+ +
+ keyParseVersion + → const String + + +
+
+ + + +
+ 'parseVersion' +
+
+ +
+ keyRelation + → const String + + +
+
+ + + +
+ 'Relation' +
+
+ +
+ keySdkVersion + → const String + + +
+
+ + + +
+ '5.1.1' +
+
+ +
+ keyTimeZone + → const String + + +
+
+ + + +
+ 'timeZone' +
+
+ +
+ keyVarAcl + → const String + + +
+
+ + + +
+ 'ACL' +
+
+ +
+ keyVarAuthData + → const String + + +
+
+ + + +
+ 'authData' +
+
+ +
+ keyVarClassName + → const String + + +
+
+ + + +
+ 'className' +
+
+ +
+ keyVarCreatedAt + → const String + + +
+
+ + + +
+ 'createdAt' +
+
+ +
+ keyVarCreatedWith + → const String + + +
+
+ + + +
+ 'createdWith' +
+
+ +
+ keyVarEmail + → const String + + +
+
+ + + +
+ 'email' +
+
+ +
+ keyVarExpiresAt + → const String + + +
+
+ + + +
+ 'expiresAt' +
+
+ +
+ keyVarInstallationId + → const String + + +
+
+ + + +
+ 'installationId' +
+
+ +
+ keyVarName + → const String + + +
+
+ + + +
+ 'name' +
+
+ +
+ keyVarObjectId + → const String + + +
+
+ + + +
+ 'objectId' +
+
+ +
+ keyVarPassword + → const String + + +
+
+ + + +
+ 'password' +
+
+ +
+ keyVarRestricted + → const String + + +
+
+ + + +
+ 'restricted' +
+
+ +
+ keyVarSessionToken + → const String + + +
+
+ + + +
+ 'sessionToken' +
+
+ +
+ keyVarUpdatedAt + → const String + + +
+
+ + + +
+ 'updatedAt' +
+
+ +
+ keyVarURL + → const String + + +
+
+ + + +
+ 'url' +
+
+ +
+ keyVarUser + → const String + + +
+
+ + + +
+ 'user' +
+
+ +
+ keyVarUsername + → const String + + +
+
+ + + +
+ 'username' +
+
+ +
+ parseIsWeb + → const bool + + +
+
+ + + +
+ identical(0, 0.0) +
+
+ +
+
+ + +
+

Functions

+ +
+
+ apple(String token, String id) + Map<String, dynamic> + + + +
+
+ + + +
+ +
+ batchRequest(List requests, List<ParseObject> objects, {ParseClient? client, bool? debug}) + Future<ParseResponse> + + + +
+
+ + + +
+ +
+ buildErrorResponse(ParseResponse response, ParseNetworkResponse apiResponse) + ParseResponse + + + +
+
+ Handles any errors returned in response + + +
+ +
+ buildParseResponseWithException(Exception exception) + ParseResponse + + + +
+
+ Handles exception instead of throwing an exception + + +
+ +
+ buildSuccessResponseWithNoResults(ParseResponse response, int code, String value) + ParseResponse + + + +
+
+ Handles successful responses with no results + + +
+ +
+ concatenateArray(List<String> list) + String + + + +
+
+ Convert list of strings to a string with commas + + +
+ +
+ convertValueToCorrectType(dynamic value) + → dynamic + + + +
+
+ Converts the object to the correct value for JSON, + + +
+ +
+ dateTimeEncoder(dynamic item) + → dynamic + + + +
+
+ Custom encoder for DateTime + + +
+ +
+ dbDirectory() + Future<String> + + + +
+
+ + + +
+ +
+ encodeObject(String className, String objectId) + Map<String, String> + + + +
+
+ + + +
+ +
+ facebook(String token, String id, DateTime expires) + Map<String, dynamic> + + + +
+
+ + + +
+ +
+ getCustomUri(ParseClient client, String path, {Map<String, dynamic>? queryParams, String? query}) + Uri + + + +
+
+ Sanitises a url + + +
+ +
+ getSanitisedUri(ParseClient client, String pathToAppend, {Map<String, dynamic>? queryParams, String? query}) + Uri + + + +
+
+ Sanitises a url + + +
+ +
+ getXXTeaSembastCodec({required String password}) + SembastCodec + + + +
+
+ Create a codec to use when opening an encrypted sembast database + + +
+ +
+ google(String token, String id, String idToken) + Map<String, dynamic> + + + +
+
+ + + +
+ +
+ handleException(Exception exception, ParseApiRQ type, bool debug, String className) + ParseResponse + + + +
+
+ Handles an API response and logs data if bool debug is enabled + + +
+ +
+ handleResponse<T>(dynamic object, ParseNetworkResponse response, ParseApiRQ type, bool debug, String className) + ParseResponse + + + +
+
+ Handles an API response and logs data if bool debug is enabled + + +
+ +
+ isDebugEnabled({bool? objectLevelDebug}) + bool + + + +
+
+ Checks whether debug is enabled + + +
+ +
+ isSuccessButNoResults(ParseNetworkResponse apiResponse) + bool + + + +
+
+ + + +
+ +
+ isUnsuccessfulResponse(ParseNetworkResponse apiResponse) + bool + + + +
+
+ + + +
+ +
+ logAPIResponse(String className, String type, ParseResponse parseResponse) + → void + + + +
+
+ + + +
+ +
+ logRequest(String? appName, String className, String type, String uri, String body) + → void + + + +
+
+ + + +
+ +
+ parseDecode(dynamic value) + → dynamic + + + +
+
+ Decode any type value + + +
+ +
+ parseEncode(dynamic value, {bool full = false}) + → dynamic + + + +
+
+ Custom json encoder for types related to parse + + +
+ +
+ removeDuplicateParseObjectByObjectId(Iterable iterable) + List + + + +
+
+ + + +
+ +
+ removeTrailingSlash(String serverUrl) + String + + + +
+
+ Removes unncessary / + + +
+ +
+ shouldReturnAsABaseResult(ParseApiRQ type) + bool + + + +
+
+ + + +
+ +
+
+ +
+

Enums

+ +
+
+ LiveQueryClientEvent + +
+
+ +
+ +
+ LiveQueryEvent + +
+
+ +
+ +
+ ParseApiRQ + +
+
+ Used to define the API calls made in ParseObject logs +
+ +
+ ParseConnectivityResult + +
+
+ Connection status check result. +
+ +
+ ParseNetworkResponseType + +
+
+ +
+ +
+
+ +
+

Typedefs

+ +
+ +
+ ChildBuilder<T extends ParseObject> + = Widget Function(BuildContext context, ParseLiveListElementSnapshot<T> snapshot) + + + +
+
+ + + +
+ + +
+ DataGetter<T extends ParseObject> + = T? Function() + + + +
+
+ + + +
+ + +
+ ParseClientCreator + = ParseClient Function({SecurityContext? securityContext, required bool sendSessionId}) + + + +
+
+ + + +
+ + +
+ ParseFileConstructor + = ParseFileBase Function({String? name, String? url}) + + + +
+
+ + + +
+ + +
+ ParseObjectConstructor + = ParseObject Function() + + + +
+
+ + + +
+ + +
+ ParseUserConstructor + = ParseUser Function(String? username, String? password, String? emailAddress, {ParseClient? client, bool? debug, String? sessionToken}) + + + +
+
+ + + +
+ + +
+ ProgressCallback + = void Function(int count, int total) + + + +
+
+ Callback to listen the progress for sending/receiving data. + + +
+ + +
+ StreamGetter<T extends ParseObject> + = Stream<T> Function() + + + +
+
+ + + +
+ +
+
+ +
+

Exceptions / Errors

+ +
+
+ ParseException + +
+
+ +
+ +
+ ParseOperationException + +
+
+ +
+ +
+ ParseRelationException + +
+
+ +
+ +
+
+ +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/index.html b/flutter/index.html new file mode 100644 index 000000000..1c1e1799a --- /dev/null +++ b/flutter/index.html @@ -0,0 +1,993 @@ + + + + + + + + + parse_server_sdk_flutter - Dart API docs + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
parse_server_sdk_flutter
+ +
+ +
+
+
+ +
+ +
+

parse-repository-header-sdk-flutter

+
+

This library gives you access to the powerful Parse Server backend from your Flutter app. For more information on Parse Platform and its features, visit parseplatform.org.

+
+ +
+

Compatibility

+

The Parse Flutter SDK is continuously tested with the most recent release of the Flutter framework to ensure compatibility. To give developers time to upgrade their app to the newest Flutter framework, previous Flutter framework releases are supported for at least 1 year after their release date. The Parse Flutter SDK depends on the Parse Dart SDK which may require a higher Dart framework version than the Flutter framework version, in which case the Flutter framework version cannot be supported even though its release date may have been less than a year ago.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VersionEnd of SupportCompatible
Flutter 3.10May 2024❌ No
Flutter 3.7Apr 2024✅ Yes
Flutter 3.3Jan 2024✅ Yes
Flutter 3.0Jul 2023❌ No (Parse Flutter SDK requires Flutter >=3.3.0)
+

Example Apps

+

Example Flutter apps can be found in the GitHub repository's example directory.

+

Getting Started

+

To install add the dependency to your pubspec.yaml file.

+

Once you have the library added to your project, upon first call to your app (Similar to what your application class would be) add the following...

+
await Parse().initialize(
+        keyApplicationId,
+        keyParseServerUrl);
+
+

If you want to use secure storage or use the Flutter web/desktop SDK, please change to the below instance of CoreStorage as it has no dependencies on Flutter.

+

The CoreStoreSembastImp does not encrypt the data on web! (Web is not safe anyway. Encrypt fields manually as needed.)

+

+await Parse().initialize(
+  	keyParseApplicationId, 
+  	keyParseServerUrl,
+    coreStore: await CoreStoreSembastImp.getInstance());
+
+

It's possible to add other parameters to work with your instance of Parse Server:-

+
  await Parse().initialize(
+        keyApplicationId,
+        keyParseServerUrl,
+        clientKey: keyParseClientKey, // Required for some setups
+        debug: true, // When enabled, prints logs to console
+        liveQueryUrl: keyLiveQueryUrl, // Required if using LiveQuery 
+        autoSendSessionId: true, // Required for authentication and ACL
+        securityContext: securityContext, // Again, required for some setups
+	coreStore: await CoreStoreSharedPrefsImp.getInstance()); // Local data storage method. Will use SharedPreferences instead of Sembast as an internal DB
+
+

⚠️ Please note that the master key should only be used in safe environments and never on client side ‼️

+

Web support

+

Due to Cross-origin resource sharing (CORS) restrictions, this requires adding X-Parse-Installation-Id as an allowed header to parse-server. +When running directly via docker, set the env var PARSE_SERVER_ALLOW_HEADERS=X-Parse-Installation-Id. +When running via express, set ParseServerOptions allowHeaders: ['X-Parse-Installation-Id'].

+

Desktop Support (macOS)

+

The security entitlements posed by the macOS framework require that your app is granted permission to open outgoing network connections, so that the Parse Flutter SDK can communicate with Parse Server. To grant this permission, add the following lines:

+
<key>com.apple.security.network.client</key>
+<true/>
+
+

to the following files:

+
/macOS/Runner/Release.entitlements
+/macOS/Runner/DebugProfile.entitlements
+
+

to help the Parse SDK for Flutter communicate with the Web to access the server and send/retrive data.

+

Network client

+

By default, this SDK uses the ParseHTTPClient. +Another option is use ParseDioClient. This client supports the most features (for example a progress callback at the file upload), but a benchmark has shown, that dio is slower than http on web.

+

If you want to use the ParseDioClient, which uses the dio network library, +you can provide a custom ParseClientCreator at the initialization of the SDK.

+
await Parse().initialize(
+  //...
+  clientCreator: ({bool? sendSessionId, SecurityContext? securityContext}) => ParseDioClient(sendSessionId: sendSessionId, securityContext: securityContext),
+);
+
+

Objects

+

You can create custom objects by calling:

+
var dietPlan = ParseObject('DietPlan')
+	..set('Name', 'Ketogenic')
+	..set('Fat', 65);
+await dietPlan.save();
+
+

Or update existing object by its objectId by calling:

+
var dietPlan = ParseObject('DietPlan')
+	..objectId = 'R5EonpUDWy'
+	..set('Fat', 70);
+await dietPlan.save();
+
+

Verify that the object has been successfully saved using

+
var response = await dietPlan.save();
+if (response.success) {
+   dietPlan = response.results.first;
+}
+
+

Types supported:

+
    +
  • String
  • +
  • Double
  • +
  • Int
  • +
  • Boolean
  • +
  • DateTime
  • +
  • File
  • +
  • Geopoint
  • +
  • ParseObject/ParseUser (Pointer)
  • +
  • Map
  • +
  • List (all types supported)
  • +
+

You then have the ability to do the following with that object: +The features available are:-

+
    +
  • Get
  • +
  • GetAll
  • +
  • Create
  • +
  • Save
  • +
  • Query - By object Id
  • +
  • Delete
  • +
  • Complex queries as shown above
  • +
  • Pin
  • +
  • Plenty more
  • +
  • Counters
  • +
  • Array Operators
  • +
+

Custom Objects

+

You can create your own ParseObjects or convert your existing objects into Parse Objects by doing the following:

+
class DietPlan extends ParseObject implements ParseCloneable {
+
+  DietPlan() : super(_keyTableName);
+  DietPlan.clone(): this();
+
+  /// Looks strangely hacky but due to Flutter not using reflection, we have to
+  /// mimic a clone
+  @override clone(Map map) => DietPlan.clone()..fromJson(map);
+
+  static const String _keyTableName = 'Diet_Plans';
+  static const String keyName = 'Name';
+  
+  String get name => get<String>(keyName);
+  set name(String name) => set<String>(keyName, name);
+}
+  
+
+

When receiving an ParseObject from the SDK, you can often provide an instance of your custom object as an copy object. +To always use your custom object class, you can register your subclass at the initialization of the SDK.

+
Parse().initialize(
+   ...,
+   registeredSubClassMap: <String, ParseObjectConstructor>{
+     'Diet_Plans': () => DietPlan(),
+   },
+   parseUserConstructor: (username, password, emailAddress, {client, debug, sessionToken}) => CustomParseUser(username, password, emailAddress),
+);
+
+

Additionally you can register SubClasses after the initialization of the SDK.

+
ParseCoreData().registerSubClass('Diet_Plans', () => DietPlan());
+ParseCoreData().registerUserSubClass((username, password, emailAddress, {client, debug, sessionToken}) => CustomParseUser(username, password, emailAddress));
+
+

Providing a ParseObject as described above should still work, even if you have registered a different SubClass.

+

For custom file classes have a lock at here.

+

Add new values to objects

+

To add a variable to an object call and retrieve it, call

+
dietPlan.set<int>('RandomInt', 8);
+var randomInt = dietPlan.get<int>('RandomInt');
+
+

Save objects using pins

+

You can now save an object by calling .pin() on an instance of an object

+
dietPlan.pin();
+
+

and to retrieve it

+
var dietPlan = DietPlan().fromPin('OBJECT ID OF OBJECT');
+
+

Storage

+

We now have 2 types of storage, secure and unsecure. We currently rely on 2 third party options:

+
    +
  • SharedPreferences
  • +
  • Sembast +Sembast offers secured storage, whilst SharePreferences wraps NSUserDefaults (on iOS) and SharedPreferences (on Android).
  • +
+

The storage method is defined in the parameter coreStore in Parse().initialize

+

Check sample code for options

+

Increment Counter Values

+

Retrieve it, call

+
var response = await dietPlan.increment("count", 1);
+
+
+

or using with save function

+
dietPlan.setIncrement('count', 1);
+dietPlan.setDecrement('count', 1);
+var response = dietPlan.save()
+
+
+

Array Operator

+

Retrieve it, call

+
var response = await dietPlan.add("listKeywords", ["a", "a","d"]);
+
+var response = await dietPlan.addUnique("listKeywords", ["a", "a","d"]);
+
+var response = await dietPlan.remove("listKeywords", ["a"]);
+
+
+

or using with save function

+
dietPlan.setAdd('listKeywords', ['a','a','d']);
+dietPlan.setAddUnique('listKeywords', ['a','a','d']);
+dietPlan.setRemove('listKeywords', ['a']);
+var response = dietPlan.save()
+
+

Queries

+

Once you have setup the project and initialised the instance, you can then retreive data from your server by calling:

+
var apiResponse = await ParseObject('ParseTableName').getAll();
+
+if (apiResponse.success){
+  for (var testObject in apiResponse.result) {
+    print(ApplicationConstants.APP_NAME + ": " + testObject.toString());
+  }
+}
+
+

Or you can get an object by its objectId:

+
var dietPlan = await DietPlan().getObject('R5EonpUDWy');
+
+if (dietPlan.success) {
+  print(ApplicationConstants.keyAppName + ": " + (dietPlan.result as DietPlan).toString());
+} else {
+  print(ApplicationConstants.keyAppName + ": " + dietPlan.exception.message);
+}
+
+

To query for user objects, you could use the function ParseUser.forQuery() like this:

+
var queryBuilder  = QueryBuilder<ParseUser>(ParseUser.forQuery())
+  ..whereEqualTo('activated', true);
+
+var response = await queryBuilder.query();
+
+if (response.success) {
+  print(response.results);
+} else {
+  print(response.exception.message);
+}
+
+

Alternative Query Methods

+

The standard query method query() returns a ParseResponse that contains the result or the error. As an alternative, you can also use Future<List<T>> find() for receiving options. +This method returns an Future that either resolves in an error (equivalent of the error in the ParseResponse) or an List containing the queried objects. One difference, you should be aware of, is the fact, that Future<List<T>> find() will return an empty list instead of the 'No results' error you receive in case no object matches you query.

+

Choosing between query() and find() comes down to personal preference. Both methods can be used for querying a ParseQuery, just the output method differs.

+

Similar to find() the QueryBuilder also has a function called Future<T?> first(). Just like find() first() is just a convenience method that makes querying the first object satisfying the query simpler. first() returns an Future, that resoles in an error or the first object matching the query. In case no object satisfies the query, the result will be null.

+

Complex Queries

+

You can create complex queries to really put your database to the test:

+
var queryBuilder = QueryBuilder<DietPlan>(DietPlan())
+  ..startsWith(DietPlan.keyName, "Keto")
+  ..greaterThan(DietPlan.keyFat, 64)
+  ..lessThan(DietPlan.keyFat, 66)
+  ..equals(DietPlan.keyCarbs, 5);
+
+var response = await queryBuilder.query();
+
+if (response.success) {
+  print(ApplicationConstants.keyAppName + ": " + ((response.results as List<dynamic>).first as DietPlan).toString());
+} else {
+  print(ApplicationConstants.keyAppName + ": " + response.exception.message);
+}
+
+

if you want to find objects that match one of several queries, you can use QueryBuilder.or method to construct a query that is an OR of the queries passed in. For instance if you want to find players who either have a lot of wins or a few wins, you can do:

+
ParseObject playerObject = ParseObject("Player");
+
+QueryBuilder<ParseObject> lotsOfWins =
+    QueryBuilder<ParseObject>(playerObject))
+      ..whereGreaterThan('wins', 50);
+
+QueryBuilder<ParseObject> fewWins =
+    QueryBuilder<ParseObject>(playerObject)
+      ..whereLessThan('wins', 5);
+
+QueryBuilder<ParseObject> mainQuery = QueryBuilder.or(
+      playerObject,
+      [lotsOfWins, fewWins],
+    );
+
+var apiResponse = await mainQuery.query();
+
+

To find objects that match several queries use QueryBuilder.and. To find objects that do not match any given query use QueryBuilder.nor.

+

The features available are:-

+
    +
  • Equals
  • +
  • Contains
  • +
  • LessThan
  • +
  • LessThanOrEqualTo
  • +
  • GreaterThan
  • +
  • GreaterThanOrEqualTo
  • +
  • NotEqualTo
  • +
  • StartsWith
  • +
  • EndsWith
  • +
  • Exists
  • +
  • Near
  • +
  • WithinMiles
  • +
  • WithinKilometers
  • +
  • WithinRadians
  • +
  • WithinGeoBox
  • +
  • WithinPolygon
  • +
  • MatchesQuery
  • +
  • DoesNotMatchQuery
  • +
  • MatchesKeyInQuery
  • +
  • DoesNotMatchKeyInQuery
  • +
  • Regex
  • +
  • Order
  • +
  • Limit
  • +
  • Skip
  • +
  • Ascending
  • +
  • Descending
  • +
  • Plenty more!
  • +
+

Relational queries

+

If you want to retrieve objects where a field contains an object that matches another query, you can use the +whereMatchesQuery condition. +For example, imagine you have Post class and a Comment class, where each Comment has a pointer to its parent Post. +You can find comments on posts with images by doing:

+
QueryBuilder<ParseObject> queryPost =
+    QueryBuilder<ParseObject>(ParseObject('Post'))
+      ..whereValueExists('image', true);
+
+QueryBuilder<ParseObject> queryComment =
+    QueryBuilder<ParseObject>(ParseObject('Comment'))
+      ..whereMatchesQuery('post', queryPost);
+
+var apiResponse = await queryComment.query();
+
+

If you want to retrieve objects where a field contains an object that does not match another query, you can use the +whereDoesNotMatchQuery condition. +Imagine you have Post class and a Comment class, where each Comment has a pointer to its parent Post. +You can find comments on posts without images by doing:

+
QueryBuilder<ParseObject> queryPost =
+    QueryBuilder<ParseObject>(ParseObject('Post'))
+      ..whereValueExists('image', true);
+
+QueryBuilder<ParseObject> queryComment =
+    QueryBuilder<ParseObject>(ParseObject('Comment'))
+      ..whereDoesNotMatchQuery('post', queryPost);
+
+var apiResponse = await queryComment.query();
+
+

You can use the whereMatchesKeyInQuery method to get objects where a key matches the value of a key in a set of objects resulting from another query. For example, if you have a class containing sports teams and you store a user’s hometown in the user class, you can issue one query to find the list of users whose hometown teams have winning records. The query would look like::

+
QueryBuilder<ParseObject> teamQuery =
+    QueryBuilder<ParseObject>(ParseObject('Team'))
+      ..whereGreaterThan('winPct', 0.5);
+
+QueryBuilder<ParseUser> userQuery =
+    QueryBuilder<ParseUser>ParseUser.forQuery())
+      ..whereMatchesKeyInQuery('hometown', 'city', teamQuery);
+
+var apiResponse = await userQuery.query();
+
+

Conversely, to get objects where a key does not match the value of a key in a set of objects resulting from another query, use whereDoesNotMatchKeyInQuery. For example, to find users whose hometown teams have losing records:

+
QueryBuilder<ParseObject> teamQuery =
+    QueryBuilder<ParseObject>(ParseObject('Team'))
+      ..whereGreaterThan('winPct', 0.5);
+
+QueryBuilder<ParseUser> losingUserQuery =
+    QueryBuilder<ParseUser>ParseUser.forQuery())
+      ..whereDoesNotMatchKeyInQuery('hometown', 'city', teamQuery);
+
+var apiResponse = await losingUserQuery.query();
+
+

To filter rows based on objectId’s from pointers in a second table, you can use dot notation:

+
QueryBuilder<ParseObject> rolesOfTypeX =
+    QueryBuilder<ParseObject>(ParseObject('Role'))
+      ..whereEqualTo('type', 'x');
+
+QueryBuilder<ParseObject> groupsWithRoleX =
+    QueryBuilder<ParseObject>(ParseObject('Group')))
+      ..whereMatchesKeyInQuery('objectId', 'belongsTo.objectId', rolesOfTypeX);
+
+var apiResponse = await groupsWithRoleX.query();
+
+

Counting Objects

+

If you only care about the number of games played by a particular player:

+
QueryBuilder<ParseObject> queryPlayers =
+    QueryBuilder<ParseObject>(ParseObject('GameScore'))
+      ..whereEqualTo('playerName', 'Jonathan Walsh');
+var apiResponse = await queryPlayers.count();
+if (apiResponse.success && apiResponse.result != null) {
+  int countGames = apiResponse.count;
+}
+
+

Live Queries

+

This tool allows you to subscribe to a QueryBuilder you are interested in. Once subscribed, the server will notify clients +whenever a ParseObject that matches the QueryBuilder is created or updated, in real-time.

+

Parse LiveQuery contains two parts, the LiveQuery server and the LiveQuery clients. In order to use live queries, you need +to set up both of them.

+

The Parse Server configuration guide on the server is found here https://docs.parseplatform.org/parse-server/guide/#live-queries and is not part of this documentation.

+

Initialize the Parse Live Query by entering the parameter liveQueryUrl in Parse().initialize:

+
Parse().initialize(
+      keyApplicationId,
+      keyParseServerUrl,
+      clientKey: keyParseClientKey,
+      debug: true,
+      liveQueryUrl: keyLiveQueryUrl,
+      autoSendSessionId: true);
+
+

Declare LiveQuery:

+
final LiveQuery liveQuery = LiveQuery();
+
+

Set the QueryBuilder that will be monitored by LiveQuery:

+
QueryBuilder<ParseObject> query =
+  QueryBuilder<ParseObject>(ParseObject('TestAPI'))
+  ..whereEqualTo('intNumber', 1);
+
+

Create a subscription +You’ll get the LiveQuery events through this subscription. +The first time you call subscribe, we’ll try to open the WebSocket connection to the LiveQuery server for you.

+
Subscription subscription = await liveQuery.client.subscribe(query);
+
+

Event Handling +We define several types of events you’ll get through a subscription object:

+

Create event +When a new ParseObject is created and it fulfills the QueryBuilder you subscribe, you’ll get this event. +The object is the ParseObject which was created.

+
subscription.on(LiveQueryEvent.create, (value) {
+    print('*** CREATE ***: ${DateTime.now().toString()}\n $value ');
+    print((value as ParseObject).objectId);
+    print((value as ParseObject).updatedAt);
+    print((value as ParseObject).createdAt);
+    print((value as ParseObject).get('objectId'));
+    print((value as ParseObject).get('updatedAt'));
+    print((value as ParseObject).get('createdAt'));
+});
+
+

Update event +When an existing ParseObject which fulfills the QueryBuilder you subscribe is updated (The ParseObject fulfills the +QueryBuilder before and after changes), you’ll get this event. +The object is the ParseObject which was updated. Its content is the latest value of the ParseObject.

+
subscription.on(LiveQueryEvent.update, (value) {
+    print('*** UPDATE ***: ${DateTime.now().toString()}\n $value ');
+    print((value as ParseObject).objectId);
+    print((value as ParseObject).updatedAt);
+    print((value as ParseObject).createdAt);
+    print((value as ParseObject).get('objectId'));
+    print((value as ParseObject).get('updatedAt'));
+    print((value as ParseObject).get('createdAt'));
+});
+
+

Enter event +When an existing ParseObject’s old value does not fulfill the QueryBuilder but its new value fulfills the QueryBuilder, +you’ll get this event. The object is the ParseObject which enters the QueryBuilder. +Its content is the latest value of the ParseObject.

+
subscription.on(LiveQueryEvent.enter, (value) {
+    print('*** ENTER ***: ${DateTime.now().toString()}\n $value ');
+    print((value as ParseObject).objectId);
+    print((value as ParseObject).updatedAt);
+    print((value as ParseObject).createdAt);
+    print((value as ParseObject).get('objectId'));
+    print((value as ParseObject).get('updatedAt'));
+    print((value as ParseObject).get('createdAt'));
+});
+
+

Leave event +When an existing ParseObject’s old value fulfills the QueryBuilder but its new value doesn’t fulfill the QueryBuilder, +you’ll get this event. The object is the ParseObject which leaves the QueryBuilder. +Its content is the latest value of the ParseObject.

+
subscription.on(LiveQueryEvent.leave, (value) {
+    print('*** LEAVE ***: ${DateTime.now().toString()}\n $value ');
+    print((value as ParseObject).objectId);
+    print((value as ParseObject).updatedAt);
+    print((value as ParseObject).createdAt);
+    print((value as ParseObject).get('objectId'));
+    print((value as ParseObject).get('updatedAt'));
+    print((value as ParseObject).get('createdAt'));
+});
+
+

Delete event +When an existing ParseObject which fulfills the QueryBuilder is deleted, you’ll get this event. +The object is the ParseObject which is deleted

+
subscription.on(LiveQueryEvent.delete, (value) {
+    print('*** DELETE ***: ${DateTime.now().toString()}\n $value ');
+    print((value as ParseObject).objectId);
+    print((value as ParseObject).updatedAt);
+    print((value as ParseObject).createdAt);
+    print((value as ParseObject).get('objectId'));
+    print((value as ParseObject).get('updatedAt'));
+    print((value as ParseObject).get('createdAt'));
+});
+
+

Unsubscribe +If you would like to stop receiving events from a QueryBuilder, you can just unsubscribe the subscription. +After that, you won’t get any events from the subscription object and will close the WebSocket connection to the +LiveQuery server.

+
liveQuery.client.unSubscribe(subscription);
+
+

Disconnection +In case the client's connection to the server breaks, +LiveQuery will automatically try to reconnect. +LiveQuery will wait at increasing intervals between reconnection attempts. +By default, these intervals are set to [0, 500, 1000, 2000, 5000, 10000] for mobile and [0, 500, 1000, 2000, 5000] for web. +You can change these by providing a custom list using the liveListRetryIntervals parameter at Parse.initialize() ("-1" means "do not try to reconnect").

+

ParseLiveList

+

ParseLiveList makes implementing a dynamic List as simple as possible.

+

General Use

+

It ships with the ParseLiveList class itself, this class manages all elements of the list, sorts them, +keeps itself up to date and Notifies you on changes.

+

ParseLiveListWidget is a widget that handles all the communication with the ParseLiveList for you. +Using ParseLiveListWidget you can create a dynamic List by just providing a QueryBuilder.

+
ParseLiveListWidget<ParseObject>(
+      query: query,
+    );
+
+

To customize the List Elements, you can provide a childBuilder.

+
ParseLiveListWidget<ParseObject>(
+  query: query,
+  reverse: false,
+  childBuilder:
+      (BuildContext context, ParseLiveListElementSnapshot<ParseObject> snapshot) {
+    if (snapshot.failed) {
+      return const Text('something went wrong!');
+    } else if (snapshot.hasData) {
+      return ListTile(
+        title: Text(
+          snapshot.loadedData.get("text"),
+        ),
+      );
+    } else {
+      return const ListTile(
+        leading: CircularProgressIndicator(),
+      );
+    }
+  },
+);
+
+

Similar to the standard ListView, you can provide arguments like reverse or shrinkWrap. +By providing the listLoadingElement, you can show the user something while the list is loading.

+
ParseLiveListWidget<ParseObject>(
+  query: query,
+  childBuilder: childBuilder,
+  listLoadingElement: Center(
+    child: CircularProgressIndicator(),
+  ),
+);
+
+

By providing the duration argument, you can change the animation speed.

+
ParseLiveListWidget<ParseObject>(
+  query: query,
+  childBuilder: childBuilder,
+  duration: Duration(seconds: 1),
+);
+
+

Include Sub-Objects

+

By default, ParseLiveQuery will provide you with all the objects you included in your Query like this:

+
queryBuilder.includeObject(/*List of all the included sub-objects*/);
+
+

ParseLiveList will not listen for updates on this objects by default. +To activate listening for updates on all included objects, add listenOnAllSubItems: true to your ParseLiveListWidgets constructor. +If you want ParseLiveList to listen for updates on only some sub-objects, use listeningIncludes: const <String>[/*all the included sub-objects*/] instead. +Just as QueryBuilder, ParseLiveList supports nested sub-objects too.

+

Lazy Loading

+

By default, ParseLiveList lazy loads the content. +You can avoid that by setting lazyLoading: false. +In case you want to use lazyLoading but you need some columns to be preloaded, you can provide a list of preloadedColumns. +Preloading fields of a pointer is supported by using the dot-notation. +You can access the preloaded data is stored in the preLoadedData field of the ParseLiveListElementSnapshot.

+
ParseLiveListWidget<ParseObject>(
+  query: query,
+  lazyLoading: true,
+  preloadedColumns: ["test1", "sender.username"],
+  childBuilder:
+      (BuildContext context, ParseLiveListElementSnapshot<ParseObject> snapshot) {
+    if (snapshot.failed) {
+      return const Text('something went wrong!');
+    } else if (snapshot.hasData) {
+      return ListTile(
+        title: Text(
+          snapshot.loadedData.get<String>("text"),
+        ),
+      );
+    } else {
+      return ListTile(
+        title: Text(
+          "loading comment from: ${snapshot.preLoadedData?.get<ParseObject>("sender")?.get<String>("username")}",
+        ),
+      );
+    }
+  },
+);
+
+

NOTE: To use this features you have to enable Live Queries first.

+

Users

+

You can create and control users just as normal using this SDK.

+

To register a user, first create one :

+
var user =  ParseUser().create("TestFlutter", "TestPassword123", "TestFlutterSDK@gmail.com");
+
+

Then have the user sign up:

+
var response = await user.signUp();
+if (response.success) user = response.result;
+
+

You can also login with the user:

+
var response = await user.login();
+if (response.success) user = response.result;
+
+

You can also logout with the user:

+
var response = await user.logout();
+if (response.success) {
+    print('User logout');
+}
+
+

Also, once logged in you can manage sessions tokens. This feature can be called after Parse().init() on startup to check for a logged in user.

+
user = ParseUser.currentUser();
+
+

To add additional columns to the user:

+
var user = ParseUser("TestFlutter", "TestPassword123", "TestFlutterSDK@gmail.com")
+            ..set("userLocation", "FlutterLand");
+
+

Other user features are:-

+
    +
  • Request Password Reset
  • +
  • Verification Email Request
  • +
  • Get all users
  • +
  • Save
  • +
  • Destroy user
  • +
  • Queries
  • +
+

Facebook, OAuth and 3rd Party Login/User

+

Usually, each provider will provide their own library for logins, but the loginWith method on ParseUser accepts a name of provider, then a Map<String, dynamic> with the authentication details required. +For Facebook and the example below, we used the library provided at https://pub.dev/packages/flutter_facebook_login

+
Future<void> goToFacebookLogin() async {
+       final FacebookLogin facebookLogin = FacebookLogin();
+       final FacebookLoginResult result = await facebookLogin.logInWithReadPermissions(['email']);
+   
+       switch (result.status) {
+         case FacebookLoginStatus.loggedIn:
+           final ParseResponse response = await ParseUser.loginWith(
+               'facebook',
+               facebook(result.accessToken.token,
+                   result.accessToken.userId,
+                   result.accessToken.expires));
+   
+           if (response.success) {
+             // User is logged in, test with ParseUser.currentUser()
+           }
+           break;
+         case FacebookLoginStatus.cancelledByUser:
+               // User cancelled
+           break;
+         case FacebookLoginStatus.error:
+               // Error
+           break;
+       }
+     }
+
+

For Google and the example below, we used the library provided at https://pub.dev/packages/google_sign_in

+
class OAuthLogin {
+  final GoogleSignIn _googleSignIn = GoogleSignIn( scopes: ['email', 'https://www.googleapis.com/auth/contacts.readonly'] );
+  
+  signInGoogle() async {
+    GoogleSignInAccount account = await _googleSignIn.signIn();
+    GoogleSignInAuthentication authentication = await account.authentication;
+    await ParseUser.loginWith(
+          'google',
+          google(authentication.accessToken!, _googleSignIn.currentUser!.id,
+              authentication.idToken!));
+  }
+}
+
+

Security for Objects - ParseACL

+

For any object, you can specify which users are allowed to read the object, and which users are allowed to modify an object. +To support this type of security, each object has an access control list, implemented by the ParseACL class.

+

If ParseACL is not specified (with the exception of the ParseUser class) all objects are set to Public for read and write. +The simplest way to use a ParseACL is to specify that an object may only be read or written by a single user. +To create such an object, there must first be a logged in ParseUser. Then, new ParseACL(user) generates a ParseACL that +limits access to that user. An object’s ACL is updated when the object is saved, like any other property.

+
ParseUser user = await ParseUser.currentUser() as ParseUser;
+ParseACL parseACL = ParseACL(owner: user);
+  
+ParseObject parseObject = ParseObject("TestAPI");
+...
+parseObject.setACL(parseACL);
+var apiResponse = await parseObject.save();
+
+

Permissions can also be granted on a per-user basis. You can add permissions individually to a ParseACL using +setReadAccess and setWriteAccess

+
ParseUser user = await ParseUser.currentUser() as ParseUser;
+ParseACL parseACL = ParseACL();
+//grant total access to current user
+parseACL.setReadAccess(userId: user.objectId, allowed: true);
+parseACL.setWriteAccess(userId: user.objectId, allowed: true);
+//grant read access to userId: 'TjRuDjuSAO' 
+parseACL.setReadAccess(userId: 'TjRuDjuSAO', allowed: true);
+parseACL.setWriteAccess(userId: 'TjRuDjuSAO', allowed: false);
+
+ParseObject parseObject = ParseObject("TestAPI");
+...
+parseObject.setACL(parseACL);
+var apiResponse = await parseObject.save();
+
+

You can also grant permissions to all users at once using setPublicReadAccess and setPublicWriteAccess.

+
ParseACL parseACL = ParseACL();
+parseACL.setPublicReadAccess(allowed: true);
+parseACL.setPublicWriteAccess(allowed: true);
+
+ParseObject parseObject = ParseObject("TestAPI");
+...  
+parseObject.setACL(parseACL);
+var apiResponse = await parseObject.save();
+
+

Operations that are forbidden, such as deleting an object that you do not have write access to, result in a +ParseError with code 101: 'ObjectNotFound'. +For security purposes, this prevents clients from distinguishing which object ids exist but are secured, versus which +object ids do not exist at all.

+

You can retrieve the ACL list of an object using:

+
ParseACL parseACL = parseObject.getACL();
+
+

To set the ACL to ParseRole use:

+
parseACL.setReadAccess(userId: "role:ROLE_NAME", allowed: true);
+parseACL.setWriteAccess(userId: "role:ROLE_NAME", allowed: true);
+
+

Config

+

The SDK supports Parse Config. A map of all configs can be grabbed from the server by calling :

+
var response = await ParseConfig().getConfigs();
+
+

and to add a config:

+
ParseConfig().addConfig('TestConfig', 'testing');
+
+

Cloud Functions

+

The SDK supports call Cloud Functions.

+

Executes a cloud function that returns a ParseObject type

+
final ParseCloudFunction function = ParseCloudFunction('hello');
+final ParseResponse result =
+    await function.executeObjectFunction<ParseObject>();
+if (result.success) {
+  if (result.result is ParseObject) {
+    final ParseObject parseObject = result.result;
+    print(parseObject.className);
+  }
+}
+
+

Executes a cloud function with parameters

+
final ParseCloudFunction function = ParseCloudFunction('hello');
+final Map<String, String> params = <String, String>{'plan': 'paid'};
+function.execute(parameters: params);
+
+

Relation

+

The SDK supports Relation.

+

To add relation to object:

+
dietPlan.addRelation('fruits', [ParseObject("Fruits")..set("objectId", "XGadzYxnac")]);
+
+

To remove relation to object:

+
dietPlan.removeRelation('fruits', [ParseObject("Fruits")..set("objectId", "XGadzYxnac")]);
+
+

To Retrive a relation instance for user, call:

+
final relation = dietPlan.getRelation('fruits');
+
+

and then you can add a relation to the passed in object:

+
relation.add(dietPlan);
+final result = await user.save();
+
+

To retrieve objects that are members of Relation field of a parent object:

+
QueryBuilder<ParseObject> query =
+    QueryBuilder<ParseObject>(ParseObject('Fruits'))
+      ..whereRelatedTo('fruits', 'DietPlan', DietPlan.objectId);
+
+

File

+

There are three different file classes in this SDK:

+
    +
  • ParseFileBase is and abstract class and is the foundation of every file class that can be handled by this SDK.
  • +
  • ParseFile (former the only file class in the SDK) extends ParseFileBase and is by default used as the file class on every platform but web. +This class uses a File from dart:io for storing the raw file.
  • +
  • ParseWebFile is the equivalent to ParseFile used at Flutter Web. +This class uses an Uint8List for storing the raw file.
  • +
+

These classes are used by default to represent files, but you can also build your own class extending ParseFileBase and provide a custom ParseFileConstructor similar to the SubClasses.

+

Have a look at the example application for a small (non web) example.

+

When uploading or downloading a file, you can use the progressCallback-parameter to track the progress of the http request.

+
//A short example for showing an image from a ParseFileBase
+Widget buildImage(ParseFileBase image){
+  return FutureBuilder<ParseFileBase>(
+    future: image.download(),
+    builder: (BuildContext context,
+    AsyncSnapshot<ParseFileBase> snapshot) {
+      if (snapshot.hasData) {
+        if (kIsWeb) {
+          return Image.memory((snapshot.data as ParseWebFile).file);
+        } else {
+          return Image.file((snapshot.data as ParseFile).file);
+        }
+      } else {
+        return CircularProgressIndicator();
+      }
+    },
+  );
+}
+
+
//A short example for storing a selected picture
+//libraries: image_picker (https://pub.dev/packages/image_picker), image_picker_for_web (https://pub.dev/packages/image_picker_for_web)
+PickedFile pickedFile = await ImagePicker().getImage(source: ImageSource.gallery);
+ParseFileBase parseFile;
+if (kIsWeb) {
+  //Seems weird, but this lets you get the data from the selected file as an Uint8List very easily. 
+  ParseWebFile file = ParseWebFile(null, name: null, url: pickedFile.path);
+  await file.download();
+  parseFile = ParseWebFile(file.file, name: file.name);
+} else {
+  parseFile = ParseFile(File(pickedFile.path));
+}
+someParseObject.set("image", parseFile);
+//This saves the ParseObject as well as all of its children, and the ParseFileBase is such a child. 
+await someParseObject.save();
+
+

Other Features

+

Main:

+
    +
  • Installation (View the example application)
  • +
  • GeoPoints (View the example application)
  • +
  • Persistent storage
  • +
  • Debug Mode - Logging API calls
  • +
  • Manage Session ID's tokens
  • +
+

User:

+
    +
  • Queries
  • +
  • Anonymous (View the example application)
  • +
  • 3rd Party Authentication
  • +
+

Objects:

+
    +
  • Create new object
  • +
  • Extend Parse Object and create local objects that can be saved and retrieved
  • +
  • Queries
  • +
+
+ + +
+

Libraries

+
+
+ flutter_parse_sdk_flutter + +
+
+
+ +
+
+ +
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/index.json b/flutter/index.json new file mode 100644 index 000000000..075213a08 --- /dev/null +++ b/flutter/index.json @@ -0,0 +1 @@ +[{"name":"flutter_parse_sdk_flutter","qualifiedName":"flutter_parse_sdk_flutter","href":"flutter_parse_sdk_flutter/flutter_parse_sdk_flutter-library.html","type":"library","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":""},{"name":"ChildBuilder","qualifiedName":"flutter_parse_sdk_flutter.ChildBuilder","href":"flutter_parse_sdk_flutter/ChildBuilder.html","type":"typedef","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"flutter_parse_sdk_flutter","type":"library","href":"flutter_parse_sdk_flutter/flutter_parse_sdk_flutter-library.html"}},{"name":"CoreStoreSembastImp","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSembastImp","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html","type":"class","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"flutter_parse_sdk_flutter","type":"library","href":"flutter_parse_sdk_flutter/flutter_parse_sdk_flutter-library.html"}},{"name":"clear","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSembastImp.clear","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp/clear.html","type":"method","overriddenDepth":2,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSembastImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html"}},{"name":"containsKey","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSembastImp.containsKey","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp/containsKey.html","type":"method","overriddenDepth":2,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSembastImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html"}},{"name":"get","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSembastImp.get","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp/get.html","type":"method","overriddenDepth":2,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSembastImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html"}},{"name":"getBool","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSembastImp.getBool","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp/getBool.html","type":"method","overriddenDepth":2,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSembastImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html"}},{"name":"getDouble","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSembastImp.getDouble","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp/getDouble.html","type":"method","overriddenDepth":2,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSembastImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html"}},{"name":"getInstance","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSembastImp.getInstance","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp/getInstance.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSembastImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html"}},{"name":"getInt","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSembastImp.getInt","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp/getInt.html","type":"method","overriddenDepth":2,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSembastImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html"}},{"name":"getString","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSembastImp.getString","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp/getString.html","type":"method","overriddenDepth":2,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSembastImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html"}},{"name":"getStringList","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSembastImp.getStringList","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp/getStringList.html","type":"method","overriddenDepth":2,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSembastImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html"}},{"name":"remove","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSembastImp.remove","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp/remove.html","type":"method","overriddenDepth":2,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSembastImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html"}},{"name":"setBool","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSembastImp.setBool","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp/setBool.html","type":"method","overriddenDepth":2,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSembastImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html"}},{"name":"setDouble","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSembastImp.setDouble","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp/setDouble.html","type":"method","overriddenDepth":2,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSembastImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html"}},{"name":"setInt","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSembastImp.setInt","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp/setInt.html","type":"method","overriddenDepth":2,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSembastImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html"}},{"name":"setString","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSembastImp.setString","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp/setString.html","type":"method","overriddenDepth":2,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSembastImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html"}},{"name":"setStringList","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSembastImp.setStringList","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp/setStringList.html","type":"method","overriddenDepth":2,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSembastImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSembastImp-class.html"}},{"name":"CoreStoreSharedPrefsImp","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSharedPrefsImp","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html","type":"class","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"flutter_parse_sdk_flutter","type":"library","href":"flutter_parse_sdk_flutter/flutter_parse_sdk_flutter-library.html"}},{"name":"clear","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSharedPrefsImp.clear","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/clear.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSharedPrefsImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html"}},{"name":"containsKey","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSharedPrefsImp.containsKey","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/containsKey.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSharedPrefsImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html"}},{"name":"get","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSharedPrefsImp.get","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/get.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSharedPrefsImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html"}},{"name":"getBool","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSharedPrefsImp.getBool","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getBool.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSharedPrefsImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html"}},{"name":"getDouble","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSharedPrefsImp.getDouble","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getDouble.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSharedPrefsImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html"}},{"name":"getInstance","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSharedPrefsImp.getInstance","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getInstance.html","type":"method","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSharedPrefsImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html"}},{"name":"getInt","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSharedPrefsImp.getInt","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getInt.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSharedPrefsImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html"}},{"name":"getString","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSharedPrefsImp.getString","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getString.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSharedPrefsImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html"}},{"name":"getStringList","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSharedPrefsImp.getStringList","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/getStringList.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSharedPrefsImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html"}},{"name":"remove","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSharedPrefsImp.remove","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/remove.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSharedPrefsImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html"}},{"name":"setBool","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSharedPrefsImp.setBool","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setBool.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSharedPrefsImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html"}},{"name":"setDouble","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSharedPrefsImp.setDouble","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setDouble.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSharedPrefsImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html"}},{"name":"setInt","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSharedPrefsImp.setInt","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setInt.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSharedPrefsImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html"}},{"name":"setString","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSharedPrefsImp.setString","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setString.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSharedPrefsImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html"}},{"name":"setStringList","qualifiedName":"flutter_parse_sdk_flutter.CoreStoreSharedPrefsImp.setStringList","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp/setStringList.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"CoreStoreSharedPrefsImp","type":"class","href":"flutter_parse_sdk_flutter/CoreStoreSharedPrefsImp-class.html"}},{"name":"DataGetter","qualifiedName":"flutter_parse_sdk_flutter.DataGetter","href":"flutter_parse_sdk_flutter/DataGetter.html","type":"typedef","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"flutter_parse_sdk_flutter","type":"library","href":"flutter_parse_sdk_flutter/flutter_parse_sdk_flutter-library.html"}},{"name":"Parse","qualifiedName":"flutter_parse_sdk_flutter.Parse","href":"flutter_parse_sdk_flutter/Parse-class.html","type":"class","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"flutter_parse_sdk_flutter","type":"library","href":"flutter_parse_sdk_flutter/flutter_parse_sdk_flutter-library.html"}},{"name":"Parse","qualifiedName":"flutter_parse_sdk_flutter.Parse.Parse","href":"flutter_parse_sdk_flutter/Parse/Parse.html","type":"constructor","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"Parse","type":"class","href":"flutter_parse_sdk_flutter/Parse-class.html"}},{"name":"checkConnectivity","qualifiedName":"flutter_parse_sdk_flutter.Parse.checkConnectivity","href":"flutter_parse_sdk_flutter/Parse/checkConnectivity.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"Parse","type":"class","href":"flutter_parse_sdk_flutter/Parse-class.html"}},{"name":"connectivityStream","qualifiedName":"flutter_parse_sdk_flutter.Parse.connectivityStream","href":"flutter_parse_sdk_flutter/Parse/connectivityStream.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"Parse","type":"class","href":"flutter_parse_sdk_flutter/Parse-class.html"}},{"name":"didChangeAppLifecycleState","qualifiedName":"flutter_parse_sdk_flutter.Parse.didChangeAppLifecycleState","href":"flutter_parse_sdk_flutter/Parse/didChangeAppLifecycleState.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"Called when the system puts the app in the background or returns\nthe app to the foreground.","enclosedBy":{"name":"Parse","type":"class","href":"flutter_parse_sdk_flutter/Parse-class.html"}},{"name":"initialize","qualifiedName":"flutter_parse_sdk_flutter.Parse.initialize","href":"flutter_parse_sdk_flutter/Parse/initialize.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"To initialize Parse Server in your application","enclosedBy":{"name":"Parse","type":"class","href":"flutter_parse_sdk_flutter/Parse-class.html"}},{"name":"ParseLiveGridWidget","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html","type":"class","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"flutter_parse_sdk_flutter","type":"library","href":"flutter_parse_sdk_flutter/flutter_parse_sdk_flutter-library.html"}},{"name":"ParseLiveGridWidget","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.ParseLiveGridWidget","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/ParseLiveGridWidget.html","type":"constructor","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"animationController","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.animationController","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/animationController.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"childAspectRatio","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.childAspectRatio","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/childAspectRatio.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"childBuilder","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.childBuilder","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/childBuilder.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"createState","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.createState","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/createState.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"Creates the mutable state for this widget at a given location in the tree.","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"crossAxisCount","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.crossAxisCount","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/crossAxisCount.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"crossAxisSpacing","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.crossAxisSpacing","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/crossAxisSpacing.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"defaultChildBuilder","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.defaultChildBuilder","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/defaultChildBuilder.html","type":"method","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"duration","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.duration","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/duration.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"gridLoadingElement","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.gridLoadingElement","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/gridLoadingElement.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"lazyLoading","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.lazyLoading","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/lazyLoading.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"listenOnAllSubItems","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.listenOnAllSubItems","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/listenOnAllSubItems.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"listeningIncludes","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.listeningIncludes","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/listeningIncludes.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"mainAxisSpacing","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.mainAxisSpacing","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/mainAxisSpacing.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"padding","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.padding","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/padding.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"preloadedColumns","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.preloadedColumns","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/preloadedColumns.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"primary","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.primary","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/primary.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"query","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.query","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/query.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"queryEmptyElement","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.queryEmptyElement","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/queryEmptyElement.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"removedItemBuilder","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.removedItemBuilder","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/removedItemBuilder.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"reverse","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.reverse","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/reverse.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"scrollController","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.scrollController","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/scrollController.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"scrollDirection","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.scrollDirection","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/scrollDirection.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"scrollPhysics","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.scrollPhysics","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/scrollPhysics.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"shrinkWrap","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveGridWidget.shrinkWrap","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget/shrinkWrap.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveGridWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveGridWidget-class.html"}},{"name":"ParseLiveListElementWidget","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListElementWidget","href":"flutter_parse_sdk_flutter/ParseLiveListElementWidget-class.html","type":"class","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"flutter_parse_sdk_flutter","type":"library","href":"flutter_parse_sdk_flutter/flutter_parse_sdk_flutter-library.html"}},{"name":"ParseLiveListElementWidget","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListElementWidget.ParseLiveListElementWidget","href":"flutter_parse_sdk_flutter/ParseLiveListElementWidget/ParseLiveListElementWidget.html","type":"constructor","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListElementWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListElementWidget-class.html"}},{"name":"childBuilder","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListElementWidget.childBuilder","href":"flutter_parse_sdk_flutter/ParseLiveListElementWidget/childBuilder.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListElementWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListElementWidget-class.html"}},{"name":"createState","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListElementWidget.createState","href":"flutter_parse_sdk_flutter/ParseLiveListElementWidget/createState.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"Creates the mutable state for this widget at a given location in the tree.","enclosedBy":{"name":"ParseLiveListElementWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListElementWidget-class.html"}},{"name":"duration","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListElementWidget.duration","href":"flutter_parse_sdk_flutter/ParseLiveListElementWidget/duration.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListElementWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListElementWidget-class.html"}},{"name":"loadedData","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListElementWidget.loadedData","href":"flutter_parse_sdk_flutter/ParseLiveListElementWidget/loadedData.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListElementWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListElementWidget-class.html"}},{"name":"preLoadedData","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListElementWidget.preLoadedData","href":"flutter_parse_sdk_flutter/ParseLiveListElementWidget/preLoadedData.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListElementWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListElementWidget-class.html"}},{"name":"sizeFactor","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListElementWidget.sizeFactor","href":"flutter_parse_sdk_flutter/ParseLiveListElementWidget/sizeFactor.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListElementWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListElementWidget-class.html"}},{"name":"stream","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListElementWidget.stream","href":"flutter_parse_sdk_flutter/ParseLiveListElementWidget/stream.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListElementWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListElementWidget-class.html"}},{"name":"ParseLiveListWidget","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html","type":"class","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"flutter_parse_sdk_flutter","type":"library","href":"flutter_parse_sdk_flutter/flutter_parse_sdk_flutter-library.html"}},{"name":"ParseLiveListWidget","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.ParseLiveListWidget","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/ParseLiveListWidget.html","type":"constructor","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"childBuilder","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.childBuilder","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/childBuilder.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"createState","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.createState","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/createState.html","type":"method","overriddenDepth":1,"packageName":"parse_server_sdk_flutter","desc":"Creates the mutable state for this widget at a given location in the tree.","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"defaultChildBuilder","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.defaultChildBuilder","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/defaultChildBuilder.html","type":"method","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"duration","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.duration","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/duration.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"lazyLoading","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.lazyLoading","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/lazyLoading.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"listLoadingElement","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.listLoadingElement","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/listLoadingElement.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"listenOnAllSubItems","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.listenOnAllSubItems","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/listenOnAllSubItems.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"listeningIncludes","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.listeningIncludes","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/listeningIncludes.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"padding","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.padding","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/padding.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"preloadedColumns","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.preloadedColumns","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/preloadedColumns.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"primary","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.primary","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/primary.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"query","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.query","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/query.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"queryEmptyElement","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.queryEmptyElement","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/queryEmptyElement.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"removedItemBuilder","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.removedItemBuilder","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/removedItemBuilder.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"reverse","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.reverse","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/reverse.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"scrollController","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.scrollController","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/scrollController.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"scrollDirection","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.scrollDirection","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/scrollDirection.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"scrollPhysics","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.scrollPhysics","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/scrollPhysics.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"shrinkWrap","qualifiedName":"flutter_parse_sdk_flutter.ParseLiveListWidget.shrinkWrap","href":"flutter_parse_sdk_flutter/ParseLiveListWidget/shrinkWrap.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseLiveListWidget","type":"class","href":"flutter_parse_sdk_flutter/ParseLiveListWidget-class.html"}},{"name":"ParseNotification","qualifiedName":"flutter_parse_sdk_flutter.ParseNotification","href":"flutter_parse_sdk_flutter/ParseNotification-class.html","type":"class","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"flutter_parse_sdk_flutter","type":"library","href":"flutter_parse_sdk_flutter/flutter_parse_sdk_flutter-library.html"}},{"name":"ParseNotification","qualifiedName":"flutter_parse_sdk_flutter.ParseNotification.ParseNotification","href":"flutter_parse_sdk_flutter/ParseNotification/ParseNotification.html","type":"constructor","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseNotification","type":"class","href":"flutter_parse_sdk_flutter/ParseNotification-class.html"}},{"name":"instance","qualifiedName":"flutter_parse_sdk_flutter.ParseNotification.instance","href":"flutter_parse_sdk_flutter/ParseNotification/instance.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseNotification","type":"class","href":"flutter_parse_sdk_flutter/ParseNotification-class.html"}},{"name":"keyNotificationChannelName","qualifiedName":"flutter_parse_sdk_flutter.ParseNotification.keyNotificationChannelName","href":"flutter_parse_sdk_flutter/ParseNotification/keyNotificationChannelName.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParseNotification","type":"class","href":"flutter_parse_sdk_flutter/ParseNotification-class.html"}},{"name":"showNotification","qualifiedName":"flutter_parse_sdk_flutter.ParseNotification.showNotification","href":"flutter_parse_sdk_flutter/ParseNotification/showNotification.html","type":"method","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"Show notification","enclosedBy":{"name":"ParseNotification","type":"class","href":"flutter_parse_sdk_flutter/ParseNotification-class.html"}},{"name":"ParsePush","qualifiedName":"flutter_parse_sdk_flutter.ParsePush","href":"flutter_parse_sdk_flutter/ParsePush-class.html","type":"class","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"flutter_parse_sdk_flutter","type":"library","href":"flutter_parse_sdk_flutter/flutter_parse_sdk_flutter-library.html"}},{"name":"ParsePush","qualifiedName":"flutter_parse_sdk_flutter.ParsePush.ParsePush","href":"flutter_parse_sdk_flutter/ParsePush/ParsePush.html","type":"constructor","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParsePush","type":"class","href":"flutter_parse_sdk_flutter/ParsePush-class.html"}},{"name":"getSubscribedChannels","qualifiedName":"flutter_parse_sdk_flutter.ParsePush.getSubscribedChannels","href":"flutter_parse_sdk_flutter/ParsePush/getSubscribedChannels.html","type":"method","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"Returns an <List> containing all the channel names this device is subscribed to","enclosedBy":{"name":"ParsePush","type":"class","href":"flutter_parse_sdk_flutter/ParsePush-class.html"}},{"name":"initialize","qualifiedName":"flutter_parse_sdk_flutter.ParsePush.initialize","href":"flutter_parse_sdk_flutter/ParsePush/initialize.html","type":"method","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"Initialize ParsePush; for web a vapidKey is required.","enclosedBy":{"name":"ParsePush","type":"class","href":"flutter_parse_sdk_flutter/ParsePush-class.html"}},{"name":"instance","qualifiedName":"flutter_parse_sdk_flutter.ParsePush.instance","href":"flutter_parse_sdk_flutter/ParsePush/instance.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParsePush","type":"class","href":"flutter_parse_sdk_flutter/ParsePush-class.html"}},{"name":"keyPushType","qualifiedName":"flutter_parse_sdk_flutter.ParsePush.keyPushType","href":"flutter_parse_sdk_flutter/ParsePush/keyPushType.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParsePush","type":"class","href":"flutter_parse_sdk_flutter/ParsePush-class.html"}},{"name":"keyType","qualifiedName":"flutter_parse_sdk_flutter.ParsePush.keyType","href":"flutter_parse_sdk_flutter/ParsePush/keyType.html","type":"property","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"ParsePush","type":"class","href":"flutter_parse_sdk_flutter/ParsePush-class.html"}},{"name":"onMessage","qualifiedName":"flutter_parse_sdk_flutter.ParsePush.onMessage","href":"flutter_parse_sdk_flutter/ParsePush/onMessage.html","type":"method","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"Handle push notification message","enclosedBy":{"name":"ParsePush","type":"class","href":"flutter_parse_sdk_flutter/ParsePush-class.html"}},{"name":"subscribeToChannel","qualifiedName":"flutter_parse_sdk_flutter.ParsePush.subscribeToChannel","href":"flutter_parse_sdk_flutter/ParsePush/subscribeToChannel.html","type":"method","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"Subscribes the device to a channel of push notifications","enclosedBy":{"name":"ParsePush","type":"class","href":"flutter_parse_sdk_flutter/ParsePush-class.html"}},{"name":"unsubscribeFromChannel","qualifiedName":"flutter_parse_sdk_flutter.ParsePush.unsubscribeFromChannel","href":"flutter_parse_sdk_flutter/ParsePush/unsubscribeFromChannel.html","type":"method","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"Unsubscribes the device to a channel of push notifications","enclosedBy":{"name":"ParsePush","type":"class","href":"flutter_parse_sdk_flutter/ParsePush-class.html"}},{"name":"StreamGetter","qualifiedName":"flutter_parse_sdk_flutter.StreamGetter","href":"flutter_parse_sdk_flutter/StreamGetter.html","type":"typedef","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"flutter_parse_sdk_flutter","type":"library","href":"flutter_parse_sdk_flutter/flutter_parse_sdk_flutter-library.html"}},{"name":"dbDirectory","qualifiedName":"flutter_parse_sdk_flutter.dbDirectory","href":"flutter_parse_sdk_flutter/dbDirectory.html","type":"function","overriddenDepth":0,"packageName":"parse_server_sdk_flutter","desc":"","enclosedBy":{"name":"flutter_parse_sdk_flutter","type":"library","href":"flutter_parse_sdk_flutter/flutter_parse_sdk_flutter-library.html"}}] diff --git a/flutter/search.html b/flutter/search.html new file mode 100644 index 000000000..bbc2c93c0 --- /dev/null +++ b/flutter/search.html @@ -0,0 +1,101 @@ + + + + + + + + + parse_server_sdk_flutter - Dart API docs + + + + + + + + + + + + + + + + + +
+ +
+ menu + +
parse_server_sdk_flutter
+ +
+ +
+
+
+ +
+
+ + + + + +
+ +
+ + parse_server_sdk_flutter + 5.1.0 + + + +
+ + + + + + + + + + + + diff --git a/flutter/static-assets/docs.dart.js b/flutter/static-assets/docs.dart.js new file mode 100644 index 000000000..a2d14b806 --- /dev/null +++ b/flutter/static-assets/docs.dart.js @@ -0,0 +1,5922 @@ +(function dartProgram(){function copyProperties(a,b){var s=Object.keys(a) +for(var r=0;r=0)return true +if(typeof version=="function"&&version.length==0){var q=version() +if(/^\d+\.\d+\.\d+\.\d+$/.test(q))return true}}catch(p){}return false}() +function inherit(a,b){a.prototype.constructor=a +a.prototype["$i"+a.name]=a +if(b!=null){if(z){Object.setPrototypeOf(a.prototype,b.prototype) +return}var s=Object.create(b.prototype) +copyProperties(a.prototype,s) +a.prototype=s}}function inheritMany(a,b){for(var s=0;s").b(a))return new A.bY(a,b.l("@<0>").I(c).l("bY<1,2>")) +return new A.aP(a,b.l("@<0>").I(c).l("aP<1,2>"))}, +iU(a){return new A.d3("Field '"+a+"' has been assigned during initialization.")}, +hT(a){var s,r=a^48 +if(r<=9)return r +s=a|32 +if(97<=s&&s<=102)return s-87 +return-1}, +fC(a,b){a=a+b&536870911 +a=a+((a&524287)<<10)&536870911 +return a^a>>>6}, +kW(a){a=a+((a&67108863)<<3)&536870911 +a^=a>>>11 +return a+((a&16383)<<15)&536870911}, +f2(a,b,c){return a}, +iC(a){var s,r +for(s=$.b7.length,r=0;r").I(d).l("by<1,2>")) +return new A.aj(a,b,c.l("@<0>").I(d).l("aj<1,2>"))}, +i9(){return new A.bi("No element")}, +kC(){return new A.bi("Too many elements")}, +kV(a,b){A.dw(a,0,J.ax(a)-1,b)}, +dw(a,b,c,d){if(c-b<=32)A.kU(a,b,c,d) +else A.kT(a,b,c,d)}, +kU(a,b,c,d){var s,r,q,p,o +for(s=b+1,r=J.b4(a);s<=c;++s){q=r.h(a,s) +p=s +while(!0){if(!(p>b&&d.$2(r.h(a,p-1),q)>0))break +o=p-1 +r.j(a,p,r.h(a,o)) +p=o}r.j(a,p,q)}}, +kT(a3,a4,a5,a6){var s,r,q,p,o,n,m,l,k,j,i=B.c.aF(a5-a4+1,6),h=a4+i,g=a5-i,f=B.c.aF(a4+a5,2),e=f-i,d=f+i,c=J.b4(a3),b=c.h(a3,h),a=c.h(a3,e),a0=c.h(a3,f),a1=c.h(a3,d),a2=c.h(a3,g) +if(a6.$2(b,a)>0){s=a +a=b +b=s}if(a6.$2(a1,a2)>0){s=a2 +a2=a1 +a1=s}if(a6.$2(b,a0)>0){s=a0 +a0=b +b=s}if(a6.$2(a,a0)>0){s=a0 +a0=a +a=s}if(a6.$2(b,a1)>0){s=a1 +a1=b +b=s}if(a6.$2(a0,a1)>0){s=a1 +a1=a0 +a0=s}if(a6.$2(a,a2)>0){s=a2 +a2=a +a=s}if(a6.$2(a,a0)>0){s=a0 +a0=a +a=s}if(a6.$2(a1,a2)>0){s=a2 +a2=a1 +a1=s}c.j(a3,h,b) +c.j(a3,f,a0) +c.j(a3,g,a2) +c.j(a3,e,c.h(a3,a4)) +c.j(a3,d,c.h(a3,a5)) +r=a4+1 +q=a5-1 +if(J.b8(a6.$2(a,a1),0)){for(p=r;p<=q;++p){o=c.h(a3,p) +n=a6.$2(o,a) +if(n===0)continue +if(n<0){if(p!==r){c.j(a3,p,c.h(a3,r)) +c.j(a3,r,o)}++r}else for(;!0;){n=a6.$2(c.h(a3,q),a) +if(n>0){--q +continue}else{m=q-1 +if(n<0){c.j(a3,p,c.h(a3,r)) +l=r+1 +c.j(a3,r,c.h(a3,q)) +c.j(a3,q,o) +q=m +r=l +break}else{c.j(a3,p,c.h(a3,q)) +c.j(a3,q,o) +q=m +break}}}}k=!0}else{for(p=r;p<=q;++p){o=c.h(a3,p) +if(a6.$2(o,a)<0){if(p!==r){c.j(a3,p,c.h(a3,r)) +c.j(a3,r,o)}++r}else if(a6.$2(o,a1)>0)for(;!0;)if(a6.$2(c.h(a3,q),a1)>0){--q +if(qg){for(;J.b8(a6.$2(c.h(a3,r),a),0);)++r +for(;J.b8(a6.$2(c.h(a3,q),a1),0);)--q +for(p=r;p<=q;++p){o=c.h(a3,p) +if(a6.$2(o,a)===0){if(p!==r){c.j(a3,p,c.h(a3,r)) +c.j(a3,r,o)}++r}else if(a6.$2(o,a1)===0)for(;!0;)if(a6.$2(c.h(a3,q),a1)===0){--q +if(q36)throw A.b(A.S(b,2,36,"radix",n)) +if(b===10&&s!=null)return parseInt(a,10) +if(b<10||s==null){r=b<=10?47+b:86+b +q=m[1] +for(p=q.length,o=0;or)return n}return parseInt(a,b)}, +fy(a){return A.kO(a)}, +kO(a){var s,r,q,p +if(a instanceof A.y)return A.Q(A.bt(a),null) +s=J.b3(a) +if(s===B.K||s===B.M||t.o.b(a)){r=B.o(a) +if(r!=="Object"&&r!=="")return r +q=a.constructor +if(typeof q=="function"){p=q.name +if(typeof p=="string"&&p!=="Object"&&p!=="")return p}}return A.Q(A.bt(a),null)}, +kP(a){if(typeof a=="number"||A.hM(a))return J.ay(a) +if(typeof a=="string")return JSON.stringify(a) +if(a instanceof A.aA)return a.k(0) +return"Instance of '"+A.fy(a)+"'"}, +kQ(a,b,c){var s,r,q,p +if(c<=500&&b===0&&c===a.length)return String.fromCharCode.apply(null,a) +for(s=b,r="";s>>0,s&1023|56320)}}throw A.b(A.S(a,0,1114111,null,null))}, +cq(a,b){var s,r="index" +if(!A.jC(b))return new A.W(!0,b,r,null) +s=J.ax(a) +if(b<0||b>=s)return A.B(b,s,a,r) +return A.kR(b,r)}, +mx(a,b,c){if(a>c)return A.S(a,0,c,"start",null) +if(b!=null)if(bc)return A.S(b,a,c,"end",null) +return new A.W(!0,b,"end",null)}, +ms(a){return new A.W(!0,a,null,null)}, +b(a){var s,r +if(a==null)a=new A.ap() +s=new Error() +s.dartException=a +r=A.mY +if("defineProperty" in Object){Object.defineProperty(s,"message",{get:r}) +s.name=""}else s.toString=r +return s}, +mY(){return J.ay(this.dartException)}, +b6(a){throw A.b(a)}, +cs(a){throw A.b(A.aQ(a))}, +aq(a){var s,r,q,p,o,n +a=A.mS(a.replace(String({}),"$receiver$")) +s=a.match(/\\\$[a-zA-Z]+\\\$/g) +if(s==null)s=A.n([],t.s) +r=s.indexOf("\\$arguments\\$") +q=s.indexOf("\\$argumentsExpr\\$") +p=s.indexOf("\\$expr\\$") +o=s.indexOf("\\$method\\$") +n=s.indexOf("\\$receiver\\$") +return new A.fD(a.replace(new RegExp("\\\\\\$arguments\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$argumentsExpr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$expr\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$method\\\\\\$","g"),"((?:x|[^x])*)").replace(new RegExp("\\\\\\$receiver\\\\\\$","g"),"((?:x|[^x])*)"),r,q,p,o,n)}, +fE(a){return function($expr$){var $argumentsExpr$="$arguments$" +try{$expr$.$method$($argumentsExpr$)}catch(s){return s.message}}(a)}, +j6(a){return function($expr$){try{$expr$.$method$}catch(s){return s.message}}(a)}, +id(a,b){var s=b==null,r=s?null:b.method +return new A.d2(a,r,s?null:b.receiver)}, +aw(a){if(a==null)return new A.fx(a) +if(a instanceof A.bA)return A.aM(a,a.a) +if(typeof a!=="object")return a +if("dartException" in a)return A.aM(a,a.dartException) +return A.mq(a)}, +aM(a,b){if(t.U.b(b))if(b.$thrownJsError==null)b.$thrownJsError=a +return b}, +mq(a){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e=null +if(!("message" in a))return a +s=a.message +if("number" in a&&typeof a.number=="number"){r=a.number +q=r&65535 +if((B.c.ad(r,16)&8191)===10)switch(q){case 438:return A.aM(a,A.id(A.o(s)+" (Error "+q+")",e)) +case 445:case 5007:p=A.o(s) +return A.aM(a,new A.bR(p+" (Error "+q+")",e))}}if(a instanceof TypeError){o=$.jW() +n=$.jX() +m=$.jY() +l=$.jZ() +k=$.k1() +j=$.k2() +i=$.k0() +$.k_() +h=$.k4() +g=$.k3() +f=o.L(s) +if(f!=null)return A.aM(a,A.id(s,f)) +else{f=n.L(s) +if(f!=null){f.method="call" +return A.aM(a,A.id(s,f))}else{f=m.L(s) +if(f==null){f=l.L(s) +if(f==null){f=k.L(s) +if(f==null){f=j.L(s) +if(f==null){f=i.L(s) +if(f==null){f=l.L(s) +if(f==null){f=h.L(s) +if(f==null){f=g.L(s) +p=f!=null}else p=!0}else p=!0}else p=!0}else p=!0}else p=!0}else p=!0}else p=!0 +if(p)return A.aM(a,new A.bR(s,f==null?e:f.method))}}return A.aM(a,new A.dN(typeof s=="string"?s:""))}if(a instanceof RangeError){if(typeof s=="string"&&s.indexOf("call stack")!==-1)return new A.bT() +s=function(b){try{return String(b)}catch(d){}return null}(a) +return A.aM(a,new A.W(!1,e,e,typeof s=="string"?s.replace(/^RangeError:\s*/,""):s))}if(typeof InternalError=="function"&&a instanceof InternalError)if(typeof s=="string"&&s==="too much recursion")return new A.bT() +return a}, +b5(a){var s +if(a instanceof A.bA)return a.b +if(a==null)return new A.cb(a) +s=a.$cachedTrace +if(s!=null)return s +return a.$cachedTrace=new A.cb(a)}, +jP(a){if(a==null||typeof a!="object")return J.i6(a) +else return A.ds(a)}, +my(a,b){var s,r,q,p=a.length +for(s=0;s=0}, +mS(a){if(/[[\]{}()*+?.\\^$|]/.test(a))return a.replace(/[[\]{}()*+?.\\^$|]/g,"\\$&") +return a}, +jI(a){return a}, +mV(a,b,c,d){var s,r,q,p=new A.fQ(b,a,0),o=t.F,n=0,m="" +for(;p.n();){s=p.d +if(s==null)s=o.a(s) +r=s.b +q=r.index +m=m+A.o(A.jI(B.a.m(a,n,q)))+A.o(c.$1(s)) +n=q+r[0].length}p=m+A.o(A.jI(B.a.O(a,n))) +return p.charCodeAt(0)==0?p:p}, +bv:function bv(){}, +aR:function aR(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.$ti=d}, +fD:function fD(a,b,c,d,e,f){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.f=f}, +bR:function bR(a,b){this.a=a +this.b=b}, +d2:function d2(a,b,c){this.a=a +this.b=b +this.c=c}, +dN:function dN(a){this.a=a}, +fx:function fx(a){this.a=a}, +bA:function bA(a,b){this.a=a +this.b=b}, +cb:function cb(a){this.a=a +this.b=null}, +aA:function aA(){}, +cH:function cH(){}, +cI:function cI(){}, +dF:function dF(){}, +dA:function dA(){}, +bb:function bb(a,b){this.a=a +this.b=b}, +e0:function e0(a){this.a=a}, +du:function du(a){this.a=a}, +aV:function aV(a){var _=this +_.a=0 +_.f=_.e=_.d=_.c=_.b=null +_.r=0 +_.$ti=a}, +fm:function fm(a){this.a=a}, +fp:function fp(a,b){var _=this +_.a=a +_.b=b +_.d=_.c=null}, +ai:function ai(a,b){this.a=a +this.$ti=b}, +d5:function d5(a,b){var _=this +_.a=a +_.b=b +_.d=_.c=null}, +hU:function hU(a){this.a=a}, +hV:function hV(a){this.a=a}, +hW:function hW(a){this.a=a}, +fk:function fk(a,b){var _=this +_.a=a +_.b=b +_.d=_.c=null}, +ek:function ek(a){this.b=a}, +fQ:function fQ(a,b,c){var _=this +_.a=a +_.b=b +_.c=c +_.d=null}, +lU(a){return a}, +kN(a){return new Int8Array(a)}, +at(a,b,c){if(a>>>0!==a||a>=c)throw A.b(A.cq(b,a))}, +lR(a,b,c){var s +if(!(a>>>0!==a))s=b>>>0!==b||a>b||b>c +else s=!0 +if(s)throw A.b(A.mx(a,b,c)) +return b}, +dc:function dc(){}, +bM:function bM(){}, +dd:function dd(){}, +bg:function bg(){}, +bK:function bK(){}, +bL:function bL(){}, +de:function de(){}, +df:function df(){}, +dg:function dg(){}, +dh:function dh(){}, +di:function di(){}, +dj:function dj(){}, +dk:function dk(){}, +bN:function bN(){}, +bO:function bO(){}, +c3:function c3(){}, +c4:function c4(){}, +c5:function c5(){}, +c6:function c6(){}, +j2(a,b){var s=b.c +return s==null?b.c=A.ip(a,b.y,!0):s}, +ii(a,b){var s=b.c +return s==null?b.c=A.cg(a,"aC",[b.y]):s}, +j3(a){var s=a.x +if(s===6||s===7||s===8)return A.j3(a.y) +return s===12||s===13}, +kS(a){return a.at}, +hR(a){return A.eO(v.typeUniverse,a,!1)}, +aK(a,b,a0,a1){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c=b.x +switch(c){case 5:case 1:case 2:case 3:case 4:return b +case 6:s=b.y +r=A.aK(a,s,a0,a1) +if(r===s)return b +return A.jm(a,r,!0) +case 7:s=b.y +r=A.aK(a,s,a0,a1) +if(r===s)return b +return A.ip(a,r,!0) +case 8:s=b.y +r=A.aK(a,s,a0,a1) +if(r===s)return b +return A.jl(a,r,!0) +case 9:q=b.z +p=A.cp(a,q,a0,a1) +if(p===q)return b +return A.cg(a,b.y,p) +case 10:o=b.y +n=A.aK(a,o,a0,a1) +m=b.z +l=A.cp(a,m,a0,a1) +if(n===o&&l===m)return b +return A.im(a,n,l) +case 12:k=b.y +j=A.aK(a,k,a0,a1) +i=b.z +h=A.mn(a,i,a0,a1) +if(j===k&&h===i)return b +return A.jk(a,j,h) +case 13:g=b.z +a1+=g.length +f=A.cp(a,g,a0,a1) +o=b.y +n=A.aK(a,o,a0,a1) +if(f===g&&n===o)return b +return A.io(a,n,f,!0) +case 14:e=b.y +if(e=0)p+=" "+r[q];++q}return p+"})"}, +jA(a3,a4,a5){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1,a2=", " +if(a5!=null){s=a5.length +if(a4==null){a4=A.n([],t.s) +r=null}else r=a4.length +q=a4.length +for(p=s;p>0;--p)a4.push("T"+(q+p)) +for(o=t.X,n=t._,m="<",l="",p=0;p0){a0+=a1+"[" +for(a1="",p=0;p0){a0+=a1+"{" +for(a1="",p=0;p "+a}, +Q(a,b){var s,r,q,p,o,n,m=a.x +if(m===5)return"erased" +if(m===2)return"dynamic" +if(m===3)return"void" +if(m===1)return"Never" +if(m===4)return"any" +if(m===6){s=A.Q(a.y,b) +return s}if(m===7){r=a.y +s=A.Q(r,b) +q=r.x +return(q===12||q===13?"("+s+")":s)+"?"}if(m===8)return"FutureOr<"+A.Q(a.y,b)+">" +if(m===9){p=A.mp(a.y) +o=a.z +return o.length>0?p+("<"+A.jF(o,b)+">"):p}if(m===11)return A.mg(a,b) +if(m===12)return A.jA(a,b,null) +if(m===13)return A.jA(a.y,b,a.z) +if(m===14){n=a.y +return b[b.length-1-n]}return"?"}, +mp(a){var s=v.mangledGlobalNames[a] +if(s!=null)return s +return"minified:"+a}, +lu(a,b){var s=a.tR[b] +for(;typeof s=="string";)s=a.tR[s] +return s}, +lt(a,b){var s,r,q,p,o,n=a.eT,m=n[b] +if(m==null)return A.eO(a,b,!1) +else if(typeof m=="number"){s=m +r=A.ch(a,5,"#") +q=A.hw(s) +for(p=0;p0)p+="<"+A.cf(c)+">" +s=a.eC.get(p) +if(s!=null)return s +r=new A.T(null,null) +r.x=9 +r.y=b +r.z=c +if(c.length>0)r.c=c[0] +r.at=p +q=A.as(a,r) +a.eC.set(p,q) +return q}, +im(a,b,c){var s,r,q,p,o,n +if(b.x===10){s=b.y +r=b.z.concat(c)}else{r=c +s=b}q=s.at+(";<"+A.cf(r)+">") +p=a.eC.get(q) +if(p!=null)return p +o=new A.T(null,null) +o.x=10 +o.y=s +o.z=r +o.at=q +n=A.as(a,o) +a.eC.set(q,n) +return n}, +lp(a,b,c){var s,r,q="+"+(b+"("+A.cf(c)+")"),p=a.eC.get(q) +if(p!=null)return p +s=new A.T(null,null) +s.x=11 +s.y=b +s.z=c +s.at=q +r=A.as(a,s) +a.eC.set(q,r) +return r}, +jk(a,b,c){var s,r,q,p,o,n=b.at,m=c.a,l=m.length,k=c.b,j=k.length,i=c.c,h=i.length,g="("+A.cf(m) +if(j>0){s=l>0?",":"" +g+=s+"["+A.cf(k)+"]"}if(h>0){s=l>0?",":"" +g+=s+"{"+A.lj(i)+"}"}r=n+(g+")") +q=a.eC.get(r) +if(q!=null)return q +p=new A.T(null,null) +p.x=12 +p.y=b +p.z=c +p.at=r +o=A.as(a,p) +a.eC.set(r,o) +return o}, +io(a,b,c,d){var s,r=b.at+("<"+A.cf(c)+">"),q=a.eC.get(r) +if(q!=null)return q +s=A.ll(a,b,c,r,d) +a.eC.set(r,s) +return s}, +ll(a,b,c,d,e){var s,r,q,p,o,n,m,l +if(e){s=c.length +r=A.hw(s) +for(q=0,p=0;p0){n=A.aK(a,b,r,0) +m=A.cp(a,c,r,0) +return A.io(a,n,m,c!==m)}}l=new A.T(null,null) +l.x=13 +l.y=b +l.z=c +l.at=d +return A.as(a,l)}, +jf(a,b,c,d){return{u:a,e:b,r:c,s:[],p:0,n:d}}, +jh(a){var s,r,q,p,o,n,m,l=a.r,k=a.s +for(s=l.length,r=0;r=48&&q<=57)r=A.lc(r+1,q,l,k) +else if((((q|32)>>>0)-97&65535)<26||q===95||q===36||q===124)r=A.jg(a,r,l,k,!1) +else if(q===46)r=A.jg(a,r,l,k,!0) +else{++r +switch(q){case 44:break +case 58:k.push(!1) +break +case 33:k.push(!0) +break +case 59:k.push(A.aJ(a.u,a.e,k.pop())) +break +case 94:k.push(A.lo(a.u,k.pop())) +break +case 35:k.push(A.ch(a.u,5,"#")) +break +case 64:k.push(A.ch(a.u,2,"@")) +break +case 126:k.push(A.ch(a.u,3,"~")) +break +case 60:k.push(a.p) +a.p=k.length +break +case 62:A.le(a,k) +break +case 38:A.ld(a,k) +break +case 42:p=a.u +k.push(A.jm(p,A.aJ(p,a.e,k.pop()),a.n)) +break +case 63:p=a.u +k.push(A.ip(p,A.aJ(p,a.e,k.pop()),a.n)) +break +case 47:p=a.u +k.push(A.jl(p,A.aJ(p,a.e,k.pop()),a.n)) +break +case 40:k.push(-3) +k.push(a.p) +a.p=k.length +break +case 41:A.lb(a,k) +break +case 91:k.push(a.p) +a.p=k.length +break +case 93:o=k.splice(a.p) +A.ji(a.u,a.e,o) +a.p=k.pop() +k.push(o) +k.push(-1) +break +case 123:k.push(a.p) +a.p=k.length +break +case 125:o=k.splice(a.p) +A.lg(a.u,a.e,o) +a.p=k.pop() +k.push(o) +k.push(-2) +break +case 43:n=l.indexOf("(",r) +k.push(l.substring(r,n)) +k.push(-4) +k.push(a.p) +a.p=k.length +r=n+1 +break +default:throw"Bad character "+q}}}m=k.pop() +return A.aJ(a.u,a.e,m)}, +lc(a,b,c,d){var s,r,q=b-48 +for(s=c.length;a=48&&r<=57))break +q=q*10+(r-48)}d.push(q) +return a}, +jg(a,b,c,d,e){var s,r,q,p,o,n,m=b+1 +for(s=c.length;m>>0)-97&65535)<26||r===95||r===36||r===124))q=r>=48&&r<=57 +else q=!0 +if(!q)break}}p=c.substring(b,m) +if(e){s=a.u +o=a.e +if(o.x===10)o=o.y +n=A.lu(s,o.y)[p] +if(n==null)A.b6('No "'+p+'" in "'+A.kS(o)+'"') +d.push(A.hr(s,o,n))}else d.push(p) +return m}, +le(a,b){var s,r=a.u,q=A.je(a,b),p=b.pop() +if(typeof p=="string")b.push(A.cg(r,p,q)) +else{s=A.aJ(r,a.e,p) +switch(s.x){case 12:b.push(A.io(r,s,q,a.n)) +break +default:b.push(A.im(r,s,q)) +break}}}, +lb(a,b){var s,r,q,p,o,n=null,m=a.u,l=b.pop() +if(typeof l=="number")switch(l){case-1:s=b.pop() +r=n +break +case-2:r=b.pop() +s=n +break +default:b.push(l) +r=n +s=r +break}else{b.push(l) +r=n +s=r}q=A.je(a,b) +l=b.pop() +switch(l){case-3:l=b.pop() +if(s==null)s=m.sEA +if(r==null)r=m.sEA +p=A.aJ(m,a.e,l) +o=new A.eb() +o.a=q +o.b=s +o.c=r +b.push(A.jk(m,p,o)) +return +case-4:b.push(A.lp(m,b.pop(),q)) +return +default:throw A.b(A.cA("Unexpected state under `()`: "+A.o(l)))}}, +ld(a,b){var s=b.pop() +if(0===s){b.push(A.ch(a.u,1,"0&")) +return}if(1===s){b.push(A.ch(a.u,4,"1&")) +return}throw A.b(A.cA("Unexpected extended operation "+A.o(s)))}, +je(a,b){var s=b.splice(a.p) +A.ji(a.u,a.e,s) +a.p=b.pop() +return s}, +aJ(a,b,c){if(typeof c=="string")return A.cg(a,c,a.sEA) +else if(typeof c=="number"){b.toString +return A.lf(a,b,c)}else return c}, +ji(a,b,c){var s,r=c.length +for(s=0;sn)return!1 +m=n-o +l=s.b +k=r.b +j=l.length +i=k.length +if(o+j=d)return!1 +a1=f[b] +b+=3 +if(a00?new Array(q):v.typeUniverse.sEA +for(o=0;o0?new Array(a):v.typeUniverse.sEA}, +T:function T(a,b){var _=this +_.a=a +_.b=b +_.w=_.r=_.c=null +_.x=0 +_.at=_.as=_.Q=_.z=_.y=null}, +eb:function eb(){this.c=this.b=this.a=null}, +hq:function hq(a){this.a=a}, +e8:function e8(){}, +ce:function ce(a){this.a=a}, +l2(){var s,r,q={} +if(self.scheduleImmediate!=null)return A.mt() +if(self.MutationObserver!=null&&self.document!=null){s=self.document.createElement("div") +r=self.document.createElement("span") +q.a=null +new self.MutationObserver(A.bs(new A.fS(q),1)).observe(s,{childList:true}) +return new A.fR(q,s,r)}else if(self.setImmediate!=null)return A.mu() +return A.mv()}, +l3(a){self.scheduleImmediate(A.bs(new A.fT(a),0))}, +l4(a){self.setImmediate(A.bs(new A.fU(a),0))}, +l5(a){A.lh(0,a)}, +lh(a,b){var s=new A.ho() +s.bL(a,b) +return s}, +mc(a){return new A.dU(new A.H($.F,a.l("H<0>")),a.l("dU<0>"))}, +lP(a,b){a.$2(0,null) +b.b=!0 +return b.a}, +lM(a,b){A.lQ(a,b)}, +lO(a,b){b.aJ(0,a)}, +lN(a,b){b.aK(A.aw(a),A.b5(a))}, +lQ(a,b){var s,r,q=new A.hz(b),p=new A.hA(b) +if(a instanceof A.H)a.b7(q,p,t.z) +else{s=t.z +if(a instanceof A.H)a.aV(q,p,s) +else{r=new A.H($.F,t.M) +r.a=8 +r.c=a +r.b7(q,p,s)}}}, +mr(a){var s=function(b,c){return function(d,e){while(true)try{b(d,e) +break}catch(r){e=r +d=c}}}(a,1) +return $.F.br(new A.hP(s))}, +f6(a,b){var s=A.f2(a,"error",t.K) +return new A.cB(s,b==null?A.iJ(a):b)}, +iJ(a){var s +if(t.U.b(a)){s=a.gaa() +if(s!=null)return s}return B.I}, +ij(a,b){var s,r +for(;s=a.a,(s&4)!==0;)a=a.c +if((s&24)!==0){r=b.aE() +b.aq(a) +A.c_(b,r)}else{r=b.c +b.a=b.a&1|4 +b.c=a +a.b5(r)}}, +c_(a,b){var s,r,q,p,o,n,m,l,k,j,i,h,g={},f=g.a=a +for(;!0;){s={} +r=f.a +q=(r&16)===0 +p=!q +if(b==null){if(p&&(r&1)===0){f=f.c +A.iy(f.a,f.b)}return}s.a=b +o=b.a +for(f=b;o!=null;f=o,o=n){f.a=null +A.c_(g.a,f) +s.a=o +n=o.a}r=g.a +m=r.c +s.b=p +s.c=m +if(q){l=f.c +l=(l&1)!==0||(l&15)===8}else l=!0 +if(l){k=f.b.b +if(p){r=r.b===k +r=!(r||r)}else r=!1 +if(r){A.iy(m.a,m.b) +return}j=$.F +if(j!==k)$.F=k +else j=null +f=f.c +if((f&15)===8)new A.h8(s,g,p).$0() +else if(q){if((f&1)!==0)new A.h7(s,m).$0()}else if((f&2)!==0)new A.h6(g,s).$0() +if(j!=null)$.F=j +f=s.c +if(f instanceof A.H){r=s.a.$ti +r=r.l("aC<2>").b(f)||!r.z[1].b(f)}else r=!1 +if(r){i=s.a.b +if((f.a&24)!==0){h=i.c +i.c=null +b=i.ac(h) +i.a=f.a&30|i.a&1 +i.c=f.c +g.a=f +continue}else A.ij(f,i) +return}}i=s.a.b +h=i.c +i.c=null +b=i.ac(h) +f=s.b +r=s.c +if(!f){i.a=8 +i.c=r}else{i.a=i.a&1|16 +i.c=r}g.a=i +f=i}}, +mh(a,b){if(t.C.b(a))return b.br(a) +if(t.w.b(a))return a +throw A.b(A.i7(a,"onError",u.c))}, +me(){var s,r +for(s=$.bq;s!=null;s=$.bq){$.co=null +r=s.b +$.bq=r +if(r==null)$.cn=null +s.a.$0()}}, +ml(){$.ix=!0 +try{A.me()}finally{$.co=null +$.ix=!1 +if($.bq!=null)$.iE().$1(A.jK())}}, +jH(a){var s=new A.dV(a),r=$.cn +if(r==null){$.bq=$.cn=s +if(!$.ix)$.iE().$1(A.jK())}else $.cn=r.b=s}, +mk(a){var s,r,q,p=$.bq +if(p==null){A.jH(a) +$.co=$.cn +return}s=new A.dV(a) +r=$.co +if(r==null){s.b=p +$.bq=$.co=s}else{q=r.b +s.b=q +$.co=r.b=s +if(q==null)$.cn=s}}, +mT(a){var s,r=null,q=$.F +if(B.d===q){A.b1(r,r,B.d,a) +return}s=!1 +if(s){A.b1(r,r,q,a) +return}A.b1(r,r,q,q.bc(a))}, +ns(a){A.f2(a,"stream",t.K) +return new A.eB()}, +iy(a,b){A.mk(new A.hN(a,b))}, +jE(a,b,c,d){var s,r=$.F +if(r===c)return d.$0() +$.F=c +s=r +try{r=d.$0() +return r}finally{$.F=s}}, +mj(a,b,c,d,e){var s,r=$.F +if(r===c)return d.$1(e) +$.F=c +s=r +try{r=d.$1(e) +return r}finally{$.F=s}}, +mi(a,b,c,d,e,f){var s,r=$.F +if(r===c)return d.$2(e,f) +$.F=c +s=r +try{r=d.$2(e,f) +return r}finally{$.F=s}}, +b1(a,b,c,d){if(B.d!==c)d=c.bc(d) +A.jH(d)}, +fS:function fS(a){this.a=a}, +fR:function fR(a,b,c){this.a=a +this.b=b +this.c=c}, +fT:function fT(a){this.a=a}, +fU:function fU(a){this.a=a}, +ho:function ho(){}, +hp:function hp(a,b){this.a=a +this.b=b}, +dU:function dU(a,b){this.a=a +this.b=!1 +this.$ti=b}, +hz:function hz(a){this.a=a}, +hA:function hA(a){this.a=a}, +hP:function hP(a){this.a=a}, +cB:function cB(a,b){this.a=a +this.b=b}, +dY:function dY(){}, +bV:function bV(a,b){this.a=a +this.$ti=b}, +bn:function bn(a,b,c,d,e){var _=this +_.a=null +_.b=a +_.c=b +_.d=c +_.e=d +_.$ti=e}, +H:function H(a,b){var _=this +_.a=0 +_.b=a +_.c=null +_.$ti=b}, +fZ:function fZ(a,b){this.a=a +this.b=b}, +h5:function h5(a,b){this.a=a +this.b=b}, +h1:function h1(a){this.a=a}, +h2:function h2(a){this.a=a}, +h3:function h3(a,b,c){this.a=a +this.b=b +this.c=c}, +h0:function h0(a,b){this.a=a +this.b=b}, +h4:function h4(a,b){this.a=a +this.b=b}, +h_:function h_(a,b,c){this.a=a +this.b=b +this.c=c}, +h8:function h8(a,b,c){this.a=a +this.b=b +this.c=c}, +h9:function h9(a){this.a=a}, +h7:function h7(a,b){this.a=a +this.b=b}, +h6:function h6(a,b){this.a=a +this.b=b}, +dV:function dV(a){this.a=a +this.b=null}, +eB:function eB(){}, +hy:function hy(){}, +hN:function hN(a,b){this.a=a +this.b=b}, +hc:function hc(){}, +hd:function hd(a,b){this.a=a +this.b=b}, +iV(a,b,c){return A.my(a,new A.aV(b.l("@<0>").I(c).l("aV<1,2>")))}, +d6(a,b){return new A.aV(a.l("@<0>").I(b).l("aV<1,2>"))}, +bG(a){return new A.c0(a.l("c0<0>"))}, +ik(){var s=Object.create(null) +s[""]=s +delete s[""] +return s}, +la(a,b){var s=new A.c1(a,b) +s.c=a.e +return s}, +iW(a,b){var s,r,q=A.bG(b) +for(s=a.length,r=0;r=0)return null +return r}return null}, +l1(a,b,c,d){var s=a?$.k6():$.k5() +if(s==null)return null +if(0===c&&d===b.length)return A.jb(s,b) +return A.jb(s,b.subarray(c,A.aW(c,d,b.length)))}, +jb(a,b){var s,r +try{s=a.decode(b) +return s}catch(r){}return null}, +iK(a,b,c,d,e,f){if(B.c.am(f,4)!==0)throw A.b(A.K("Invalid base64 padding, padded length must be multiple of four, is "+f,a,c)) +if(d+e!==f)throw A.b(A.K("Invalid base64 padding, '=' not at the end",a,b)) +if(e>2)throw A.b(A.K("Invalid base64 padding, more than two '=' characters",a,b))}, +lJ(a){switch(a){case 65:return"Missing extension byte" +case 67:return"Unexpected extension byte" +case 69:return"Invalid UTF-8 byte" +case 71:return"Overlong encoding" +case 73:return"Out of unicode range" +case 75:return"Encoded surrogate" +case 77:return"Unfinished UTF-8 octet sequence" +default:return""}}, +lI(a,b,c){var s,r,q,p=c-b,o=new Uint8Array(p) +for(s=J.b4(a),r=0;r>>0!==0?255:q}return o}, +eg:function eg(a,b){this.a=a +this.b=b +this.c=null}, +eh:function eh(a){this.a=a}, +fO:function fO(){}, +fN:function fN(){}, +f8:function f8(){}, +f9:function f9(){}, +cK:function cK(){}, +cM:function cM(){}, +fd:function fd(){}, +fj:function fj(){}, +fi:function fi(){}, +fn:function fn(){}, +fo:function fo(a){this.a=a}, +fL:function fL(){}, +fP:function fP(){}, +hv:function hv(a){this.b=0 +this.c=a}, +fM:function fM(a){this.a=a}, +hu:function hu(a){this.a=a +this.b=16 +this.c=0}, +i0(a,b){var s=A.j0(a,b) +if(s!=null)return s +throw A.b(A.K(a,null,null))}, +kw(a,b){a=A.b(a) +a.stack=b.k(0) +throw a +throw A.b("unreachable")}, +iX(a,b,c,d){var s,r=c?J.kF(a,d):J.kE(a,d) +if(a!==0&&b!=null)for(s=0;s")) +for(s=a.gv(a);s.n();)r.push(s.gt(s)) +if(b)return r +return J.ib(r)}, +iY(a,b,c){var s=A.kK(a,c) +return s}, +kK(a,b){var s,r +if(Array.isArray(a))return A.n(a.slice(0),b.l("C<0>")) +s=A.n([],b.l("C<0>")) +for(r=J.ae(a);r.n();)s.push(r.gt(r)) +return s}, +j5(a,b,c){var s=A.kQ(a,b,A.aW(b,c,a.length)) +return s}, +ih(a,b){return new A.fk(a,A.iT(a,!1,b,!1,!1,!1))}, +j4(a,b,c){var s=J.ae(b) +if(!s.n())return a +if(c.length===0){do a+=A.o(s.gt(s)) +while(s.n())}else{a+=A.o(s.gt(s)) +for(;s.n();)a=a+c+A.o(s.gt(s))}return a}, +jt(a,b,c,d){var s,r,q,p,o,n="0123456789ABCDEF" +if(c===B.h){s=$.k9().b +s=s.test(b)}else s=!1 +if(s)return b +r=c.gcf().Y(b) +for(s=r.length,q=0,p="";q>>4]&1<<(o&15))!==0)p+=A.am(o) +else p=d&&o===32?p+"+":p+"%"+n[o>>>4&15]+n[o&15]}return p.charCodeAt(0)==0?p:p}, +fe(a){if(typeof a=="number"||A.hM(a)||a==null)return J.ay(a) +if(typeof a=="string")return JSON.stringify(a) +return A.kP(a)}, +cA(a){return new A.cz(a)}, +aN(a,b){return new A.W(!1,null,b,a)}, +i7(a,b,c){return new A.W(!0,a,b,c)}, +kR(a,b){return new A.bS(null,null,!0,a,b,"Value not in range")}, +S(a,b,c,d,e){return new A.bS(b,c,!0,a,d,"Invalid value")}, +aW(a,b,c){if(0>a||a>c)throw A.b(A.S(a,0,c,"start",null)) +if(b!=null){if(a>b||b>c)throw A.b(A.S(b,a,c,"end",null)) +return b}return c}, +j1(a,b){if(a<0)throw A.b(A.S(a,0,null,b,null)) +return a}, +B(a,b,c,d){return new A.d_(b,!0,a,d,"Index out of range")}, +r(a){return new A.dP(a)}, +j7(a){return new A.dM(a)}, +dz(a){return new A.bi(a)}, +aQ(a){return new A.cL(a)}, +K(a,b,c){return new A.fh(a,b,c)}, +kD(a,b,c){var s,r +if(A.iC(a)){if(b==="("&&c===")")return"(...)" +return b+"..."+c}s=A.n([],t.s) +$.b7.push(a) +try{A.mb(a,s)}finally{$.b7.pop()}r=A.j4(b,s,", ")+c +return r.charCodeAt(0)==0?r:r}, +ia(a,b,c){var s,r +if(A.iC(a))return b+"..."+c +s=new A.L(b) +$.b7.push(a) +try{r=s +r.a=A.j4(r.a,a,", ")}finally{$.b7.pop()}s.a+=c +r=s.a +return r.charCodeAt(0)==0?r:r}, +mb(a,b){var s,r,q,p,o,n,m,l=a.gv(a),k=0,j=0 +while(!0){if(!(k<80||j<3))break +if(!l.n())return +s=A.o(l.gt(l)) +b.push(s) +k+=s.length+2;++j}if(!l.n()){if(j<=5)return +r=b.pop() +q=b.pop()}else{p=l.gt(l);++j +if(!l.n()){if(j<=4){b.push(A.o(p)) +return}r=A.o(p) +q=b.pop() +k+=r.length+2}else{o=l.gt(l);++j +for(;l.n();p=o,o=n){n=l.gt(l);++j +if(j>100){while(!0){if(!(k>75&&j>3))break +k-=b.pop().length+2;--j}b.push("...") +return}}q=A.o(p) +r=A.o(o) +k+=r.length+q.length+4}}if(j>b.length+2){k+=5 +m="..."}else m=null +while(!0){if(!(k>80&&b.length>3))break +k-=b.pop().length+2 +if(m==null){k+=5 +m="..."}}if(m!=null)b.push(m) +b.push(q) +b.push(r)}, +iZ(a,b,c,d){var s,r=B.e.gB(a) +b=B.e.gB(b) +c=B.e.gB(c) +d=B.e.gB(d) +s=$.ka() +return A.kW(A.fC(A.fC(A.fC(A.fC(s,r),b),c),d))}, +fH(a5){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e,d,c,b,a,a0,a1,a2,a3=null,a4=a5.length +if(a4>=5){s=((B.a.p(a5,4)^58)*3|B.a.p(a5,0)^100|B.a.p(a5,1)^97|B.a.p(a5,2)^116|B.a.p(a5,3)^97)>>>0 +if(s===0)return A.j8(a4=14)r[7]=a4 +q=r[1] +if(q>=0)if(A.jG(a5,0,q,20,r)===20)r[7]=q +p=r[2]+1 +o=r[3] +n=r[4] +m=r[5] +l=r[6] +if(lq+3){j=a3 +k=!1}else{i=o>0 +if(i&&o+1===n){j=a3 +k=!1}else{if(!B.a.H(a5,"\\",n))if(p>0)h=B.a.H(a5,"\\",p-1)||B.a.H(a5,"\\",p-2) +else h=!1 +else h=!0 +if(h){j=a3 +k=!1}else{if(!(mn+2&&B.a.H(a5,"/..",m-3) +else h=!0 +if(h){j=a3 +k=!1}else{if(q===4)if(B.a.H(a5,"file",0)){if(p<=0){if(!B.a.H(a5,"/",n)){g="file:///" +s=3}else{g="file://" +s=2}a5=g+B.a.m(a5,n,a4) +q-=0 +i=s-0 +m+=i +l+=i +a4=a5.length +p=7 +o=7 +n=7}else if(n===m){++l +f=m+1 +a5=B.a.a_(a5,n,m,"/");++a4 +m=f}j="file"}else if(B.a.H(a5,"http",0)){if(i&&o+3===n&&B.a.H(a5,"80",o+1)){l-=3 +e=n-3 +m-=3 +a5=B.a.a_(a5,o,n,"") +a4-=3 +n=e}j="http"}else j=a3 +else if(q===5&&B.a.H(a5,"https",0)){if(i&&o+4===n&&B.a.H(a5,"443",o+1)){l-=4 +e=n-4 +m-=4 +a5=B.a.a_(a5,o,n,"") +a4-=3 +n=e}j="https"}else j=a3 +k=!0}}}}else j=a3 +if(k){if(a40)j=A.lC(a5,0,q) +else{if(q===0)A.bp(a5,0,"Invalid empty scheme") +j=""}if(p>0){d=q+3 +c=d9)k.$2("invalid character",s)}else{if(q===3)k.$2(m,s) +o=A.i0(B.a.m(a,r,s),null) +if(o>255)k.$2(l,r) +n=q+1 +j[q]=o +r=s+1 +q=n}}if(q!==3)k.$2(m,c) +o=A.i0(B.a.m(a,r,c),null) +if(o>255)k.$2(l,r) +j[q]=o +return j}, +j9(a,b,a0){var s,r,q,p,o,n,m,l,k,j,i,h,g,f,e=null,d=new A.fI(a),c=new A.fJ(d,a) +if(a.length<2)d.$2("address is too short",e) +s=A.n([],t.t) +for(r=b,q=r,p=!1,o=!1;r>>0) +s.push((k[2]<<8|k[3])>>>0)}if(p){if(s.length>7)d.$2("an address with a wildcard must have less than 7 parts",e)}else if(s.length!==8)d.$2("an address without a wildcard must contain exactly 8 parts",e) +j=new Uint8Array(16) +for(l=s.length,i=9-l,r=0,h=0;r=b&&q=b&&s>>4]&1<<(p&15))!==0){if(q&&65<=p&&90>=p){if(i==null)i=new A.L("") +if(r>>4]&1<<(o&15))!==0){if(p&&65<=o&&90>=o){if(q==null)q=new A.L("") +if(r>>4]&1<<(o&15))!==0)A.bp(a,s,"Invalid character") +else{if((o&64512)===55296&&s+1>>4]&1<<(q&15))!==0))A.bp(a,s,"Illegal scheme character") +if(65<=q&&q<=90)r=!0}a=B.a.m(a,b,c) +return A.lv(r?a.toLowerCase():a)}, +lv(a){if(a==="http")return"http" +if(a==="file")return"file" +if(a==="https")return"https" +if(a==="package")return"package" +return a}, +lD(a,b,c){return A.ck(a,b,c,B.P,!1,!1)}, +lA(a,b,c,d,e,f){var s,r=e==="file",q=r||f +if(a==null)return r?"/":"" +else s=A.ck(a,b,c,B.t,!0,!0) +if(s.length===0){if(r)return"/"}else if(q&&!B.a.C(s,"/"))s="/"+s +return A.lE(s,e,f)}, +lE(a,b,c){var s=b.length===0 +if(s&&!c&&!B.a.C(a,"/")&&!B.a.C(a,"\\"))return A.lG(a,!s||c) +return A.lH(a)}, +is(a,b,c,d){var s,r={} +if(a!=null){if(d!=null)throw A.b(A.aN("Both query and queryParameters specified",null)) +return A.ck(a,b,c,B.j,!0,!1)}if(d==null)return null +s=new A.L("") +r.a="" +d.D(0,new A.hs(new A.ht(r,s))) +r=s.a +return r.charCodeAt(0)==0?r:r}, +ly(a,b,c){return A.ck(a,b,c,B.j,!0,!1)}, +it(a,b,c){var s,r,q,p,o,n=b+2 +if(n>=a.length)return"%" +s=B.a.u(a,b+1) +r=B.a.u(a,n) +q=A.hT(s) +p=A.hT(r) +if(q<0||p<0)return"%" +o=q*16+p +if(o<127&&(B.i[B.c.ad(o,4)]&1<<(o&15))!==0)return A.am(c&&65<=o&&90>=o?(o|32)>>>0:o) +if(s>=97||r>=97)return B.a.m(a,b,b+3).toUpperCase() +return null}, +ir(a){var s,r,q,p,o,n="0123456789ABCDEF" +if(a<128){s=new Uint8Array(3) +s[0]=37 +s[1]=B.a.p(n,a>>>4) +s[2]=B.a.p(n,a&15)}else{if(a>2047)if(a>65535){r=240 +q=4}else{r=224 +q=3}else{r=192 +q=2}s=new Uint8Array(3*q) +for(p=0;--q,q>=0;r=128){o=B.c.c3(a,6*q)&63|r +s[p]=37 +s[p+1]=B.a.p(n,o>>>4) +s[p+2]=B.a.p(n,o&15) +p+=3}}return A.j5(s,0,null)}, +ck(a,b,c,d,e,f){var s=A.jr(a,b,c,d,e,f) +return s==null?B.a.m(a,b,c):s}, +jr(a,b,c,d,e,f){var s,r,q,p,o,n,m,l,k,j,i=null +for(s=!e,r=b,q=r,p=i;r>>4]&1<<(o&15))!==0)++r +else{if(o===37){n=A.it(a,r,!1) +if(n==null){r+=3 +continue}if("%"===n){n="%25" +m=1}else m=3}else if(o===92&&f){n="/" +m=1}else if(s&&o<=93&&(B.u[o>>>4]&1<<(o&15))!==0){A.bp(a,r,"Invalid character") +m=i +n=m}else{if((o&64512)===55296){l=r+1 +if(l=2&&A.jp(B.a.p(a,0)))for(s=1;s127||(B.r[r>>>4]&1<<(r&15))===0)break}return a}, +lx(a,b){var s,r,q +for(s=0,r=0;r<2;++r){q=B.a.p(a,b+r) +if(48<=q&&q<=57)s=s*16+q-48 +else{q|=32 +if(97<=q&&q<=102)s=s*16+q-87 +else throw A.b(A.aN("Invalid URL encoding",null))}}return s}, +iu(a,b,c,d,e){var s,r,q,p,o=b +while(!0){if(!(o127)throw A.b(A.aN("Illegal percent encoding in URI",null)) +if(r===37){if(o+3>q)throw A.b(A.aN("Truncated URI",null)) +p.push(A.lx(a,o+1)) +o+=2}else if(r===43)p.push(32) +else p.push(r)}}return B.a8.Y(p)}, +jp(a){var s=a|32 +return 97<=s&&s<=122}, +j8(a,b,c){var s,r,q,p,o,n,m,l,k="Invalid MIME type",j=A.n([b-1],t.t) +for(s=a.length,r=b,q=-1,p=null;rb)throw A.b(A.K(k,a,r)) +for(;p!==44;){j.push(r);++r +for(o=-1;r=0)j.push(o) +else{n=B.b.gai(j) +if(p!==44||r!==n+7||!B.a.H(a,"base64",n+1))throw A.b(A.K("Expecting '='",a,r)) +break}}j.push(r) +m=r+1 +if((j.length&1)===1)a=B.y.ct(0,a,m,s) +else{l=A.jr(a,m,s,B.j,!0,!1) +if(l!=null)a=B.a.a_(a,m,s,l)}return new A.fF(a,j,c)}, +lT(){var s,r,q,p,o,n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-._~!$&'()*+,;=",m=".",l=":",k="/",j="\\",i="?",h="#",g="/\\",f=A.n(new Array(22),t.m) +for(s=0;s<22;++s)f[s]=new Uint8Array(96) +r=new A.hE(f) +q=new A.hF() +p=new A.hG() +o=r.$2(0,225) +q.$3(o,n,1) +q.$3(o,m,14) +q.$3(o,l,34) +q.$3(o,k,3) +q.$3(o,j,227) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(14,225) +q.$3(o,n,1) +q.$3(o,m,15) +q.$3(o,l,34) +q.$3(o,g,234) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(15,225) +q.$3(o,n,1) +q.$3(o,"%",225) +q.$3(o,l,34) +q.$3(o,k,9) +q.$3(o,j,233) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(1,225) +q.$3(o,n,1) +q.$3(o,l,34) +q.$3(o,k,10) +q.$3(o,j,234) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(2,235) +q.$3(o,n,139) +q.$3(o,k,131) +q.$3(o,j,131) +q.$3(o,m,146) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(3,235) +q.$3(o,n,11) +q.$3(o,k,68) +q.$3(o,j,68) +q.$3(o,m,18) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(4,229) +q.$3(o,n,5) +p.$3(o,"AZ",229) +q.$3(o,l,102) +q.$3(o,"@",68) +q.$3(o,"[",232) +q.$3(o,k,138) +q.$3(o,j,138) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(5,229) +q.$3(o,n,5) +p.$3(o,"AZ",229) +q.$3(o,l,102) +q.$3(o,"@",68) +q.$3(o,k,138) +q.$3(o,j,138) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(6,231) +p.$3(o,"19",7) +q.$3(o,"@",68) +q.$3(o,k,138) +q.$3(o,j,138) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(7,231) +p.$3(o,"09",7) +q.$3(o,"@",68) +q.$3(o,k,138) +q.$3(o,j,138) +q.$3(o,i,172) +q.$3(o,h,205) +q.$3(r.$2(8,8),"]",5) +o=r.$2(9,235) +q.$3(o,n,11) +q.$3(o,m,16) +q.$3(o,g,234) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(16,235) +q.$3(o,n,11) +q.$3(o,m,17) +q.$3(o,g,234) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(17,235) +q.$3(o,n,11) +q.$3(o,k,9) +q.$3(o,j,233) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(10,235) +q.$3(o,n,11) +q.$3(o,m,18) +q.$3(o,k,10) +q.$3(o,j,234) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(18,235) +q.$3(o,n,11) +q.$3(o,m,19) +q.$3(o,g,234) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(19,235) +q.$3(o,n,11) +q.$3(o,g,234) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(11,235) +q.$3(o,n,11) +q.$3(o,k,10) +q.$3(o,j,234) +q.$3(o,i,172) +q.$3(o,h,205) +o=r.$2(12,236) +q.$3(o,n,12) +q.$3(o,i,12) +q.$3(o,h,205) +o=r.$2(13,237) +q.$3(o,n,13) +q.$3(o,i,13) +p.$3(r.$2(20,245),"az",21) +o=r.$2(21,245) +p.$3(o,"az",21) +p.$3(o,"09",21) +q.$3(o,"+-.",21) +return f}, +jG(a,b,c,d,e){var s,r,q,p,o=$.kb() +for(s=b;s95?31:q] +d=p&31 +e[p>>>5]=s}return d}, +z:function z(){}, +cz:function cz(a){this.a=a}, +ap:function ap(){}, +W:function W(a,b,c,d){var _=this +_.a=a +_.b=b +_.c=c +_.d=d}, +bS:function bS(a,b,c,d,e,f){var _=this +_.e=a +_.f=b +_.a=c +_.b=d +_.c=e +_.d=f}, +d_:function d_(a,b,c,d,e){var _=this +_.f=a +_.a=b +_.b=c +_.c=d +_.d=e}, +dP:function dP(a){this.a=a}, +dM:function dM(a){this.a=a}, +bi:function bi(a){this.a=a}, +cL:function cL(a){this.a=a}, +dn:function dn(){}, +bT:function bT(){}, +fY:function fY(a){this.a=a}, +fh:function fh(a,b,c){this.a=a +this.b=b +this.c=c}, +u:function u(){}, +G:function G(){}, +y:function y(){}, +eE:function eE(){}, +L:function L(a){this.a=a}, +fK:function fK(a){this.a=a}, +fG:function fG(a){this.a=a}, +fI:function fI(a){this.a=a}, +fJ:function fJ(a,b){this.a=a +this.b=b}, +cj:function cj(a,b,c,d,e,f,g){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.f=f +_.r=g +_.z=_.y=_.w=$}, +ht:function ht(a,b){this.a=a +this.b=b}, +hs:function hs(a){this.a=a}, +fF:function fF(a,b,c){this.a=a +this.b=b +this.c=c}, +hE:function hE(a){this.a=a}, +hF:function hF(){}, +hG:function hG(){}, +ew:function ew(a,b,c,d,e,f,g,h){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.f=f +_.r=g +_.w=h +_.x=null}, +e2:function e2(a,b,c,d,e,f,g){var _=this +_.a=a +_.b=b +_.c=c +_.d=d +_.e=e +_.f=f +_.r=g +_.z=_.y=_.w=$}, +l6(a,b){var s +for(s=b.gv(b);s.n();)a.appendChild(s.gt(s))}, +kv(a,b,c){var s=document.body +s.toString +s=new A.ar(new A.J(B.m.J(s,a,b,c)),new A.fc(),t.G.l("ar")) +return t.h.a(s.gW(s))}, +bz(a){var s,r="element tag unavailable" +try{r=a.tagName}catch(s){}return r}, +jd(a){var s=document.createElement("a"),r=new A.he(s,window.location) +r=new A.bo(r) +r.bJ(a) +return r}, +l7(a,b,c,d){return!0}, +l8(a,b,c,d){var s,r=d.a,q=r.a +q.href=c +s=q.hostname +r=r.b +if(!(s==r.hostname&&q.port===r.port&&q.protocol===r.protocol))if(s==="")if(q.port===""){r=q.protocol +r=r===":"||r===""}else r=!1 +else r=!1 +else r=!0 +return r}, +jj(){var s=t.N,r=A.iW(B.q,s),q=A.n(["TEMPLATE"],t.s) +s=new A.eH(r,A.bG(s),A.bG(s),A.bG(s),null) +s.bK(null,new A.ak(B.q,new A.hn(),t.E),q,null) +return s}, +l:function l(){}, +cw:function cw(){}, +cx:function cx(){}, +cy:function cy(){}, +ba:function ba(){}, +bu:function bu(){}, +aO:function aO(){}, +a0:function a0(){}, +cO:function cO(){}, +w:function w(){}, +bc:function bc(){}, +fb:function fb(){}, +N:function N(){}, +X:function X(){}, +cP:function cP(){}, +cQ:function cQ(){}, +cR:function cR(){}, +aS:function aS(){}, +cS:function cS(){}, +bw:function bw(){}, +bx:function bx(){}, +cT:function cT(){}, +cU:function cU(){}, +q:function q(){}, +fc:function fc(){}, +h:function h(){}, +c:function c(){}, +a1:function a1(){}, +cV:function cV(){}, +cW:function cW(){}, +cY:function cY(){}, +a2:function a2(){}, +cZ:function cZ(){}, +aU:function aU(){}, +bD:function bD(){}, +aD:function aD(){}, +bf:function bf(){}, +d7:function d7(){}, +d8:function d8(){}, +d9:function d9(){}, +fs:function fs(a){this.a=a}, +da:function da(){}, +ft:function ft(a){this.a=a}, +a4:function a4(){}, +db:function db(){}, +J:function J(a){this.a=a}, +m:function m(){}, +bP:function bP(){}, +a6:function a6(){}, +dq:function dq(){}, +dt:function dt(){}, +fz:function fz(a){this.a=a}, +dv:function dv(){}, +a7:function a7(){}, +dx:function dx(){}, +a8:function a8(){}, +dy:function dy(){}, +a9:function a9(){}, +dB:function dB(){}, +fB:function fB(a){this.a=a}, +U:function U(){}, +bU:function bU(){}, +dD:function dD(){}, +dE:function dE(){}, +bj:function bj(){}, +aY:function aY(){}, +aa:function aa(){}, +V:function V(){}, +dG:function dG(){}, +dH:function dH(){}, +dI:function dI(){}, +ab:function ab(){}, +dJ:function dJ(){}, +dK:function dK(){}, +P:function P(){}, +dR:function dR(){}, +dS:function dS(){}, +bm:function bm(){}, +dZ:function dZ(){}, +bX:function bX(){}, +ec:function ec(){}, +c2:function c2(){}, +ez:function ez(){}, +eF:function eF(){}, +dW:function dW(){}, +bZ:function bZ(a){this.a=a}, +e1:function e1(a){this.a=a}, +fV:function fV(a,b){this.a=a +this.b=b}, +fW:function fW(a,b){this.a=a +this.b=b}, +e7:function e7(a){this.a=a}, +bo:function bo(a){this.a=a}, +A:function A(){}, +bQ:function bQ(a){this.a=a}, +fv:function fv(a){this.a=a}, +fu:function fu(a,b,c){this.a=a +this.b=b +this.c=c}, +c8:function c8(){}, +hl:function hl(){}, +hm:function hm(){}, +eH:function eH(a,b,c,d,e){var _=this +_.e=a +_.a=b +_.b=c +_.c=d +_.d=e}, +hn:function hn(){}, +eG:function eG(){}, +bC:function bC(a,b){var _=this +_.a=a +_.b=b +_.c=-1 +_.d=null}, +he:function he(a,b){this.a=a +this.b=b}, +eQ:function eQ(a){this.a=a +this.b=0}, +hx:function hx(a){this.a=a}, +e_:function e_(){}, +e3:function e3(){}, +e4:function e4(){}, +e5:function e5(){}, +e6:function e6(){}, +e9:function e9(){}, +ea:function ea(){}, +ee:function ee(){}, +ef:function ef(){}, +el:function el(){}, +em:function em(){}, +en:function en(){}, +eo:function eo(){}, +ep:function ep(){}, +eq:function eq(){}, +et:function et(){}, +eu:function eu(){}, +ev:function ev(){}, +c9:function c9(){}, +ca:function ca(){}, +ex:function ex(){}, +ey:function ey(){}, +eA:function eA(){}, +eI:function eI(){}, +eJ:function eJ(){}, +cc:function cc(){}, +cd:function cd(){}, +eK:function eK(){}, +eL:function eL(){}, +eR:function eR(){}, +eS:function eS(){}, +eT:function eT(){}, +eU:function eU(){}, +eV:function eV(){}, +eW:function eW(){}, +eX:function eX(){}, +eY:function eY(){}, +eZ:function eZ(){}, +f_:function f_(){}, +jw(a){var s,r,q +if(a==null)return a +if(typeof a=="string"||typeof a=="number"||A.hM(a))return a +s=Object.getPrototypeOf(a) +if(s===Object.prototype||s===null)return A.aL(a) +if(Array.isArray(a)){r=[] +for(q=0;q")),r=new A.bV(s,b.l("bV<0>")) +a.then(A.bs(new A.i3(r),1),A.bs(new A.i4(r),1)) +return s}, +i3:function i3(a){this.a=a}, +i4:function i4(a){this.a=a}, +fw:function fw(a){this.a=a}, +ah:function ah(){}, +d4:function d4(){}, +al:function al(){}, +dl:function dl(){}, +dr:function dr(){}, +bh:function bh(){}, +dC:function dC(){}, +cC:function cC(a){this.a=a}, +j:function j(){}, +ao:function ao(){}, +dL:function dL(){}, +ei:function ei(){}, +ej:function ej(){}, +er:function er(){}, +es:function es(){}, +eC:function eC(){}, +eD:function eD(){}, +eM:function eM(){}, +eN:function eN(){}, +cD:function cD(){}, +cE:function cE(){}, +f7:function f7(a){this.a=a}, +cF:function cF(){}, +az:function az(){}, +dm:function dm(){}, +dX:function dX(){}, +mG(){var s=document,r=t.cD,q=r.a(s.getElementById("search-box")),p=r.a(s.getElementById("search-body")),o=r.a(s.getElementById("search-sidebar")) +s=window +r=$.cu() +A.jR(s.fetch(A.o(r)+"index.json",null),t.z).bt(new A.hY(new A.hZ(q,p,o),q,p,o),t.P)}, +jz(a,b){var s,r,q,p,o,n,m,l,k,j,i,h,g=null,f=b.length +if(f===0)return A.n([],t.O) +s=A.n([],t.L) +for(r=a.length,f=f>1,q="dart:"+b,p=0;p4294967295)throw A.b(A.S(a,0,4294967295,"length",null)) +return J.kG(new Array(a),b)}, +kF(a,b){if(a<0)throw A.b(A.aN("Length must be a non-negative integer: "+a,null)) +return A.n(new Array(a),b.l("C<0>"))}, +kG(a,b){return J.ib(A.n(a,b.l("C<0>")))}, +ib(a){a.fixed$length=Array +return a}, +kH(a,b){return J.kf(a,b)}, +iS(a){if(a<256)switch(a){case 9:case 10:case 11:case 12:case 13:case 32:case 133:case 160:return!0 +default:return!1}switch(a){case 5760:case 8192:case 8193:case 8194:case 8195:case 8196:case 8197:case 8198:case 8199:case 8200:case 8201:case 8202:case 8232:case 8233:case 8239:case 8287:case 12288:case 65279:return!0 +default:return!1}}, +kI(a,b){var s,r +for(s=a.length;b0;b=s){s=b-1 +r=B.a.u(a,s) +if(r!==32&&r!==13&&!J.iS(r))break}return b}, +b3(a){if(typeof a=="number"){if(Math.floor(a)==a)return J.bE.prototype +return J.d1.prototype}if(typeof a=="string")return J.aE.prototype +if(a==null)return J.bF.prototype +if(typeof a=="boolean")return J.d0.prototype +if(Array.isArray(a))return J.C.prototype +if(typeof a!="object"){if(typeof a=="function")return J.ag.prototype +return a}if(a instanceof A.y)return a +return J.hS(a)}, +b4(a){if(typeof a=="string")return J.aE.prototype +if(a==null)return a +if(Array.isArray(a))return J.C.prototype +if(typeof a!="object"){if(typeof a=="function")return J.ag.prototype +return a}if(a instanceof A.y)return a +return J.hS(a)}, +f3(a){if(a==null)return a +if(Array.isArray(a))return J.C.prototype +if(typeof a!="object"){if(typeof a=="function")return J.ag.prototype +return a}if(a instanceof A.y)return a +return J.hS(a)}, +mz(a){if(typeof a=="number")return J.be.prototype +if(typeof a=="string")return J.aE.prototype +if(a==null)return a +if(!(a instanceof A.y))return J.b_.prototype +return a}, +jM(a){if(typeof a=="string")return J.aE.prototype +if(a==null)return a +if(!(a instanceof A.y))return J.b_.prototype +return a}, +M(a){if(a==null)return a +if(typeof a!="object"){if(typeof a=="function")return J.ag.prototype +return a}if(a instanceof A.y)return a +return J.hS(a)}, +b8(a,b){if(a==null)return b==null +if(typeof a!="object")return b!=null&&a===b +return J.b3(a).N(a,b)}, +i5(a,b){if(typeof b==="number")if(Array.isArray(a)||typeof a=="string"||A.jO(a,a[v.dispatchPropertyName]))if(b>>>0===b&&b>>0===b&&b").I(b).l("af<1,2>"))}, +ag(a){if(!!a.fixed$length)A.b6(A.r("clear")) +a.length=0}, +U(a,b){var s,r=A.iX(a.length,"",!1,t.N) +for(s=0;ss)throw A.b(A.S(b,0,s,"start",null)) +if(cs)throw A.b(A.S(c,b,s,"end",null)) +if(b===c)return A.n([],A.cm(a)) +return A.n(a.slice(b,c),A.cm(a))}, +gcj(a){if(a.length>0)return a[0] +throw A.b(A.i9())}, +gai(a){var s=a.length +if(s>0)return a[s-1] +throw A.b(A.i9())}, +bb(a,b){var s,r=a.length +for(s=0;s=0&&b=0&&b=p){r.d=null +return!1}r.d=q[s] +r.c=s+1 +return!0}} +J.be.prototype={ +be(a,b){var s +if(ab)return 1 +else if(a===b){if(a===0){s=this.gaQ(b) +if(this.gaQ(a)===s)return 0 +if(this.gaQ(a))return-1 +return 1}return 0}else if(isNaN(a)){if(isNaN(b))return 0 +return 1}else return-1}, +gaQ(a){return a===0?1/a<0:a<0}, +a0(a){if(a>0){if(a!==1/0)return Math.round(a)}else if(a>-1/0)return 0-Math.round(0-a) +throw A.b(A.r(""+a+".round()"))}, +k(a){if(a===0&&1/a<0)return"-0.0" +else return""+a}, +gB(a){var s,r,q,p,o=a|0 +if(a===o)return o&536870911 +s=Math.abs(a) +r=Math.log(s)/0.6931471805599453|0 +q=Math.pow(2,r) +p=s<1?s/q:q/s +return((p*9007199254740992|0)+(p*3542243181176521|0))*599197+r*1259&536870911}, +am(a,b){var s=a%b +if(s===0)return 0 +if(s>0)return s +return s+b}, +aF(a,b){return(a|0)===a?a/b|0:this.c4(a,b)}, +c4(a,b){var s=a/b +if(s>=-2147483648&&s<=2147483647)return s|0 +if(s>0){if(s!==1/0)return Math.floor(s)}else if(s>-1/0)return Math.ceil(s) +throw A.b(A.r("Result of truncating division is "+A.o(s)+": "+A.o(a)+" ~/ "+b))}, +ad(a,b){var s +if(a>0)s=this.b6(a,b) +else{s=b>31?31:b +s=a>>s>>>0}return s}, +c3(a,b){if(0>b)throw A.b(A.ms(b)) +return this.b6(a,b)}, +b6(a,b){return b>31?0:a>>>b}, +gE(a){return A.b2(t.H)}, +$iE:1, +$iR:1} +J.bE.prototype={ +gE(a){return A.b2(t.S)}, +$it:1, +$ii:1} +J.d1.prototype={ +gE(a){return A.b2(t.i)}, +$it:1} +J.aE.prototype={ +u(a,b){if(b<0)throw A.b(A.cq(a,b)) +if(b>=a.length)A.b6(A.cq(a,b)) +return a.charCodeAt(b)}, +p(a,b){if(b>=a.length)throw A.b(A.cq(a,b)) +return a.charCodeAt(b)}, +by(a,b){return a+b}, +a_(a,b,c,d){var s=A.aW(b,c,a.length) +return a.substring(0,b)+d+a.substring(s)}, +H(a,b,c){var s +if(c<0||c>a.length)throw A.b(A.S(c,0,a.length,null,null)) +s=c+b.length +if(s>a.length)return!1 +return b===a.substring(c,s)}, +C(a,b){return this.H(a,b,0)}, +m(a,b,c){return a.substring(b,A.aW(b,c,a.length))}, +O(a,b){return this.m(a,b,null)}, +cE(a){return a.toLowerCase()}, +cF(a){var s,r,q,p=a.trim(),o=p.length +if(o===0)return p +if(this.p(p,0)===133){s=J.kI(p,1) +if(s===o)return""}else s=0 +r=o-1 +q=this.u(p,r)===133?J.kJ(p,r):o +if(s===0&&q===o)return p +return p.substring(s,q)}, +bz(a,b){var s,r +if(0>=b)return"" +if(b===1||a.length===0)return a +if(b!==b>>>0)throw A.b(B.G) +for(s=a,r="";!0;){if((b&1)===1)r=s+r +b=b>>>1 +if(b===0)break +s+=s}return r}, +ah(a,b,c){var s +if(c<0||c>a.length)throw A.b(A.S(c,0,a.length,null,null)) +s=a.indexOf(b,c) +return s}, +bm(a,b){return this.ah(a,b,0)}, +c9(a,b,c){var s=a.length +if(c>s)throw A.b(A.S(c,0,s,null,null)) +return A.f4(a,b,c)}, +G(a,b){return this.c9(a,b,0)}, +be(a,b){var s +if(a===b)s=0 +else s=a>6}r=r+((r&67108863)<<3)&536870911 +r^=r>>11 +return r+((r&16383)<<15)&536870911}, +gE(a){return A.b2(t.N)}, +gi(a){return a.length}, +$it:1, +$id:1} +A.aI.prototype={ +gv(a){var s=A.I(this) +return new A.cG(J.ae(this.ga5()),s.l("@<1>").I(s.z[1]).l("cG<1,2>"))}, +gi(a){return J.ax(this.ga5())}, +q(a,b){return A.I(this).z[1].a(J.cv(this.ga5(),b))}, +k(a){return J.ay(this.ga5())}} +A.cG.prototype={ +n(){return this.a.n()}, +gt(a){var s=this.a +return this.$ti.z[1].a(s.gt(s))}} +A.aP.prototype={ +ga5(){return this.a}} +A.bY.prototype={$if:1} +A.bW.prototype={ +h(a,b){return this.$ti.z[1].a(J.i5(this.a,b))}, +j(a,b,c){J.f5(this.a,b,this.$ti.c.a(c))}, +$if:1, +$ik:1} +A.af.prototype={ +af(a,b){return new A.af(this.a,this.$ti.l("@<1>").I(b).l("af<1,2>"))}, +ga5(){return this.a}} +A.d3.prototype={ +k(a){return"LateInitializationError: "+this.a}} +A.cJ.prototype={ +gi(a){return this.a.length}, +h(a,b){return B.a.u(this.a,b)}} +A.fA.prototype={} +A.f.prototype={} +A.a3.prototype={ +gv(a){return new A.bH(this,this.gi(this))}, +ak(a,b){return this.bG(0,b)}} +A.bH.prototype={ +gt(a){var s=this.d +return s==null?A.I(this).c.a(s):s}, +n(){var s,r=this,q=r.a,p=J.b4(q),o=p.gi(q) +if(r.b!==o)throw A.b(A.aQ(q)) +s=r.c +if(s>=o){r.d=null +return!1}r.d=p.q(q,s);++r.c +return!0}} +A.aj.prototype={ +gv(a){return new A.bJ(J.ae(this.a),this.b)}, +gi(a){return J.ax(this.a)}, +q(a,b){return this.b.$1(J.cv(this.a,b))}} +A.by.prototype={$if:1} +A.bJ.prototype={ +n(){var s=this,r=s.b +if(r.n()){s.a=s.c.$1(r.gt(r)) +return!0}s.a=null +return!1}, +gt(a){var s=this.a +return s==null?A.I(this).z[1].a(s):s}} +A.ak.prototype={ +gi(a){return J.ax(this.a)}, +q(a,b){return this.b.$1(J.cv(this.a,b))}} +A.ar.prototype={ +gv(a){return new A.dT(J.ae(this.a),this.b)}} +A.dT.prototype={ +n(){var s,r +for(s=this.a,r=this.b;s.n();)if(r.$1(s.gt(s)))return!0 +return!1}, +gt(a){var s=this.a +return s.gt(s)}} +A.bB.prototype={} +A.dO.prototype={ +j(a,b,c){throw A.b(A.r("Cannot modify an unmodifiable list"))}} +A.bk.prototype={} +A.cl.prototype={} +A.bv.prototype={ +k(a){return A.ie(this)}, +j(a,b,c){A.ku()}, +$ix:1} +A.aR.prototype={ +gi(a){return this.a}, +a6(a,b){if("__proto__"===b)return!1 +return this.b.hasOwnProperty(b)}, +h(a,b){if(!this.a6(0,b))return null +return this.b[b]}, +D(a,b){var s,r,q,p,o=this.c +for(s=o.length,r=this.b,q=0;q>>0}, +k(a){return"Closure '"+this.$_name+"' of "+("Instance of '"+A.fy(this.a)+"'")}} +A.e0.prototype={ +k(a){return"Reading static variable '"+this.a+"' during its initialization"}} +A.du.prototype={ +k(a){return"RuntimeError: "+this.a}} +A.aV.prototype={ +gi(a){return this.a}, +gF(a){return new A.ai(this,A.I(this).l("ai<1>"))}, +gbx(a){var s=A.I(this) +return A.kM(new A.ai(this,s.l("ai<1>")),new A.fm(this),s.c,s.z[1])}, +a6(a,b){var s=this.b +if(s==null)return!1 +return s[b]!=null}, +h(a,b){var s,r,q,p,o=null +if(typeof b=="string"){s=this.b +if(s==null)return o +r=s[b] +q=r==null?o:r.b +return q}else if(typeof b=="number"&&(b&0x3fffffff)===b){p=this.c +if(p==null)return o +r=p[b] +q=r==null?o:r.b +return q}else return this.cp(b)}, +cp(a){var s,r,q=this.d +if(q==null)return null +s=q[this.bn(a)] +r=this.bo(s,a) +if(r<0)return null +return s[r].b}, +j(a,b,c){var s,r,q=this +if(typeof b=="string"){s=q.b +q.aY(s==null?q.b=q.aC():s,b,c)}else if(typeof b=="number"&&(b&0x3fffffff)===b){r=q.c +q.aY(r==null?q.c=q.aC():r,b,c)}else q.cq(b,c)}, +cq(a,b){var s,r,q,p=this,o=p.d +if(o==null)o=p.d=p.aC() +s=p.bn(a) +r=o[s] +if(r==null)o[s]=[p.aD(a,b)] +else{q=p.bo(r,a) +if(q>=0)r[q].b=b +else r.push(p.aD(a,b))}}, +ag(a){var s=this +if(s.a>0){s.b=s.c=s.d=s.e=s.f=null +s.a=0 +s.b4()}}, +D(a,b){var s=this,r=s.e,q=s.r +for(;r!=null;){b.$2(r.a,r.b) +if(q!==s.r)throw A.b(A.aQ(s)) +r=r.c}}, +aY(a,b,c){var s=a[b] +if(s==null)a[b]=this.aD(b,c) +else s.b=c}, +b4(){this.r=this.r+1&1073741823}, +aD(a,b){var s,r=this,q=new A.fp(a,b) +if(r.e==null)r.e=r.f=q +else{s=r.f +s.toString +q.d=s +r.f=s.c=q}++r.a +r.b4() +return q}, +bn(a){return J.i6(a)&0x3fffffff}, +bo(a,b){var s,r +if(a==null)return-1 +s=a.length +for(r=0;r"]=s +delete s[""] +return s}} +A.fm.prototype={ +$1(a){var s=this.a,r=s.h(0,a) +return r==null?A.I(s).z[1].a(r):r}, +$S(){return A.I(this.a).l("2(1)")}} +A.fp.prototype={} +A.ai.prototype={ +gi(a){return this.a.a}, +gv(a){var s=this.a,r=new A.d5(s,s.r) +r.c=s.e +return r}} +A.d5.prototype={ +gt(a){return this.d}, +n(){var s,r=this,q=r.a +if(r.b!==q.r)throw A.b(A.aQ(q)) +s=r.c +if(s==null){r.d=null +return!1}else{r.d=s.a +r.c=s.c +return!0}}} +A.hU.prototype={ +$1(a){return this.a(a)}, +$S:25} +A.hV.prototype={ +$2(a,b){return this.a(a,b)}, +$S:39} +A.hW.prototype={ +$1(a){return this.a(a)}, +$S:18} +A.fk.prototype={ +k(a){return"RegExp/"+this.a+"/"+this.b.flags}, +gbW(){var s=this,r=s.c +if(r!=null)return r +r=s.b +return s.c=A.iT(s.a,r.multiline,!r.ignoreCase,r.unicode,r.dotAll,!0)}, +bU(a,b){var s,r=this.gbW() +r.lastIndex=b +s=r.exec(a) +if(s==null)return null +return new A.ek(s)}} +A.ek.prototype={ +gcg(a){var s=this.b +return s.index+s[0].length}, +h(a,b){return this.b[b]}, +$ifr:1, +$iig:1} +A.fQ.prototype={ +gt(a){var s=this.d +return s==null?t.F.a(s):s}, +n(){var s,r,q,p,o,n=this,m=n.b +if(m==null)return!1 +s=n.c +r=m.length +if(s<=r){q=n.a +p=q.bU(m,s) +if(p!=null){n.d=p +o=p.gcg(p) +if(p.b.index===o){if(q.b.unicode){s=n.c +q=s+1 +if(q=55296&&s<=56319){s=B.a.u(m,q) +s=s>=56320&&s<=57343}else s=!1}else s=!1}else s=!1 +o=(s?o+1:o)+1}n.c=o +return!0}}n.b=n.d=null +return!1}} +A.dc.prototype={ +gE(a){return B.X}, +$it:1} +A.bM.prototype={} +A.dd.prototype={ +gE(a){return B.Y}, +$it:1} +A.bg.prototype={ +gi(a){return a.length}, +$ip:1} +A.bK.prototype={ +h(a,b){A.at(b,a,a.length) +return a[b]}, +j(a,b,c){A.at(b,a,a.length) +a[b]=c}, +$if:1, +$ik:1} +A.bL.prototype={ +j(a,b,c){A.at(b,a,a.length) +a[b]=c}, +$if:1, +$ik:1} +A.de.prototype={ +gE(a){return B.Z}, +$it:1} +A.df.prototype={ +gE(a){return B.a_}, +$it:1} +A.dg.prototype={ +gE(a){return B.a0}, +h(a,b){A.at(b,a,a.length) +return a[b]}, +$it:1} +A.dh.prototype={ +gE(a){return B.a1}, +h(a,b){A.at(b,a,a.length) +return a[b]}, +$it:1} +A.di.prototype={ +gE(a){return B.a2}, +h(a,b){A.at(b,a,a.length) +return a[b]}, +$it:1} +A.dj.prototype={ +gE(a){return B.a4}, +h(a,b){A.at(b,a,a.length) +return a[b]}, +$it:1} +A.dk.prototype={ +gE(a){return B.a5}, +h(a,b){A.at(b,a,a.length) +return a[b]}, +$it:1} +A.bN.prototype={ +gE(a){return B.a6}, +gi(a){return a.length}, +h(a,b){A.at(b,a,a.length) +return a[b]}, +$it:1} +A.bO.prototype={ +gE(a){return B.a7}, +gi(a){return a.length}, +h(a,b){A.at(b,a,a.length) +return a[b]}, +$it:1, +$iaZ:1} +A.c3.prototype={} +A.c4.prototype={} +A.c5.prototype={} +A.c6.prototype={} +A.T.prototype={ +l(a){return A.hr(v.typeUniverse,this,a)}, +I(a){return A.ls(v.typeUniverse,this,a)}} +A.eb.prototype={} +A.hq.prototype={ +k(a){return A.Q(this.a,null)}} +A.e8.prototype={ +k(a){return this.a}} +A.ce.prototype={$iap:1} +A.fS.prototype={ +$1(a){var s=this.a,r=s.a +s.a=null +r.$0()}, +$S:9} +A.fR.prototype={ +$1(a){var s,r +this.a.a=a +s=this.b +r=this.c +s.firstChild?s.removeChild(r):s.appendChild(r)}, +$S:23} +A.fT.prototype={ +$0(){this.a.$0()}, +$S:8} +A.fU.prototype={ +$0(){this.a.$0()}, +$S:8} +A.ho.prototype={ +bL(a,b){if(self.setTimeout!=null)self.setTimeout(A.bs(new A.hp(this,b),0),a) +else throw A.b(A.r("`setTimeout()` not found."))}} +A.hp.prototype={ +$0(){this.b.$0()}, +$S:0} +A.dU.prototype={ +aJ(a,b){var s,r=this +if(b==null)b=r.$ti.c.a(b) +if(!r.b)r.a.aZ(b) +else{s=r.a +if(r.$ti.l("aC<1>").b(b))s.b0(b) +else s.au(b)}}, +aK(a,b){var s=this.a +if(this.b)s.a2(a,b) +else s.b_(a,b)}} +A.hz.prototype={ +$1(a){return this.a.$2(0,a)}, +$S:4} +A.hA.prototype={ +$2(a,b){this.a.$2(1,new A.bA(a,b))}, +$S:24} +A.hP.prototype={ +$2(a,b){this.a(a,b)}, +$S:19} +A.cB.prototype={ +k(a){return A.o(this.a)}, +$iz:1, +gaa(){return this.b}} +A.dY.prototype={ +aK(a,b){var s +A.f2(a,"error",t.K) +s=this.a +if((s.a&30)!==0)throw A.b(A.dz("Future already completed")) +if(b==null)b=A.iJ(a) +s.b_(a,b)}, +bf(a){return this.aK(a,null)}} +A.bV.prototype={ +aJ(a,b){var s=this.a +if((s.a&30)!==0)throw A.b(A.dz("Future already completed")) +s.aZ(b)}} +A.bn.prototype={ +cr(a){if((this.c&15)!==6)return!0 +return this.b.b.aU(this.d,a.a)}, +cm(a){var s,r=this.e,q=null,p=a.a,o=this.b.b +if(t.C.b(r))q=o.cA(r,p,a.b) +else q=o.aU(r,p) +try{p=q +return p}catch(s){if(t.r.b(A.aw(s))){if((this.c&1)!==0)throw A.b(A.aN("The error handler of Future.then must return a value of the returned future's type","onError")) +throw A.b(A.aN("The error handler of Future.catchError must return a value of the future's type","onError"))}else throw s}}} +A.H.prototype={ +aV(a,b,c){var s,r,q=$.F +if(q===B.d){if(b!=null&&!t.C.b(b)&&!t.w.b(b))throw A.b(A.i7(b,"onError",u.c))}else if(b!=null)b=A.mh(b,q) +s=new A.H(q,c.l("H<0>")) +r=b==null?1:3 +this.ap(new A.bn(s,r,a,b,this.$ti.l("@<1>").I(c).l("bn<1,2>"))) +return s}, +bt(a,b){return this.aV(a,null,b)}, +b7(a,b,c){var s=new A.H($.F,c.l("H<0>")) +this.ap(new A.bn(s,3,a,b,this.$ti.l("@<1>").I(c).l("bn<1,2>"))) +return s}, +c2(a){this.a=this.a&1|16 +this.c=a}, +aq(a){this.a=a.a&30|this.a&1 +this.c=a.c}, +ap(a){var s=this,r=s.a +if(r<=3){a.a=s.c +s.c=a}else{if((r&4)!==0){r=s.c +if((r.a&24)===0){r.ap(a) +return}s.aq(r)}A.b1(null,null,s.b,new A.fZ(s,a))}}, +b5(a){var s,r,q,p,o,n=this,m={} +m.a=a +if(a==null)return +s=n.a +if(s<=3){r=n.c +n.c=a +if(r!=null){q=a.a +for(p=a;q!=null;p=q,q=o)o=q.a +p.a=r}}else{if((s&4)!==0){s=n.c +if((s.a&24)===0){s.b5(a) +return}n.aq(s)}m.a=n.ac(a) +A.b1(null,null,n.b,new A.h5(m,n))}}, +aE(){var s=this.c +this.c=null +return this.ac(s)}, +ac(a){var s,r,q +for(s=a,r=null;s!=null;r=s,s=q){q=s.a +s.a=r}return r}, +bP(a){var s,r,q,p=this +p.a^=2 +try{a.aV(new A.h1(p),new A.h2(p),t.P)}catch(q){s=A.aw(q) +r=A.b5(q) +A.mT(new A.h3(p,s,r))}}, +au(a){var s=this,r=s.aE() +s.a=8 +s.c=a +A.c_(s,r)}, +a2(a,b){var s=this.aE() +this.c2(A.f6(a,b)) +A.c_(this,s)}, +aZ(a){if(this.$ti.l("aC<1>").b(a)){this.b0(a) +return}this.bO(a)}, +bO(a){this.a^=2 +A.b1(null,null,this.b,new A.h0(this,a))}, +b0(a){var s=this +if(s.$ti.b(a)){if((a.a&16)!==0){s.a^=2 +A.b1(null,null,s.b,new A.h4(s,a))}else A.ij(a,s) +return}s.bP(a)}, +b_(a,b){this.a^=2 +A.b1(null,null,this.b,new A.h_(this,a,b))}, +$iaC:1} +A.fZ.prototype={ +$0(){A.c_(this.a,this.b)}, +$S:0} +A.h5.prototype={ +$0(){A.c_(this.b,this.a.a)}, +$S:0} +A.h1.prototype={ +$1(a){var s,r,q,p=this.a +p.a^=2 +try{p.au(p.$ti.c.a(a))}catch(q){s=A.aw(q) +r=A.b5(q) +p.a2(s,r)}}, +$S:9} +A.h2.prototype={ +$2(a,b){this.a.a2(a,b)}, +$S:21} +A.h3.prototype={ +$0(){this.a.a2(this.b,this.c)}, +$S:0} +A.h0.prototype={ +$0(){this.a.au(this.b)}, +$S:0} +A.h4.prototype={ +$0(){A.ij(this.b,this.a)}, +$S:0} +A.h_.prototype={ +$0(){this.a.a2(this.b,this.c)}, +$S:0} +A.h8.prototype={ +$0(){var s,r,q,p,o,n,m=this,l=null +try{q=m.a.a +l=q.b.b.cw(q.d)}catch(p){s=A.aw(p) +r=A.b5(p) +q=m.c&&m.b.a.c.a===s +o=m.a +if(q)o.c=m.b.a.c +else o.c=A.f6(s,r) +o.b=!0 +return}if(l instanceof A.H&&(l.a&24)!==0){if((l.a&16)!==0){q=m.a +q.c=l.c +q.b=!0}return}if(l instanceof A.H){n=m.b.a +q=m.a +q.c=l.bt(new A.h9(n),t.z) +q.b=!1}}, +$S:0} +A.h9.prototype={ +$1(a){return this.a}, +$S:22} +A.h7.prototype={ +$0(){var s,r,q,p,o +try{q=this.a +p=q.a +q.c=p.b.b.aU(p.d,this.b)}catch(o){s=A.aw(o) +r=A.b5(o) +q=this.a +q.c=A.f6(s,r) +q.b=!0}}, +$S:0} +A.h6.prototype={ +$0(){var s,r,q,p,o,n,m=this +try{s=m.a.a.c +p=m.b +if(p.a.cr(s)&&p.a.e!=null){p.c=p.a.cm(s) +p.b=!1}}catch(o){r=A.aw(o) +q=A.b5(o) +p=m.a.a.c +n=m.b +if(p.a===r)n.c=p +else n.c=A.f6(r,q) +n.b=!0}}, +$S:0} +A.dV.prototype={} +A.eB.prototype={} +A.hy.prototype={} +A.hN.prototype={ +$0(){var s=this.a,r=this.b +A.f2(s,"error",t.K) +A.f2(r,"stackTrace",t.l) +A.kw(s,r)}, +$S:0} +A.hc.prototype={ +cC(a){var s,r,q +try{if(B.d===$.F){a.$0() +return}A.jE(null,null,this,a)}catch(q){s=A.aw(q) +r=A.b5(q) +A.iy(s,r)}}, +bc(a){return new A.hd(this,a)}, +cz(a){if($.F===B.d)return a.$0() +return A.jE(null,null,this,a)}, +cw(a){return this.cz(a,t.z)}, +cD(a,b){if($.F===B.d)return a.$1(b) +return A.mj(null,null,this,a,b)}, +aU(a,b){return this.cD(a,b,t.z,t.z)}, +cB(a,b,c){if($.F===B.d)return a.$2(b,c) +return A.mi(null,null,this,a,b,c)}, +cA(a,b,c){return this.cB(a,b,c,t.z,t.z,t.z)}, +cu(a){return a}, +br(a){return this.cu(a,t.z,t.z,t.z)}} +A.hd.prototype={ +$0(){return this.a.cC(this.b)}, +$S:0} +A.c0.prototype={ +gv(a){var s=new A.c1(this,this.r) +s.c=this.e +return s}, +gi(a){return this.a}, +G(a,b){var s,r +if(b!=="__proto__"){s=this.b +if(s==null)return!1 +return s[b]!=null}else{r=this.bS(b) +return r}}, +bS(a){var s=this.d +if(s==null)return!1 +return this.aB(s[this.av(a)],a)>=0}, +A(a,b){var s,r,q=this +if(typeof b=="string"&&b!=="__proto__"){s=q.b +return q.b1(s==null?q.b=A.ik():s,b)}else if(typeof b=="number"&&(b&1073741823)===b){r=q.c +return q.b1(r==null?q.c=A.ik():r,b)}else return q.bM(0,b)}, +bM(a,b){var s,r,q=this,p=q.d +if(p==null)p=q.d=A.ik() +s=q.av(b) +r=p[s] +if(r==null)p[s]=[q.ar(b)] +else{if(q.aB(r,b)>=0)return!1 +r.push(q.ar(b))}return!0}, +a7(a,b){var s +if(b!=="__proto__")return this.bZ(this.b,b) +else{s=this.bY(0,b) +return s}}, +bY(a,b){var s,r,q,p,o=this,n=o.d +if(n==null)return!1 +s=o.av(b) +r=n[s] +q=o.aB(r,b) +if(q<0)return!1 +p=r.splice(q,1)[0] +if(0===r.length)delete n[s] +o.b9(p) +return!0}, +b1(a,b){if(a[b]!=null)return!1 +a[b]=this.ar(b) +return!0}, +bZ(a,b){var s +if(a==null)return!1 +s=a[b] +if(s==null)return!1 +this.b9(s) +delete a[b] +return!0}, +b2(){this.r=this.r+1&1073741823}, +ar(a){var s,r=this,q=new A.hb(a) +if(r.e==null)r.e=r.f=q +else{s=r.f +s.toString +q.c=s +r.f=s.b=q}++r.a +r.b2() +return q}, +b9(a){var s=this,r=a.c,q=a.b +if(r==null)s.e=q +else r.b=q +if(q==null)s.f=r +else q.c=r;--s.a +s.b2()}, +av(a){return J.i6(a)&1073741823}, +aB(a,b){var s,r +if(a==null)return-1 +s=a.length +for(r=0;r").I(b).l("af<1,2>"))}, +ci(a,b,c,d){var s +A.aW(b,c,this.gi(a)) +for(s=b;s"))}return new A.eh(this)}, +j(a,b,c){var s,r,q=this +if(q.b==null)q.c.j(0,b,c) +else if(q.a6(0,b)){s=q.b +s[b]=c +r=q.a +if(r==null?s!=null:r!==s)r[b]=null}else q.c5().j(0,b,c)}, +a6(a,b){if(this.b==null)return this.c.a6(0,b) +return Object.prototype.hasOwnProperty.call(this.a,b)}, +D(a,b){var s,r,q,p,o=this +if(o.b==null)return o.c.D(0,b) +s=o.a3() +for(r=0;r=0){g=B.a.u("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",f) +if(g===k)continue +k=g}else{if(f===-1){if(o<0){e=p==null?null:p.a.length +if(e==null)e=0 +o=e+(r-q) +n=r}++m +if(k===61)continue}k=g}if(f!==-2){if(p==null){p=new A.L("") +e=p}else e=p +e.a+=B.a.m(a1,q,r) +e.a+=A.am(k) +q=l +continue}}throw A.b(A.K("Invalid base64 data",a1,r))}if(p!=null){e=p.a+=B.a.m(a1,q,a3) +d=e.length +if(o>=0)A.iK(a1,n,a3,o,m,d) +else{c=B.c.am(d-1,4)+1 +if(c===1)throw A.b(A.K(a,a1,a3)) +for(;c<4;){e+="=" +p.a=e;++c}}e=p.a +return B.a.a_(a1,a2,a3,e.charCodeAt(0)==0?e:e)}b=a3-a2 +if(o>=0)A.iK(a1,n,a3,o,m,b) +else{c=B.c.am(b,4) +if(c===1)throw A.b(A.K(a,a1,a3)) +if(c>1)a1=B.a.a_(a1,a3,a3,c===2?"==":"=")}return a1}} +A.f9.prototype={} +A.cK.prototype={} +A.cM.prototype={} +A.fd.prototype={} +A.fj.prototype={ +k(a){return"unknown"}} +A.fi.prototype={ +Y(a){var s=this.bT(a,0,a.length) +return s==null?a:s}, +bT(a,b,c){var s,r,q,p +for(s=b,r=null;s":q=">" +break +case"/":q="/" +break +default:q=null}if(q!=null){if(r==null)r=new A.L("") +if(s>b)r.a+=B.a.m(a,b,s) +r.a+=q +b=s+1}}if(r==null)return null +if(c>b)r.a+=B.a.m(a,b,c) +p=r.a +return p.charCodeAt(0)==0?p:p}} +A.fn.prototype={ +cc(a,b,c){var s=A.mf(b,this.gce().a) +return s}, +gce(){return B.N}} +A.fo.prototype={} +A.fL.prototype={ +gcf(){return B.H}} +A.fP.prototype={ +Y(a){var s,r,q,p=A.aW(0,null,a.length),o=p-0 +if(o===0)return new Uint8Array(0) +s=o*3 +r=new Uint8Array(s) +q=new A.hv(r) +if(q.bV(a,0,p)!==p){B.a.u(a,p-1) +q.aI()}return new Uint8Array(r.subarray(0,A.lR(0,q.b,s)))}} +A.hv.prototype={ +aI(){var s=this,r=s.c,q=s.b,p=s.b=q+1 +r[q]=239 +q=s.b=p+1 +r[p]=191 +s.b=q+1 +r[q]=189}, +c6(a,b){var s,r,q,p,o=this +if((b&64512)===56320){s=65536+((a&1023)<<10)|b&1023 +r=o.c +q=o.b +p=o.b=q+1 +r[q]=s>>>18|240 +q=o.b=p+1 +r[p]=s>>>12&63|128 +p=o.b=q+1 +r[q]=s>>>6&63|128 +o.b=p+1 +r[p]=s&63|128 +return!0}else{o.aI() +return!1}}, +bV(a,b,c){var s,r,q,p,o,n,m,l=this +if(b!==c&&(B.a.u(a,c-1)&64512)===55296)--c +for(s=l.c,r=s.length,q=b;q=r)break +l.b=o+1 +s[o]=p}else{o=p&64512 +if(o===55296){if(l.b+4>r)break +n=q+1 +if(l.c6(p,B.a.p(a,n)))q=n}else if(o===56320){if(l.b+3>r)break +l.aI()}else if(p<=2047){o=l.b +m=o+1 +if(m>=r)break +l.b=m +s[o]=p>>>6|192 +l.b=m+1 +s[m]=p&63|128}else{o=l.b +if(o+2>=r)break +m=l.b=o+1 +s[o]=p>>>12|224 +o=l.b=m+1 +s[m]=p>>>6&63|128 +l.b=o+1 +s[o]=p&63|128}}}return q}} +A.fM.prototype={ +Y(a){var s=this.a,r=A.l0(s,a,0,null) +if(r!=null)return r +return new A.hu(s).ca(a,0,null,!0)}} +A.hu.prototype={ +ca(a,b,c,d){var s,r,q,p,o=this,n=A.aW(b,c,J.ax(a)) +if(b===n)return"" +s=A.lI(a,b,n) +r=o.aw(s,0,n-b,!0) +q=o.b +if((q&1)!==0){p=A.lJ(q) +o.b=0 +throw A.b(A.K(p,a,b+o.c))}return r}, +aw(a,b,c,d){var s,r,q=this +if(c-b>1000){s=B.c.aF(b+c,2) +r=q.aw(a,b,s,!1) +if((q.b&1)!==0)return r +return r+q.aw(a,s,c,d)}return q.cd(a,b,c,d)}, +cd(a,b,c,d){var s,r,q,p,o,n,m,l=this,k=65533,j=l.b,i=l.c,h=new A.L(""),g=b+1,f=a[b] +$label0$0:for(s=l.a;!0;){for(;!0;g=p){r=B.a.p("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFFFFFFFFFFFFFFFGGGGGGGGGGGGGGGGHHHHHHHHHHHHHHHHHHHHHHHHHHHIHHHJEEBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBKCCCCCCCCCCCCDCLONNNMEEEEEEEEEEE",f)&31 +i=j<=32?f&61694>>>r:(f&63|i<<6)>>>0 +j=B.a.p(" \x000:XECCCCCN:lDb \x000:XECCCCCNvlDb \x000:XECCCCCN:lDb AAAAA\x00\x00\x00\x00\x00AAAAA00000AAAAA:::::AAAAAGG000AAAAA00KKKAAAAAG::::AAAAA:IIIIAAAAA000\x800AAAAA\x00\x00\x00\x00 AAAAA",j+r) +if(j===0){h.a+=A.am(i) +if(g===c)break $label0$0 +break}else if((j&1)!==0){if(s)switch(j){case 69:case 67:h.a+=A.am(k) +break +case 65:h.a+=A.am(k);--g +break +default:q=h.a+=A.am(k) +h.a=q+A.am(k) +break}else{l.b=j +l.c=g-1 +return""}j=0}if(g===c)break $label0$0 +p=g+1 +f=a[g]}p=g+1 +f=a[g] +if(f<128){while(!0){if(!(p=128){o=n-1 +p=n +break}p=n}if(o-g<20)for(m=g;m32)if(s)h.a+=A.am(k) +else{l.b=77 +l.c=c +return""}l.b=j +l.c=i +s=h.a +return s.charCodeAt(0)==0?s:s}} +A.z.prototype={ +gaa(){return A.b5(this.$thrownJsError)}} +A.cz.prototype={ +k(a){var s=this.a +if(s!=null)return"Assertion failed: "+A.fe(s) +return"Assertion failed"}} +A.ap.prototype={} +A.W.prototype={ +gaA(){return"Invalid argument"+(!this.a?"(s)":"")}, +gaz(){return""}, +k(a){var s=this,r=s.c,q=r==null?"":" ("+r+")",p=s.d,o=p==null?"":": "+p,n=s.gaA()+q+o +if(!s.a)return n +return n+s.gaz()+": "+A.fe(s.gaP())}, +gaP(){return this.b}} +A.bS.prototype={ +gaP(){return this.b}, +gaA(){return"RangeError"}, +gaz(){var s,r=this.e,q=this.f +if(r==null)s=q!=null?": Not less than or equal to "+A.o(q):"" +else if(q==null)s=": Not greater than or equal to "+A.o(r) +else if(q>r)s=": Not in inclusive range "+A.o(r)+".."+A.o(q) +else s=qe.length +else s=!1 +if(s)f=null +if(f==null){if(e.length>78)e=B.a.m(e,0,75)+"..." +return g+"\n"+e}for(r=1,q=0,p=!1,o=0;o1?g+(" (at line "+r+", character "+(f-q+1)+")\n"):g+(" (at character "+(f+1)+")\n") +m=e.length +for(o=f;o78)if(f-q<75){l=q+75 +k=q +j="" +i="..."}else{if(m-f<75){k=m-75 +l=m +i=""}else{k=f-36 +l=f+36 +i="..."}j="..."}else{l=m +k=q +j="" +i=""}return g+j+B.a.m(e,k,l)+i+"\n"+B.a.bz(" ",f-k+j.length)+"^\n"}else return f!=null?g+(" (at offset "+A.o(f)+")"):g}} +A.u.prototype={ +af(a,b){return A.ko(this,A.I(this).l("u.E"),b)}, +ak(a,b){return new A.ar(this,b,A.I(this).l("ar"))}, +gi(a){var s,r=this.gv(this) +for(s=0;r.n();)++s +return s}, +gW(a){var s,r=this.gv(this) +if(!r.n())throw A.b(A.i9()) +s=r.gt(r) +if(r.n())throw A.b(A.kC()) +return s}, +q(a,b){var s,r +A.j1(b,"index") +s=this.gv(this) +for(r=b;s.n();){if(r===0)return s.gt(s);--r}throw A.b(A.B(b,b-r,this,"index"))}, +k(a){return A.kD(this,"(",")")}} +A.G.prototype={ +gB(a){return A.y.prototype.gB.call(this,this)}, +k(a){return"null"}} +A.y.prototype={$iy:1, +N(a,b){return this===b}, +gB(a){return A.ds(this)}, +k(a){return"Instance of '"+A.fy(this)+"'"}, +gE(a){return A.mB(this)}, +toString(){return this.k(this)}} +A.eE.prototype={ +k(a){return""}, +$iaH:1} +A.L.prototype={ +gi(a){return this.a.length}, +k(a){var s=this.a +return s.charCodeAt(0)==0?s:s}} +A.fK.prototype={ +$2(a,b){var s,r,q,p=B.a.bm(b,"=") +if(p===-1){if(b!=="")J.f5(a,A.iu(b,0,b.length,this.a,!0),"")}else if(p!==0){s=B.a.m(b,0,p) +r=B.a.O(b,p+1) +q=this.a +J.f5(a,A.iu(s,0,s.length,q,!0),A.iu(r,0,r.length,q,!0))}return a}, +$S:28} +A.fG.prototype={ +$2(a,b){throw A.b(A.K("Illegal IPv4 address, "+a,this.a,b))}, +$S:15} +A.fI.prototype={ +$2(a,b){throw A.b(A.K("Illegal IPv6 address, "+a,this.a,b))}, +$S:16} +A.fJ.prototype={ +$2(a,b){var s +if(b-a>4)this.a.$2("an IPv6 part can only contain a maximum of 4 hex digits",a) +s=A.i0(B.a.m(this.b,a,b),16) +if(s<0||s>65535)this.a.$2("each part must be in the range of `0x0..0xFFFF`",a) +return s}, +$S:17} +A.cj.prototype={ +gae(){var s,r,q,p,o=this,n=o.w +if(n===$){s=o.a +r=s.length!==0?""+s+":":"" +q=o.c +p=q==null +if(!p||s==="file"){s=r+"//" +r=o.b +if(r.length!==0)s=s+r+"@" +if(!p)s+=q +r=o.d +if(r!=null)s=s+":"+A.o(r)}else s=r +s+=o.e +r=o.f +if(r!=null)s=s+"?"+r +r=o.r +if(r!=null)s=s+"#"+r +n!==$&&A.ct() +n=o.w=s.charCodeAt(0)==0?s:s}return n}, +gB(a){var s,r=this,q=r.y +if(q===$){s=B.a.gB(r.gae()) +r.y!==$&&A.ct() +r.y=s +q=s}return q}, +gaS(){var s,r=this,q=r.z +if(q===$){s=r.f +s=A.ja(s==null?"":s) +r.z!==$&&A.ct() +q=r.z=new A.bl(s,t.V)}return q}, +gbw(){return this.b}, +gaN(a){var s=this.c +if(s==null)return"" +if(B.a.C(s,"["))return B.a.m(s,1,s.length-1) +return s}, +gaj(a){var s=this.d +return s==null?A.jn(this.a):s}, +gaR(a){var s=this.f +return s==null?"":s}, +gbg(){var s=this.r +return s==null?"":s}, +aT(a,b){var s,r,q,p,o=this,n=o.a,m=n==="file",l=o.b,k=o.d,j=o.c +if(!(j!=null))j=l.length!==0||k!=null||m?"":null +s=o.e +if(!m)r=j!=null&&s.length!==0 +else r=!0 +if(r&&!B.a.C(s,"/"))s="/"+s +q=s +p=A.is(null,0,0,b) +return A.iq(n,l,j,k,q,p,o.r)}, +gbi(){return this.c!=null}, +gbl(){return this.f!=null}, +gbj(){return this.r!=null}, +k(a){return this.gae()}, +N(a,b){var s,r,q=this +if(b==null)return!1 +if(q===b)return!0 +if(t.R.b(b))if(q.a===b.gan())if(q.c!=null===b.gbi())if(q.b===b.gbw())if(q.gaN(q)===b.gaN(b))if(q.gaj(q)===b.gaj(b))if(q.e===b.gbq(b)){s=q.f +r=s==null +if(!r===b.gbl()){if(r)s="" +if(s===b.gaR(b)){s=q.r +r=s==null +if(!r===b.gbj()){if(r)s="" +s=s===b.gbg()}else s=!1}else s=!1}else s=!1}else s=!1 +else s=!1 +else s=!1 +else s=!1 +else s=!1 +else s=!1 +else s=!1 +return s}, +$idQ:1, +gan(){return this.a}, +gbq(a){return this.e}} +A.ht.prototype={ +$2(a,b){var s=this.b,r=this.a +s.a+=r.a +r.a="&" +r=s.a+=A.jt(B.i,a,B.h,!0) +if(b!=null&&b.length!==0){s.a=r+"=" +s.a+=A.jt(B.i,b,B.h,!0)}}, +$S:14} +A.hs.prototype={ +$2(a,b){var s,r +if(b==null||typeof b=="string")this.a.$2(a,b) +else for(s=J.ae(b),r=this.a;s.n();)r.$2(a,s.gt(s))}, +$S:2} +A.fF.prototype={ +gbv(){var s,r,q,p,o=this,n=null,m=o.c +if(m==null){m=o.a +s=o.b[0]+1 +r=B.a.ah(m,"?",s) +q=m.length +if(r>=0){p=A.ck(m,r+1,q,B.j,!1,!1) +q=r}else p=n +m=o.c=new A.e2("data","",n,n,A.ck(m,s,q,B.t,!1,!1),p,n)}return m}, +k(a){var s=this.a +return this.b[0]===-1?"data:"+s:s}} +A.hE.prototype={ +$2(a,b){var s=this.a[a] +B.V.ci(s,0,96,b) +return s}, +$S:20} +A.hF.prototype={ +$3(a,b,c){var s,r +for(s=b.length,r=0;r>>0]=c}, +$S:10} +A.ew.prototype={ +gbi(){return this.c>0}, +gbk(){return this.c>0&&this.d+1r?B.a.m(this.a,r,s-1):""}, +gaN(a){var s=this.c +return s>0?B.a.m(this.a,s,this.d):""}, +gaj(a){var s,r=this +if(r.gbk())return A.i0(B.a.m(r.a,r.d+1,r.e),null) +s=r.b +if(s===4&&B.a.C(r.a,"http"))return 80 +if(s===5&&B.a.C(r.a,"https"))return 443 +return 0}, +gbq(a){return B.a.m(this.a,this.e,this.f)}, +gaR(a){var s=this.f,r=this.r +return s=s.r)return B.T +return new A.bl(A.ja(s.gaR(s)),t.V)}, +aT(a,b){var s,r,q,p,o,n=this,m=null,l=n.gan(),k=l==="file",j=n.c,i=j>0?B.a.m(n.a,n.b+3,j):"",h=n.gbk()?n.gaj(n):m +j=n.c +if(j>0)s=B.a.m(n.a,j,n.d) +else s=i.length!==0||h!=null||k?"":m +j=n.a +r=B.a.m(j,n.e,n.f) +if(!k)q=s!=null&&r.length!==0 +else q=!0 +if(q&&!B.a.C(r,"/"))r="/"+r +p=A.is(m,0,0,b) +q=n.r +o=q>>0!==b||b>=s)throw A.b(A.B(b,s,a,null)) +return a[b]}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return a[b]}, +$if:1, +$ip:1, +$ik:1} +A.bx.prototype={ +k(a){var s,r=a.left +r.toString +s=a.top +s.toString +return"Rectangle ("+A.o(r)+", "+A.o(s)+") "+A.o(this.ga1(a))+" x "+A.o(this.gZ(a))}, +N(a,b){var s,r +if(b==null)return!1 +if(t.q.b(b)){s=a.left +s.toString +r=b.left +r.toString +if(s===r){s=a.top +s.toString +r=b.top +r.toString +if(s===r){s=J.M(b) +s=this.ga1(a)===s.ga1(b)&&this.gZ(a)===s.gZ(b)}else s=!1}else s=!1}else s=!1 +return s}, +gB(a){var s,r=a.left +r.toString +s=a.top +s.toString +return A.iZ(r,s,this.ga1(a),this.gZ(a))}, +gb3(a){return a.height}, +gZ(a){var s=this.gb3(a) +s.toString +return s}, +gba(a){return a.width}, +ga1(a){var s=this.gba(a) +s.toString +return s}, +$iaX:1} +A.cT.prototype={ +gi(a){return a.length}, +h(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.B(b,s,a,null)) +return a[b]}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return a[b]}, +$if:1, +$ip:1, +$ik:1} +A.cU.prototype={ +gi(a){return a.length}} +A.q.prototype={ +gc8(a){return new A.bZ(a)}, +gS(a){return new A.e7(a)}, +k(a){return a.localName}, +J(a,b,c,d){var s,r,q,p +if(c==null){s=$.iR +if(s==null){s=A.n([],t.Q) +r=new A.bQ(s) +s.push(A.jd(null)) +s.push(A.jj()) +$.iR=r +d=r}else d=s +s=$.iQ +if(s==null){d.toString +s=new A.eQ(d) +$.iQ=s +c=s}else{d.toString +s.a=d +c=s}}if($.aB==null){s=document +r=s.implementation.createHTMLDocument("") +$.aB=r +$.i8=r.createRange() +r=$.aB.createElement("base") +t.B.a(r) +s=s.baseURI +s.toString +r.href=s +$.aB.head.appendChild(r)}s=$.aB +if(s.body==null){r=s.createElement("body") +s.body=t.Y.a(r)}s=$.aB +if(t.Y.b(a)){s=s.body +s.toString +q=s}else{s.toString +q=s.createElement(a.tagName) +$.aB.body.appendChild(q)}if("createContextualFragment" in window.Range.prototype&&!B.b.G(B.O,a.tagName)){$.i8.selectNodeContents(q) +s=$.i8 +p=s.createContextualFragment(b)}else{q.innerHTML=b +p=$.aB.createDocumentFragment() +for(;s=q.firstChild,s!=null;)p.appendChild(s)}if(q!==$.aB.body)J.iG(q) +c.aX(p) +document.adoptNode(p) +return p}, +cb(a,b,c){return this.J(a,b,c,null)}, +sK(a,b){this.a9(a,b)}, +a9(a,b){a.textContent=null +a.appendChild(this.J(a,b,null,null))}, +gK(a){return a.innerHTML}, +$iq:1} +A.fc.prototype={ +$1(a){return t.h.b(a)}, +$S:11} +A.h.prototype={$ih:1} +A.c.prototype={ +M(a,b,c){this.bN(a,b,c,null)}, +bN(a,b,c,d){return a.addEventListener(b,A.bs(c,1),d)}} +A.a1.prototype={$ia1:1} +A.cV.prototype={ +gi(a){return a.length}, +h(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.B(b,s,a,null)) +return a[b]}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return a[b]}, +$if:1, +$ip:1, +$ik:1} +A.cW.prototype={ +gi(a){return a.length}} +A.cY.prototype={ +gi(a){return a.length}} +A.a2.prototype={$ia2:1} +A.cZ.prototype={ +gi(a){return a.length}} +A.aU.prototype={ +gi(a){return a.length}, +h(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.B(b,s,a,null)) +return a[b]}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return a[b]}, +$if:1, +$ip:1, +$ik:1} +A.bD.prototype={} +A.aD.prototype={$iaD:1} +A.bf.prototype={$ibf:1} +A.d7.prototype={ +k(a){return String(a)}} +A.d8.prototype={ +gi(a){return a.length}} +A.d9.prototype={ +h(a,b){return A.aL(a.get(b))}, +D(a,b){var s,r=a.entries() +for(;!0;){s=r.next() +if(s.done)return +b.$2(s.value[0],A.aL(s.value[1]))}}, +gF(a){var s=A.n([],t.s) +this.D(a,new A.fs(s)) +return s}, +gi(a){return a.size}, +j(a,b,c){throw A.b(A.r("Not supported"))}, +$ix:1} +A.fs.prototype={ +$2(a,b){return this.a.push(a)}, +$S:2} +A.da.prototype={ +h(a,b){return A.aL(a.get(b))}, +D(a,b){var s,r=a.entries() +for(;!0;){s=r.next() +if(s.done)return +b.$2(s.value[0],A.aL(s.value[1]))}}, +gF(a){var s=A.n([],t.s) +this.D(a,new A.ft(s)) +return s}, +gi(a){return a.size}, +j(a,b,c){throw A.b(A.r("Not supported"))}, +$ix:1} +A.ft.prototype={ +$2(a,b){return this.a.push(a)}, +$S:2} +A.a4.prototype={$ia4:1} +A.db.prototype={ +gi(a){return a.length}, +h(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.B(b,s,a,null)) +return a[b]}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return a[b]}, +$if:1, +$ip:1, +$ik:1} +A.J.prototype={ +gW(a){var s=this.a,r=s.childNodes.length +if(r===0)throw A.b(A.dz("No elements")) +if(r>1)throw A.b(A.dz("More than one element")) +s=s.firstChild +s.toString +return s}, +P(a,b){var s,r,q,p,o +if(b instanceof A.J){s=b.a +r=this.a +if(s!==r)for(q=s.childNodes.length,p=0;p>>0!==b||b>=s)throw A.b(A.B(b,s,a,null)) +return a[b]}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return a[b]}, +$if:1, +$ip:1, +$ik:1} +A.a6.prototype={ +gi(a){return a.length}, +$ia6:1} +A.dq.prototype={ +gi(a){return a.length}, +h(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.B(b,s,a,null)) +return a[b]}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return a[b]}, +$if:1, +$ip:1, +$ik:1} +A.dt.prototype={ +h(a,b){return A.aL(a.get(b))}, +D(a,b){var s,r=a.entries() +for(;!0;){s=r.next() +if(s.done)return +b.$2(s.value[0],A.aL(s.value[1]))}}, +gF(a){var s=A.n([],t.s) +this.D(a,new A.fz(s)) +return s}, +gi(a){return a.size}, +j(a,b,c){throw A.b(A.r("Not supported"))}, +$ix:1} +A.fz.prototype={ +$2(a,b){return this.a.push(a)}, +$S:2} +A.dv.prototype={ +gi(a){return a.length}} +A.a7.prototype={$ia7:1} +A.dx.prototype={ +gi(a){return a.length}, +h(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.B(b,s,a,null)) +return a[b]}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return a[b]}, +$if:1, +$ip:1, +$ik:1} +A.a8.prototype={$ia8:1} +A.dy.prototype={ +gi(a){return a.length}, +h(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.B(b,s,a,null)) +return a[b]}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return a[b]}, +$if:1, +$ip:1, +$ik:1} +A.a9.prototype={ +gi(a){return a.length}, +$ia9:1} +A.dB.prototype={ +h(a,b){return a.getItem(A.f0(b))}, +j(a,b,c){a.setItem(b,c)}, +D(a,b){var s,r,q +for(s=0;!0;++s){r=a.key(s) +if(r==null)return +q=a.getItem(r) +q.toString +b.$2(r,q)}}, +gF(a){var s=A.n([],t.s) +this.D(a,new A.fB(s)) +return s}, +gi(a){return a.length}, +$ix:1} +A.fB.prototype={ +$2(a,b){return this.a.push(a)}, +$S:5} +A.U.prototype={$iU:1} +A.bU.prototype={ +J(a,b,c,d){var s,r +if("createContextualFragment" in window.Range.prototype)return this.ao(a,b,c,d) +s=A.kv(""+b+"
",c,d) +r=document.createDocumentFragment() +new A.J(r).P(0,new A.J(s)) +return r}} +A.dD.prototype={ +J(a,b,c,d){var s,r +if("createContextualFragment" in window.Range.prototype)return this.ao(a,b,c,d) +s=document +r=s.createDocumentFragment() +s=new A.J(B.x.J(s.createElement("table"),b,c,d)) +s=new A.J(s.gW(s)) +new A.J(r).P(0,new A.J(s.gW(s))) +return r}} +A.dE.prototype={ +J(a,b,c,d){var s,r +if("createContextualFragment" in window.Range.prototype)return this.ao(a,b,c,d) +s=document +r=s.createDocumentFragment() +s=new A.J(B.x.J(s.createElement("table"),b,c,d)) +new A.J(r).P(0,new A.J(s.gW(s))) +return r}} +A.bj.prototype={ +a9(a,b){var s,r +a.textContent=null +s=a.content +s.toString +J.kc(s) +r=this.J(a,b,null,null) +a.content.appendChild(r)}, +$ibj:1} +A.aY.prototype={$iaY:1} +A.aa.prototype={$iaa:1} +A.V.prototype={$iV:1} +A.dG.prototype={ +gi(a){return a.length}, +h(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.B(b,s,a,null)) +return a[b]}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return a[b]}, +$if:1, +$ip:1, +$ik:1} +A.dH.prototype={ +gi(a){return a.length}, +h(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.B(b,s,a,null)) +return a[b]}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return a[b]}, +$if:1, +$ip:1, +$ik:1} +A.dI.prototype={ +gi(a){return a.length}} +A.ab.prototype={$iab:1} +A.dJ.prototype={ +gi(a){return a.length}, +h(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.B(b,s,a,null)) +return a[b]}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return a[b]}, +$if:1, +$ip:1, +$ik:1} +A.dK.prototype={ +gi(a){return a.length}} +A.P.prototype={} +A.dR.prototype={ +k(a){return String(a)}} +A.dS.prototype={ +gi(a){return a.length}} +A.bm.prototype={$ibm:1} +A.dZ.prototype={ +gi(a){return a.length}, +h(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.B(b,s,a,null)) +return a[b]}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return a[b]}, +$if:1, +$ip:1, +$ik:1} +A.bX.prototype={ +k(a){var s,r,q,p=a.left +p.toString +s=a.top +s.toString +r=a.width +r.toString +q=a.height +q.toString +return"Rectangle ("+A.o(p)+", "+A.o(s)+") "+A.o(r)+" x "+A.o(q)}, +N(a,b){var s,r +if(b==null)return!1 +if(t.q.b(b)){s=a.left +s.toString +r=b.left +r.toString +if(s===r){s=a.top +s.toString +r=b.top +r.toString +if(s===r){s=a.width +s.toString +r=J.M(b) +if(s===r.ga1(b)){s=a.height +s.toString +r=s===r.gZ(b) +s=r}else s=!1}else s=!1}else s=!1}else s=!1 +return s}, +gB(a){var s,r,q,p=a.left +p.toString +s=a.top +s.toString +r=a.width +r.toString +q=a.height +q.toString +return A.iZ(p,s,r,q)}, +gb3(a){return a.height}, +gZ(a){var s=a.height +s.toString +return s}, +gba(a){return a.width}, +ga1(a){var s=a.width +s.toString +return s}} +A.ec.prototype={ +gi(a){return a.length}, +h(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.B(b,s,a,null)) +return a[b]}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return a[b]}, +$if:1, +$ip:1, +$ik:1} +A.c2.prototype={ +gi(a){return a.length}, +h(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.B(b,s,a,null)) +return a[b]}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return a[b]}, +$if:1, +$ip:1, +$ik:1} +A.ez.prototype={ +gi(a){return a.length}, +h(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.B(b,s,a,null)) +return a[b]}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return a[b]}, +$if:1, +$ip:1, +$ik:1} +A.eF.prototype={ +gi(a){return a.length}, +h(a,b){var s=a.length +if(b>>>0!==b||b>=s)throw A.b(A.B(b,s,a,null)) +return a[b]}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return a[b]}, +$if:1, +$ip:1, +$ik:1} +A.dW.prototype={ +D(a,b){var s,r,q,p,o,n +for(s=this.gF(this),r=s.length,q=this.a,p=0;p0)p[r]=q[0].toUpperCase()+B.a.O(q,1)}return B.b.U(p,"")}, +aG(a){var s,r,q,p,o +for(s=a.length,r=0,q="";r0?q+"-":q)+o}return q.charCodeAt(0)==0?q:q}} +A.fV.prototype={ +$2(a,b){if(B.a.C(a,"data-"))this.b.$2(this.a.b8(B.a.O(a,5)),b)}, +$S:5} +A.fW.prototype={ +$2(a,b){if(B.a.C(a,"data-"))this.b.push(this.a.b8(B.a.O(a,5)))}, +$S:5} +A.e7.prototype={ +T(){var s,r,q,p,o=A.bG(t.N) +for(s=this.a.className.split(" "),r=s.length,q=0;q") +return}if(!l.a.X(a)){l.a4(a,b) +window +s=A.o(b) +if(typeof console!="undefined")window.console.warn("Removing disallowed element <"+e+"> from "+s) +return}if(g!=null)if(!l.a.R(a,"is",g)){l.a4(a,b) +window +if(typeof console!="undefined")window.console.warn("Removing disallowed type extension <"+e+' is="'+g+'">') +return}s=f.gF(f) +r=A.n(s.slice(0),A.cm(s)) +for(q=f.gF(f).length-1,s=f.a,p="Removing disallowed attribute <"+e+" ";q>=0;--q){o=r[q] +n=l.a +m=J.kl(o) +A.f0(o) +if(!n.R(a,m,s.getAttribute(o))){window +n=s.getAttribute(o) +if(typeof console!="undefined")window.console.warn(p+o+'="'+A.o(n)+'">') +s.removeAttribute(o)}}if(t.f.b(a)){s=a.content +s.toString +l.aX(s)}}, +bA(a,b){switch(a.nodeType){case 1:this.c1(a,b) +break +case 8:case 11:case 3:case 4:break +default:this.a4(a,b)}}} +A.hx.prototype={ +$2(a,b){var s,r,q,p,o,n=this.a +n.bA(a,b) +s=a.lastChild +for(;s!=null;){r=null +try{r=s.previousSibling +if(r!=null){q=r.nextSibling +p=s +p=q==null?p!=null:q!==p +q=p}else q=!1 +if(q){q=A.dz("Corrupt HTML") +throw A.b(q)}}catch(o){q=s;++n.b +p=q.parentNode +if(a!==p){if(p!=null)p.removeChild(q)}else a.removeChild(q) +s=null +r=a.lastChild}if(s!=null)this.$2(s,a) +s=r}}, +$S:41} +A.e_.prototype={} +A.e3.prototype={} +A.e4.prototype={} +A.e5.prototype={} +A.e6.prototype={} +A.e9.prototype={} +A.ea.prototype={} +A.ee.prototype={} +A.ef.prototype={} +A.el.prototype={} +A.em.prototype={} +A.en.prototype={} +A.eo.prototype={} +A.ep.prototype={} +A.eq.prototype={} +A.et.prototype={} +A.eu.prototype={} +A.ev.prototype={} +A.c9.prototype={} +A.ca.prototype={} +A.ex.prototype={} +A.ey.prototype={} +A.eA.prototype={} +A.eI.prototype={} +A.eJ.prototype={} +A.cc.prototype={} +A.cd.prototype={} +A.eK.prototype={} +A.eL.prototype={} +A.eR.prototype={} +A.eS.prototype={} +A.eT.prototype={} +A.eU.prototype={} +A.eV.prototype={} +A.eW.prototype={} +A.eX.prototype={} +A.eY.prototype={} +A.eZ.prototype={} +A.f_.prototype={} +A.cN.prototype={ +aH(a){var s=$.jU().b +if(s.test(a))return a +throw A.b(A.i7(a,"value","Not a valid class token"))}, +k(a){return this.T().U(0," ")}, +aW(a,b){var s,r,q +this.aH(b) +s=this.T() +r=s.G(0,b) +if(!r){s.A(0,b) +q=!0}else{s.a7(0,b) +q=!1}this.al(s) +return q}, +gv(a){var s=this.T() +return A.la(s,s.r)}, +gi(a){return this.T().a}, +A(a,b){var s +this.aH(b) +s=this.cs(0,new A.fa(b)) +return s==null?!1:s}, +a7(a,b){var s,r +this.aH(b) +s=this.T() +r=s.a7(0,b) +this.al(s) +return r}, +q(a,b){return this.T().q(0,b)}, +cs(a,b){var s=this.T(),r=b.$1(s) +this.al(s) +return r}} +A.fa.prototype={ +$1(a){return a.A(0,this.a)}, +$S:35} +A.cX.prototype={ +gab(){var s=this.b,r=A.I(s) +return new A.aj(new A.ar(s,new A.ff(),r.l("ar")),new A.fg(),r.l("aj"))}, +j(a,b,c){var s=this.gab() +J.kk(s.b.$1(J.cv(s.a,b)),c)}, +gi(a){return J.ax(this.gab().a)}, +h(a,b){var s=this.gab() +return s.b.$1(J.cv(s.a,b))}, +gv(a){var s=A.kL(this.gab(),!1,t.h) +return new J.b9(s,s.length)}} +A.ff.prototype={ +$1(a){return t.h.b(a)}, +$S:11} +A.fg.prototype={ +$1(a){return t.h.a(a)}, +$S:29} +A.i3.prototype={ +$1(a){return this.a.aJ(0,a)}, +$S:4} +A.i4.prototype={ +$1(a){if(a==null)return this.a.bf(new A.fw(a===undefined)) +return this.a.bf(a)}, +$S:4} +A.fw.prototype={ +k(a){return"Promise was rejected with a value of `"+(this.a?"undefined":"null")+"`."}} +A.ah.prototype={$iah:1} +A.d4.prototype={ +gi(a){return a.length}, +h(a,b){if(b>>>0!==b||b>=a.length)throw A.b(A.B(b,this.gi(a),a,null)) +return a.getItem(b)}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return this.h(a,b)}, +$if:1, +$ik:1} +A.al.prototype={$ial:1} +A.dl.prototype={ +gi(a){return a.length}, +h(a,b){if(b>>>0!==b||b>=a.length)throw A.b(A.B(b,this.gi(a),a,null)) +return a.getItem(b)}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return this.h(a,b)}, +$if:1, +$ik:1} +A.dr.prototype={ +gi(a){return a.length}} +A.bh.prototype={$ibh:1} +A.dC.prototype={ +gi(a){return a.length}, +h(a,b){if(b>>>0!==b||b>=a.length)throw A.b(A.B(b,this.gi(a),a,null)) +return a.getItem(b)}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return this.h(a,b)}, +$if:1, +$ik:1} +A.cC.prototype={ +T(){var s,r,q,p,o=this.a.getAttribute("class"),n=A.bG(t.N) +if(o==null)return n +for(s=o.split(" "),r=s.length,q=0;q'+b+"",c) +q=o.createDocumentFragment() +o=new A.J(r) +p=o.gW(o) +for(;o=p.firstChild,o!=null;)q.appendChild(o) +return q}, +$ij:1} +A.ao.prototype={$iao:1} +A.dL.prototype={ +gi(a){return a.length}, +h(a,b){if(b>>>0!==b||b>=a.length)throw A.b(A.B(b,this.gi(a),a,null)) +return a.getItem(b)}, +j(a,b,c){throw A.b(A.r("Cannot assign element of immutable List."))}, +q(a,b){return this.h(a,b)}, +$if:1, +$ik:1} +A.ei.prototype={} +A.ej.prototype={} +A.er.prototype={} +A.es.prototype={} +A.eC.prototype={} +A.eD.prototype={} +A.eM.prototype={} +A.eN.prototype={} +A.cD.prototype={ +gi(a){return a.length}} +A.cE.prototype={ +h(a,b){return A.aL(a.get(b))}, +D(a,b){var s,r=a.entries() +for(;!0;){s=r.next() +if(s.done)return +b.$2(s.value[0],A.aL(s.value[1]))}}, +gF(a){var s=A.n([],t.s) +this.D(a,new A.f7(s)) +return s}, +gi(a){return a.size}, +j(a,b,c){throw A.b(A.r("Not supported"))}, +$ix:1} +A.f7.prototype={ +$2(a,b){return this.a.push(a)}, +$S:2} +A.cF.prototype={ +gi(a){return a.length}} +A.az.prototype={} +A.dm.prototype={ +gi(a){return a.length}} +A.dX.prototype={} +A.hL.prototype={ +$0(){var s,r=document.querySelector("body") +if(r.getAttribute("data-using-base-href")==="false"){s=r.getAttribute("data-base-href") +return s==null?"":s}else return""}, +$S:30} +A.hZ.prototype={ +$0(){var s,r="Failed to initialize search" +A.mR("Could not activate search functionality.") +s=this.a +if(s!=null)s.placeholder=r +s=this.b +if(s!=null)s.placeholder=r +s=this.c +if(s!=null)s.placeholder=r}, +$S:0} +A.hY.prototype={ +$1(a){var s=0,r=A.mc(t.P),q,p=this,o,n,m,l,k,j,i,h,g +var $async$$1=A.mr(function(b,c){if(b===1)return A.lN(c,r) +while(true)switch(s){case 0:t.e.a(a) +if(a.status===404){p.a.$0() +s=1 +break}i=J +h=t.j +g=B.F +s=3 +return A.lM(A.jR(a.text(),t.N),$async$$1) +case 3:o=i.ke(h.a(g.cc(0,c,null)),t.a) +n=o.$ti.l("ak") +m=A.iY(new A.ak(o,A.mU(),n),!0,n.l("a3.E")) +l=A.fH(String(window.location)).gaS().h(0,"search") +if(l!=null){k=A.jz(m,l) +if(k.length!==0){j=B.b.gcj(k).d +if(j!=null){window.location.assign(A.o($.cu())+j) +s=1 +break}}}n=p.b +if(n!=null)A.il(m).aO(0,n) +n=p.c +if(n!=null)A.il(m).aO(0,n) +n=p.d +if(n!=null)A.il(m).aO(0,n) +case 1:return A.lO(q,r)}}) +return A.lP($async$$1,r)}, +$S:31} +A.hJ.prototype={ +$1(a){var s,r=this.a,q=r.e +if(q==null)q=0 +s=B.U.h(0,r.c) +if(s==null)s=4 +this.b.push(new A.Y(r,(a-q*10)/s))}, +$S:32} +A.hH.prototype={ +$2(a,b){var s=B.e.a0(b.b-a.b) +if(s===0)return a.a.a.length-b.a.a.length +return s}, +$S:33} +A.hI.prototype={ +$1(a){return a.a}, +$S:34} +A.hf.prototype={ +gV(){var s,r,q=this,p=q.c +if(p===$){s=document.createElement("div") +s.setAttribute("role","listbox") +s.setAttribute("aria-expanded","false") +r=s.style +r.display="none" +J.a_(s).A(0,"tt-menu") +s.appendChild(q.gbp()) +s.appendChild(q.ga8()) +q.c!==$&&A.ct() +q.c=s +p=s}return p}, +gbp(){var s,r=this.d +if(r===$){s=document.createElement("div") +J.a_(s).A(0,"enter-search-message") +this.d!==$&&A.ct() +this.d=s +r=s}return r}, +ga8(){var s,r=this.e +if(r===$){s=document.createElement("div") +J.a_(s).A(0,"tt-search-results") +this.e!==$&&A.ct() +this.e=s +r=s}return r}, +aO(a,b){var s,r,q,p=this +b.disabled=!1 +b.setAttribute("placeholder","Search API Docs") +s=document +B.J.M(s,"keydown",new A.hg(b)) +r=s.createElement("div") +J.a_(r).A(0,"tt-wrapper") +B.f.bs(b,r) +b.setAttribute("autocomplete","off") +b.setAttribute("spellcheck","false") +b.classList.add("tt-input") +r.appendChild(b) +r.appendChild(p.gV()) +p.bB(b) +if(B.a.G(window.location.href,"search.html")){q=p.b.gaS().h(0,"q") +if(q==null)return +q=B.n.Y(q) +$.iz=$.hO +p.co(q,!0) +p.bC(q) +p.aM() +$.iz=10}}, +bC(a){var s,r,q,p,o,n="search-summary",m=document,l=m.getElementById("dartdoc-main-content") +if(l==null)return +l.textContent="" +s=m.createElement("section") +J.a_(s).A(0,n) +l.appendChild(s) +s=m.createElement("h2") +J.iH(s,"Search Results") +l.appendChild(s) +s=m.createElement("div") +r=J.M(s) +r.gS(s).A(0,n) +r.sK(s,""+$.hO+' results for "'+a+'"') +l.appendChild(s) +if($.b0.a!==0)for(m=$.b0.gbx($.b0),m=new A.bJ(J.ae(m.a),m.b),s=A.I(m).z[1];m.n();){r=m.a +l.appendChild(r==null?s.a(r):r)}else{q=m.createElement("div") +s=J.M(q) +s.gS(q).A(0,n) +s.sK(q,'There was not a match for "'+a+'". Want to try searching from additional Dart-related sites? ') +p=A.fH("https://dart.dev/search?cx=011220921317074318178%3A_yy-tmb5t_i&ie=UTF-8&hl=en&q=").aT(0,A.iV(["q",a],t.N,t.z)) +o=m.createElement("a") +o.setAttribute("href",p.gae()) +o.textContent="Search on dart.dev." +q.appendChild(o) +l.appendChild(q)}}, +aM(){var s=this.gV(),r=s.style +r.display="none" +s.setAttribute("aria-expanded","false") +return s}, +bu(a,b,c){var s,r,q,p,o=this +o.x=A.n([],t.O) +s=o.w +B.b.ag(s) +$.b0.ag(0) +o.ga8().textContent="" +r=b.length +if(r===0){o.aM() +return}for(q=0;q10?'Press "Enter" key to see all '+p+" results":""}, +cG(a,b){return this.bu(a,b,!1)}, +aL(a,b,c){var s,r,q,p=this +if(p.r===a&&!b)return +if(a==null||a.length===0){p.cG("",A.n([],t.O)) +return}s=A.jz(p.a,a) +r=s.length +$.hO=r +q=$.iz +if(r>q)s=B.b.bE(s,0,q) +p.r=a +p.bu(a,s,c)}, +co(a,b){return this.aL(a,!1,b)}, +bh(a){return this.aL(a,!1,!1)}, +cn(a,b){return this.aL(a,b,!1)}, +bd(a){var s,r=this +r.y=-1 +s=r.f +if(s!=null){a.value=s +r.f=null}r.aM()}, +bB(a){var s=this +B.f.M(a,"focus",new A.hh(s,a)) +B.f.M(a,"blur",new A.hi(s,a)) +B.f.M(a,"input",new A.hj(s,a)) +B.f.M(a,"keydown",new A.hk(s,a))}} +A.hg.prototype={ +$1(a){if(!t.v.b(a))return +if(a.key==="/"&&!t.p.b(document.activeElement)){a.preventDefault() +this.a.focus()}}, +$S:1} +A.hh.prototype={ +$1(a){this.a.cn(this.b.value,!0)}, +$S:1} +A.hi.prototype={ +$1(a){this.a.bd(this.b)}, +$S:1} +A.hj.prototype={ +$1(a){this.a.bh(this.b.value)}, +$S:1} +A.hk.prototype={ +$1(a){var s,r,q,p,o,n,m,l,k,j,i,h,g,f=this,e="tt-cursor" +if(a.type!=="keydown")return +t.v.a(a) +s=a.code +if(s==="Enter"){a.preventDefault() +s=f.a +r=s.y +if(r!==-1){s=s.w[r] +q=s.getAttribute("data-"+new A.e1(new A.bZ(s)).aG("href")) +if(q!=null)window.location.assign(A.o($.cu())+q) +return}else{p=B.n.Y(s.r) +o=A.fH(A.o($.cu())+"search.html").aT(0,A.iV(["q",p],t.N,t.z)) +window.location.assign(o.gae()) +return}}r=f.a +n=r.w +m=n.length-1 +l=r.y +if(s==="ArrowUp")if(l===-1)r.y=m +else r.y=l-1 +else if(s==="ArrowDown")if(l===m)r.y=-1 +else r.y=l+1 +else if(s==="Escape")r.bd(f.b) +else{if(r.f!=null){r.f=null +r.bh(f.b.value)}return}s=l!==-1 +if(s)J.a_(n[l]).a7(0,e) +k=r.y +if(k!==-1){j=n[k] +J.a_(j).A(0,e) +s=r.y +if(s===0)r.gV().scrollTop=0 +else if(s===m)r.gV().scrollTop=B.c.a0(B.e.a0(r.gV().scrollHeight)) +else{i=B.e.a0(j.offsetTop) +h=B.e.a0(r.gV().offsetHeight) +if(i"+A.o(a.h(0,0))+""}, +$S:36} +A.Y.prototype={} +A.ac.prototype={} +A.fX.prototype={} +A.i_.prototype={ +$1(a){var s=this.a +if(s!=null)J.a_(s).aW(0,"active") +s=this.b +if(s!=null)J.a_(s).aW(0,"active")}, +$S:37} +A.hX.prototype={ +$1(a){var s="dark-theme",r="colorTheme",q="light-theme",p=this.a,o=this.b +if(p.checked===!0){o.setAttribute("class",s) +p.setAttribute("value",s) +window.localStorage.setItem(r,"true")}else{o.setAttribute("class",q) +p.setAttribute("value",q) +window.localStorage.setItem(r,"false")}}, +$S:1};(function aliases(){var s=J.bd.prototype +s.bF=s.k +s=J.aF.prototype +s.bH=s.k +s=A.u.prototype +s.bG=s.ak +s=A.q.prototype +s.ao=s.J +s=A.c8.prototype +s.bI=s.R})();(function installTearOffs(){var s=hunkHelpers._static_2,r=hunkHelpers._static_1,q=hunkHelpers._static_0,p=hunkHelpers.installStaticTearOff +s(J,"m1","kH",38) +r(A,"mt","l3",3) +r(A,"mu","l4",3) +r(A,"mv","l5",3) +q(A,"jK","ml",0) +p(A,"mD",4,null,["$4"],["l7"],7,0) +p(A,"mE",4,null,["$4"],["l8"],7,0) +r(A,"mU","l9",27)})();(function inheritance(){var s=hunkHelpers.mixin,r=hunkHelpers.inherit,q=hunkHelpers.inheritMany +r(A.y,null) +q(A.y,[A.ic,J.bd,J.b9,A.u,A.cG,A.z,A.e,A.fA,A.bH,A.bJ,A.dT,A.bB,A.dO,A.bv,A.fD,A.fx,A.bA,A.cb,A.aA,A.v,A.fp,A.d5,A.fk,A.ek,A.fQ,A.T,A.eb,A.hq,A.ho,A.dU,A.cB,A.dY,A.bn,A.H,A.dV,A.eB,A.hy,A.an,A.hb,A.c1,A.eP,A.bI,A.cK,A.cM,A.fj,A.hv,A.hu,A.dn,A.bT,A.fY,A.fh,A.G,A.eE,A.L,A.cj,A.fF,A.ew,A.fb,A.bo,A.A,A.bQ,A.c8,A.eG,A.bC,A.he,A.eQ,A.fw,A.hf,A.Y,A.ac,A.fX]) +q(J.bd,[J.d0,J.bF,J.a,J.be,J.aE]) +q(J.a,[J.aF,J.C,A.dc,A.bM,A.c,A.cw,A.bu,A.X,A.w,A.e_,A.N,A.cR,A.cS,A.e3,A.bx,A.e5,A.cU,A.h,A.e9,A.a2,A.cZ,A.ee,A.d7,A.d8,A.el,A.em,A.a4,A.en,A.ep,A.a6,A.et,A.ev,A.a8,A.ex,A.a9,A.eA,A.U,A.eI,A.dI,A.ab,A.eK,A.dK,A.dR,A.eR,A.eT,A.eV,A.eX,A.eZ,A.ah,A.ei,A.al,A.er,A.dr,A.eC,A.ao,A.eM,A.cD,A.dX]) +q(J.aF,[J.dp,J.b_,J.ag]) +r(J.fl,J.C) +q(J.be,[J.bE,J.d1]) +q(A.u,[A.aI,A.f,A.aj,A.ar]) +q(A.aI,[A.aP,A.cl]) +r(A.bY,A.aP) +r(A.bW,A.cl) +r(A.af,A.bW) +q(A.z,[A.d3,A.ap,A.d2,A.dN,A.e0,A.du,A.e8,A.cz,A.W,A.dP,A.dM,A.bi,A.cL]) +q(A.e,[A.bk,A.J,A.cX]) +r(A.cJ,A.bk) +q(A.f,[A.a3,A.ai]) +r(A.by,A.aj) +q(A.a3,[A.ak,A.eh]) +r(A.aR,A.bv) +r(A.bR,A.ap) +q(A.aA,[A.cH,A.cI,A.dF,A.fm,A.hU,A.hW,A.fS,A.fR,A.hz,A.h1,A.h9,A.hF,A.hG,A.fc,A.fv,A.fu,A.hl,A.hm,A.hn,A.fa,A.ff,A.fg,A.i3,A.i4,A.hY,A.hJ,A.hI,A.hg,A.hh,A.hi,A.hj,A.hk,A.hC,A.hD,A.hK,A.i_,A.hX]) +q(A.dF,[A.dA,A.bb]) +q(A.v,[A.aV,A.eg,A.dW,A.e1]) +q(A.cI,[A.hV,A.hA,A.hP,A.h2,A.fq,A.fK,A.fG,A.fI,A.fJ,A.ht,A.hs,A.hE,A.fs,A.ft,A.fz,A.fB,A.fV,A.fW,A.hx,A.f7,A.hH]) +q(A.bM,[A.dd,A.bg]) +q(A.bg,[A.c3,A.c5]) +r(A.c4,A.c3) +r(A.bK,A.c4) +r(A.c6,A.c5) +r(A.bL,A.c6) +q(A.bK,[A.de,A.df]) +q(A.bL,[A.dg,A.dh,A.di,A.dj,A.dk,A.bN,A.bO]) +r(A.ce,A.e8) +q(A.cH,[A.fT,A.fU,A.hp,A.fZ,A.h5,A.h3,A.h0,A.h4,A.h_,A.h8,A.h7,A.h6,A.hN,A.hd,A.fO,A.fN,A.hL,A.hZ]) +r(A.bV,A.dY) +r(A.hc,A.hy) +q(A.an,[A.c7,A.cN]) +r(A.c0,A.c7) +r(A.ci,A.bI) +r(A.bl,A.ci) +q(A.cK,[A.f8,A.fd,A.fn]) +q(A.cM,[A.f9,A.fi,A.fo,A.fP,A.fM]) +r(A.fL,A.fd) +q(A.W,[A.bS,A.d_]) +r(A.e2,A.cj) +q(A.c,[A.m,A.cW,A.a7,A.c9,A.aa,A.V,A.cc,A.dS,A.cF,A.az]) +q(A.m,[A.q,A.a0,A.aS,A.bm]) +q(A.q,[A.l,A.j]) +q(A.l,[A.cx,A.cy,A.ba,A.aO,A.cY,A.aD,A.dv,A.bU,A.dD,A.dE,A.bj,A.aY]) +r(A.cO,A.X) +r(A.bc,A.e_) +q(A.N,[A.cP,A.cQ]) +r(A.e4,A.e3) +r(A.bw,A.e4) +r(A.e6,A.e5) +r(A.cT,A.e6) +r(A.a1,A.bu) +r(A.ea,A.e9) +r(A.cV,A.ea) +r(A.ef,A.ee) +r(A.aU,A.ef) +r(A.bD,A.aS) +r(A.P,A.h) +r(A.bf,A.P) +r(A.d9,A.el) +r(A.da,A.em) +r(A.eo,A.en) +r(A.db,A.eo) +r(A.eq,A.ep) +r(A.bP,A.eq) +r(A.eu,A.et) +r(A.dq,A.eu) +r(A.dt,A.ev) +r(A.ca,A.c9) +r(A.dx,A.ca) +r(A.ey,A.ex) +r(A.dy,A.ey) +r(A.dB,A.eA) +r(A.eJ,A.eI) +r(A.dG,A.eJ) +r(A.cd,A.cc) +r(A.dH,A.cd) +r(A.eL,A.eK) +r(A.dJ,A.eL) +r(A.eS,A.eR) +r(A.dZ,A.eS) +r(A.bX,A.bx) +r(A.eU,A.eT) +r(A.ec,A.eU) +r(A.eW,A.eV) +r(A.c2,A.eW) +r(A.eY,A.eX) +r(A.ez,A.eY) +r(A.f_,A.eZ) +r(A.eF,A.f_) +r(A.bZ,A.dW) +q(A.cN,[A.e7,A.cC]) +r(A.eH,A.c8) +r(A.ej,A.ei) +r(A.d4,A.ej) +r(A.es,A.er) +r(A.dl,A.es) +r(A.bh,A.j) +r(A.eD,A.eC) +r(A.dC,A.eD) +r(A.eN,A.eM) +r(A.dL,A.eN) +r(A.cE,A.dX) +r(A.dm,A.az) +s(A.bk,A.dO) +s(A.cl,A.e) +s(A.c3,A.e) +s(A.c4,A.bB) +s(A.c5,A.e) +s(A.c6,A.bB) +s(A.ci,A.eP) +s(A.e_,A.fb) +s(A.e3,A.e) +s(A.e4,A.A) +s(A.e5,A.e) +s(A.e6,A.A) +s(A.e9,A.e) +s(A.ea,A.A) +s(A.ee,A.e) +s(A.ef,A.A) +s(A.el,A.v) +s(A.em,A.v) +s(A.en,A.e) +s(A.eo,A.A) +s(A.ep,A.e) +s(A.eq,A.A) +s(A.et,A.e) +s(A.eu,A.A) +s(A.ev,A.v) +s(A.c9,A.e) +s(A.ca,A.A) +s(A.ex,A.e) +s(A.ey,A.A) +s(A.eA,A.v) +s(A.eI,A.e) +s(A.eJ,A.A) +s(A.cc,A.e) +s(A.cd,A.A) +s(A.eK,A.e) +s(A.eL,A.A) +s(A.eR,A.e) +s(A.eS,A.A) +s(A.eT,A.e) +s(A.eU,A.A) +s(A.eV,A.e) +s(A.eW,A.A) +s(A.eX,A.e) +s(A.eY,A.A) +s(A.eZ,A.e) +s(A.f_,A.A) +s(A.ei,A.e) +s(A.ej,A.A) +s(A.er,A.e) +s(A.es,A.A) +s(A.eC,A.e) +s(A.eD,A.A) +s(A.eM,A.e) +s(A.eN,A.A) +s(A.dX,A.v)})() +var v={typeUniverse:{eC:new Map(),tR:{},eT:{},tPV:{},sEA:[]},mangledGlobalNames:{i:"int",E:"double",R:"num",d:"String",ad:"bool",G:"Null",k:"List"},mangledNames:{},types:["~()","G(h)","~(d,@)","~(~())","~(@)","~(d,d)","@()","ad(q,d,d,bo)","G()","G(@)","~(aZ,d,i)","ad(m)","ad(a5)","ad(d)","~(d,d?)","~(d,i)","~(d,i?)","i(i,i)","@(d)","~(i,@)","aZ(@,@)","G(y,aH)","H<@>(@)","G(~())","G(@,aH)","@(@)","d(d)","ac(x)","x(x,d)","q(m)","d()","aC(@)","~(i)","i(Y,Y)","ac(Y)","ad(aG)","d(fr)","~(h)","i(@,@)","@(@,d)","~(y?,y?)","~(m,m?)"],interceptorsByTag:null,leafTags:null,arrayRti:Symbol("$ti")} +A.lr(v.typeUniverse,JSON.parse('{"dp":"aF","b_":"aF","ag":"aF","nk":"a","nl":"a","n1":"a","n_":"h","nh":"h","n2":"az","n0":"c","no":"c","nq":"c","mZ":"j","ni":"j","n3":"l","nn":"l","nr":"m","ng":"m","nH":"aS","nG":"V","n7":"P","n6":"a0","nt":"a0","nm":"q","nj":"aU","n8":"w","nb":"X","nd":"U","ne":"N","na":"N","nc":"N","d0":{"t":[]},"bF":{"G":[],"t":[]},"aF":{"a":[]},"C":{"k":["1"],"a":[],"f":["1"]},"fl":{"C":["1"],"k":["1"],"a":[],"f":["1"]},"be":{"E":[],"R":[]},"bE":{"E":[],"i":[],"R":[],"t":[]},"d1":{"E":[],"R":[],"t":[]},"aE":{"d":[],"t":[]},"aI":{"u":["2"]},"aP":{"aI":["1","2"],"u":["2"],"u.E":"2"},"bY":{"aP":["1","2"],"aI":["1","2"],"f":["2"],"u":["2"],"u.E":"2"},"bW":{"e":["2"],"k":["2"],"aI":["1","2"],"f":["2"],"u":["2"]},"af":{"bW":["1","2"],"e":["2"],"k":["2"],"aI":["1","2"],"f":["2"],"u":["2"],"e.E":"2","u.E":"2"},"d3":{"z":[]},"cJ":{"e":["i"],"k":["i"],"f":["i"],"e.E":"i"},"f":{"u":["1"]},"a3":{"f":["1"],"u":["1"]},"aj":{"u":["2"],"u.E":"2"},"by":{"aj":["1","2"],"f":["2"],"u":["2"],"u.E":"2"},"ak":{"a3":["2"],"f":["2"],"u":["2"],"a3.E":"2","u.E":"2"},"ar":{"u":["1"],"u.E":"1"},"bk":{"e":["1"],"k":["1"],"f":["1"]},"bv":{"x":["1","2"]},"aR":{"x":["1","2"]},"bR":{"ap":[],"z":[]},"d2":{"z":[]},"dN":{"z":[]},"cb":{"aH":[]},"aA":{"aT":[]},"cH":{"aT":[]},"cI":{"aT":[]},"dF":{"aT":[]},"dA":{"aT":[]},"bb":{"aT":[]},"e0":{"z":[]},"du":{"z":[]},"aV":{"v":["1","2"],"x":["1","2"],"v.V":"2"},"ai":{"f":["1"],"u":["1"],"u.E":"1"},"ek":{"ig":[],"fr":[]},"dc":{"a":[],"t":[]},"bM":{"a":[]},"dd":{"a":[],"t":[]},"bg":{"p":["1"],"a":[]},"bK":{"e":["E"],"p":["E"],"k":["E"],"a":[],"f":["E"]},"bL":{"e":["i"],"p":["i"],"k":["i"],"a":[],"f":["i"]},"de":{"e":["E"],"p":["E"],"k":["E"],"a":[],"f":["E"],"t":[],"e.E":"E"},"df":{"e":["E"],"p":["E"],"k":["E"],"a":[],"f":["E"],"t":[],"e.E":"E"},"dg":{"e":["i"],"p":["i"],"k":["i"],"a":[],"f":["i"],"t":[],"e.E":"i"},"dh":{"e":["i"],"p":["i"],"k":["i"],"a":[],"f":["i"],"t":[],"e.E":"i"},"di":{"e":["i"],"p":["i"],"k":["i"],"a":[],"f":["i"],"t":[],"e.E":"i"},"dj":{"e":["i"],"p":["i"],"k":["i"],"a":[],"f":["i"],"t":[],"e.E":"i"},"dk":{"e":["i"],"p":["i"],"k":["i"],"a":[],"f":["i"],"t":[],"e.E":"i"},"bN":{"e":["i"],"p":["i"],"k":["i"],"a":[],"f":["i"],"t":[],"e.E":"i"},"bO":{"e":["i"],"aZ":[],"p":["i"],"k":["i"],"a":[],"f":["i"],"t":[],"e.E":"i"},"e8":{"z":[]},"ce":{"ap":[],"z":[]},"H":{"aC":["1"]},"cB":{"z":[]},"bV":{"dY":["1"]},"c0":{"an":["1"],"aG":["1"],"f":["1"]},"e":{"k":["1"],"f":["1"]},"v":{"x":["1","2"]},"bI":{"x":["1","2"]},"bl":{"x":["1","2"]},"an":{"aG":["1"],"f":["1"]},"c7":{"an":["1"],"aG":["1"],"f":["1"]},"eg":{"v":["d","@"],"x":["d","@"],"v.V":"@"},"eh":{"a3":["d"],"f":["d"],"u":["d"],"a3.E":"d","u.E":"d"},"E":{"R":[]},"i":{"R":[]},"k":{"f":["1"]},"ig":{"fr":[]},"aG":{"f":["1"],"u":["1"]},"cz":{"z":[]},"ap":{"z":[]},"W":{"z":[]},"bS":{"z":[]},"d_":{"z":[]},"dP":{"z":[]},"dM":{"z":[]},"bi":{"z":[]},"cL":{"z":[]},"dn":{"z":[]},"bT":{"z":[]},"eE":{"aH":[]},"cj":{"dQ":[]},"ew":{"dQ":[]},"e2":{"dQ":[]},"w":{"a":[]},"q":{"m":[],"a":[]},"h":{"a":[]},"a1":{"a":[]},"a2":{"a":[]},"a4":{"a":[]},"m":{"a":[]},"a6":{"a":[]},"a7":{"a":[]},"a8":{"a":[]},"a9":{"a":[]},"U":{"a":[]},"aa":{"a":[]},"V":{"a":[]},"ab":{"a":[]},"bo":{"a5":[]},"l":{"q":[],"m":[],"a":[]},"cw":{"a":[]},"cx":{"q":[],"m":[],"a":[]},"cy":{"q":[],"m":[],"a":[]},"ba":{"q":[],"m":[],"a":[]},"bu":{"a":[]},"aO":{"q":[],"m":[],"a":[]},"a0":{"m":[],"a":[]},"cO":{"a":[]},"bc":{"a":[]},"N":{"a":[]},"X":{"a":[]},"cP":{"a":[]},"cQ":{"a":[]},"cR":{"a":[]},"aS":{"m":[],"a":[]},"cS":{"a":[]},"bw":{"e":["aX"],"k":["aX"],"p":["aX"],"a":[],"f":["aX"],"e.E":"aX"},"bx":{"a":[],"aX":["R"]},"cT":{"e":["d"],"k":["d"],"p":["d"],"a":[],"f":["d"],"e.E":"d"},"cU":{"a":[]},"c":{"a":[]},"cV":{"e":["a1"],"k":["a1"],"p":["a1"],"a":[],"f":["a1"],"e.E":"a1"},"cW":{"a":[]},"cY":{"q":[],"m":[],"a":[]},"cZ":{"a":[]},"aU":{"e":["m"],"k":["m"],"p":["m"],"a":[],"f":["m"],"e.E":"m"},"bD":{"m":[],"a":[]},"aD":{"q":[],"m":[],"a":[]},"bf":{"h":[],"a":[]},"d7":{"a":[]},"d8":{"a":[]},"d9":{"a":[],"v":["d","@"],"x":["d","@"],"v.V":"@"},"da":{"a":[],"v":["d","@"],"x":["d","@"],"v.V":"@"},"db":{"e":["a4"],"k":["a4"],"p":["a4"],"a":[],"f":["a4"],"e.E":"a4"},"J":{"e":["m"],"k":["m"],"f":["m"],"e.E":"m"},"bP":{"e":["m"],"k":["m"],"p":["m"],"a":[],"f":["m"],"e.E":"m"},"dq":{"e":["a6"],"k":["a6"],"p":["a6"],"a":[],"f":["a6"],"e.E":"a6"},"dt":{"a":[],"v":["d","@"],"x":["d","@"],"v.V":"@"},"dv":{"q":[],"m":[],"a":[]},"dx":{"e":["a7"],"k":["a7"],"p":["a7"],"a":[],"f":["a7"],"e.E":"a7"},"dy":{"e":["a8"],"k":["a8"],"p":["a8"],"a":[],"f":["a8"],"e.E":"a8"},"dB":{"a":[],"v":["d","d"],"x":["d","d"],"v.V":"d"},"bU":{"q":[],"m":[],"a":[]},"dD":{"q":[],"m":[],"a":[]},"dE":{"q":[],"m":[],"a":[]},"bj":{"q":[],"m":[],"a":[]},"aY":{"q":[],"m":[],"a":[]},"dG":{"e":["V"],"k":["V"],"p":["V"],"a":[],"f":["V"],"e.E":"V"},"dH":{"e":["aa"],"k":["aa"],"p":["aa"],"a":[],"f":["aa"],"e.E":"aa"},"dI":{"a":[]},"dJ":{"e":["ab"],"k":["ab"],"p":["ab"],"a":[],"f":["ab"],"e.E":"ab"},"dK":{"a":[]},"P":{"h":[],"a":[]},"dR":{"a":[]},"dS":{"a":[]},"bm":{"m":[],"a":[]},"dZ":{"e":["w"],"k":["w"],"p":["w"],"a":[],"f":["w"],"e.E":"w"},"bX":{"a":[],"aX":["R"]},"ec":{"e":["a2?"],"k":["a2?"],"p":["a2?"],"a":[],"f":["a2?"],"e.E":"a2?"},"c2":{"e":["m"],"k":["m"],"p":["m"],"a":[],"f":["m"],"e.E":"m"},"ez":{"e":["a9"],"k":["a9"],"p":["a9"],"a":[],"f":["a9"],"e.E":"a9"},"eF":{"e":["U"],"k":["U"],"p":["U"],"a":[],"f":["U"],"e.E":"U"},"dW":{"v":["d","d"],"x":["d","d"]},"bZ":{"v":["d","d"],"x":["d","d"],"v.V":"d"},"e1":{"v":["d","d"],"x":["d","d"],"v.V":"d"},"e7":{"an":["d"],"aG":["d"],"f":["d"]},"bQ":{"a5":[]},"c8":{"a5":[]},"eH":{"a5":[]},"eG":{"a5":[]},"cN":{"an":["d"],"aG":["d"],"f":["d"]},"cX":{"e":["q"],"k":["q"],"f":["q"],"e.E":"q"},"ah":{"a":[]},"al":{"a":[]},"ao":{"a":[]},"d4":{"e":["ah"],"k":["ah"],"a":[],"f":["ah"],"e.E":"ah"},"dl":{"e":["al"],"k":["al"],"a":[],"f":["al"],"e.E":"al"},"dr":{"a":[]},"bh":{"j":[],"q":[],"m":[],"a":[]},"dC":{"e":["d"],"k":["d"],"a":[],"f":["d"],"e.E":"d"},"cC":{"an":["d"],"aG":["d"],"f":["d"]},"j":{"q":[],"m":[],"a":[]},"dL":{"e":["ao"],"k":["ao"],"a":[],"f":["ao"],"e.E":"ao"},"cD":{"a":[]},"cE":{"a":[],"v":["d","@"],"x":["d","@"],"v.V":"@"},"cF":{"a":[]},"az":{"a":[]},"dm":{"a":[]},"kB":{"k":["i"],"f":["i"]},"aZ":{"k":["i"],"f":["i"]},"kZ":{"k":["i"],"f":["i"]},"kz":{"k":["i"],"f":["i"]},"kX":{"k":["i"],"f":["i"]},"kA":{"k":["i"],"f":["i"]},"kY":{"k":["i"],"f":["i"]},"kx":{"k":["E"],"f":["E"]},"ky":{"k":["E"],"f":["E"]}}')) +A.lq(v.typeUniverse,JSON.parse('{"b9":1,"bH":1,"bJ":2,"dT":1,"bB":1,"dO":1,"bk":1,"cl":2,"bv":2,"d5":1,"bg":1,"eB":1,"c1":1,"eP":2,"bI":2,"c7":1,"ci":2,"cK":2,"cM":2,"A":1,"bC":1}')) +var u={c:"Error handler must accept one Object or one Object and a StackTrace as arguments, and return a value of the returned future's type"} +var t=(function rtii(){var s=A.hR +return{B:s("ba"),Y:s("aO"),W:s("f<@>"),h:s("q"),U:s("z"),Z:s("aT"),p:s("aD"),k:s("C"),Q:s("C"),s:s("C"),m:s("C"),O:s("C"),L:s("C"),b:s("C<@>"),t:s("C"),T:s("bF"),g:s("ag"),D:s("p<@>"),e:s("a"),v:s("bf"),j:s("k<@>"),a:s("x"),E:s("ak"),d:s("ak"),P:s("G"),K:s("y"),I:s("np"),q:s("aX"),F:s("ig"),c:s("bh"),l:s("aH"),N:s("d"),u:s("j"),f:s("bj"),J:s("aY"),n:s("t"),r:s("ap"),o:s("b_"),V:s("bl"),R:s("dQ"),x:s("bm"),G:s("J"),M:s("H<@>"),y:s("ad"),i:s("E"),z:s("@"),w:s("@(y)"),C:s("@(y,aH)"),S:s("i"),A:s("0&*"),_:s("y*"),bc:s("aC?"),cD:s("aD?"),X:s("y?"),H:s("R")}})();(function constants(){var s=hunkHelpers.makeConstList +B.m=A.aO.prototype +B.J=A.bD.prototype +B.f=A.aD.prototype +B.K=J.bd.prototype +B.b=J.C.prototype +B.c=J.bE.prototype +B.e=J.be.prototype +B.a=J.aE.prototype +B.L=J.ag.prototype +B.M=J.a.prototype +B.V=A.bO.prototype +B.w=J.dp.prototype +B.x=A.bU.prototype +B.W=A.aY.prototype +B.l=J.b_.prototype +B.a9=new A.f9() +B.y=new A.f8() +B.aa=new A.fj() +B.n=new A.fi() +B.o=function getTagFallback(o) { + var s = Object.prototype.toString.call(o); + return s.substring(8, s.length - 1); +} +B.z=function() { + var toStringFunction = Object.prototype.toString; + function getTag(o) { + var s = toStringFunction.call(o); + return s.substring(8, s.length - 1); + } + function getUnknownTag(object, tag) { + if (/^HTML[A-Z].*Element$/.test(tag)) { + var name = toStringFunction.call(object); + if (name == "[object Object]") return null; + return "HTMLElement"; + } + } + function getUnknownTagGenericBrowser(object, tag) { + if (self.HTMLElement && object instanceof HTMLElement) return "HTMLElement"; + return getUnknownTag(object, tag); + } + function prototypeForTag(tag) { + if (typeof window == "undefined") return null; + if (typeof window[tag] == "undefined") return null; + var constructor = window[tag]; + if (typeof constructor != "function") return null; + return constructor.prototype; + } + function discriminator(tag) { return null; } + var isBrowser = typeof navigator == "object"; + return { + getTag: getTag, + getUnknownTag: isBrowser ? getUnknownTagGenericBrowser : getUnknownTag, + prototypeForTag: prototypeForTag, + discriminator: discriminator }; +} +B.E=function(getTagFallback) { + return function(hooks) { + if (typeof navigator != "object") return hooks; + var ua = navigator.userAgent; + if (ua.indexOf("DumpRenderTree") >= 0) return hooks; + if (ua.indexOf("Chrome") >= 0) { + function confirm(p) { + return typeof window == "object" && window[p] && window[p].name == p; + } + if (confirm("Window") && confirm("HTMLElement")) return hooks; + } + hooks.getTag = getTagFallback; + }; +} +B.A=function(hooks) { + if (typeof dartExperimentalFixupGetTag != "function") return hooks; + hooks.getTag = dartExperimentalFixupGetTag(hooks.getTag); +} +B.B=function(hooks) { + var getTag = hooks.getTag; + var prototypeForTag = hooks.prototypeForTag; + function getTagFixed(o) { + var tag = getTag(o); + if (tag == "Document") { + if (!!o.xmlVersion) return "!Document"; + return "!HTMLDocument"; + } + return tag; + } + function prototypeForTagFixed(tag) { + if (tag == "Document") return null; + return prototypeForTag(tag); + } + hooks.getTag = getTagFixed; + hooks.prototypeForTag = prototypeForTagFixed; +} +B.D=function(hooks) { + var userAgent = typeof navigator == "object" ? navigator.userAgent : ""; + if (userAgent.indexOf("Firefox") == -1) return hooks; + var getTag = hooks.getTag; + var quickMap = { + "BeforeUnloadEvent": "Event", + "DataTransfer": "Clipboard", + "GeoGeolocation": "Geolocation", + "Location": "!Location", + "WorkerMessageEvent": "MessageEvent", + "XMLDocument": "!Document"}; + function getTagFirefox(o) { + var tag = getTag(o); + return quickMap[tag] || tag; + } + hooks.getTag = getTagFirefox; +} +B.C=function(hooks) { + var userAgent = typeof navigator == "object" ? navigator.userAgent : ""; + if (userAgent.indexOf("Trident/") == -1) return hooks; + var getTag = hooks.getTag; + var quickMap = { + "BeforeUnloadEvent": "Event", + "DataTransfer": "Clipboard", + "HTMLDDElement": "HTMLElement", + "HTMLDTElement": "HTMLElement", + "HTMLPhraseElement": "HTMLElement", + "Position": "Geoposition" + }; + function getTagIE(o) { + var tag = getTag(o); + var newTag = quickMap[tag]; + if (newTag) return newTag; + if (tag == "Object") { + if (window.DataView && (o instanceof window.DataView)) return "DataView"; + } + return tag; + } + function prototypeForTagIE(tag) { + var constructor = window[tag]; + if (constructor == null) return null; + return constructor.prototype; + } + hooks.getTag = getTagIE; + hooks.prototypeForTag = prototypeForTagIE; +} +B.p=function(hooks) { return hooks; } + +B.F=new A.fn() +B.G=new A.dn() +B.ab=new A.fA() +B.h=new A.fL() +B.H=new A.fP() +B.d=new A.hc() +B.I=new A.eE() +B.N=new A.fo(null) +B.q=A.n(s(["bind","if","ref","repeat","syntax"]),t.s) +B.k=A.n(s(["A::href","AREA::href","BLOCKQUOTE::cite","BODY::background","COMMAND::icon","DEL::cite","FORM::action","IMG::src","INPUT::src","INS::cite","Q::cite","VIDEO::poster"]),t.s) +B.i=A.n(s([0,0,24576,1023,65534,34815,65534,18431]),t.t) +B.O=A.n(s(["HEAD","AREA","BASE","BASEFONT","BR","COL","COLGROUP","EMBED","FRAME","FRAMESET","HR","IMAGE","IMG","INPUT","ISINDEX","LINK","META","PARAM","SOURCE","STYLE","TITLE","WBR"]),t.s) +B.r=A.n(s([0,0,26624,1023,65534,2047,65534,2047]),t.t) +B.P=A.n(s([0,0,32722,12287,65534,34815,65534,18431]),t.t) +B.t=A.n(s([0,0,65490,12287,65535,34815,65534,18431]),t.t) +B.u=A.n(s([0,0,32776,33792,1,10240,0,0]),t.t) +B.Q=A.n(s([0,0,32754,11263,65534,34815,65534,18431]),t.t) +B.v=A.n(s([]),t.s) +B.j=A.n(s([0,0,65490,45055,65535,34815,65534,18431]),t.t) +B.S=A.n(s(["*::class","*::dir","*::draggable","*::hidden","*::id","*::inert","*::itemprop","*::itemref","*::itemscope","*::lang","*::spellcheck","*::title","*::translate","A::accesskey","A::coords","A::hreflang","A::name","A::shape","A::tabindex","A::target","A::type","AREA::accesskey","AREA::alt","AREA::coords","AREA::nohref","AREA::shape","AREA::tabindex","AREA::target","AUDIO::controls","AUDIO::loop","AUDIO::mediagroup","AUDIO::muted","AUDIO::preload","BDO::dir","BODY::alink","BODY::bgcolor","BODY::link","BODY::text","BODY::vlink","BR::clear","BUTTON::accesskey","BUTTON::disabled","BUTTON::name","BUTTON::tabindex","BUTTON::type","BUTTON::value","CANVAS::height","CANVAS::width","CAPTION::align","COL::align","COL::char","COL::charoff","COL::span","COL::valign","COL::width","COLGROUP::align","COLGROUP::char","COLGROUP::charoff","COLGROUP::span","COLGROUP::valign","COLGROUP::width","COMMAND::checked","COMMAND::command","COMMAND::disabled","COMMAND::label","COMMAND::radiogroup","COMMAND::type","DATA::value","DEL::datetime","DETAILS::open","DIR::compact","DIV::align","DL::compact","FIELDSET::disabled","FONT::color","FONT::face","FONT::size","FORM::accept","FORM::autocomplete","FORM::enctype","FORM::method","FORM::name","FORM::novalidate","FORM::target","FRAME::name","H1::align","H2::align","H3::align","H4::align","H5::align","H6::align","HR::align","HR::noshade","HR::size","HR::width","HTML::version","IFRAME::align","IFRAME::frameborder","IFRAME::height","IFRAME::marginheight","IFRAME::marginwidth","IFRAME::width","IMG::align","IMG::alt","IMG::border","IMG::height","IMG::hspace","IMG::ismap","IMG::name","IMG::usemap","IMG::vspace","IMG::width","INPUT::accept","INPUT::accesskey","INPUT::align","INPUT::alt","INPUT::autocomplete","INPUT::autofocus","INPUT::checked","INPUT::disabled","INPUT::inputmode","INPUT::ismap","INPUT::list","INPUT::max","INPUT::maxlength","INPUT::min","INPUT::multiple","INPUT::name","INPUT::placeholder","INPUT::readonly","INPUT::required","INPUT::size","INPUT::step","INPUT::tabindex","INPUT::type","INPUT::usemap","INPUT::value","INS::datetime","KEYGEN::disabled","KEYGEN::keytype","KEYGEN::name","LABEL::accesskey","LABEL::for","LEGEND::accesskey","LEGEND::align","LI::type","LI::value","LINK::sizes","MAP::name","MENU::compact","MENU::label","MENU::type","METER::high","METER::low","METER::max","METER::min","METER::value","OBJECT::typemustmatch","OL::compact","OL::reversed","OL::start","OL::type","OPTGROUP::disabled","OPTGROUP::label","OPTION::disabled","OPTION::label","OPTION::selected","OPTION::value","OUTPUT::for","OUTPUT::name","P::align","PRE::width","PROGRESS::max","PROGRESS::min","PROGRESS::value","SELECT::autocomplete","SELECT::disabled","SELECT::multiple","SELECT::name","SELECT::required","SELECT::size","SELECT::tabindex","SOURCE::type","TABLE::align","TABLE::bgcolor","TABLE::border","TABLE::cellpadding","TABLE::cellspacing","TABLE::frame","TABLE::rules","TABLE::summary","TABLE::width","TBODY::align","TBODY::char","TBODY::charoff","TBODY::valign","TD::abbr","TD::align","TD::axis","TD::bgcolor","TD::char","TD::charoff","TD::colspan","TD::headers","TD::height","TD::nowrap","TD::rowspan","TD::scope","TD::valign","TD::width","TEXTAREA::accesskey","TEXTAREA::autocomplete","TEXTAREA::cols","TEXTAREA::disabled","TEXTAREA::inputmode","TEXTAREA::name","TEXTAREA::placeholder","TEXTAREA::readonly","TEXTAREA::required","TEXTAREA::rows","TEXTAREA::tabindex","TEXTAREA::wrap","TFOOT::align","TFOOT::char","TFOOT::charoff","TFOOT::valign","TH::abbr","TH::align","TH::axis","TH::bgcolor","TH::char","TH::charoff","TH::colspan","TH::headers","TH::height","TH::nowrap","TH::rowspan","TH::scope","TH::valign","TH::width","THEAD::align","THEAD::char","THEAD::charoff","THEAD::valign","TR::align","TR::bgcolor","TR::char","TR::charoff","TR::valign","TRACK::default","TRACK::kind","TRACK::label","TRACK::srclang","UL::compact","UL::type","VIDEO::controls","VIDEO::height","VIDEO::loop","VIDEO::mediagroup","VIDEO::muted","VIDEO::preload","VIDEO::width"]),t.s) +B.T=new A.aR(0,{},B.v,A.hR("aR")) +B.R=A.n(s(["topic","library","class","enum","mixin","extension","typedef","function","method","accessor","operator","constant","property","constructor"]),t.s) +B.U=new A.aR(14,{topic:2,library:2,class:2,enum:2,mixin:3,extension:3,typedef:3,function:4,method:4,accessor:4,operator:4,constant:4,property:4,constructor:4},B.R,A.hR("aR")) +B.X=A.Z("n4") +B.Y=A.Z("n5") +B.Z=A.Z("kx") +B.a_=A.Z("ky") +B.a0=A.Z("kz") +B.a1=A.Z("kA") +B.a2=A.Z("kB") +B.a3=A.Z("y") +B.a4=A.Z("kX") +B.a5=A.Z("kY") +B.a6=A.Z("kZ") +B.a7=A.Z("aZ") +B.a8=new A.fM(!1)})();(function staticFields(){$.ha=null +$.b7=A.n([],A.hR("C")) +$.j_=null +$.iN=null +$.iM=null +$.jN=null +$.jJ=null +$.jS=null +$.hQ=null +$.i1=null +$.iB=null +$.bq=null +$.cn=null +$.co=null +$.ix=!1 +$.F=B.d +$.aB=null +$.i8=null +$.iR=null +$.iQ=null +$.ed=A.d6(t.N,t.Z) +$.iz=10 +$.hO=0 +$.b0=A.d6(t.N,t.h)})();(function lazyInitializers(){var s=hunkHelpers.lazyFinal +s($,"nf","jV",()=>A.mA("_$dart_dartClosure")) +s($,"nu","jW",()=>A.aq(A.fE({ +toString:function(){return"$receiver$"}}))) +s($,"nv","jX",()=>A.aq(A.fE({$method$:null, +toString:function(){return"$receiver$"}}))) +s($,"nw","jY",()=>A.aq(A.fE(null))) +s($,"nx","jZ",()=>A.aq(function(){var $argumentsExpr$="$arguments$" +try{null.$method$($argumentsExpr$)}catch(r){return r.message}}())) +s($,"nA","k1",()=>A.aq(A.fE(void 0))) +s($,"nB","k2",()=>A.aq(function(){var $argumentsExpr$="$arguments$" +try{(void 0).$method$($argumentsExpr$)}catch(r){return r.message}}())) +s($,"nz","k0",()=>A.aq(A.j6(null))) +s($,"ny","k_",()=>A.aq(function(){try{null.$method$}catch(r){return r.message}}())) +s($,"nD","k4",()=>A.aq(A.j6(void 0))) +s($,"nC","k3",()=>A.aq(function(){try{(void 0).$method$}catch(r){return r.message}}())) +s($,"nI","iE",()=>A.l2()) +s($,"nE","k5",()=>new A.fO().$0()) +s($,"nF","k6",()=>new A.fN().$0()) +s($,"nJ","k7",()=>A.kN(A.lU(A.n([-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-2,-1,-2,-2,-2,-2,-2,62,-2,62,-2,63,52,53,54,55,56,57,58,59,60,61,-2,-2,-2,-1,-2,-2,-2,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,-2,-2,-2,-2,63,-2,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,-2,-2,-2,-2,-2],t.t)))) +s($,"nL","k9",()=>A.ih("^[\\-\\.0-9A-Z_a-z~]*$",!0)) +s($,"o_","ka",()=>A.jP(B.a3)) +s($,"o1","kb",()=>A.lT()) +s($,"nK","k8",()=>A.iW(["A","ABBR","ACRONYM","ADDRESS","AREA","ARTICLE","ASIDE","AUDIO","B","BDI","BDO","BIG","BLOCKQUOTE","BR","BUTTON","CANVAS","CAPTION","CENTER","CITE","CODE","COL","COLGROUP","COMMAND","DATA","DATALIST","DD","DEL","DETAILS","DFN","DIR","DIV","DL","DT","EM","FIELDSET","FIGCAPTION","FIGURE","FONT","FOOTER","FORM","H1","H2","H3","H4","H5","H6","HEADER","HGROUP","HR","I","IFRAME","IMG","INPUT","INS","KBD","LABEL","LEGEND","LI","MAP","MARK","MENU","METER","NAV","NOBR","OL","OPTGROUP","OPTION","OUTPUT","P","PRE","PROGRESS","Q","S","SAMP","SECTION","SELECT","SMALL","SOURCE","SPAN","STRIKE","STRONG","SUB","SUMMARY","SUP","TABLE","TBODY","TD","TEXTAREA","TFOOT","TH","THEAD","TIME","TR","TRACK","TT","U","UL","VAR","VIDEO","WBR"],t.N)) +s($,"n9","jU",()=>A.ih("^\\S+$",!0)) +s($,"o0","cu",()=>new A.hL().$0())})();(function nativeSupport(){!function(){var s=function(a){var m={} +m[a]=1 +return Object.keys(hunkHelpers.convertToFastObject(m))[0]} +v.getIsolateTag=function(a){return s("___dart_"+a+v.isolateTag)} +var r="___dart_isolate_tags_" +var q=Object[r]||(Object[r]=Object.create(null)) +var p="_ZxYxX" +for(var o=0;;o++){var n=s(p+"_"+o+"_") +if(!(n in q)){q[n]=1 +v.isolateTag=n +break}}v.dispatchPropertyName=v.getIsolateTag("dispatch_record")}() +hunkHelpers.setOrUpdateInterceptorsByTag({WebGL:J.bd,AnimationEffectReadOnly:J.a,AnimationEffectTiming:J.a,AnimationEffectTimingReadOnly:J.a,AnimationTimeline:J.a,AnimationWorkletGlobalScope:J.a,AuthenticatorAssertionResponse:J.a,AuthenticatorAttestationResponse:J.a,AuthenticatorResponse:J.a,BackgroundFetchFetch:J.a,BackgroundFetchManager:J.a,BackgroundFetchSettledFetch:J.a,BarProp:J.a,BarcodeDetector:J.a,BluetoothRemoteGATTDescriptor:J.a,Body:J.a,BudgetState:J.a,CacheStorage:J.a,CanvasGradient:J.a,CanvasPattern:J.a,CanvasRenderingContext2D:J.a,Client:J.a,Clients:J.a,CookieStore:J.a,Coordinates:J.a,Credential:J.a,CredentialUserData:J.a,CredentialsContainer:J.a,Crypto:J.a,CryptoKey:J.a,CSS:J.a,CSSVariableReferenceValue:J.a,CustomElementRegistry:J.a,DataTransfer:J.a,DataTransferItem:J.a,DeprecatedStorageInfo:J.a,DeprecatedStorageQuota:J.a,DeprecationReport:J.a,DetectedBarcode:J.a,DetectedFace:J.a,DetectedText:J.a,DeviceAcceleration:J.a,DeviceRotationRate:J.a,DirectoryEntry:J.a,webkitFileSystemDirectoryEntry:J.a,FileSystemDirectoryEntry:J.a,DirectoryReader:J.a,WebKitDirectoryReader:J.a,webkitFileSystemDirectoryReader:J.a,FileSystemDirectoryReader:J.a,DocumentOrShadowRoot:J.a,DocumentTimeline:J.a,DOMError:J.a,DOMImplementation:J.a,Iterator:J.a,DOMMatrix:J.a,DOMMatrixReadOnly:J.a,DOMParser:J.a,DOMPoint:J.a,DOMPointReadOnly:J.a,DOMQuad:J.a,DOMStringMap:J.a,Entry:J.a,webkitFileSystemEntry:J.a,FileSystemEntry:J.a,External:J.a,FaceDetector:J.a,FederatedCredential:J.a,FileEntry:J.a,webkitFileSystemFileEntry:J.a,FileSystemFileEntry:J.a,DOMFileSystem:J.a,WebKitFileSystem:J.a,webkitFileSystem:J.a,FileSystem:J.a,FontFace:J.a,FontFaceSource:J.a,FormData:J.a,GamepadButton:J.a,GamepadPose:J.a,Geolocation:J.a,Position:J.a,GeolocationPosition:J.a,Headers:J.a,HTMLHyperlinkElementUtils:J.a,IdleDeadline:J.a,ImageBitmap:J.a,ImageBitmapRenderingContext:J.a,ImageCapture:J.a,ImageData:J.a,InputDeviceCapabilities:J.a,IntersectionObserver:J.a,IntersectionObserverEntry:J.a,InterventionReport:J.a,KeyframeEffect:J.a,KeyframeEffectReadOnly:J.a,MediaCapabilities:J.a,MediaCapabilitiesInfo:J.a,MediaDeviceInfo:J.a,MediaError:J.a,MediaKeyStatusMap:J.a,MediaKeySystemAccess:J.a,MediaKeys:J.a,MediaKeysPolicy:J.a,MediaMetadata:J.a,MediaSession:J.a,MediaSettingsRange:J.a,MemoryInfo:J.a,MessageChannel:J.a,Metadata:J.a,MutationObserver:J.a,WebKitMutationObserver:J.a,MutationRecord:J.a,NavigationPreloadManager:J.a,Navigator:J.a,NavigatorAutomationInformation:J.a,NavigatorConcurrentHardware:J.a,NavigatorCookies:J.a,NavigatorUserMediaError:J.a,NodeFilter:J.a,NodeIterator:J.a,NonDocumentTypeChildNode:J.a,NonElementParentNode:J.a,NoncedElement:J.a,OffscreenCanvasRenderingContext2D:J.a,OverconstrainedError:J.a,PaintRenderingContext2D:J.a,PaintSize:J.a,PaintWorkletGlobalScope:J.a,PasswordCredential:J.a,Path2D:J.a,PaymentAddress:J.a,PaymentInstruments:J.a,PaymentManager:J.a,PaymentResponse:J.a,PerformanceEntry:J.a,PerformanceLongTaskTiming:J.a,PerformanceMark:J.a,PerformanceMeasure:J.a,PerformanceNavigation:J.a,PerformanceNavigationTiming:J.a,PerformanceObserver:J.a,PerformanceObserverEntryList:J.a,PerformancePaintTiming:J.a,PerformanceResourceTiming:J.a,PerformanceServerTiming:J.a,PerformanceTiming:J.a,Permissions:J.a,PhotoCapabilities:J.a,PositionError:J.a,GeolocationPositionError:J.a,Presentation:J.a,PresentationReceiver:J.a,PublicKeyCredential:J.a,PushManager:J.a,PushMessageData:J.a,PushSubscription:J.a,PushSubscriptionOptions:J.a,Range:J.a,RelatedApplication:J.a,ReportBody:J.a,ReportingObserver:J.a,ResizeObserver:J.a,ResizeObserverEntry:J.a,RTCCertificate:J.a,RTCIceCandidate:J.a,mozRTCIceCandidate:J.a,RTCLegacyStatsReport:J.a,RTCRtpContributingSource:J.a,RTCRtpReceiver:J.a,RTCRtpSender:J.a,RTCSessionDescription:J.a,mozRTCSessionDescription:J.a,RTCStatsResponse:J.a,Screen:J.a,ScrollState:J.a,ScrollTimeline:J.a,Selection:J.a,SharedArrayBuffer:J.a,SpeechRecognitionAlternative:J.a,SpeechSynthesisVoice:J.a,StaticRange:J.a,StorageManager:J.a,StyleMedia:J.a,StylePropertyMap:J.a,StylePropertyMapReadonly:J.a,SyncManager:J.a,TaskAttributionTiming:J.a,TextDetector:J.a,TextMetrics:J.a,TrackDefault:J.a,TreeWalker:J.a,TrustedHTML:J.a,TrustedScriptURL:J.a,TrustedURL:J.a,UnderlyingSourceBase:J.a,URLSearchParams:J.a,VRCoordinateSystem:J.a,VRDisplayCapabilities:J.a,VREyeParameters:J.a,VRFrameData:J.a,VRFrameOfReference:J.a,VRPose:J.a,VRStageBounds:J.a,VRStageBoundsPoint:J.a,VRStageParameters:J.a,ValidityState:J.a,VideoPlaybackQuality:J.a,VideoTrack:J.a,VTTRegion:J.a,WindowClient:J.a,WorkletAnimation:J.a,WorkletGlobalScope:J.a,XPathEvaluator:J.a,XPathExpression:J.a,XPathNSResolver:J.a,XPathResult:J.a,XMLSerializer:J.a,XSLTProcessor:J.a,Bluetooth:J.a,BluetoothCharacteristicProperties:J.a,BluetoothRemoteGATTServer:J.a,BluetoothRemoteGATTService:J.a,BluetoothUUID:J.a,BudgetService:J.a,Cache:J.a,DOMFileSystemSync:J.a,DirectoryEntrySync:J.a,DirectoryReaderSync:J.a,EntrySync:J.a,FileEntrySync:J.a,FileReaderSync:J.a,FileWriterSync:J.a,HTMLAllCollection:J.a,Mojo:J.a,MojoHandle:J.a,MojoWatcher:J.a,NFC:J.a,PagePopupController:J.a,Report:J.a,Request:J.a,Response:J.a,SubtleCrypto:J.a,USBAlternateInterface:J.a,USBConfiguration:J.a,USBDevice:J.a,USBEndpoint:J.a,USBInTransferResult:J.a,USBInterface:J.a,USBIsochronousInTransferPacket:J.a,USBIsochronousInTransferResult:J.a,USBIsochronousOutTransferPacket:J.a,USBIsochronousOutTransferResult:J.a,USBOutTransferResult:J.a,WorkerLocation:J.a,WorkerNavigator:J.a,Worklet:J.a,IDBCursor:J.a,IDBCursorWithValue:J.a,IDBFactory:J.a,IDBIndex:J.a,IDBKeyRange:J.a,IDBObjectStore:J.a,IDBObservation:J.a,IDBObserver:J.a,IDBObserverChanges:J.a,SVGAngle:J.a,SVGAnimatedAngle:J.a,SVGAnimatedBoolean:J.a,SVGAnimatedEnumeration:J.a,SVGAnimatedInteger:J.a,SVGAnimatedLength:J.a,SVGAnimatedLengthList:J.a,SVGAnimatedNumber:J.a,SVGAnimatedNumberList:J.a,SVGAnimatedPreserveAspectRatio:J.a,SVGAnimatedRect:J.a,SVGAnimatedString:J.a,SVGAnimatedTransformList:J.a,SVGMatrix:J.a,SVGPoint:J.a,SVGPreserveAspectRatio:J.a,SVGRect:J.a,SVGUnitTypes:J.a,AudioListener:J.a,AudioParam:J.a,AudioTrack:J.a,AudioWorkletGlobalScope:J.a,AudioWorkletProcessor:J.a,PeriodicWave:J.a,WebGLActiveInfo:J.a,ANGLEInstancedArrays:J.a,ANGLE_instanced_arrays:J.a,WebGLBuffer:J.a,WebGLCanvas:J.a,WebGLColorBufferFloat:J.a,WebGLCompressedTextureASTC:J.a,WebGLCompressedTextureATC:J.a,WEBGL_compressed_texture_atc:J.a,WebGLCompressedTextureETC1:J.a,WEBGL_compressed_texture_etc1:J.a,WebGLCompressedTextureETC:J.a,WebGLCompressedTexturePVRTC:J.a,WEBGL_compressed_texture_pvrtc:J.a,WebGLCompressedTextureS3TC:J.a,WEBGL_compressed_texture_s3tc:J.a,WebGLCompressedTextureS3TCsRGB:J.a,WebGLDebugRendererInfo:J.a,WEBGL_debug_renderer_info:J.a,WebGLDebugShaders:J.a,WEBGL_debug_shaders:J.a,WebGLDepthTexture:J.a,WEBGL_depth_texture:J.a,WebGLDrawBuffers:J.a,WEBGL_draw_buffers:J.a,EXTsRGB:J.a,EXT_sRGB:J.a,EXTBlendMinMax:J.a,EXT_blend_minmax:J.a,EXTColorBufferFloat:J.a,EXTColorBufferHalfFloat:J.a,EXTDisjointTimerQuery:J.a,EXTDisjointTimerQueryWebGL2:J.a,EXTFragDepth:J.a,EXT_frag_depth:J.a,EXTShaderTextureLOD:J.a,EXT_shader_texture_lod:J.a,EXTTextureFilterAnisotropic:J.a,EXT_texture_filter_anisotropic:J.a,WebGLFramebuffer:J.a,WebGLGetBufferSubDataAsync:J.a,WebGLLoseContext:J.a,WebGLExtensionLoseContext:J.a,WEBGL_lose_context:J.a,OESElementIndexUint:J.a,OES_element_index_uint:J.a,OESStandardDerivatives:J.a,OES_standard_derivatives:J.a,OESTextureFloat:J.a,OES_texture_float:J.a,OESTextureFloatLinear:J.a,OES_texture_float_linear:J.a,OESTextureHalfFloat:J.a,OES_texture_half_float:J.a,OESTextureHalfFloatLinear:J.a,OES_texture_half_float_linear:J.a,OESVertexArrayObject:J.a,OES_vertex_array_object:J.a,WebGLProgram:J.a,WebGLQuery:J.a,WebGLRenderbuffer:J.a,WebGLRenderingContext:J.a,WebGL2RenderingContext:J.a,WebGLSampler:J.a,WebGLShader:J.a,WebGLShaderPrecisionFormat:J.a,WebGLSync:J.a,WebGLTexture:J.a,WebGLTimerQueryEXT:J.a,WebGLTransformFeedback:J.a,WebGLUniformLocation:J.a,WebGLVertexArrayObject:J.a,WebGLVertexArrayObjectOES:J.a,WebGL2RenderingContextBase:J.a,ArrayBuffer:A.dc,ArrayBufferView:A.bM,DataView:A.dd,Float32Array:A.de,Float64Array:A.df,Int16Array:A.dg,Int32Array:A.dh,Int8Array:A.di,Uint16Array:A.dj,Uint32Array:A.dk,Uint8ClampedArray:A.bN,CanvasPixelArray:A.bN,Uint8Array:A.bO,HTMLAudioElement:A.l,HTMLBRElement:A.l,HTMLButtonElement:A.l,HTMLCanvasElement:A.l,HTMLContentElement:A.l,HTMLDListElement:A.l,HTMLDataElement:A.l,HTMLDataListElement:A.l,HTMLDetailsElement:A.l,HTMLDialogElement:A.l,HTMLDivElement:A.l,HTMLEmbedElement:A.l,HTMLFieldSetElement:A.l,HTMLHRElement:A.l,HTMLHeadElement:A.l,HTMLHeadingElement:A.l,HTMLHtmlElement:A.l,HTMLIFrameElement:A.l,HTMLImageElement:A.l,HTMLLIElement:A.l,HTMLLabelElement:A.l,HTMLLegendElement:A.l,HTMLLinkElement:A.l,HTMLMapElement:A.l,HTMLMediaElement:A.l,HTMLMenuElement:A.l,HTMLMetaElement:A.l,HTMLMeterElement:A.l,HTMLModElement:A.l,HTMLOListElement:A.l,HTMLObjectElement:A.l,HTMLOptGroupElement:A.l,HTMLOptionElement:A.l,HTMLOutputElement:A.l,HTMLParagraphElement:A.l,HTMLParamElement:A.l,HTMLPictureElement:A.l,HTMLPreElement:A.l,HTMLProgressElement:A.l,HTMLQuoteElement:A.l,HTMLScriptElement:A.l,HTMLShadowElement:A.l,HTMLSlotElement:A.l,HTMLSourceElement:A.l,HTMLSpanElement:A.l,HTMLStyleElement:A.l,HTMLTableCaptionElement:A.l,HTMLTableCellElement:A.l,HTMLTableDataCellElement:A.l,HTMLTableHeaderCellElement:A.l,HTMLTableColElement:A.l,HTMLTimeElement:A.l,HTMLTitleElement:A.l,HTMLTrackElement:A.l,HTMLUListElement:A.l,HTMLUnknownElement:A.l,HTMLVideoElement:A.l,HTMLDirectoryElement:A.l,HTMLFontElement:A.l,HTMLFrameElement:A.l,HTMLFrameSetElement:A.l,HTMLMarqueeElement:A.l,HTMLElement:A.l,AccessibleNodeList:A.cw,HTMLAnchorElement:A.cx,HTMLAreaElement:A.cy,HTMLBaseElement:A.ba,Blob:A.bu,HTMLBodyElement:A.aO,CDATASection:A.a0,CharacterData:A.a0,Comment:A.a0,ProcessingInstruction:A.a0,Text:A.a0,CSSPerspective:A.cO,CSSCharsetRule:A.w,CSSConditionRule:A.w,CSSFontFaceRule:A.w,CSSGroupingRule:A.w,CSSImportRule:A.w,CSSKeyframeRule:A.w,MozCSSKeyframeRule:A.w,WebKitCSSKeyframeRule:A.w,CSSKeyframesRule:A.w,MozCSSKeyframesRule:A.w,WebKitCSSKeyframesRule:A.w,CSSMediaRule:A.w,CSSNamespaceRule:A.w,CSSPageRule:A.w,CSSRule:A.w,CSSStyleRule:A.w,CSSSupportsRule:A.w,CSSViewportRule:A.w,CSSStyleDeclaration:A.bc,MSStyleCSSProperties:A.bc,CSS2Properties:A.bc,CSSImageValue:A.N,CSSKeywordValue:A.N,CSSNumericValue:A.N,CSSPositionValue:A.N,CSSResourceValue:A.N,CSSUnitValue:A.N,CSSURLImageValue:A.N,CSSStyleValue:A.N,CSSMatrixComponent:A.X,CSSRotation:A.X,CSSScale:A.X,CSSSkew:A.X,CSSTranslation:A.X,CSSTransformComponent:A.X,CSSTransformValue:A.cP,CSSUnparsedValue:A.cQ,DataTransferItemList:A.cR,XMLDocument:A.aS,Document:A.aS,DOMException:A.cS,ClientRectList:A.bw,DOMRectList:A.bw,DOMRectReadOnly:A.bx,DOMStringList:A.cT,DOMTokenList:A.cU,MathMLElement:A.q,Element:A.q,AbortPaymentEvent:A.h,AnimationEvent:A.h,AnimationPlaybackEvent:A.h,ApplicationCacheErrorEvent:A.h,BackgroundFetchClickEvent:A.h,BackgroundFetchEvent:A.h,BackgroundFetchFailEvent:A.h,BackgroundFetchedEvent:A.h,BeforeInstallPromptEvent:A.h,BeforeUnloadEvent:A.h,BlobEvent:A.h,CanMakePaymentEvent:A.h,ClipboardEvent:A.h,CloseEvent:A.h,CustomEvent:A.h,DeviceMotionEvent:A.h,DeviceOrientationEvent:A.h,ErrorEvent:A.h,ExtendableEvent:A.h,ExtendableMessageEvent:A.h,FetchEvent:A.h,FontFaceSetLoadEvent:A.h,ForeignFetchEvent:A.h,GamepadEvent:A.h,HashChangeEvent:A.h,InstallEvent:A.h,MediaEncryptedEvent:A.h,MediaKeyMessageEvent:A.h,MediaQueryListEvent:A.h,MediaStreamEvent:A.h,MediaStreamTrackEvent:A.h,MessageEvent:A.h,MIDIConnectionEvent:A.h,MIDIMessageEvent:A.h,MutationEvent:A.h,NotificationEvent:A.h,PageTransitionEvent:A.h,PaymentRequestEvent:A.h,PaymentRequestUpdateEvent:A.h,PopStateEvent:A.h,PresentationConnectionAvailableEvent:A.h,PresentationConnectionCloseEvent:A.h,ProgressEvent:A.h,PromiseRejectionEvent:A.h,PushEvent:A.h,RTCDataChannelEvent:A.h,RTCDTMFToneChangeEvent:A.h,RTCPeerConnectionIceEvent:A.h,RTCTrackEvent:A.h,SecurityPolicyViolationEvent:A.h,SensorErrorEvent:A.h,SpeechRecognitionError:A.h,SpeechRecognitionEvent:A.h,SpeechSynthesisEvent:A.h,StorageEvent:A.h,SyncEvent:A.h,TrackEvent:A.h,TransitionEvent:A.h,WebKitTransitionEvent:A.h,VRDeviceEvent:A.h,VRDisplayEvent:A.h,VRSessionEvent:A.h,MojoInterfaceRequestEvent:A.h,ResourceProgressEvent:A.h,USBConnectionEvent:A.h,IDBVersionChangeEvent:A.h,AudioProcessingEvent:A.h,OfflineAudioCompletionEvent:A.h,WebGLContextEvent:A.h,Event:A.h,InputEvent:A.h,SubmitEvent:A.h,AbsoluteOrientationSensor:A.c,Accelerometer:A.c,AccessibleNode:A.c,AmbientLightSensor:A.c,Animation:A.c,ApplicationCache:A.c,DOMApplicationCache:A.c,OfflineResourceList:A.c,BackgroundFetchRegistration:A.c,BatteryManager:A.c,BroadcastChannel:A.c,CanvasCaptureMediaStreamTrack:A.c,DedicatedWorkerGlobalScope:A.c,EventSource:A.c,FileReader:A.c,FontFaceSet:A.c,Gyroscope:A.c,XMLHttpRequest:A.c,XMLHttpRequestEventTarget:A.c,XMLHttpRequestUpload:A.c,LinearAccelerationSensor:A.c,Magnetometer:A.c,MediaDevices:A.c,MediaKeySession:A.c,MediaQueryList:A.c,MediaRecorder:A.c,MediaSource:A.c,MediaStream:A.c,MediaStreamTrack:A.c,MessagePort:A.c,MIDIAccess:A.c,MIDIInput:A.c,MIDIOutput:A.c,MIDIPort:A.c,NetworkInformation:A.c,Notification:A.c,OffscreenCanvas:A.c,OrientationSensor:A.c,PaymentRequest:A.c,Performance:A.c,PermissionStatus:A.c,PresentationAvailability:A.c,PresentationConnection:A.c,PresentationConnectionList:A.c,PresentationRequest:A.c,RelativeOrientationSensor:A.c,RemotePlayback:A.c,RTCDataChannel:A.c,DataChannel:A.c,RTCDTMFSender:A.c,RTCPeerConnection:A.c,webkitRTCPeerConnection:A.c,mozRTCPeerConnection:A.c,ScreenOrientation:A.c,Sensor:A.c,ServiceWorker:A.c,ServiceWorkerContainer:A.c,ServiceWorkerGlobalScope:A.c,ServiceWorkerRegistration:A.c,SharedWorker:A.c,SharedWorkerGlobalScope:A.c,SpeechRecognition:A.c,webkitSpeechRecognition:A.c,SpeechSynthesis:A.c,SpeechSynthesisUtterance:A.c,VR:A.c,VRDevice:A.c,VRDisplay:A.c,VRSession:A.c,VisualViewport:A.c,WebSocket:A.c,Window:A.c,DOMWindow:A.c,Worker:A.c,WorkerGlobalScope:A.c,WorkerPerformance:A.c,BluetoothDevice:A.c,BluetoothRemoteGATTCharacteristic:A.c,Clipboard:A.c,MojoInterfaceInterceptor:A.c,USB:A.c,IDBDatabase:A.c,IDBOpenDBRequest:A.c,IDBVersionChangeRequest:A.c,IDBRequest:A.c,IDBTransaction:A.c,AnalyserNode:A.c,RealtimeAnalyserNode:A.c,AudioBufferSourceNode:A.c,AudioDestinationNode:A.c,AudioNode:A.c,AudioScheduledSourceNode:A.c,AudioWorkletNode:A.c,BiquadFilterNode:A.c,ChannelMergerNode:A.c,AudioChannelMerger:A.c,ChannelSplitterNode:A.c,AudioChannelSplitter:A.c,ConstantSourceNode:A.c,ConvolverNode:A.c,DelayNode:A.c,DynamicsCompressorNode:A.c,GainNode:A.c,AudioGainNode:A.c,IIRFilterNode:A.c,MediaElementAudioSourceNode:A.c,MediaStreamAudioDestinationNode:A.c,MediaStreamAudioSourceNode:A.c,OscillatorNode:A.c,Oscillator:A.c,PannerNode:A.c,AudioPannerNode:A.c,webkitAudioPannerNode:A.c,ScriptProcessorNode:A.c,JavaScriptAudioNode:A.c,StereoPannerNode:A.c,WaveShaperNode:A.c,EventTarget:A.c,File:A.a1,FileList:A.cV,FileWriter:A.cW,HTMLFormElement:A.cY,Gamepad:A.a2,History:A.cZ,HTMLCollection:A.aU,HTMLFormControlsCollection:A.aU,HTMLOptionsCollection:A.aU,HTMLDocument:A.bD,HTMLInputElement:A.aD,KeyboardEvent:A.bf,Location:A.d7,MediaList:A.d8,MIDIInputMap:A.d9,MIDIOutputMap:A.da,MimeType:A.a4,MimeTypeArray:A.db,DocumentFragment:A.m,ShadowRoot:A.m,DocumentType:A.m,Node:A.m,NodeList:A.bP,RadioNodeList:A.bP,Plugin:A.a6,PluginArray:A.dq,RTCStatsReport:A.dt,HTMLSelectElement:A.dv,SourceBuffer:A.a7,SourceBufferList:A.dx,SpeechGrammar:A.a8,SpeechGrammarList:A.dy,SpeechRecognitionResult:A.a9,Storage:A.dB,CSSStyleSheet:A.U,StyleSheet:A.U,HTMLTableElement:A.bU,HTMLTableRowElement:A.dD,HTMLTableSectionElement:A.dE,HTMLTemplateElement:A.bj,HTMLTextAreaElement:A.aY,TextTrack:A.aa,TextTrackCue:A.V,VTTCue:A.V,TextTrackCueList:A.dG,TextTrackList:A.dH,TimeRanges:A.dI,Touch:A.ab,TouchList:A.dJ,TrackDefaultList:A.dK,CompositionEvent:A.P,FocusEvent:A.P,MouseEvent:A.P,DragEvent:A.P,PointerEvent:A.P,TextEvent:A.P,TouchEvent:A.P,WheelEvent:A.P,UIEvent:A.P,URL:A.dR,VideoTrackList:A.dS,Attr:A.bm,CSSRuleList:A.dZ,ClientRect:A.bX,DOMRect:A.bX,GamepadList:A.ec,NamedNodeMap:A.c2,MozNamedAttrMap:A.c2,SpeechRecognitionResultList:A.ez,StyleSheetList:A.eF,SVGLength:A.ah,SVGLengthList:A.d4,SVGNumber:A.al,SVGNumberList:A.dl,SVGPointList:A.dr,SVGScriptElement:A.bh,SVGStringList:A.dC,SVGAElement:A.j,SVGAnimateElement:A.j,SVGAnimateMotionElement:A.j,SVGAnimateTransformElement:A.j,SVGAnimationElement:A.j,SVGCircleElement:A.j,SVGClipPathElement:A.j,SVGDefsElement:A.j,SVGDescElement:A.j,SVGDiscardElement:A.j,SVGEllipseElement:A.j,SVGFEBlendElement:A.j,SVGFEColorMatrixElement:A.j,SVGFEComponentTransferElement:A.j,SVGFECompositeElement:A.j,SVGFEConvolveMatrixElement:A.j,SVGFEDiffuseLightingElement:A.j,SVGFEDisplacementMapElement:A.j,SVGFEDistantLightElement:A.j,SVGFEFloodElement:A.j,SVGFEFuncAElement:A.j,SVGFEFuncBElement:A.j,SVGFEFuncGElement:A.j,SVGFEFuncRElement:A.j,SVGFEGaussianBlurElement:A.j,SVGFEImageElement:A.j,SVGFEMergeElement:A.j,SVGFEMergeNodeElement:A.j,SVGFEMorphologyElement:A.j,SVGFEOffsetElement:A.j,SVGFEPointLightElement:A.j,SVGFESpecularLightingElement:A.j,SVGFESpotLightElement:A.j,SVGFETileElement:A.j,SVGFETurbulenceElement:A.j,SVGFilterElement:A.j,SVGForeignObjectElement:A.j,SVGGElement:A.j,SVGGeometryElement:A.j,SVGGraphicsElement:A.j,SVGImageElement:A.j,SVGLineElement:A.j,SVGLinearGradientElement:A.j,SVGMarkerElement:A.j,SVGMaskElement:A.j,SVGMetadataElement:A.j,SVGPathElement:A.j,SVGPatternElement:A.j,SVGPolygonElement:A.j,SVGPolylineElement:A.j,SVGRadialGradientElement:A.j,SVGRectElement:A.j,SVGSetElement:A.j,SVGStopElement:A.j,SVGStyleElement:A.j,SVGSVGElement:A.j,SVGSwitchElement:A.j,SVGSymbolElement:A.j,SVGTSpanElement:A.j,SVGTextContentElement:A.j,SVGTextElement:A.j,SVGTextPathElement:A.j,SVGTextPositioningElement:A.j,SVGTitleElement:A.j,SVGUseElement:A.j,SVGViewElement:A.j,SVGGradientElement:A.j,SVGComponentTransferFunctionElement:A.j,SVGFEDropShadowElement:A.j,SVGMPathElement:A.j,SVGElement:A.j,SVGTransform:A.ao,SVGTransformList:A.dL,AudioBuffer:A.cD,AudioParamMap:A.cE,AudioTrackList:A.cF,AudioContext:A.az,webkitAudioContext:A.az,BaseAudioContext:A.az,OfflineAudioContext:A.dm}) +hunkHelpers.setOrUpdateLeafTags({WebGL:true,AnimationEffectReadOnly:true,AnimationEffectTiming:true,AnimationEffectTimingReadOnly:true,AnimationTimeline:true,AnimationWorkletGlobalScope:true,AuthenticatorAssertionResponse:true,AuthenticatorAttestationResponse:true,AuthenticatorResponse:true,BackgroundFetchFetch:true,BackgroundFetchManager:true,BackgroundFetchSettledFetch:true,BarProp:true,BarcodeDetector:true,BluetoothRemoteGATTDescriptor:true,Body:true,BudgetState:true,CacheStorage:true,CanvasGradient:true,CanvasPattern:true,CanvasRenderingContext2D:true,Client:true,Clients:true,CookieStore:true,Coordinates:true,Credential:true,CredentialUserData:true,CredentialsContainer:true,Crypto:true,CryptoKey:true,CSS:true,CSSVariableReferenceValue:true,CustomElementRegistry:true,DataTransfer:true,DataTransferItem:true,DeprecatedStorageInfo:true,DeprecatedStorageQuota:true,DeprecationReport:true,DetectedBarcode:true,DetectedFace:true,DetectedText:true,DeviceAcceleration:true,DeviceRotationRate:true,DirectoryEntry:true,webkitFileSystemDirectoryEntry:true,FileSystemDirectoryEntry:true,DirectoryReader:true,WebKitDirectoryReader:true,webkitFileSystemDirectoryReader:true,FileSystemDirectoryReader:true,DocumentOrShadowRoot:true,DocumentTimeline:true,DOMError:true,DOMImplementation:true,Iterator:true,DOMMatrix:true,DOMMatrixReadOnly:true,DOMParser:true,DOMPoint:true,DOMPointReadOnly:true,DOMQuad:true,DOMStringMap:true,Entry:true,webkitFileSystemEntry:true,FileSystemEntry:true,External:true,FaceDetector:true,FederatedCredential:true,FileEntry:true,webkitFileSystemFileEntry:true,FileSystemFileEntry:true,DOMFileSystem:true,WebKitFileSystem:true,webkitFileSystem:true,FileSystem:true,FontFace:true,FontFaceSource:true,FormData:true,GamepadButton:true,GamepadPose:true,Geolocation:true,Position:true,GeolocationPosition:true,Headers:true,HTMLHyperlinkElementUtils:true,IdleDeadline:true,ImageBitmap:true,ImageBitmapRenderingContext:true,ImageCapture:true,ImageData:true,InputDeviceCapabilities:true,IntersectionObserver:true,IntersectionObserverEntry:true,InterventionReport:true,KeyframeEffect:true,KeyframeEffectReadOnly:true,MediaCapabilities:true,MediaCapabilitiesInfo:true,MediaDeviceInfo:true,MediaError:true,MediaKeyStatusMap:true,MediaKeySystemAccess:true,MediaKeys:true,MediaKeysPolicy:true,MediaMetadata:true,MediaSession:true,MediaSettingsRange:true,MemoryInfo:true,MessageChannel:true,Metadata:true,MutationObserver:true,WebKitMutationObserver:true,MutationRecord:true,NavigationPreloadManager:true,Navigator:true,NavigatorAutomationInformation:true,NavigatorConcurrentHardware:true,NavigatorCookies:true,NavigatorUserMediaError:true,NodeFilter:true,NodeIterator:true,NonDocumentTypeChildNode:true,NonElementParentNode:true,NoncedElement:true,OffscreenCanvasRenderingContext2D:true,OverconstrainedError:true,PaintRenderingContext2D:true,PaintSize:true,PaintWorkletGlobalScope:true,PasswordCredential:true,Path2D:true,PaymentAddress:true,PaymentInstruments:true,PaymentManager:true,PaymentResponse:true,PerformanceEntry:true,PerformanceLongTaskTiming:true,PerformanceMark:true,PerformanceMeasure:true,PerformanceNavigation:true,PerformanceNavigationTiming:true,PerformanceObserver:true,PerformanceObserverEntryList:true,PerformancePaintTiming:true,PerformanceResourceTiming:true,PerformanceServerTiming:true,PerformanceTiming:true,Permissions:true,PhotoCapabilities:true,PositionError:true,GeolocationPositionError:true,Presentation:true,PresentationReceiver:true,PublicKeyCredential:true,PushManager:true,PushMessageData:true,PushSubscription:true,PushSubscriptionOptions:true,Range:true,RelatedApplication:true,ReportBody:true,ReportingObserver:true,ResizeObserver:true,ResizeObserverEntry:true,RTCCertificate:true,RTCIceCandidate:true,mozRTCIceCandidate:true,RTCLegacyStatsReport:true,RTCRtpContributingSource:true,RTCRtpReceiver:true,RTCRtpSender:true,RTCSessionDescription:true,mozRTCSessionDescription:true,RTCStatsResponse:true,Screen:true,ScrollState:true,ScrollTimeline:true,Selection:true,SharedArrayBuffer:true,SpeechRecognitionAlternative:true,SpeechSynthesisVoice:true,StaticRange:true,StorageManager:true,StyleMedia:true,StylePropertyMap:true,StylePropertyMapReadonly:true,SyncManager:true,TaskAttributionTiming:true,TextDetector:true,TextMetrics:true,TrackDefault:true,TreeWalker:true,TrustedHTML:true,TrustedScriptURL:true,TrustedURL:true,UnderlyingSourceBase:true,URLSearchParams:true,VRCoordinateSystem:true,VRDisplayCapabilities:true,VREyeParameters:true,VRFrameData:true,VRFrameOfReference:true,VRPose:true,VRStageBounds:true,VRStageBoundsPoint:true,VRStageParameters:true,ValidityState:true,VideoPlaybackQuality:true,VideoTrack:true,VTTRegion:true,WindowClient:true,WorkletAnimation:true,WorkletGlobalScope:true,XPathEvaluator:true,XPathExpression:true,XPathNSResolver:true,XPathResult:true,XMLSerializer:true,XSLTProcessor:true,Bluetooth:true,BluetoothCharacteristicProperties:true,BluetoothRemoteGATTServer:true,BluetoothRemoteGATTService:true,BluetoothUUID:true,BudgetService:true,Cache:true,DOMFileSystemSync:true,DirectoryEntrySync:true,DirectoryReaderSync:true,EntrySync:true,FileEntrySync:true,FileReaderSync:true,FileWriterSync:true,HTMLAllCollection:true,Mojo:true,MojoHandle:true,MojoWatcher:true,NFC:true,PagePopupController:true,Report:true,Request:true,Response:true,SubtleCrypto:true,USBAlternateInterface:true,USBConfiguration:true,USBDevice:true,USBEndpoint:true,USBInTransferResult:true,USBInterface:true,USBIsochronousInTransferPacket:true,USBIsochronousInTransferResult:true,USBIsochronousOutTransferPacket:true,USBIsochronousOutTransferResult:true,USBOutTransferResult:true,WorkerLocation:true,WorkerNavigator:true,Worklet:true,IDBCursor:true,IDBCursorWithValue:true,IDBFactory:true,IDBIndex:true,IDBKeyRange:true,IDBObjectStore:true,IDBObservation:true,IDBObserver:true,IDBObserverChanges:true,SVGAngle:true,SVGAnimatedAngle:true,SVGAnimatedBoolean:true,SVGAnimatedEnumeration:true,SVGAnimatedInteger:true,SVGAnimatedLength:true,SVGAnimatedLengthList:true,SVGAnimatedNumber:true,SVGAnimatedNumberList:true,SVGAnimatedPreserveAspectRatio:true,SVGAnimatedRect:true,SVGAnimatedString:true,SVGAnimatedTransformList:true,SVGMatrix:true,SVGPoint:true,SVGPreserveAspectRatio:true,SVGRect:true,SVGUnitTypes:true,AudioListener:true,AudioParam:true,AudioTrack:true,AudioWorkletGlobalScope:true,AudioWorkletProcessor:true,PeriodicWave:true,WebGLActiveInfo:true,ANGLEInstancedArrays:true,ANGLE_instanced_arrays:true,WebGLBuffer:true,WebGLCanvas:true,WebGLColorBufferFloat:true,WebGLCompressedTextureASTC:true,WebGLCompressedTextureATC:true,WEBGL_compressed_texture_atc:true,WebGLCompressedTextureETC1:true,WEBGL_compressed_texture_etc1:true,WebGLCompressedTextureETC:true,WebGLCompressedTexturePVRTC:true,WEBGL_compressed_texture_pvrtc:true,WebGLCompressedTextureS3TC:true,WEBGL_compressed_texture_s3tc:true,WebGLCompressedTextureS3TCsRGB:true,WebGLDebugRendererInfo:true,WEBGL_debug_renderer_info:true,WebGLDebugShaders:true,WEBGL_debug_shaders:true,WebGLDepthTexture:true,WEBGL_depth_texture:true,WebGLDrawBuffers:true,WEBGL_draw_buffers:true,EXTsRGB:true,EXT_sRGB:true,EXTBlendMinMax:true,EXT_blend_minmax:true,EXTColorBufferFloat:true,EXTColorBufferHalfFloat:true,EXTDisjointTimerQuery:true,EXTDisjointTimerQueryWebGL2:true,EXTFragDepth:true,EXT_frag_depth:true,EXTShaderTextureLOD:true,EXT_shader_texture_lod:true,EXTTextureFilterAnisotropic:true,EXT_texture_filter_anisotropic:true,WebGLFramebuffer:true,WebGLGetBufferSubDataAsync:true,WebGLLoseContext:true,WebGLExtensionLoseContext:true,WEBGL_lose_context:true,OESElementIndexUint:true,OES_element_index_uint:true,OESStandardDerivatives:true,OES_standard_derivatives:true,OESTextureFloat:true,OES_texture_float:true,OESTextureFloatLinear:true,OES_texture_float_linear:true,OESTextureHalfFloat:true,OES_texture_half_float:true,OESTextureHalfFloatLinear:true,OES_texture_half_float_linear:true,OESVertexArrayObject:true,OES_vertex_array_object:true,WebGLProgram:true,WebGLQuery:true,WebGLRenderbuffer:true,WebGLRenderingContext:true,WebGL2RenderingContext:true,WebGLSampler:true,WebGLShader:true,WebGLShaderPrecisionFormat:true,WebGLSync:true,WebGLTexture:true,WebGLTimerQueryEXT:true,WebGLTransformFeedback:true,WebGLUniformLocation:true,WebGLVertexArrayObject:true,WebGLVertexArrayObjectOES:true,WebGL2RenderingContextBase:true,ArrayBuffer:true,ArrayBufferView:false,DataView:true,Float32Array:true,Float64Array:true,Int16Array:true,Int32Array:true,Int8Array:true,Uint16Array:true,Uint32Array:true,Uint8ClampedArray:true,CanvasPixelArray:true,Uint8Array:false,HTMLAudioElement:true,HTMLBRElement:true,HTMLButtonElement:true,HTMLCanvasElement:true,HTMLContentElement:true,HTMLDListElement:true,HTMLDataElement:true,HTMLDataListElement:true,HTMLDetailsElement:true,HTMLDialogElement:true,HTMLDivElement:true,HTMLEmbedElement:true,HTMLFieldSetElement:true,HTMLHRElement:true,HTMLHeadElement:true,HTMLHeadingElement:true,HTMLHtmlElement:true,HTMLIFrameElement:true,HTMLImageElement:true,HTMLLIElement:true,HTMLLabelElement:true,HTMLLegendElement:true,HTMLLinkElement:true,HTMLMapElement:true,HTMLMediaElement:true,HTMLMenuElement:true,HTMLMetaElement:true,HTMLMeterElement:true,HTMLModElement:true,HTMLOListElement:true,HTMLObjectElement:true,HTMLOptGroupElement:true,HTMLOptionElement:true,HTMLOutputElement:true,HTMLParagraphElement:true,HTMLParamElement:true,HTMLPictureElement:true,HTMLPreElement:true,HTMLProgressElement:true,HTMLQuoteElement:true,HTMLScriptElement:true,HTMLShadowElement:true,HTMLSlotElement:true,HTMLSourceElement:true,HTMLSpanElement:true,HTMLStyleElement:true,HTMLTableCaptionElement:true,HTMLTableCellElement:true,HTMLTableDataCellElement:true,HTMLTableHeaderCellElement:true,HTMLTableColElement:true,HTMLTimeElement:true,HTMLTitleElement:true,HTMLTrackElement:true,HTMLUListElement:true,HTMLUnknownElement:true,HTMLVideoElement:true,HTMLDirectoryElement:true,HTMLFontElement:true,HTMLFrameElement:true,HTMLFrameSetElement:true,HTMLMarqueeElement:true,HTMLElement:false,AccessibleNodeList:true,HTMLAnchorElement:true,HTMLAreaElement:true,HTMLBaseElement:true,Blob:false,HTMLBodyElement:true,CDATASection:true,CharacterData:true,Comment:true,ProcessingInstruction:true,Text:true,CSSPerspective:true,CSSCharsetRule:true,CSSConditionRule:true,CSSFontFaceRule:true,CSSGroupingRule:true,CSSImportRule:true,CSSKeyframeRule:true,MozCSSKeyframeRule:true,WebKitCSSKeyframeRule:true,CSSKeyframesRule:true,MozCSSKeyframesRule:true,WebKitCSSKeyframesRule:true,CSSMediaRule:true,CSSNamespaceRule:true,CSSPageRule:true,CSSRule:true,CSSStyleRule:true,CSSSupportsRule:true,CSSViewportRule:true,CSSStyleDeclaration:true,MSStyleCSSProperties:true,CSS2Properties:true,CSSImageValue:true,CSSKeywordValue:true,CSSNumericValue:true,CSSPositionValue:true,CSSResourceValue:true,CSSUnitValue:true,CSSURLImageValue:true,CSSStyleValue:false,CSSMatrixComponent:true,CSSRotation:true,CSSScale:true,CSSSkew:true,CSSTranslation:true,CSSTransformComponent:false,CSSTransformValue:true,CSSUnparsedValue:true,DataTransferItemList:true,XMLDocument:true,Document:false,DOMException:true,ClientRectList:true,DOMRectList:true,DOMRectReadOnly:false,DOMStringList:true,DOMTokenList:true,MathMLElement:true,Element:false,AbortPaymentEvent:true,AnimationEvent:true,AnimationPlaybackEvent:true,ApplicationCacheErrorEvent:true,BackgroundFetchClickEvent:true,BackgroundFetchEvent:true,BackgroundFetchFailEvent:true,BackgroundFetchedEvent:true,BeforeInstallPromptEvent:true,BeforeUnloadEvent:true,BlobEvent:true,CanMakePaymentEvent:true,ClipboardEvent:true,CloseEvent:true,CustomEvent:true,DeviceMotionEvent:true,DeviceOrientationEvent:true,ErrorEvent:true,ExtendableEvent:true,ExtendableMessageEvent:true,FetchEvent:true,FontFaceSetLoadEvent:true,ForeignFetchEvent:true,GamepadEvent:true,HashChangeEvent:true,InstallEvent:true,MediaEncryptedEvent:true,MediaKeyMessageEvent:true,MediaQueryListEvent:true,MediaStreamEvent:true,MediaStreamTrackEvent:true,MessageEvent:true,MIDIConnectionEvent:true,MIDIMessageEvent:true,MutationEvent:true,NotificationEvent:true,PageTransitionEvent:true,PaymentRequestEvent:true,PaymentRequestUpdateEvent:true,PopStateEvent:true,PresentationConnectionAvailableEvent:true,PresentationConnectionCloseEvent:true,ProgressEvent:true,PromiseRejectionEvent:true,PushEvent:true,RTCDataChannelEvent:true,RTCDTMFToneChangeEvent:true,RTCPeerConnectionIceEvent:true,RTCTrackEvent:true,SecurityPolicyViolationEvent:true,SensorErrorEvent:true,SpeechRecognitionError:true,SpeechRecognitionEvent:true,SpeechSynthesisEvent:true,StorageEvent:true,SyncEvent:true,TrackEvent:true,TransitionEvent:true,WebKitTransitionEvent:true,VRDeviceEvent:true,VRDisplayEvent:true,VRSessionEvent:true,MojoInterfaceRequestEvent:true,ResourceProgressEvent:true,USBConnectionEvent:true,IDBVersionChangeEvent:true,AudioProcessingEvent:true,OfflineAudioCompletionEvent:true,WebGLContextEvent:true,Event:false,InputEvent:false,SubmitEvent:false,AbsoluteOrientationSensor:true,Accelerometer:true,AccessibleNode:true,AmbientLightSensor:true,Animation:true,ApplicationCache:true,DOMApplicationCache:true,OfflineResourceList:true,BackgroundFetchRegistration:true,BatteryManager:true,BroadcastChannel:true,CanvasCaptureMediaStreamTrack:true,DedicatedWorkerGlobalScope:true,EventSource:true,FileReader:true,FontFaceSet:true,Gyroscope:true,XMLHttpRequest:true,XMLHttpRequestEventTarget:true,XMLHttpRequestUpload:true,LinearAccelerationSensor:true,Magnetometer:true,MediaDevices:true,MediaKeySession:true,MediaQueryList:true,MediaRecorder:true,MediaSource:true,MediaStream:true,MediaStreamTrack:true,MessagePort:true,MIDIAccess:true,MIDIInput:true,MIDIOutput:true,MIDIPort:true,NetworkInformation:true,Notification:true,OffscreenCanvas:true,OrientationSensor:true,PaymentRequest:true,Performance:true,PermissionStatus:true,PresentationAvailability:true,PresentationConnection:true,PresentationConnectionList:true,PresentationRequest:true,RelativeOrientationSensor:true,RemotePlayback:true,RTCDataChannel:true,DataChannel:true,RTCDTMFSender:true,RTCPeerConnection:true,webkitRTCPeerConnection:true,mozRTCPeerConnection:true,ScreenOrientation:true,Sensor:true,ServiceWorker:true,ServiceWorkerContainer:true,ServiceWorkerGlobalScope:true,ServiceWorkerRegistration:true,SharedWorker:true,SharedWorkerGlobalScope:true,SpeechRecognition:true,webkitSpeechRecognition:true,SpeechSynthesis:true,SpeechSynthesisUtterance:true,VR:true,VRDevice:true,VRDisplay:true,VRSession:true,VisualViewport:true,WebSocket:true,Window:true,DOMWindow:true,Worker:true,WorkerGlobalScope:true,WorkerPerformance:true,BluetoothDevice:true,BluetoothRemoteGATTCharacteristic:true,Clipboard:true,MojoInterfaceInterceptor:true,USB:true,IDBDatabase:true,IDBOpenDBRequest:true,IDBVersionChangeRequest:true,IDBRequest:true,IDBTransaction:true,AnalyserNode:true,RealtimeAnalyserNode:true,AudioBufferSourceNode:true,AudioDestinationNode:true,AudioNode:true,AudioScheduledSourceNode:true,AudioWorkletNode:true,BiquadFilterNode:true,ChannelMergerNode:true,AudioChannelMerger:true,ChannelSplitterNode:true,AudioChannelSplitter:true,ConstantSourceNode:true,ConvolverNode:true,DelayNode:true,DynamicsCompressorNode:true,GainNode:true,AudioGainNode:true,IIRFilterNode:true,MediaElementAudioSourceNode:true,MediaStreamAudioDestinationNode:true,MediaStreamAudioSourceNode:true,OscillatorNode:true,Oscillator:true,PannerNode:true,AudioPannerNode:true,webkitAudioPannerNode:true,ScriptProcessorNode:true,JavaScriptAudioNode:true,StereoPannerNode:true,WaveShaperNode:true,EventTarget:false,File:true,FileList:true,FileWriter:true,HTMLFormElement:true,Gamepad:true,History:true,HTMLCollection:true,HTMLFormControlsCollection:true,HTMLOptionsCollection:true,HTMLDocument:true,HTMLInputElement:true,KeyboardEvent:true,Location:true,MediaList:true,MIDIInputMap:true,MIDIOutputMap:true,MimeType:true,MimeTypeArray:true,DocumentFragment:true,ShadowRoot:true,DocumentType:true,Node:false,NodeList:true,RadioNodeList:true,Plugin:true,PluginArray:true,RTCStatsReport:true,HTMLSelectElement:true,SourceBuffer:true,SourceBufferList:true,SpeechGrammar:true,SpeechGrammarList:true,SpeechRecognitionResult:true,Storage:true,CSSStyleSheet:true,StyleSheet:true,HTMLTableElement:true,HTMLTableRowElement:true,HTMLTableSectionElement:true,HTMLTemplateElement:true,HTMLTextAreaElement:true,TextTrack:true,TextTrackCue:true,VTTCue:true,TextTrackCueList:true,TextTrackList:true,TimeRanges:true,Touch:true,TouchList:true,TrackDefaultList:true,CompositionEvent:true,FocusEvent:true,MouseEvent:true,DragEvent:true,PointerEvent:true,TextEvent:true,TouchEvent:true,WheelEvent:true,UIEvent:false,URL:true,VideoTrackList:true,Attr:true,CSSRuleList:true,ClientRect:true,DOMRect:true,GamepadList:true,NamedNodeMap:true,MozNamedAttrMap:true,SpeechRecognitionResultList:true,StyleSheetList:true,SVGLength:true,SVGLengthList:true,SVGNumber:true,SVGNumberList:true,SVGPointList:true,SVGScriptElement:true,SVGStringList:true,SVGAElement:true,SVGAnimateElement:true,SVGAnimateMotionElement:true,SVGAnimateTransformElement:true,SVGAnimationElement:true,SVGCircleElement:true,SVGClipPathElement:true,SVGDefsElement:true,SVGDescElement:true,SVGDiscardElement:true,SVGEllipseElement:true,SVGFEBlendElement:true,SVGFEColorMatrixElement:true,SVGFEComponentTransferElement:true,SVGFECompositeElement:true,SVGFEConvolveMatrixElement:true,SVGFEDiffuseLightingElement:true,SVGFEDisplacementMapElement:true,SVGFEDistantLightElement:true,SVGFEFloodElement:true,SVGFEFuncAElement:true,SVGFEFuncBElement:true,SVGFEFuncGElement:true,SVGFEFuncRElement:true,SVGFEGaussianBlurElement:true,SVGFEImageElement:true,SVGFEMergeElement:true,SVGFEMergeNodeElement:true,SVGFEMorphologyElement:true,SVGFEOffsetElement:true,SVGFEPointLightElement:true,SVGFESpecularLightingElement:true,SVGFESpotLightElement:true,SVGFETileElement:true,SVGFETurbulenceElement:true,SVGFilterElement:true,SVGForeignObjectElement:true,SVGGElement:true,SVGGeometryElement:true,SVGGraphicsElement:true,SVGImageElement:true,SVGLineElement:true,SVGLinearGradientElement:true,SVGMarkerElement:true,SVGMaskElement:true,SVGMetadataElement:true,SVGPathElement:true,SVGPatternElement:true,SVGPolygonElement:true,SVGPolylineElement:true,SVGRadialGradientElement:true,SVGRectElement:true,SVGSetElement:true,SVGStopElement:true,SVGStyleElement:true,SVGSVGElement:true,SVGSwitchElement:true,SVGSymbolElement:true,SVGTSpanElement:true,SVGTextContentElement:true,SVGTextElement:true,SVGTextPathElement:true,SVGTextPositioningElement:true,SVGTitleElement:true,SVGUseElement:true,SVGViewElement:true,SVGGradientElement:true,SVGComponentTransferFunctionElement:true,SVGFEDropShadowElement:true,SVGMPathElement:true,SVGElement:false,SVGTransform:true,SVGTransformList:true,AudioBuffer:true,AudioParamMap:true,AudioTrackList:true,AudioContext:true,webkitAudioContext:true,BaseAudioContext:false,OfflineAudioContext:true}) +A.bg.$nativeSuperclassTag="ArrayBufferView" +A.c3.$nativeSuperclassTag="ArrayBufferView" +A.c4.$nativeSuperclassTag="ArrayBufferView" +A.bK.$nativeSuperclassTag="ArrayBufferView" +A.c5.$nativeSuperclassTag="ArrayBufferView" +A.c6.$nativeSuperclassTag="ArrayBufferView" +A.bL.$nativeSuperclassTag="ArrayBufferView" +A.c9.$nativeSuperclassTag="EventTarget" +A.ca.$nativeSuperclassTag="EventTarget" +A.cc.$nativeSuperclassTag="EventTarget" +A.cd.$nativeSuperclassTag="EventTarget"})() +Function.prototype.$0=function(){return this()} +Function.prototype.$1=function(a){return this(a)} +Function.prototype.$2=function(a,b){return this(a,b)} +Function.prototype.$3=function(a,b,c){return this(a,b,c)} +Function.prototype.$4=function(a,b,c,d){return this(a,b,c,d)} +Function.prototype.$1$1=function(a){return this(a)} +Function.prototype.$1$0=function(){return this()} +convertAllToFastObject(w) +convertToFastObject($);(function(a){if(typeof document==="undefined"){a(null) +return}if(typeof document.currentScript!="undefined"){a(document.currentScript) +return}var s=document.scripts +function onLoad(b){for(var q=0;q","JsLinkedHashMap_values_closure","LinkedHashMapKeyIterable.length","LinkedHashMapKeyIterable.iterator","LinkedHashMapKeyIterator","LinkedHashMapKeyIterator.current","LinkedHashMapKeyIterator.moveNext","initHooks.","JSSyntaxRegExp.toString","JSSyntaxRegExp._nativeGlobalVersion","JSSyntaxRegExp._execGlobal","_MatchImplementation.end","_MatchImplementation.[]","_AllMatchesIterator.current","_AllMatchesIterator.moveNext","JSSyntaxRegExp.isUnicode","NativeByteBuffer.runtimeType","NativeByteData.runtimeType","NativeTypedArray.length","NativeTypedArrayOfDouble.[]","NativeTypedArrayOfDouble.[]=","NativeTypedArrayOfInt.[]=","NativeFloat32List.runtimeType","NativeFloat64List.runtimeType","NativeInt16List.runtimeType","NativeInt16List.[]","NativeInt32List.runtimeType","NativeInt32List.[]","NativeInt8List.runtimeType","NativeInt8List.[]","NativeUint16List.runtimeType","NativeUint16List.[]","NativeUint32List.runtimeType","NativeUint32List.[]","NativeUint8ClampedList.runtimeType","NativeUint8ClampedList.length","NativeUint8ClampedList.[]","NativeUint8List.runtimeType","NativeUint8List.length","NativeUint8List.[]","Rti._eval","Rti._bind","_Type.toString","_Error.toString","_AsyncRun._initializeScheduleImmediate.internalCallback","_AsyncRun._initializeScheduleImmediate.","_AsyncRun._scheduleImmediateJsOverride.internalCallback","_AsyncRun._scheduleImmediateWithSetImmediate.internalCallback","_TimerImpl.internalCallback","_AsyncAwaitCompleter.complete","_AsyncAwaitCompleter.completeError","_awaitOnObject.","_wrapJsFunctionForAsync.","AsyncError.toString","_Completer.completeError","_Completer.completeError[function-entry$1]","_AsyncCompleter.complete","_FutureListener.matchesErrorTest","_FutureListener.handleError","_Future.then","_Future.then[function-entry$1]","_Future._thenAwait","_Future._setErrorObject","_Future._cloneResult","_Future._addListener","_Future._prependListeners","_Future._removeListeners","_Future._reverseListeners","_Future._chainForeignFuture","_Future._completeWithValue","_Future._completeError","_Future._asyncComplete","_Future._asyncCompleteWithValue","_Future._chainFuture","_Future._asyncCompleteError","_Future._addListener.","_Future._prependListeners.","_Future._chainForeignFuture.","_Future._asyncCompleteWithValue.","_Future._chainFuture.","_Future._asyncCompleteError.","_Future._propagateToListeners.handleWhenCompleteCallback","_FutureListener.handleWhenComplete","_Future._propagateToListeners.handleWhenCompleteCallback.","_Future._propagateToListeners.handleValueCallback","_FutureListener.handleValue","_Future._propagateToListeners.handleError","_FutureListener.hasErrorCallback","_rootHandleError.","_RootZone.runGuarded","_RootZone.bindCallbackGuarded","_RootZone.run","_RootZone.run[function-entry$1]","_RootZone.runUnary","_RootZone.runUnary[function-entry$2]","_RootZone.runBinary","_RootZone.runBinary[function-entry$3]","_RootZone.registerBinaryCallback","_RootZone.registerBinaryCallback[function-entry$1]","_RootZone.bindCallbackGuarded.","_LinkedHashSet.iterator","_LinkedHashSet.length","_LinkedHashSet.contains","_LinkedHashSet._contains","_LinkedHashSet.add","_LinkedHashSet._add","_LinkedHashSet.remove","_LinkedHashSet._remove","_LinkedHashSet._addHashTableEntry","_LinkedHashSet._removeHashTableEntry","_LinkedHashSet._modified","_LinkedHashSet._newLinkedCell","_LinkedHashSet._unlinkCell","_LinkedHashSet._computeHashCode","_LinkedHashSet._findBucketIndex","_LinkedHashSetIterator.current","_LinkedHashSetIterator.moveNext","ListBase.iterator","ListBase.elementAt","ListBase.cast","ListBase.fillRange","ListBase.toString","MapBase.forEach","MapBase.length","MapBase.toString","MapBase.mapToString.","_UnmodifiableMapMixin.[]=","MapView.[]","MapView.[]=","MapView.length","MapView.toString","SetBase.addAll","SetBase.toString","SetBase.join","SetBase.elementAt","_JsonMap.[]","_JsonMap.length","_JsonMap.keys","_JsonMap.[]=","_JsonMap.containsKey","_JsonMap.forEach","_JsonMap._computeKeys","_JsonMap._upgrade","_JsonMap._process","_JsonMapKeyIterable.length","_JsonMapKeyIterable.elementAt","_JsonMapKeyIterable.iterator","Utf8Decoder._decoder.","Utf8Decoder._decoderNonfatal.","Base64Codec.normalize","HtmlEscapeMode.toString","HtmlEscape.convert","HtmlEscape._convert","JsonCodec.decode","JsonCodec.decoder","Utf8Codec.encoder","Utf8Encoder.convert","_Utf8Encoder._writeReplacementCharacter","_Utf8Encoder._writeSurrogate","_Utf8Encoder._fillBuffer","Utf8Decoder.convert","_Utf8Decoder.convertGeneral","_Utf8Decoder._convertRecursive","_Utf8Decoder.decodeGeneral","Error.stackTrace","AssertionError.toString","ArgumentError._errorName","ArgumentError._errorExplanation","ArgumentError.toString","RangeError.invalidValue","RangeError._errorName","RangeError._errorExplanation","IndexError.invalidValue","IndexError._errorName","IndexError._errorExplanation","UnsupportedError.toString","UnimplementedError.toString","StateError.toString","ConcurrentModificationError.toString","OutOfMemoryError.toString","OutOfMemoryError.stackTrace","StackOverflowError.toString","StackOverflowError.stackTrace","_Exception.toString","FormatException.toString","Iterable.cast","Iterable.where","Iterable.length","Iterable.single","Iterable.elementAt","Iterable.toString","Null.hashCode","Null.toString","Object.hashCode","Object.==","Object.toString","Object.runtimeType","_StringStackTrace.toString","StringBuffer.length","StringBuffer.toString","Uri.splitQueryString.","Uri._parseIPv4Address.error","Uri.parseIPv6Address.error","Uri.parseIPv6Address.parseHex","_Uri._text","_Uri._initializeText","_Uri._writeAuthority","_Uri.hashCode","_Uri.queryParameters","_Uri.userInfo","_Uri.host","_Uri.port","_Uri.query","_Uri.fragment","_Uri.replace","_Uri.hasAuthority","_Uri.hasQuery","_Uri.hasFragment","_Uri.toString","_Uri.==","_Uri._makeQuery.writeParameter","_Uri._makeQuery.","UriData.uri","UriData._computeUri","UriData.toString","_createTables.build","_createTables.setChars","_createTables.setRange","_SimpleUri.hasAuthority","_SimpleUri.hasPort","_SimpleUri.hasQuery","_SimpleUri.hasFragment","_SimpleUri.scheme","_SimpleUri._computeScheme","_SimpleUri.userInfo","_SimpleUri.host","_SimpleUri.port","_SimpleUri.path","_SimpleUri.query","_SimpleUri.fragment","_SimpleUri.queryParameters","_SimpleUri.replace","_SimpleUri.hashCode","_SimpleUri.==","_SimpleUri.toString","AccessibleNodeList.length","AnchorElement.toString","AreaElement.toString","CharacterData.length","CssPerspective.length","CssStyleDeclaration.length","CssTransformValue.length","CssUnparsedValue.length","DataTransferItemList.length","DomException.toString","DomRectList.length","DomRectList.[]","DomRectList.[]=","DomRectList.elementAt","DomRectReadOnly.toString","DomRectReadOnly.==","DomRectReadOnly.hashCode","DomRectReadOnly._height","DomRectReadOnly.height","DomRectReadOnly._width","DomRectReadOnly.width","DomStringList.length","DomStringList.[]","DomStringList.[]=","DomStringList.elementAt","DomTokenList.length","Element.attributes","Element.classes","Element.toString","Element.createFragment","NodeValidatorBuilder.common","NodeValidatorBuilder.allowHtml5","NodeValidatorBuilder.allowTemplating","Element._canBeUsedToCreateContextualFragment","Element.createFragment[function-entry$1$treeSanitizer]","Element.innerHtml","Element.setInnerHtml","Element.html.","EventTarget.addEventListener","EventTarget._addEventListener","FileList.length","FileList.[]","FileList.[]=","FileList.elementAt","FileWriter.length","FormElement.length","History.length","HtmlCollection.length","HtmlCollection.[]","HtmlCollection.[]=","HtmlCollection.elementAt","Location.toString","MediaList.length","MidiInputMap.[]","MidiInputMap.forEach","MidiInputMap.keys","MidiInputMap.length","MidiInputMap.[]=","MidiInputMap.keys.","MidiOutputMap.[]","MidiOutputMap.forEach","MidiOutputMap.keys","MidiOutputMap.length","MidiOutputMap.[]=","MidiOutputMap.keys.","MimeTypeArray.length","MimeTypeArray.[]","MimeTypeArray.[]=","MimeTypeArray.elementAt","_ChildNodeListLazy.single","_ChildNodeListLazy.addAll","_ChildNodeListLazy.[]=","_ChildNodeListLazy.iterator","ImmutableListMixin.iterator","_ChildNodeListLazy.length","_ChildNodeListLazy.[]","Node.remove","Node.replaceWith","Node._clearChildren","Node.toString","Node._replaceChild","NodeList.length","NodeList.[]","NodeList.[]=","NodeList.elementAt","Plugin.length","PluginArray.length","PluginArray.[]","PluginArray.[]=","PluginArray.elementAt","RtcStatsReport.[]","RtcStatsReport.forEach","RtcStatsReport.keys","RtcStatsReport.length","RtcStatsReport.[]=","RtcStatsReport.keys.","SelectElement.length","SourceBufferList.length","SourceBufferList.[]","SourceBufferList.[]=","SourceBufferList.elementAt","SpeechGrammarList.length","SpeechGrammarList.[]","SpeechGrammarList.[]=","SpeechGrammarList.elementAt","SpeechRecognitionResult.length","Storage.[]","Storage.[]=","Storage.forEach","Storage.keys","Storage.length","Storage.keys.","TableElement.createFragment","TableRowElement.createFragment","TableSectionElement.createFragment","TemplateElement.setInnerHtml","TextTrackCueList.length","TextTrackCueList.[]","TextTrackCueList.[]=","TextTrackCueList.elementAt","TextTrackList.length","TextTrackList.[]","TextTrackList.[]=","TextTrackList.elementAt","TimeRanges.length","TouchList.length","TouchList.[]","TouchList.[]=","TouchList.elementAt","TrackDefaultList.length","Url.toString","VideoTrackList.length","_CssRuleList.length","_CssRuleList.[]","_CssRuleList.[]=","_CssRuleList.elementAt","_DomRect.toString","_DomRect.==","_DomRect.hashCode","_DomRect._height","_DomRect.height","_DomRect._width","_DomRect.width","_GamepadList.length","_GamepadList.[]","_GamepadList.[]=","_GamepadList.elementAt","_NamedNodeMap.length","_NamedNodeMap.[]","_NamedNodeMap.[]=","_NamedNodeMap.elementAt","_SpeechRecognitionResultList.length","_SpeechRecognitionResultList.[]","_SpeechRecognitionResultList.[]=","_SpeechRecognitionResultList.elementAt","_StyleSheetList.length","_StyleSheetList.[]","_StyleSheetList.[]=","_StyleSheetList.elementAt","_AttributeMap.forEach","_ElementAttributeMap.[]","_AttributeMap.keys","_ElementAttributeMap.length","_DataAttributeMap.[]","_DataAttributeMap.[]=","_DataAttributeMap.forEach","_DataAttributeMap.keys","_DataAttributeMap.length","_DataAttributeMap._toCamelCase","_DataAttributeMap._toHyphenedName","_DataAttributeMap.forEach.","_DataAttributeMap.keys.","_ElementCssClassSet.readClasses","_ElementCssClassSet.writeClasses","_ElementCssClassSet.length","_ElementCssClassSet.add","_ElementCssClassSet.remove","_ElementCssClassSet.toggle","_ElementCssClassSet._toggle","_Html5NodeValidator.allowsElement","_Html5NodeValidator.allowsAttribute","NodeValidatorBuilder.allowsElement","NodeValidatorBuilder.allowsAttribute","NodeValidatorBuilder.allowsElement.","NodeValidatorBuilder.allowsAttribute.","_SimpleNodeValidator.allowsElement","_SimpleNodeValidator.allowsAttribute","_SimpleNodeValidator.","_TemplatingNodeValidator.allowsAttribute","_TemplatingNodeValidator.","_SvgNodeValidator.allowsElement","_SvgNodeValidator.allowsAttribute","FixedSizeListIterator.moveNext","FixedSizeListIterator.current","_ValidatingTreeSanitizer.sanitizeTree","_ValidatingTreeSanitizer._removeNode","_ValidatingTreeSanitizer._sanitizeUntrustedElement","_ValidatingTreeSanitizer._sanitizeElement","JSArray.toList","_ValidatingTreeSanitizer.sanitizeNode","_ValidatingTreeSanitizer.sanitizeTree.walk","CssClassSetImpl._validateToken","CssClassSetImpl.toString","CssClassSetImpl.toggle","CssClassSetImpl.iterator","CssClassSetImpl.length","CssClassSetImpl.add","CssClassSetImpl.remove","CssClassSetImpl.elementAt","CssClassSetImpl.modify","CssClassSetImpl.add.","FilteredElementList._iterable","WhereIterable.map","FilteredElementList.[]=","FilteredElementList.[]","FilteredElementList.length","FilteredElementList.iterator","FilteredElementList._iterable.","promiseToFuture.","NullRejectionException.toString","LengthList.length","LengthList.[]","LengthList.[]=","LengthList.elementAt","NumberList.length","NumberList.[]","NumberList.[]=","NumberList.elementAt","PointList.length","StringList.length","StringList.[]","StringList.[]=","StringList.elementAt","AttributeClassSet.readClasses","AttributeClassSet.writeClasses","SvgElement.classes","SvgElement.innerHtml","SvgElement.children","SvgElement.createFragment","NodeValidatorBuilder.allowSvg","NodeTreeSanitizer","TransformList.length","TransformList.[]","TransformList.[]=","TransformList.elementAt","AudioBuffer.length","AudioParamMap.[]","AudioParamMap.forEach","AudioParamMap.keys","AudioParamMap.length","AudioParamMap.[]=","AudioParamMap.keys.","AudioTrackList.length","OfflineAudioContext.length","_htmlBase.","init.disableSearch","print","init.","ListBase.map","_findMatches.score","_findMatches.","_Search.listBox","_Search.moreResults","_Search.searchResults","_Search.initialize","_Search.showSearchResultPage","JsLinkedHashMap.isNotEmpty","_Search.hideSuggestions","_Search.updateSuggestions","_Search.showSuggestions","_Search.updateSuggestions[function-entry$2]","_Search.handleSearch","_Search.handleSearch[function-entry$1$isSearchPage]","_Search.handleSearch[function-entry$1]","_Search.handleSearch[function-entry$1$forceUpdate]","_Search.clearSearch","_Search.setEventListeners","_Search.initialize.","_Search.setEventListeners.","Element.dataset","_createSuggestion.","_highlight.","init.toggleDrawerAndOverlay","DART_CLOSURE_PROPERTY_NAME","TypeErrorDecoder.noSuchMethodPattern","TypeErrorDecoder.notClosurePattern","TypeErrorDecoder.nullCallPattern","TypeErrorDecoder.nullLiteralCallPattern","TypeErrorDecoder.undefinedCallPattern","TypeErrorDecoder.undefinedLiteralCallPattern","TypeErrorDecoder.nullPropertyPattern","TypeErrorDecoder.nullLiteralPropertyPattern","TypeErrorDecoder.undefinedPropertyPattern","TypeErrorDecoder.undefinedLiteralPropertyPattern","_AsyncRun._scheduleImmediateClosure","Utf8Decoder._decoder","Utf8Decoder._decoderNonfatal","_Base64Decoder._inverseAlphabet","_Uri._needsNoEncoding","_hashSeed","_scannerTables","_Html5NodeValidator._allowedElements","CssClassSetImpl._validTokenRE","_htmlBase","setDispatchProperty","JS_INTEROP_INTERCEPTOR_TAG","init_closure","fromTearOff","StaticClosure","BoundClosure","forwardCallTo","_computeSignatureFunctionNewRti","fieldADI","TypeError","objectTypeName","_objectTypeNameNewRti","Object","iterableToFullString","StringBuffer","toStringVisiting","_writeAll","ArrayIterator","","safeToString","Closure","ListIterator","withLength","IndexError","value","AudioParamMap_keys_closure","_empty","LinkedHashMapCell","JsLinkedHashMap","mapToString","MapBase_mapToString_closure","MapBase","_identityHashCodeProperty","hash","combine","finish","eval","create","parse","handleDigit","handleIdentifier","toType","_lookupGenericFunctionParameterRti","_lookupTerminalRti","handleTypeArguments","handleExtendedOperations","_lookupStarRti","_lookupQuestionRti","_lookupFutureOrRti","handleArguments","toTypes","toTypesNamed","collectArray","_FunctionParameters","_lookupFunctionRti","_lookupRecordRti","_canonicalRecipeJoin","Rti","_installTypeTests","_canonicalRecipeJoinNamed","_createFutureOrRti","Future","_lookupInterfaceRti","_createQuestionRti","_getQuestionFromStar","_createStarRti","_lookupGenericFunctionRti","_lookupBindingRti","_createGenericFunctionRti","newArrayOrEmpty","indexToType","findRule","_getCanonicalRecipe","evalInEnvironment","LinkedHashMapKeyIterable","iterableToShortString","checkNotNegative","range","RangeError","RtcStatsReport_keys_closure","MidiOutputMap_keys_closure","MidiInputMap_keys_closure","Storage_keys_closure","FixedSizeListIterator","initNativeDispatchFlag","_JS_INTEROP_INTERCEPTOR_TAG","getTagFunction","dispatchRecordsForInstanceTags","interceptorsForUncacheableTags","alternateTagFunction","JavaScriptIndexingBehavior","prototypeForTagFunction","initHooks_closure","LateError","_CyclicInitializationError","evalRecipe","forwardInterceptedCallTo","cspForwardCall","receiverOf","_interceptorFieldNameCache","_computeFieldNamed","_receiverFieldNameCache","cspForwardInterceptedCall","interceptorOf","RuntimeError","markFixedList","forType","_TypeError","compose","findErasedType","fromMessage","_getFutureFromFutureOr","_isUnionOfFunctionType","List","bind","_Exception","init_disableSearch","MappedListIterable","ListBase","_IndexItem","ListIterable","of","_EnclosedBy","Iterable","CastIterator","EfficientLengthIterable","_EfficientLengthCastIterable","CastList","_current","_wrapJsFunctionForAsync_closure","_StreamIterator","ExceptionAndStackTrace","_StackTrace","NullThrownFromJavaScriptException","NullError","UnknownJsTypeError","StackOverflowError","extractPattern","TypeErrorDecoder","provokePropertyErrorOn","provokeCallErrorOn","_awaitOnObject_closure","_Future","_FutureListener","_Future__addListener_closure","_AsyncCallbackEntry","_lastCallback","_nextCallback","_isInCallbackLoop","_lastPriorityCallback","_initializeScheduleImmediate","_AsyncRun__initializeScheduleImmediate_internalCallback","_AsyncRun__initializeScheduleImmediate_closure","_TimerImpl_internalCallback","_AsyncRun__scheduleImmediateWithSetImmediate_internalCallback","_AsyncRun__scheduleImmediateJsOverride_internalCallback","_RootZone_bindCallbackGuarded_closure","_rootHandleError_closure","_throw","_propagateToListeners","_Future__propagateToListeners_handleWhenCompleteCallback","_Future__propagateToListeners_handleValueCallback","_Future__propagateToListeners_handleError","_chainCoreFuture","_Future__prependListeners_closure","defaultStackTrace","_Future__propagateToListeners_handleWhenCompleteCallback_closure","_AsyncAwaitCompleter","_Future__asyncCompleteError_closure","_Future__chainFuture_closure","_Future__chainForeignFuture_closure","_Future__asyncCompleteWithValue_closure","_Search_initialize_closure","_suggestionLimit","_suggestionLength","_containerMap","MappedIterator","EfficientLengthMappedIterable","_createSuggestion_closure","_defaultValidator","NodeValidatorBuilder","_defaultSanitizer","_ValidatingTreeSanitizer","_parseDocument","_parseRange","_ValidatingTreeSanitizer_sanitizeTree_walk","_safeTagName","_ElementAttributeMap","NodeValidatorBuilder_allowsAttribute_closure","_attributeValidators","NodeValidatorBuilder_allowsElement_closure","from","_LinkedHashSet","_newHashTable","_LinkedHashSetCell","_TemplatingNodeValidator_closure","_SimpleNodeValidator_closure","WhereIterable","WhereIterator","_SameOriginUriPolicy","FilteredElementList","_ChildNodeListLazy","_addAll","JSArray","FilteredElementList__iterable_closure","Element","_SvgNodeValidator","html","Element_Element$html_closure","noElement","tooMany","_highlight_closure","_AllMatchesIterator","checkValidRange","_MatchImplementation","makeNative","JSSyntaxRegExp","AttributeClassSet","_skipLeadingWhitespace","_skipTrailingWhitespace","_isWhitespace","CssClassSetImpl_add_closure","_ElementCssClassSet","_literal","_Search_setEventListeners_closure","_DataAttributeMap","_DataAttributeMap_keys_closure","filled","growable","fixed","markFixed","_DataAttributeMap_forEach_closure","_findMatches_score","_findMatches_closure","sort","_doSort","_insertionSort","_dualPivotQuicksort","_SearchMatch","_parse","_SimpleUri","_makeScheme","_fail","_makeUserInfo","_makeHost","parseInt","_makePort","_makePath","_makeQuery","_makeFragment","_internal","_defaultPort","splitQueryString","UnmodifiableMapView","Uri_splitQueryString_closure","_uriDecode","_throwUnmodifiable","CodeUnits","_hexCharPairToByte","_convertIntercepted","_Utf8Decoder","_makeUint8List","errorDescription","stringFromCharCode","fromCharCodes","stringFromNativeUint8List","_convertInterceptedUint8List","_useTextDecoder","Utf8Decoder__decoder_closure","Utf8Decoder__decoderNonfatal_closure","_Uri","_normalizeOrSubstring","_normalize","_normalizeEscape","_escapeChar","_Uri__makeQuery_closure","_Uri__makeQuery_writeParameter","_uriEncode","_Utf8Encoder","_normalizePath","_normalizeRelativePath","_removeDotSegments","_mayContainDotSegments","_escapeScheme","_isAlphabeticCharacter","_checkZoneID","_normalizeZoneID","parseIPv6Address","_normalizeRegName","Uri_parseIPv6Address_error","Uri_parseIPv6Address_parseHex","_parseIPv4Address","Uri__parseIPv4Address_error","_canonicalizeScheme","_createTables_build","_createTables_setChars","_createTables_setRange","_DataUri","UriData","_checkPadding","_create1","_of","_JsonMap","_JsonMapKeyIterable","_AsyncCompleter","promiseToFuture_closure","NullRejectionException","_htmlBase_closure","init_toggleDrawerAndOverlay","objectAssign","JS_CONST","Interceptor","TrustedGetRuntimeType","JSBool","Null","JSNull","JavaScriptObject","LegacyJavaScriptObject","PlainJavaScriptObject","UnknownJavaScriptObject","Function","JavaScriptFunction","JSUnmodifiableArray","double","num","JSNumber","int","JSInt","JSNumNotInt","String","JSString","_CastIterableBase","_CastListBase","SentinelValue","FixedLengthListMixin","UnmodifiableListMixin","UnmodifiableListBase","Map","ConstantMap","ConstantStringMap","StackTrace","Closure0Args","Closure2Args","TearOffClosure","RegExpMatch","Match","NativeByteBuffer","NativeTypedData","NativeByteData","NativeTypedArray","NativeTypedArrayOfDouble","NativeTypedArrayOfInt","NativeFloat32List","NativeFloat64List","NativeInt16List","NativeInt32List","NativeInt8List","NativeUint16List","NativeUint32List","NativeUint8ClampedList","Uint8List","NativeUint8List","_Error","Error","_Completer","_Zone","_RootZone","_UnmodifiableMapMixin","MapView","Set","SetBase","_SetBase","Base64Codec","Base64Encoder","Codec","Converter","Encoding","HtmlEscapeMode","HtmlEscape","JsonCodec","JsonDecoder","Utf8Codec","Utf8Encoder","Utf8Decoder","OutOfMemoryError","_StringStackTrace","Uri","HtmlElement","AbortPaymentEvent","AbsoluteOrientationSensor","AccessibleNodeList","AnchorElement","AnimationEffectReadOnly","AreaElement","AudioElement","BaseElement","Blob","BodyElement","CDataSection","CharacterData","CompositionEvent","CssCharsetRule","CssImageValue","CssMatrixComponent","CssPerspective","CssResourceValue","CssRule","CssStyleDeclaration","CssStyleDeclarationBase","CssStyleSheet","CssStyleValue","CssTransformComponent","CssTransformValue","CssUnparsedValue","CssurlImageValue","DataTransferItemList","Document","DocumentFragment","DomException","DomRectList","Rectangle","DomRectReadOnly","DomStringList","DomTokenList","bool","Node","Event","EventTarget","ExtendableEvent","File","FileList","FileWriter","FormElement","Gamepad","History","HtmlCollection","HtmlDocument","HtmlFormControlsCollection","InputElement","KeyboardEvent","KeyframeEffect","KeyframeEffectReadOnly","Location","MathMLElement","MediaElement","MediaList","MidiInputMap","MidiOutputMap","MimeType","MimeTypeArray","NodeList","OrientationSensor","Plugin","PluginArray","RtcStatsReport","SelectElement","Sensor","ShadowRoot","SourceBuffer","SourceBufferList","SpeechGrammar","SpeechGrammarList","SpeechRecognitionResult","Storage","StyleSheet","TableElement","TableRowElement","TableSectionElement","TemplateElement","Text","TextAreaElement","TextTrack","TextTrackCue","TextTrackCueList","TextTrackList","TimeRanges","Touch","TouchList","TrackDefaultList","UIEvent","Url","VideoTrackList","VttCue","XmlDocument","_Attr","_CssRuleList","_DomRect","_GamepadList","_NamedNodeMap","_SpeechRecognitionResultList","_StyleSheetList","_AttributeMap","NodeValidator","ImmutableListMixin","CssClassSetImpl","AElement","GraphicsElement","Length","LengthList","Number","NumberList","PointList","ScriptElement","StringList","SvgElement","Transform","TransformList","AudioBuffer","AudioContext","AudioParamMap","AudioTrackList","BaseAudioContext","OfflineAudioContext","__CastListBase&_CastIterableBase&ListMixin","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin&FixedLengthListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin&FixedLengthListMixin","_UnmodifiableMapView&MapView&_UnmodifiableMapMixin","_CssStyleDeclaration&JavaScriptObject&CssStyleDeclarationBase","_DomRectList&JavaScriptObject&ListMixin","_DomRectList&JavaScriptObject&ListMixin&ImmutableListMixin","_DomStringList&JavaScriptObject&ListMixin","_DomStringList&JavaScriptObject&ListMixin&ImmutableListMixin","_FileList&JavaScriptObject&ListMixin","_FileList&JavaScriptObject&ListMixin&ImmutableListMixin","_HtmlCollection&JavaScriptObject&ListMixin","_HtmlCollection&JavaScriptObject&ListMixin&ImmutableListMixin","_MidiInputMap&JavaScriptObject&MapMixin","_MidiOutputMap&JavaScriptObject&MapMixin","_MimeTypeArray&JavaScriptObject&ListMixin","_MimeTypeArray&JavaScriptObject&ListMixin&ImmutableListMixin","_NodeList&JavaScriptObject&ListMixin","_NodeList&JavaScriptObject&ListMixin&ImmutableListMixin","_PluginArray&JavaScriptObject&ListMixin","_PluginArray&JavaScriptObject&ListMixin&ImmutableListMixin","_RtcStatsReport&JavaScriptObject&MapMixin","_SourceBufferList&EventTarget&ListMixin","_SourceBufferList&EventTarget&ListMixin&ImmutableListMixin","_SpeechGrammarList&JavaScriptObject&ListMixin","_SpeechGrammarList&JavaScriptObject&ListMixin&ImmutableListMixin","_Storage&JavaScriptObject&MapMixin","_TextTrackCueList&JavaScriptObject&ListMixin","_TextTrackCueList&JavaScriptObject&ListMixin&ImmutableListMixin","_TextTrackList&EventTarget&ListMixin","_TextTrackList&EventTarget&ListMixin&ImmutableListMixin","_TouchList&JavaScriptObject&ListMixin","_TouchList&JavaScriptObject&ListMixin&ImmutableListMixin","__CssRuleList&JavaScriptObject&ListMixin","__CssRuleList&JavaScriptObject&ListMixin&ImmutableListMixin","__GamepadList&JavaScriptObject&ListMixin","__GamepadList&JavaScriptObject&ListMixin&ImmutableListMixin","__NamedNodeMap&JavaScriptObject&ListMixin","__NamedNodeMap&JavaScriptObject&ListMixin&ImmutableListMixin","__SpeechRecognitionResultList&JavaScriptObject&ListMixin","__SpeechRecognitionResultList&JavaScriptObject&ListMixin&ImmutableListMixin","__StyleSheetList&JavaScriptObject&ListMixin","__StyleSheetList&JavaScriptObject&ListMixin&ImmutableListMixin","_LengthList&JavaScriptObject&ListMixin","_LengthList&JavaScriptObject&ListMixin&ImmutableListMixin","_NumberList&JavaScriptObject&ListMixin","_NumberList&JavaScriptObject&ListMixin&ImmutableListMixin","_StringList&JavaScriptObject&ListMixin","_StringList&JavaScriptObject&ListMixin&ImmutableListMixin","_TransformList&JavaScriptObject&ListMixin","_TransformList&JavaScriptObject&ListMixin&ImmutableListMixin","_AudioParamMap&JavaScriptObject&MapMixin","_compareAny","addRules","addErasedTypes","_scheduleImmediateJsOverride","_scheduleImmediateWithSetImmediate","_scheduleImmediateWithTimer","_standardAttributeValidator","_uriAttributeValidator","_#fromMap#tearOff","noSuchMethodPattern","notClosurePattern","nullCallPattern","nullLiteralCallPattern","undefinedCallPattern","undefinedLiteralCallPattern","nullPropertyPattern","nullLiteralPropertyPattern","undefinedPropertyPattern","undefinedLiteralPropertyPattern","_scheduleImmediateClosure","_decoder","_decoderNonfatal","_inverseAlphabet","_needsNoEncoding","_allowedElements","_validTokenRE","ByteBuffer","ByteData","Float32List","Float64List","Int16List","Int32List","Int8List","Uint16List","Uint32List","Uint8ClampedList","Record","$intercepted$toString0$IJavaScriptFunctionLegacyJavaScriptObjectabnsux","getInterceptor$","$intercepted$get$iterator$ax","getInterceptor$asx","$intercepted$get$length$asx","$intercepted$forEach1$ax","$intercepted$$eq$Iux","getInterceptor$x","$intercepted$get$hashCode$ILegacyJavaScriptObjectabnsux","$intercepted$__$asx","$intercepted$get$runtimeType$Ibdinsux","$intercepted$cast10$ax","search__IndexItem___fromMap_tearOff$closure","$intercepted$elementAt1$ax","async___startMicrotaskLoop$closure","async__AsyncRun__scheduleImmediateJsOverride$closure","async__AsyncRun__scheduleImmediateWithSetImmediate$closure","async__AsyncRun__scheduleImmediateWithTimer$closure","$intercepted$get$classes$x","$intercepted$set$innerHtml$x","$intercepted$_clearChildren0$x","$intercepted$remove0$x","$intercepted$get$attributes$x","$intercepted$toLowerCase0$s","html__Html5NodeValidator__standardAttributeValidator$closure","html__Html5NodeValidator__uriAttributeValidator$closure","$intercepted$get$innerHtml$x","$intercepted$trim0$s","$intercepted$_replaceChild2$x","_interceptors_JSArray__compareAny$closure","$intercepted$compareTo1$ns","$intercepted$replaceWith1$x","$intercepted$___$ax","$intercepted$addEventListener2$x","getInterceptor$ax","getInterceptor$s","getInterceptor$ns","toString","allowsAttribute","where","createFragment","addEventListener","width","height","dart:html#_height","dart:html#_width","moveNext","current","length","elementAt","dart:core#_errorName","dart:core#_errorExplanation","invalidValue","keys","forEach","dart:_js_helper#_newHashTable","dart:_js_helper#_addHashTableEntry","internalSet","internalComputeHashCode","dart:_js_helper#_newLinkedCell","internalFindBucketIndex","dart:_js_helper#_modified","dart:_rti#_eval","dart:_rti#_bind","internalGet","hashCode","iterator","dart:html#_addEventListener","then","decode","queryParameters","first","initialize","dart:_internal#_source","registerBinaryCallback","completeError","dart:_interceptors#_shrOtherPositive","matchTypeError","dart:_interceptors#_shrBothPositive","complete","dart:async#_thenAwait","dart:async#_addListener","dart:async#_cloneResult","bindCallbackGuarded","runGuarded","dart:async#_reverseListeners","dart:async#_removeListeners","dart:async#_prependListeners","matchesErrorTest","handleError","stackTrace","runBinary","runUnary","run","dart:async#_completeError","dart:async#_asyncCompleteError","dart:async#_setErrorObject","dart:async#_asyncComplete","dart:async#_chainFuture","dart:async#_completeWithValue","dart:async#_chainForeignFuture","dart:async#_asyncCompleteWithValue","add","replaceWith","listBox","setEventListeners","contains","convert","handleSearch","showSearchResultPage","hideSuggestions","updateSuggestions","sublist","clear","searchResults","values","moreResults","classes","innerHtml=","setInnerHtml","sanitizeTree","sanitizeNode","dart:html#_sanitizeUntrustedElement","dart:html#_removeNode","dart:html#_sanitizeElement","allowsElement","any","allowsUri","dart:collection#_addHashTableEntry","dart:collection#_add","dart:collection#_computeHashCode","dart:collection#_newLinkedCell","dart:collection#_findBucketIndex","dart:collection#_modified","dart:collection#_contains","addAll","dart:html_common#_iterable","single","startsWith","substring","dart:_js_helper#_execGlobal","end","codeUnitAt","dart:_js_helper#_nativeGlobalVersion","dart:_interceptors#_codeUnitAt","readClasses","dart:html_common#_validateToken","modify","writeClasses","join","replace","dart:core#_text","dart:convert#_convert","dart:html#_toHyphenedName","clearSearch","remove","round","dart:html#_toCamelCase","dart:collection#_removeHashTableEntry","dart:collection#_remove","dart:collection#_unlinkCell","isNegative","dart:_interceptors#_tdivFast","dart:_interceptors#_tdivSlow","containsKey","uri","replaceRange","scheme","hasAuthority","userInfo","host","port","path","hasQuery","query","hasFragment","fragment","hasPort","dart:core#_computeScheme","fold","indexOf","convertGeneral","dart:convert#_convertRecursive","decodeGeneral","dart:_interceptors#_shrReceiverPositive","encoder","dart:convert#_fillBuffer","dart:convert#_writeReplacementCharacter","dart:convert#_writeSurrogate","last","fillRange","normalize","decoder","dart:convert#_computeKeys","dart:convert#_upgrade","dart:convert#_process","toggle","runtimeType","cast","compareTo","toLowerCase","trim","call","attributes","dart:html#_clearChildren","dart:html#_replaceChild","$add","$index","$indexSet","$mul","$mod","$eq","_","instanceTypeName","constructorNameFallback","objectToHumanReadableString","interceptorFieldName","receiverFieldName","_rtiEval","propertyGet","start","write","_setPrecomputed1","_lookupFutureRti","asString","asBool","allocate","_setRequiredPositional","_setOptionalPositional","_setNamed","asRti","instanceOf","_instanceFunctionType","_getRuntimeTypeOfArrayAsRti","_setCachedRuntimeType","_getKind","_setSpecializedTestResource","_recordSpecializedIsTest","_setIsTestFunction","_setAsCheckFunction","isSubtype","_getSpecializedTestResource","_isCheck","_getReturnType","_getPrimary","_getGenericFunctionParameterIndex","unmangleGlobalNameIfPreservedAnyways","_lookupErasedRti","_parseRecipe","_getEvalCache","_setEvalCache","_getBindCache","_setBindCache","_createTerminalRti","_setKind","_setCanonicalRecipe","_canonicalRecipeOfStar","_recipeJoin","_setPrimary","_canonicalRecipeOfQuestion","_canonicalRecipeOfFutureOr","_createGenericFunctionParameterRti","_canonicalRecipeOfInterface","_createInterfaceRti","_setRest","arrayConcat","_canonicalRecipeOfBinding","_recipeJoin5","_createBindingRti","_canonicalRecipeOfRecord","_createRecordRti","_canonicalRecipeOfFunction","_canonicalRecipeOfFunctionParameters","_createFunctionRti","_canonicalRecipeOfGenericFunction","_recipeJoin4","charCodeAt","toGenericFunctionParameter","_lookupDynamicRti","_lookupVoidRti","pushStackFrame","push","setPosition","handleOptionalGroup","arraySplice","handleNamedGroup","collectNamed","handleStartRecord","isDigit","evalTypeVariable","_lookupNeverRti","_lookupAnyRti","stringLessThan","lookupSupertype","_getInterfaceTypeArguments","_getRest","_createTimer","_future","future","_setValue","_isChained","_chainSource","_setChained","_hasError","_error","handleUncaughtError","handlesValue","_zone","handlesComplete","shouldChain","_isComplete","_removeListeners","_cloneResult","_setErrorObject","_scheduleImmediate","tryParse","makeListFixedLength","_stringFromUint8List","isEmpty","_writeOne","hasMatch","checkString","encode","writeCharCode","fromCharCode","_objectToString","writeAll","hash4","_startsWithData","notSimple","_writeString","_isZoneIDChar","_isRegNameChar","_isGeneralDelimiter","_isSchemeCharacter","_isUnreservedChar","isNotEmpty","codeUnits","nodes","_hiddenAnchor","allowedElements","allowedAttributes","allowedUriAttributes","map","isJavaScriptSimpleObject","fetch","toList","suggestionElements","suggestionsInfo","setAttribute","innerHtml","[]=","replaceAllMapped","splitMapJoin","fromMap","[]","compare","getRuntimeTypeOfInterceptorNotArray","castFrom","checkGrowable","checkMutable","listToString","_codeUnitAt","stringReplaceRangeUnchecked","_fetch","_containsTableEntry","_getBucket","_isMultiLine","group","isUnicode","_isUnicode","_isTrailSurrogate","_rtiBind","_mayComplete","_completeError","hasErrorTest","_errorTest","thenAwait","_mayAddListener","_setError","handleWhenComplete","_whenCompleteAction","handleValue","_onValue","hasErrorCallback","_onError","throwWithStackTrace","setToString","_isUpgraded","parseHexByte","withBufferSize","_combineSurrogatePair","_isLeadSurrogate","convertSingle","extractStackTrace","decodeQueryComponent","_initializeText","_writeAuthority","encodeQueryComponent","_computeUri","_isHttp","_isHttps","_isFile","_isPackage","left","top","common","_validators","allowHtml5","allowTemplating","head","_canBeUsedToCreateContextualFragment","_cannotBeUsedToCreateContextualFragment","_getItem","getAttribute","_matches","_attr","_strip","_classListLength","_add","_remove","_toggle","_toggleDefault","_toListGrowable","_removeNode","_filtered","children","allowSvg","printToConsole","jsonDecode","FetchResponseExtension|get#text","removeSelectedElement","showSuggestions","showEnterMessage","dataset","scrollTop","scrollHeight","offsetTop","offsetHeight","scrollIntoView","provokeCallErrorOnNull","provokeCallErrorOnUndefined","provokePropertyErrorOnNull","provokePropertyErrorOnUndefined","fromList","identityHashCode","patchInstance"], + "mappings": "A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqEUA,uBACKA,KACTA,OAUJA,yCAPAA;AADEA,OANFA,yCAOAA,C;EC3DAC,6EAEuEA,C;ECmGrEC,IAAwBA;AAM1BA,QAAgBA,QAIlBA;AAHgBA;AACdA,iBAAgCA,WAElCA;AADEA,QACFA,C;EAuDaC,MACSA;AACAA;AAClBA,cACFA,C;EAEWC,IACSA;AACXA;AACPA,kCACFA,C;EA6iBAC,QAIAA,QACFA,C;EAwSKC,IACHA;OAAoBA,GAAiBA,YAArCA,gBAAoBA,GACIA,IAAsBA,QAGhDA;AADEA,QACFA,C;EC3rBUC,UACOA,YACXA,OAsBJA,2CAnBAA;AADEA,OAGFA,2CAFAA,C;EAiqBkBC,GAAeA,OC5cjCA,sBD4cyDA,C;EAEvCC,GAAaA,OC9c/BA,6BD8c8DA,C;EE5+BlDC,MACVA,SAAgBA,YAClBA,C;EAqBYC,UAEVA,WACEA;KAEAA,aAEJA,C;EAEYC,UAEVA;AAOEA,oBAPFA,UACWA;AAEDA;AAARA,UAAsBA,eAAQA;AACnBA;AAATA,QAAOA;AADDA,IAIRA,WAEJA,C;EAEYC,cAKgBA,4DAGPA,8BAITA,uBACAA,aACAA,aACAA,aACAA;AAGNA,iBAUQA;AAKAA;IAVRA,mBAeaA;AAUAA;KApBbA,kBAUQA;AALKA;IAAbA,kBAeQA;AALAA;IALRA,kBA+BQA;AA1BKA;IAAbA,mBAUaA;AAKLA;KAVRA,kBAKQA;AAKKA;IALbA,kBAWSA;AAMDA;IAZRA,mBAOSA;AAMDA;KAFZA;AACAA;AACAA;AAEAA,SAAYA;AACZA,SAAYA;AAEDA;AACCA;AAEoBA,QAAPA,gBAiBvBA,kBACWA;AACEA;AACXA,SAAeA;AACfA,QACEA,UACEA,SAAOA;AACPA,YAEFA,cAWAA,KACSA,QAAQA;AACfA,QACEA;AAGAA,cAUEA;AATGA,QAELA,SAAOA;AACLA;AAAFA,SAAYA;AACZA;;;AACAA,WAGAA,SAAOA;AACPA;;AAGAA,SAnBJA,UA0CJA,kBACWA;AACSA,iBAEhBA,UACEA,SAAOA;AACPA,YAEFA,SAEkBA,sBAEhBA,IACaA,SAAQA,iBAEjBA;AACAA,OAAeA;AAGfA,cAYIA;AATGA,SAAQA,gBAGbA,SAAOA;AACLA;AAAFA,SAAYA;AACZA;SAGAA,SAAOA;AACPA;AAEFA,OA2BRA,KAdQA;AAAZA,UAAUA;AACVA;AACaA;AAAbA,UAAWA;AACXA;AAQAA;AACAA;AAEAA,KAGEA,MAqFJA;AA9EEA,kBACgBA,KAAPA,MAAQA,iBACbA;KAEYA,KAAPA,MAAQA,kBACbA;AAmBFA,kBACWA;AACSA,mBAEhBA,UACEA,SAAOA;AACPA,YAEFA,SAEkBA,wBAEhBA,IACaA,SAAQA,mBAEjBA;AACAA,OAAeA;AAGfA,cAYIA;AATGA,SAAQA,gBAGbA,SAAOA;AACLA;AAAFA,SAAYA;AACZA;SAGAA,SAAOA;AACPA;AAEFA,OAYVA,qBAOAA,eAEJA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECpVaC,GACXA,UAAMA,sCACRA,C;ECoDKC,8BAEDA;AAAJA,WAAuBA,QAGzBA;AAF+BA,mBAE/BA,C;EAuBKC,MACHA;eAEMA;AAAJA,WAAoBA,QAGxBA,CADEA,OAAcA,QAChBA,C;CAEOC,IACLA;sBAAqBA,QAmBvBA;AAlBEA,uBACEA,SAEEA,UAeNA,MAbSA,UACLA,YAYJA;KAXSA,UACLA,aAUJA;KATSA,WACLA,YAQJA;AANeA;AAKbA,QACFA,C;EA8HaC,aAELA;;GAEAA;AAAJA;OAIAA,QACFA,C;EAKYC,MAONA;AAAJA,WAIEA,QA0DJA;GAxDyBA;AACvBA,YACEA,WAEEA,qBAoDNA;IAlDQA,UAEFA,qBAgDNA;AA9CIA,QA8CJA,CAxCEA,aACEA,UAAUA;AAEZA,mBAEEA,qBAmCJA;AA/BEA;;OAqBiCA,YAA/BA,QACsBA,qBAElBA,QAORA,CADEA,oBACFA,C;EAgEcC,IACZA,OAAOA,OACTA,C;EAOcC,IACRA;ACqXCA,iBDnXoCA,GACvCA,WCiXMA,aD7UVA;AAjCoBA;AAGPA,+BAkBgBA,GExMzBA;AFwMAA,wBAAwCA,QAY5CA;GAV6CA;AAAzCA,4BAEMA;AAAJA,4CAEEA,QAMRA,EADEA,OC+UKA,IADGA,aD7UVA,C;EAecC,IACkCA,+BAC5CA,OAAOA,OAcXA;AAZEA,sBACEA,wBAWJA;AAPWA,qBAAPA,aAOJA;AADEA,sBAvBcA,WAwBhBA,C;EAyFcC,QAGZA;uBAAuDA,QACrDA,wCAcJA;AAXEA,sBACkBA;AAOZA;mDAENA,QACFA,C;EAEcC,IACZA;SACEA,YACEA,6BAYNA;AATIA,eACaA;AAGXA,4BADqBA,qCAM3BA,EADEA,UAAUA,2BACZA,C;EAoeIC,MACJA;YAAmBA,OHl5BnBA,oBG65BFA;AAVyBA;AAIvBA,aACEA,OAAWA,YAKfA;AADEA,OAAWA,SACbA,C;EAKMC,QAIJA,OACEA,OAAWA,uBAYfA;AAVEA,WAIEA,YACEA,OAAWA,qBAKjBA;AADEA,OHl7BAA,wBGm7BFA,C;EAOcC,IACZA,OH37BAA,uBG47BFA,C;CAiCAC,IACEA;WHzhCIA;AG4hC8BA;;;AAElCA;eAqBOC;AAPPD,QACFA,C;EAGAC,GAGEA,+BACFA,C;EAMAC,UACwBA,MACxBA,C;EA2BAC,IACEA,UAAUA,QACZA,C;EAqJSC,IAA+BA;AAc1BA,OAAqBA;AAO3BA;AAAJA,WAA2BA;AA2BvBA;AAAWA;AAAeA;AAAMA;AAAQA;AAD5CA,OArHFA,mRAsHwDA,4EACxDA,C;EAMcC,IAmDZA,OAA8BA;mEAChCA,C;EAkCcC,IASZA,OAA8BA,mEAChCA,C;EAiDAC;sCAGuEA,C;EA+ClEC,IAGLA,WACEA,OA7BFA,WA2CFA;AAVWA,qBAAPA,eAA6BA,GAUjCA;AANEA,uBAA6CA,QAM/CA;AAJEA,wBACEA,OAAOA,uBAGXA;AADEA,OAAOA,OACTA,C;EAKOC,MACKA,gBAEJA;AAINA,QACFA,C;EAEOC,IACLA;qBACEA,QAsGJA;GA9EwCA;gDATlBA;;AACMA,4BAKtBA,mBAEIA,OAAOA,OACCA,KAAsBA,2BA8ExCA;mBA1E8BA;AADpBA,OAAOA,OA9HfA,+BAyMFA,EArEEA,2BAE8BA;AACMA;AACFA;AACOA;AACNA;AACOA;AACJA;AACOA;AACNA;AACOA;AAC/BA;AAAbA,WACEA,OAAOA,OAAmBA,UAwDhCA;KAvDwBA;AAAbA,YAMEA;AAAPA,cAA0BA,UAiDhCA,MAhDwBA;AAAbA,YACMA;AADNA,YAEMA;AAFNA,YAGMA;AAHNA,YAIMA;AAJNA,YAKMA;AALNA,YAMMA;AANNA,YAOMA;AAPNA,eAxJOA;AAwJPA,KAQLA,OAAOA,OAjKXA,+BAyMFA,EAlCIA,OAAOA,OAvITA,kCAyKFA,CA9BEA,gFAEIA,OHloCEA,UG8pCRA;yDApBQA;AAGJA,OAAOA,OHrjDTA,qEGskDFA,CAbEA,gEAIEA,gDACEA,OHtpCEA,UG8pCRA;AADEA,QACFA,C;EAqBWC,IACTA;qBACEA,QAAiBA,EAOrBA;AALEA,WAAuBA,OAUvBA,WALFA;GAHMA;AAAJA,WAAmBA,QAGrBA;AADEA,sBAMAA,WALFA,C;EAmBIC,IACFA,+BACEA,OAAcA,OAIlBA;KAFIA,OAAkBA,OAEtBA,C;EAIAC;AAKEA,iBACoCA;AACEA;AACpCA,OAAOA,KAAOA,KAEhBA,QACFA,C;EAuCAC,cAEEA,iBAEIA,OAAOA,MAWbA;OATMA,OAAOA,OASbA;OAPMA,OAAOA,SAObA;OALMA,OAAOA,WAKbA;OAHMA,OAAOA,aAGbA,CADEA,UG51DAC,gEH61DFD,C;EAIAE,MACEA;WAAqBA,WAkBvBA;GAhByBA;AAAvBA,OAAkCA,QAgBpCA;kEAF0CA;;AACxCA,QACFA,C;EA4BSC,iCAmC6BA,QAmClBA,QAmCoBA,QAAeA,iBAxEtBA,QACKA,OACWA,OAkFfA,QAlB4BA;EAzDWA;kBAib7DA,gDAgCVA;;;;;;;;AApZEA;KAEMA;;AAWgBA,KAJlBA;;AAOJA,eAAgCA,QAAhCA,QAIMA;AAAJA;AAWsBA;AAAUA,SAZzBA;GASHA;AAAJA,YACEA,KAEMA;OAIRA;OAW2CA;OAMzCA;AAEJA,QACFA,C;EAEOC,QAELA,sBAEEA,QAoBJA;AAlBEA,uBAEEA,KAEEA;AAGFA,iEAWJA,CADEA,6CACFA,C;EAEOC;AAiBLA,sBAEIA,iEAuENA;OA7DMA,mEA6DNA;OAnDMA,uEAmDNA;OAzCMA,2EAyCNA;OA/BMA,+EA+BNA;OArBMA,mFAqBNA;QAVMA,+EAUNA,E;EAIOC,UAELA;KACEA,OAAOA,WA4BXA;GAzBoCA;AACzBA;AAAPA,QAwBJA,C;EAEOC;AAMLA,sBAIIA,UAwZNA;OAtZMA,4EA+ENA;OApEMA,+EAoENA;OAzDMA,mFAyDNA;OA9CMA,uFA8CNA;OAnCMA,2FAmCNA;OAxBMA,+FAwBNA;QAbMA;;kCAaNA,E;EAEOC,QAEEA;IA8ILA,UAA+BA;IAJ/BA,UAA4BA;GArIIA;AACzBA;AAAPA,QAwBJA,C;EAwBFC,IACEA,OAAeA,OACjBA,C;EAoESC,MACLA,OC1/DeC,oBA2BDD,MD+9DuBA,MACvCA,C;EAIOE,IAAoCA,QAAQA,EAASA,C;EAIrDC,IAAuCA,QAAQA,EAAYA,C;EAYpDC,IA/CdA,iDAiDsBA;OAEMA,YAA1BA,YACaA;YAETA,QAINA,CADEA,UAAMA,yCACRA,C;EA4IGC,IACHA,UAaAA,YAZFA,C;EAoEOC,IAELA,yBACFA,C;EElnFKC,6FAQLA,C;EAoEAC,IAE6BA,iBAAdA,aAIYA,GACrBA;AAAJA;AAAoBA,UAmEtBA,IAlEgCA,GAC1BA;AAAJA,WAAyBA,QAiE3BA;qBA5DMA;AAAJA,YACuCA,GAApBA;AACjBA,eAGuBA,GACjBA;AAAJA;AAAoBA,UAsD1BA,IArDgCA,GACtBA;AAAJA,WAAyBA,QAoD/BA;;KA9CEA,WAQEA,WAsCJA;GA9BoCA;GAD9BA;AAAJA,YACWA;CACGA;;AACZA,UA4BJA,CAzBEA,aACcA;AACZA,QAuBJA,CApBEA,YACyBA;sBE5HrBC;AF4HFD,UAmBJA,CAhBEA,WACEA,OAAOA,SAeXA;AAZEA,WAEEA,UAAUA;yBAMaA;sBE3IrBC;AF2IFD,UAIJA,MAFIA,OAAOA,SAEXA,C;EAYAE,MAE+CA;sDAAhCA;AAEbA,QACFA,C;EAEAC,IAGEA,OAAOA,uBACTA,C;EAEAC,eAIkCA;AAAvBA,wBAAPA,cAIJA;KAFIA,OAAOA,mBAEXA,C;EAgBKC,YACSA,IAAwBA,MAGtCA;;AADEA,MACFA,C;EAGKC,GAA6BA;;;AAIhCA;GA/PyBC,AAqQ4CD;;AAErEA;;AAGEA,WAAyBA,QAAzBA,QACYA;AACyBA,GAAvBA;AACZA,YAEeA,UAA+BA;AAC5CA;iBAYNA,WAAyBA,QAAzBA,QAEyCA;4BAEQA;;;;;YAOnDA,C;EAmCKE,GAOiEA,mBAL1CA;AAiBlBA,QACJA,GALIA,MAAsBA,GAFtBA,MADsBA,GAAtBA,MAAsBA,GADtBA,MAAsBA,GADtBA,MAAsBA,GAHtBA,KAAsBA,CAD1BA,IAA+CA;AAqBnDA,2DAE2CA;AAAzCA,wBAGmCA;oBACjCA,2BAE2CA;AAAzCA,wBAoBkBA;;;AATPA;AAEbA;AAEAA,gBACNA,C;EAEAC,MAEEA,OAAwBA,OAC1BA,C;EGhJQC,aAGeA,WAKWA,KAE5BA;AAAJA,WAGEA,WAsBJA;AAnBEA,SACEA,QAkBJA;QAPgBA,QACZA,sBAMJA;AADEA,WACFA,C;EChOSC,uIA0BiCA;AAAtCA,uBAA+CA,QAKjDA;AADEA,UAAUA,+BAA0CA,sBACtDA,C;ECIGC;AAEDA,WAOJA,C;EAgCAC,oCAIIA,8CAGJA;AADEA,QACFA,C;EA8EOC,IAAkCA,QAAMA,C;EAExCC,UDQLC;KCQAD,WDN2BA;WAASA;GA/DgCA;;AE8bnDA,QDxXFA,KAAWA,eCwXTA,IDvXFA;gBCuXEA,QDpXJA,KAAWA;AACxBA,6BACFA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EEiHKE,IACsBA,QAM3BA,C;EAmiBwBC,IAClBA,uBAA6CA,C;EAy4B9CC,QACHA,mBACEA,UAAMA,UAEVA,C;EASIC,QACFA;;;KAIEA,UAAMA;AAGRA,QACFA,C;;;;;;;;;;;;;;;;;;;;ERtqDaC,MAKOA,OAFZA;AAKJA,gBAXIA,mBAYNA,C;EAEWC,MAkkEPA,OA/jEEA;AAIJA,gBArBIA,iBAilE+DA,MA3jErEA,C;EA0DYC,WAENA;AAAJA,uBACEA,OAAOA,SAGXA;AADEA,qBACFA,C;EAqJcC,IAGZA,WACFA,C;EA6EEC,IASFA,OAAiBA,yBACnBA,C;EAoDIC,mDAEMA;AAARA,6CAMIA,QA6ENA;UAzEgCA;AAAtBA;AACJA,SAAuDA,QAwE7DA;AAvEMA,OAAiBA,YAuEvBA;UAnEgCA;AAAtBA;AACJA,SAAuDA,QAkE7DA;AAjEMA,OAAiBA,YAiEvBA;UA7DgCA;AAAtBA;AACJA,SAAuDA,QA4D7DA;AA3DMA,OAAiBA,YA2DvBA;UAvDoBA;AAD0BA;AAExCA,SAEEA,QAoDRA;AAnDMA,OAAiBA,aAmDvBA;WA/CkDA;AAAtBA;GAGSA;AAA3BA;AACJA,gBACyDA,QA0C/DA;AAzCMA,OAAiBA,WAyCvBA;WApCgCA;AAAtBA;GAIcA;AADdA;AAEJA,gBAEEA,QA6BRA;AA5BMA,OAAiBA,WA4BvBA;WAxBkCA;;AAExBA;GAEwCA;AAAtBA;AACtBA,gBAC+CA,QAkBrDA;AAjBMA,OAAiBA,cAiBvBA;WAXUA;AAAJA,QAAmBA,QAWzBA;IALUA;AAAJA,WAAsBA,QAK5BA;AAJMA,QAINA;QAFMA,UAAMA,wDAEZA,C;EAEQC,UAIkBA,eAAgBA;AACxCA,yBAE6CA;AAAtBA;AACrBA,SACEA;OAIJA,YACFA,C;EAEQC,UAKkBA,mBAAgBA;AACxCA,0BAuyFuDA;GAJNA;GA/xFJA;AAAtBA;AACrBA,SACEA;oBAKJA,YACFA,C;EAEoBC,UAKdA,SAA2BA,sBAIAA,KAA3BA,iBAG2BA,KAA3BA;AACJA,uBAEiDA,QAQnDA;AArQMC;CAQSD;CAQAA;CAiBAA;AAmObA,QACFA,C;CAcQE;AAINA,QACFA,C;EAKKC,aAGCA;AAAJA,YACEA,sBACEA,OAAOA,OAabA;AAytFgDA;AA7tF1CA,QAINA,CADEA,WACFA,C;EAOIC,MACFA;AAAQA,4BAytF4BC,KAptFrBD;AACXA,WAAiBA,QAIvBA,CADEA,OAAOA,OACTA,C;EAKIE,IAUOA,iBAgsF2BC,GAhsFlCD,aASJA;oBALIA,OAAOA,OAKXA;AADEA,OAAOA,KADWA,QAEpBA,C;EAIIE,WAqBEA,EA5F2BN;AA4F/BM,WAAiBA,QAUnBA;iCALIA,QAKJA;AADEA,QACFA,C;CAKIC,IAEuCA,OAAlCA;AAAPA,wBACFA,C;EAOIC,WAE0BA,gBACxBA;AAAJA,WAAmBA,QAErBA;AADEA,OAAOA,SACTA,C;EAGIC,MAqBgBA,oBAwmFkBN;;AApmFpCM,QACFA,C;EASIC,aAEwBA,UACNA;AAApBA,uBA3XiBA;AA0YVC;AAZLD,QAGJA,CADEA,QACFA,C;EAOKC,IAEHA,YADUA,OAEZA,C;EAyDIC,IAhFqBA,oBA8lFaT;AA3gFpCS,WAAyBA,QAO3BA;AANaA,YAETA,cAA4BA,EAIhCA;oBAF8BA,OAxDlBA,OA0DZA;AADEA,OAAOA,OACTA,C;EAIKC,IAKUA;AAJbA,gBA3uBMC,YA4uBRD,C;EAQME,IAMAA,WA3jBUA;AA2jBdA,SACEA,QA3vBIC,GAqyBND,WArCFA;AAHgCA;AAdjBA;AAebA,gBA9vBMD,YAgwBRC,C;CA6BKE,IACHA,OAAOA,KAtgBUA,0BAugBnBA,C;EA2BKC,IAGCA;AAGKA,WAAPA,qBA4DJA;AAm0EIA,0BACAA;;KADAA;AA73EFA,KACEA,OAAOA,cAyDXA;GAj3BmDA;AA0zBjDA,SACEA,OAAOA,cAsDXA;AA7CEA,SACEA,OAAOA,cA4CXA;;GAj3BmDA;AA40BjDA,SACEA,OAAOA,cAoCXA;;;;;AAhCEA,WACEA,OAAOA,WA+BXA;AA5BEA,aAWgCA;IAJDA,iBA/2BzBA;AAs3BFA,WACEA,OAAOA,cAafA;AAVMA,OAAOA,cAUbA,OANSA,WAkCKA,QAA0BA,IAAiBA;AAhCrDA,OAAOA,wBAIXA,CAFEA,OAAOA,cAETA,C;EAGKC,SA19BGA;AA49BNA,aACFA,C;EA8BQC;AA+xEJA,0BACAA;KArxEAA;;AALFA;;KAK+BA;AAA7BA,aA1gCIA;AAghCNA,aACFA,C;EAEKC,aAKCA;AAHGA,wCAGEA,SACmBA,uBACIA;KALhCA;KAGSA;KADEA;KADPA;KADJA;QAOFA,C;EAGKC,IAGCA;AACJA,WAAoBA,OAAOA,OAG7BA;AADEA,OAs1DOA,mBAv1DSA,sBAElBA,C;EAQKC,IACHA,WAAoBA,QAMtBA;AADEA,WAAoBA,OACtBA,C;EAGKC,IAGCA;AACJA,WAAoBA,OAAOA,OAY7BA;GAr/BeA;AAm/BKA,iBAmwEkBnB,GAtwElCmB,YAKJA;AADEA,kBACFA,C;EAIKC,IAGCA;AACJA,WAAoBA,OAAOA,OAoB7BA;AAdEA,sBAAgDA,QAclDA;oBAZ8BA,QAY9BA;GAjhCeA;AA+gCKA,iBAuuEkBpB,GA1uElCoB,YAKJA;AADEA,kBACFA,C;EAIQC,IAGFA;AACJA,YAC+BA;AAA7BA,KAAkDA,QAGtDA,gBAF4CA,QAE5CA;AADEA,SACFA,C;EAIQC,IAGFA;AACJA,WACEA,QAGJA;eAF4CA,QAE5CA;AADEA,SACFA,C;EAEKC,MAEHA,UAAiBA,KADOA,OAAgBA,cAE1CA,C;EAqBgBC,MAIZA,OAHiCA,mBAEFA,IADfA,kDAKlBA,C;EAOAC,oCAAqEA,C;CAE7DC,MACNA,OAHFA,uBAGuCA,UACvCA,C;EAaGC,IACCA;AACJA,QAxqCwBA,SAyqCHA,2BACvBA,C;EAIKC,IACHA,cACFA,C;EAIQC,IACNA,WAA6CA,QAE/CA;AADEA,UAAiBA,gBACnBA,C;EAIKC,IACHA,QACFA,C;EAIQC,IACNA,QACFA,C;EAIKC,IACHA,QACFA,C;EAIKC,IACHA,oBACFA,C;EAMKC,IACHA,UAAoBA,QAGtBA;AAFEA,UAAqBA,QAEvBA;AADEA,UAAiBA,cACnBA,C;EAIMC,IACJA,UAAoBA,QAItBA;AAHEA,UAAqBA,QAGvBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,cACnBA,C;EAIMC,IACJA,UAAoBA,QAItBA;AAHEA,UAAqBA,QAGvBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,eACnBA,C;EAIOC,IACLA,sBAAoBA,QAEtBA;AADEA,UAAiBA,gBACnBA,C;EAIQC,IACNA,sBAAoBA,QAGtBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,gBACnBA,C;EAIQC,IACNA,sBAAoBA,QAGtBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,iBACnBA,C;EAIKC,IACHA,4CAEFA,C;EAIIC,6CACkBA,QAEtBA;AADEA,UAAiBA,aACnBA,C;EAIKC,6CACiBA,QAGtBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,aACnBA,C;EAIKC,6CACiBA,QAGtBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,cACnBA,C;EAIKC,IACHA,yBACFA,C;EAIIC,IACFA,sBAAoBA,QAEtBA;AADEA,UAAiBA,aACnBA,C;EAIKC,IACHA,sBAAoBA,QAGtBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,aACnBA,C;EAIKC,IACHA,sBAAoBA,QAGtBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,cACnBA,C;EAIKC,IACHA,yBACFA,C;EAIOC,IACLA,sBAAuBA,QAEzBA;AADEA,UAAiBA,gBACnBA,C;EAIQC,IACNA,sBAAuBA,QAGzBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,gBACnBA,C;EAIQC,IACNA,sBAAuBA,QAGzBA;AAFEA,WAAoBA,QAEtBA;AADEA,UAAiBA,iBACnBA,C;EAEOC,MACEA;AACPA,wCAEMA;AAGNA,QACFA,C;EAEOC,yBAQKA,MAEuBA;AAFjCA,UAEEA,UAAaA,aAmBjBA;GAd+CA;AAATA;;AAGpCA,mCACEA;AAEAA,SAAqBA;AAChBA;AACLA,oBAGAA,IAEFA,aACFA,C;EAEOC,WAEEA;AAGPA,iBAQeA;AANbA,aAC2BA;gBAEWA;IAEVA;AAC5BA,gBACEA;+BAKFA,cAEEA,eAAsBA,GAA8BA;IAErCA;GAy3DZC;AANLD,wCACAA;;KADAA;AAn3DEA,MAEoBA,yBAItBA,YA3BKA;WA/vCoCE;IAgyCIF;GACGA;;GAGAA;;GAEbA;;AAGbA;AAIxBA,kCAEMA;AAKNA,QACEA;AAEAA,4BAEMA;AAINA,QAGFA,QACEA;AAEAA,8BACEA;UAEEA;AAEeA,4BAMnBA,QAGFA,cAEuCA;YAOvCA,yBACFA,C;CAEOG,yBAGDA;AAAJA,SAA4BA,cA4E9BA;AA3EEA,SAA6BA,eA2E/BA;AA1EEA,SAA0BA,YA0E5BA;AAzEEA,SAA2BA,aAyE7BA;AAxEEA,SAAyBA,WAwE3BA;AAtEEA,UAEaA,OAAaA;AAStBA,QA2DNA,CAvDEA,aAE0BA;AAAbA;GAEPA;AAIJA,sCA+CJA,CA5CEA,SAEEA,kBAAmBA,KAAaA,SA0CpCA;AAvCEA,UAESA,QAAeA;AAUNA,GADZA;AAGJA,QAHcA,iCA4BlBA,CAtBEA,UACEA,OAAOA,SAqBXA;AAlBEA,UACEA,OAAOA,cAiBXA;AAdEA,UAGEA,OAAOA,MAAqBA,MAChBA,GAUhBA;AAPEA,cAr6C2CC;AAw6CzCD,QAAOA,EAFqBA,YAMhCA,CADEA,SACFA,C;EAEOE,WSvpD4B5I,AAAA4I,mBTypD7BA;AAAJA,WAAuBA,QAEzBA;AADEA,mBACFA,C;EAwKiBC;KAEbA;AAGAA,QACFA,C;EAEWC,8BAGLA;AAAJA,WACEA,OAAOA,YAcXA;KAbSA,uBAGsCA;AAwKtCA;AAxKsBA;AAC3BA;AAGgBA;AAYTC;AAVPD,QAIJA,MAFIA,QAEJA,C;EAKYC,MACRA,mBAA+CA,C;EAEvCC,MACRA,OAAOA,YAA0CA,C;EAS1CC,QAGLA;AAAJA,WAAmBA,QAIrBA;AA2DoBA,OADGA;;AA3DrBA,QACFA,C;EAEWC,mBAxiDkCA;AA2iD3CA,WAEiCA,GA3iD7BA;AA8iDAA;AAAJA,WAAmBA,QAIrBA;AA6CoBA,OADGA;;AA7CrBA,QACFA,C;EAEWC,qBAliDkCA;AAoiD3CA,WAEiCA,GApiD7BA;GAuiD6BA;AAC7BA;AAAJA,WAAmBA,QAUrBA;AAHYA;;AAEVA,QACFA,C;EA6BWC,OAn2DLA;CAIAA;AAu2DJA,QACFA,C;EAmFWC,QAGLA;AAAJA,WAAmBA,QAErBA;AAh9DIC;CAwHEC;CAwLAA;AAsqDGF;;AAPPA,QACFA,C;EASWG,QAILA,SAnF8DC;AAmFlED,WAAmBA,QAGrBA;AADqBA;;AADnBA,QAEFA,C;EAEWE,UAETA;SAIMA;AAFAA;KAAJA;KAIEA,QAQNA,CAl/DIJ;CAwHEI;CA6CAA;AA40DGA,CAjsDHA;AAisDJA,gBACFA,C;EAEWC,QAKLA,SA/G8DC;AA+GlED,WAAmBA,QAGrBA;AADqBA;;AADnBA,QAEFA,C;EAEWE,UAETA;SAIMA;AAFAA,mCAESA,SAELA;KAFKA;KADTA;KADJA;KAKEA,QAoBNA;uBAjBMA,UAiBNA;KAhBWA,aAE+BA;AAEhCA,IADAA,kBAEFA,QAWRA;KATQA,OAAWA,SASnBA,EA3hEIP;CAwHEO;CA6CAA;AAq3DGA,CA1uDHA;AA0uDJA,gBACFA,C;EAEWC,QAKLA,SAxJ8DC;AAwJlED,WAAmBA,QAGrBA;AADqBA;;AADnBA,QAEFA,C;EAEWE,UAETA;SAn7D+CA;AAorG/CA,0BACAA;;KADAA;cA9vCIA,QAYNA;KAXWA,SACLA,OAgGFA,gBAtFJA;yBARMA,WAQNA,CAxjEIV;CAwHEU;CA6CAA;AAk5DGA,CAvwDHA;AAuwDJA,gBACFA,C;EAEWC,MAILA;AAAJA,WAAmBA,QAGrBA;AAjkEIX;CAwHEY;CA6CAA;CA2IAA;AAyxDGD;;AAVPA,QAEFA,C;EAWcE;AAGZA,sCAE6CA,GAClBA;AAG3BA,QACFA,C;EAEcC;AAIZA,qCAgvCqDA;GA7uClCA;UAI0BA,KACHA,IAG1CA,QACFA,C;EAaWC,QAEFA;IATHA,UAEEA;AAUFA;AAAJA,WAAmBA,QAGrBA;AA7nEIf;CAwHEgB;CA6CAA;CAeAA;IAk9DAD,WAxkEAC,IAAgBA;CAkPhBA;AA01DGD;;AAfPA,QAEFA,C;EA+BWE,QACLA;;GAkuC2BA,kBA3tCiBA;AAATA,IAbnCA,GAtQeC;AAsRfD;AAAJA,WAAmBA,QAGrBA;AA1qEIjB;CAwHEmB;CA6CAA;CAeAA;CA4HAA;AAm4DGF;;AAXPA,QAEFA,C;EAsBWG,QAJLA,oCASAA;AAAJA,WAAmBA,QAGrBA;AAxsEIpB;CAwHEqB;CA6CAA;CAeAA;CA4HAA;AAi6DGD;;AAXPA,QAEFA,C;EAmDWE,QArBLC,iBA57DQA,OAm7DsCA,MAYnCA,WATmCA,MAQ9CA,WANiCA,MAgBjCA;AAVJA,QAIMA;AAEAA,qBAINA,QAEgCA;AAC1BA,qBAU2BD;AAC7BA;AAAJA,WAAmBA,QAGrBA;AAnwEItB;CAwHEwB;CA6CAA;CAeAA;CA4HAA;AA49DGF;;AAXPA,QAEFA,C;EAoBWG,UAHHA,SAtYaC,wBA8YfD;AAAJA,WAAmBA,QAMrBA;AAFMA;;AAHJA,QAKFA,C;EAEWE,YAETA;SAGiDA;AAAhBA;AAC/BA,wBAEmBA;mBAEfA,KAGJA,QAEMA;AAEAA;AACJA,OAAOA,iBAabA,EAn0EI3B;CAwHE2B;CA6CAA;CAeAA;AA8oEGA,CAlhEHA;AAkhEJA,gBACFA,C;EA6HcC,UAEZA,gCAcFA,C;EAqBWC,yBAP4DA;OAWnDA,YAAlBA,MAEqBA;AAAnBA,gBACMA;KACCA,uDACDA;KACCA,UACDA;KAEJA;AACAA,kBAEIA;;AAIAA;;AAIAA;eAIIA;AACJA;eAqWSA;AAhWTA;eAllBDA;AAslBCA;eAjlBDA;AAqlBCA;gBAhlBDA;AAolBCA;gBAnDmBC;KAPDA;AA8DlBD;QAGAA;AACAA;QAGAA;AACAA;;OAMcA,OAENA;AAERA;;OAMcA,OAENA;AAERA;;OAMcA,OAENA;AAERA;;QA7FmBC;KAPDA;AAyGlBD;QAGAA;AACAA;gBAtGmBC;KAPDA;AAiHlBD;QAmN+CE,YA+lBjBC;AA/lBtCD;AApU0BC;;;AAqHlBH;iBA9GmBC;KAPDA;AAyHlBD;SAkNoDI,YAwlBtBC;AAxlBtCD;AA3U0BC;;;AA6HlBL;QAkLoCA;OAxSjBM;;QAAAL;KAPDA;AAkTnBD;AAjLCA;kCAQ6CA;AAArDA,OAAOA,eACTA,C;EAOWO,UACLA;OACcA,QAAlBA,SAEsBA;AAApBA,mBAAyBA;AACXA;AAGhBA,QACFA,C;EAEWC,YAELA;OACcA,QAAlBA,SAEMA;AAAJA,WACEA,KAAeA;AACfA,UACKA,0DU5oFsBA;KV2oF3BA;AACKA,MAGLA,OAQ8CA;AAJlDA;GAI+CA;IA9yB3CA;AAKiBA,UAAmBA,GAGpCA;AAAJA,WACEA,uBAA4BA;OAEbA;AAuyBjBA,QACFA,C;EAEYC,MAEMA,0BAEIA;AAApBA,6BAEwBA;KAEXA;2BAKOA;AAEdA;eAGsBA;AACtBA,OAGRA,C;EAOYC,MAqBOA;AAAjBA,sBAEEA;;AAGIA;;;AAIAA;;;;AAIAA;AAaFA;IAPyBA;AAGrBA;AAARA,iBAK2DA;;;AAAtCA;AAv5EnBlH;CAQSkH;CAQAA;CAiBAA;OA83EOA;AACdA,MAgBNA;cAPoBA;AAEdA,MAKNA;QAFMA,UAAMA,qCAA8CA,SAE1DA,C;EAyBYC,MAEDA;AAATA,iBA70BOA;AA+0BLA,MAOJA,CALEA,iBA50BOA;AA80BLA,MAGJA,CADEA,UAAMA,sCAA+CA,QACvDA,C;EAEeR,MAE0CA,gBA+lBjBA;AA/lBtCA;AApU0BA;AAsU1BA,QACFA,C;EAWWS,QACTA,sBAEEA,OAAiBA,eAOrBA;KALSA,uBACUA,CAAiCA;AAAhDA,kBAIJA,MAFIA,QAEJA,C;EAEYC;AAEVA,gBAEaA,eAA8BA,IAG7CA,C;EAEYC;AAGVA,iBAEaA,eAA8BA,IAG7CA,C;EAEWC,mBAELA;AAAJA,WACEA,SAAgBA,UAsBpBA;GApBiCA;GAChBA;AAAbA,QACEA,aAkBNA;AAfIA;GAEoBA;WAEpBA,SAAgBA,QAWpBA;AATEA,SACEA,UAAMA;GAGqBA;OAChBA,QACXA,aAGJA;AADEA,UAAMA,4BAAsCA,QAC9CA,C;CA8DGC,YACEA;AAGLA,SAA8BA,QA+JhCA;AAsOIA,0BA1WGA;KA3ByBA;;AAG9BA,KAAkBA,QA4JpBA;GAzJMA;AAAJA,SAA0BA,QAyJ5BA;AAtJMA,WAAoBA,QAsJ1BA;WApIOA;KA3ByBA;AAY9BA,KAAqBA,QAmJvBA;AAhJ0BA;AACxBA,KAGMA,UAAqBA,EADqBA,WACEA,QA4IpDA;GAnIQA;;AADNA,MACEA,SACEA,OAAOA,gBAkIbA;AAhIIA,qCAgIJA,aA3HIA,SACEA,OAAOA,gBA0HbA;AAxHIA,SACEA,OAAOA,gBAuHbA;AArHIA,YAqHJA,CAjHEA,SACEA,OAAOA,gBAgHXA;AA5GEA,UAOgBA;AANdA,OAAOA,cA2GXA,CAhGEA,UACOA,qBACHA,QA8FNA;AA5FIA,OAAOA,MACWA,gBA2FtBA,CAvFEA,UAEUA;AADRA,UAEIA,gBAoFRA,CA3EEA,UACMA,oBACFA,QAyENA;AAvEIA,OAAOA,UACoBA,YAsE/BA,CAlEEA,UAEUA;AADRA,UAEIA,gBA+DRA,CAzDEA,KAAsBA,QAyDxBA;AAtDEA;yBAEEA,QAoDJA;AAhDMA;cAAqDA,QAgD3DA;AA3CEA,sBAC2BA,QA0C7BA;AAzCIA,UAAsCA,QAyC1CA;GArCqCA;GACAA;GAC7BA;QAAWA,QAASA,QAmC5BA;;;AA9BIA,oBAG4BA;GAAcA;AAAnCA,qBACAA,eACHA,QAyBRA,CArBIA,OAAOA,mBAqBXA,CAlBEA,sBAC2BA,QAiB7BA;AAhBIA,KAA+BA,QAgBnCA;AAfIA,OAAOA,eAeXA,CAXEA,UACEA,SAAgCA,QAUpCA;AATIA,OAAOA,eASXA,CALEA,aACEA,OAAOA,eAIXA;AADEA,QACFA,C;EAEKC,iBAC2DA;AAMzDA,aAAqBA,QAAmBA,OAC3CA,QAsFJA;IA/EiDA;IAEAA;GACIA;GACAA;GAC/CA;GAA4BA;AAAhCA,OAA2DA,QA0E7DA;AAxEMA;GAM+CA;GACAA;GACnBA;GACAA;AADhCA,WAC2DA,QA+D7DA;AA7DEA,oBAsO8CA;AAnOvCA,YAAqBA,aACxBA,QAyDNA,CArDEA,oBA8N8CA;AA1NvCA,YAAqBA,eACxBA,QAgDNA,CA5CEA,oBAqN8CA;AAjNvCA,YAAqBA,aACxBA,QAuCNA,IAjCwCA;GACAA;;;AAGtCA,0BAoQwBA;KAlQtBA,KACEA,QAA4BA,QA0BlCA;IAvBuCA;AADjCA;AACAA,SAAyCA,QAuB/CA;;AApBMA,UACEA,MAAiBA,QAmBzBA;AAlBQA,YAsL2CA;AAlL7CA,UAAiCA,QAcvCA;GAyKgDA;AApLrCA,YAAqBA,eAA2BA,QAW3DA;AAVMA,YAIFA,gBACyDA,QAK7DA;AAJMA,KAGJA,QACFA,C;EAEKC,uCA/SqBA;KAoTxBA,cAaMA;AAAJA,WAAkBA,QA6BtBA;AA5BIA;AAEEA,YAIEA;AAAJA,WAAqBA,QAsBzBA;GApBmDA;;AAC/CA,gBAE+BA,eAA+BA;AAI9DA,OAAOA,iBACkCA,KAY7CA,IAniG0CC;AAkiGjCD,GAliGiCC;AAkiGxCD,2BACFA,C;EAEKE;AAWHA,oBA2G8CA;;AA7ErCA,mBACHA,QAKRA,CADEA,QACFA,C;EAEKC,qBAM6BA,MACAA,MAC5BA;QAAUA,QAAQA,QAaxBA;IAVMA,MAAQA,GAAMA,QAUpBA;AAREA,gBAGOA,WAAqBA,OAAcA,OACtCA,QAINA;AADEA,QACFA,C;EAEKC,aAICA;uBADAA,YACKA,SACmBA,uBACIA;KAJhCA;KAESA;KADLA;KADJA;QAKFA,C;EAGKjE,IACDA;0BACAA;;KADAA;QAEwCA,C;EAEvCkE,WAEIA;AAAPA,0CAKFA,C;EA2CcC,MAGeA;AACzBA,oBAE2BA;UAE7BA,C;EAEeC,IAA+BA,0CAEEA,C;;;;;;;;;;;EWx6GhCC,GAA+BA;AAGpCA,gCAAPA,aAgCJA;qDAf0DA;;;AAAVA,0BADxCA,KAPYA;AAUhBA,OAAOA,eAaXA,MAJWA,2BAAPA,aAIJA;AADEA,OAAOA,MACTA,C;EAEYC,2BAMNA,KALYA,eAMlBA,C;EAEYC,sBAMNA,KALYA,eAMlBA,C;EAEYC,IAWCA,SATbA,C;EA0BAC;;QAaAA,C;EA8FWC,IACXA,OArCAA,SCiFAC,SAAyBA,GAAzBA,aDjFAD,aAsCFA,C;EAUQE,MAENA;CACUA;AACVA,QAxBwBA,EAyB1BA,C;EASQC,MACNA,SACFA,C;EAQQC,MACNA,SACFA,C;EAOQC,MAENA,KACIA,QAAyBA,QAC/BA,C;EASKC,MAECA,wBAEqBA;oBASvBA;;oBAEAA;KC5BFA,WAAyBA;CAuIvBA;CACAA;ADvGAA,aAEJA,C;EAIkBC;;;AAwBhBA,OAAYA,CEyQeA,MFzQgBA,YAG7CA,C;EG/TEC,MACcA;AADdA,0BAEiCA,UAFjCA,AAEyDA,C;EAOvCC,IAChBA;AAAUA,aACeA;AACvBA,WAAwBA,QAG5BA,CADEA,QAAkBA,EACpBA,C;EFkgBYC,MAAiDA;QA7PrCA,iBA0GfA;AAwJPA,eAC+BA;AAC7BA;AACAA,kBAEoCA;CAhQtCA,IAA0BA;CAC1BA;AAiQEA,QAEJA,C;EAmIYC;KAEVA;GA9YqBA;AAAOA;AAARA;AAiZlBA,YACEA,oBA/SGA;ACsuCPA,MDp7B0CA,IAAkBA,IAExDA,MA+JNA,EA1JoBA;GACyBA;AACzCA,0BACWA;AACTA,MAAsBA;CACtBA;GACwBA,MAGGA;GAAOA;CAQ/BA;CACDA;AAKJA,SAtmBsBA;AAsmBGA,6BArC3BA;AAqCEA,SAxmBeA,EAAOA;AA0mBpBA,SAAwBA;AAAxBA;MCo5BJA,MDh5B0CA,IAAkBA;AACtDA,MA4HRA,IAxH0BA;AAApBA;KAmFIA;GAjsBmBA;AAorBvBA,cA/D+BA,gBAgE7BA;KACKA,MACLA,aA9BsBA,cA+BpBA,UAGFA,aAzBcA,cA0BZA;AAKJA;GAIIA;wBACAA;eAvnBuCA,OAAsBA,iBAsnBjEA;SAKmBA,EAASA;KA3hBTA,eAuMIA;CAC3BA;AACOA;CAtEPA,IACYA,OAAkCA;CAC9CA,IAA4BA;CA2ZlBA;AACAA,cAEAA;AAKJA,MAeRA,KAXqBA,EAASA;GArWDA;CAC3BA;AACOA;GAqWAA;GACcA;AADnBA,QA/bFA;CACAA,WAKAA,IAAwBA;CACxBA,MA+bEA;IAEJA,C;EAuDOC,MACUA,YACfA,OAAOA,OAWXA;AARmBA,YACfA,QAOJA;AALEA,UAAoBA,sBAKtBA,C;EG73BKC,GACHA;OAAiBA,IAAjBA,WAAuDA;GAEpCA;;AAEjBA;AACOA,SAEXA,C;EAEKC;IAKDA;;IAIIA,UJ3BJA,OAAyBA,GI4BMA,QAGnCA,C;EAMKC,IAnDHA,qBAqDoCA;AACpCA;KAEOA,IJ1CLA,OAAyBA,GI2CMA,mBAGlBA,IAGjBA,C;EAQKC,iBACCA;AAAJA,YACEA;MACwBA;AACxBA,MAgBJA,CA3FEA;GA8E4CA;AAC5CA,aACQA;oBAG0BA;CAC1BA;MACeA;AAErBA,kBAIJA,C;EA0BKC,oBACsBA;IACXA,QAGZA,UAHYA;AAIZA,MAUJA,CAPEA;MAEEA;AAEAA,MAGJA,CFggDIA,WEjgDkCA,QACtCA,C;ECo0EUC,ICllDWA;ADqlDfA,OCtlDJA,UDslDkCA,C;EHhnC/BC,MACHA,KAA+BA,cAGjCA,C;EAEEC,mBACmBA;AAAnBA,SAAoCA,OAAOA,MAY7CA;;AANQA;IAEGA;AAAPA,QAIJA,gB;EAEEC,qBAEmBA;AAAnBA,SAAoCA,OAAOA,OAY7CA;;AANQA;IAEGA;AAAPA,QAIJA,gB;EAEEC,uBAEmBA;AAAnBA,SAAoCA,OAAOA,SAY7CA;;AANQA;IAEGA;AAAPA,QAIJA,gB;EAqBKC,cAEYA,OAGPA;AAKRA,OACFA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AK/5BWC;EADDA,QACNA,cCxfFA,wCDyfAA,C;EAMQC,MACNA,OChgBFA,uCDigBAA,C;EAsfQC,IAOAA,OA6ERA,sBAxDAA,C;EA6UOC,GAQUA;;;AAEfA,QACFA,C;EAwGAC;CACEA,IAAaA;AADfA,QAEAA,C;EE50CQC,MACoBA;OAC1BA,qDACEA,MAAmBA,KADrBA;AAGAA,QACFA,C;ECpEcC,IAEZA;AAAIA,WACFA,aAwBJA;Ad0eAA;Ic7fIA;;CAEKA;AACLA,OAAUA;iBAYVA,cd6gB0CA;Ac1gB5CA,6BACFA,C;;;;;;;;;;;;;;;;;;;;;;;EC7GFC,MACEA;6BAD8CA;AAQtCA;AAANA,aAIOA;AAAPA,QAIJA,C;EAiDAC,IAEEA;WAAoBA,WA0BtBA;AAvBEA,sBACEA,QAsBJA;8CAdIA,OA8BFA,+BAhBFA;AAVEA,uBAO8BA,WAAuBA;AAErDA,QACFA,C;EAoRiBC,UAIbA;4BAKUA;GAAOA;AACfA,UACEA,WAgBNA;AAbQA;AACJA,wCAMIA,WAMRA;AAHIA,QAGJA,CADEA,WACFA,C;EAEeC,UAEoBA,eAAmBA;AACpDA,WAAqBA,WAYvBA;AAVWA,eAD0BA,QACjCA,gBAUJA;AAJEA,OAAOA,oBAFUA,UADMA,UAOzBA,C;EAEeC,MAAoDA;;AAK/DA,QAGJA,WADEA,WACFA,C;ECjQYC,cAENA,mBACFA,UAAMA;AAMRA,WACEA,UAAMA;AAGRA,OACEA,UAAMA,gEAKVA,C;EC4TcC,IACZA,kBAEIA,8BAgBNA;QAdMA,iCAcNA;QAZMA,0BAYNA;QAVMA,yBAUNA;QARMA,4BAQNA;QANMA,yBAMNA;QAJMA,uCAINA;QAFMA,QAENA,E;EA+JiBC;AAILA,kBADVA,SACUA;kCAOVA,QACFA,C;;;;;;;;;;;;;;;;;;;;;;;;EjBnhBWC,MAUSA;AAPlBA,WAAmBA,QAGrBA;AADEA,UAAUA,iBACZA,C;EAyCaC,MACHA;AACyBA;;AAEjCA,wBACFA,C;EAwLQC,UAEIA,oBACAA;AACVA,kBAEEA,WAA2BA,QAA3BA;AAMFA,QACFA,C;EAQQC,QACYA;AAClBA,qBACEA,OADFA;AAGAA,KAAcA,QAEhBA;AADEA,OkBjZaA,OlBkZfA,C;EAGQC,QAC4BA;AAAZA,QAOxBA,C;EAOQC,MACNA;AAAaA,oBAAYA,kCAQ3BA;AALoBA;AAClBA,qBACEA,OADFA;AAGAA,QACFA,C;EAqCQC,QAiCYA,eADGA,UADDA;AArBlBA,QAGJA,C;EAsEQC,MAKJA,OF7iBJA,WAM2BA,sBE2iBJA,C;EAwDTC,QACgBA;AACvBA,UAAqBA,QAa5BA;ImB3PoBA,gBnB8PgCA,OAbVA;MAC7BA,YAYuCA,OAVZA;KAC7BA,OASyCA,UAPVA,SAGxCA,QACFA,C;EAmHcC,UAEZA;QAAwBA,IAASA,QFrqBDA;iBNsiClCC;AQjYED,KACEA,QAsBJA;AoB3xBqBA,UAAQA;OpB4wBDA,iBAA1BA,YACaA;YAELA,uBAlRUE;8BAyRDF,YACAA,OAGjBA,6BACFA,C;EXruBcG,IACgBA,wCAC1BA,OAAOA,OAMXA;AAJEA,sBACEA,wBAGJA;AADEA,OW0IkBA,OXzIpBA,C;EA6CAC,sBAA8BA,C;EAsD9BC,iCAEuBA,C;EAcvBC,gCAEsBA,C;EA4DtBC,4DAG+DA,C;CAe/DC,uDAIiEA,C;EAoEtDC,QAITA,YAEEA,UAAiBA;AAEnBA,YACEA,YAEEA,UAAiBA;AAEnBA,QAGJA,CADEA,QACFA,C;EAWWC,MACTA,OACEA,UAAiBA;AAEnBA,QACFA,C;CAkEAC,wDAEsEA,C;CAkFtEC,sBAAqCA,C;EAcrCC,sBAAkCA,C;EAwBlCC,sBAAwBA,C;EAaxBC,sBAAkDA,C;CMngB5CC,8BAA8DA,C;E0BovBtDC,QAEZA;AAAIA,YACFA,oBAEEA,aAgBNA;AAdIA,gBAcJA,CAZ+BA;AAC7BA;IAEEA,kBAGAA,CALFA,UrBjMYA;AqBwMZA,6BAIFA,C;EAYcC,QAEZA;AAAIA,WACFA,gBAYJA;ArBxPAA;AqB+OEA;IAEEA;ArBhOUA,CAAZA,SAAsBA,mBqBmOpBA,CALFA;GrBhN4CA;AqBwN5CA,6BACFA,C;EA0BGC,MAwB6BA;AAGhCA;AACOA,UAAeA,MAkFxBA;AAjFwBA;AACpBA;IACeA,UACfA,IAQGA,WACHA,QAAoCA,MAqExCA;AApEqBA;AACGA,eAEKA,UACzBA;AACKA,WACHA,SACEA,OAAYA;AACZA,MA4DRA,CA1DyBA;AACCA;IACKA,eAEHA,UACtBA;KAGOA,MAAPA,SAEgBA,UACdA;AACAA,UAQEA;AAEYA,UAAmBA,UAC7BA,IAEFA;AACAA,MAgCVA,EA7B4BA;AACHA;IACMA,SAA2BA,iBAOtCA,WAEhBA;AAfYA;AAqBdA,sBAAqCA;AACzBA,UAAmBA;AAC7BA,YAEEA;AAzBUA,SA4BdA,WACEA;AAEFA;AACAA,SACFA,C;EC7zBaC,UA2ByBA;AAAkBA;AACtCA;AAAkBA;AAAUA;AADxCA,OnCKKA,KADAA,KADAA,KADAA,KADAA,mBmCmQTA,C;ECqXWC,qEAyDGA;AAGZA,UA26HWA,sBACJA,gBACAA,eACAA,gBACAA;AA76HLA,SAGEA,OAAeA,WAD0BA,wBACLA,KAwO1CA;KAvOWA,UACLA,OAAeA,KAAOA,qBAAwCA,KAsOpEA,CA9NgBA;;;;;;;;;AAcFA;GAMIA;AAChBA,QAEUA;GAaMA;GACAA;GACAA;GACCA;GACGA;AAMpBA,OAOcA;AAHdA,OAYuCA;KARhCA,QAEOA;AAMdA,OAoBaA;GAXGA;AAEhBA,KAIEA;AA7EYA,UAkFDA;AAAJA;AAlFKA,UAsFDA,qBAAJA,OAEEA,sBACGA;KAzFAA;KAlBdA;AAwGSA;AAtFKA,UAgGAA,sCAEJA;KApHVA;AAgHSA;AA9FKA,UA6GVA,SAEMA,uBAEFA,SAKOA,qBACHA;AAqyHoCA,SAxyH/BA;AA2yHYA,IAryHAA;AACnBA;AAIcA;AAAdA;AACAA;KAEUA;AAzHfA;;SA0HUA,UAKHA;AADAA;AADMA,sBAGNA;IA1BEA,cAwCGA,uBAKLA,mCAKAA;AAFAA;AACAA;AAFMA;AAINA;IAXSA;KA0BoBA,+BAK/BA,oCAKAA;AAFAA;AACAA;AAFMA;AAINA;IAXmCA;AAnM7CA,aA2OiCA;AAXjCA,cAC6BA,SACnBA;AACNA;AACAA;AACAA;AACAA;AACAA;AACAA,KAEFA,OAktGJA,0BA5sGAA,CAycEA,WAEEA,OACWA;KACJA,SACLA;AA9gBkBA,KAohBtBA,QACsBA;AAEPA;AAENA;AACHA;AAAJA,QvBv4CgBC,OuBy4CGD;AAEVA,gBADEA,KAAMA,+CAc2BA;;AA3iBxBA,KAkiBlBA;AAGMA;AAveVA,OA6eYA,yBAFCA,mBAzefA,C;EA2L2BE,IAEZA;AAAbA,cAAOA,sBAAsBA,UAAIA,cAcnCA,C;EAWiBC,QACLA;AAOVA,yBACaA;AACXA,WACEA,YAEEA,iCAGFA,SACEA;AAEaA,OAAMA;AACrBA,SACEA;AAEKA;;AACKA;KAIhBA,SACEA;AAGaA,OAAMA;AACrBA,SACEA;;AAIFA,QACFA,C;EAmBiBC,SAULA,uDAKEA;IAWHA,UAAYA;AACHA;AAMlBA,gCACaA;AACXA,WACEA,UAEEA;AACIA,mBACFA;AAIAA,IAAJA,UAEEA,KACEA;AAGFA;AADAA,UAIAA,OAAUA;AAEAA,WACPA,UAPHA,SAWIA,YAAaA;AACTA;AACeA;AAC7BA,aACEA;AAEFA,MACEA,MACEA,OAAUA;KAEOA;AACjBA,SAAUA,QAAeA;AACzBA,SAAUA,QAAeA,UAG7BA,UACYA,UACRA,0EAEaA,YACfA;;OAGmCA,sBAArCA,YACcA;AACZA,UAEEA;;AAGEA,UAGaA;;AAEfA,MAGJA,QACFA,C;EAmEAC,8CACgCA,C;EA4IrBC,IACTA,cAAsBA,SAGxBA;AAFEA,eAAuBA,UAEzBA;AADEA,QACFA,C;EAcaC,QACXA,UAAMA,WACRA,C;EAmTYC,MAEkBA,wBAAsBA,WAEpDA;AADEA,QACFA,C;EAWeC,UAEbA;AACAA,SAAkBA,QAkCpBA;AAhCMA,oBACkBA;AAAhBA,mBACFA;AAG6BA;AAAnBA;AACZA,QAE6BA;AAClBA,SADJA,oCAVSA;AAaZA;AAEJA,OAAOA,gCAmBXA,CAfIA,gBACMA,oBAmBIA;AAELA;AAlBDA,QAE6BA;AAClBA,SADJA,oCAzBKA;AA4BRA;AACJA,UAAWA,kBAKnBA,CADEA,OAAOA,WACTA,C;EAIWC,QACGA;AAEZA,oBACFA,C;EAYcC,UvBl9CdA;AuB69CEA,uBACaA;AACXA,WACwBA;AAClBA;AAAJA,SACEA;AACAA,oBvBn+CRA;AuBs+CqBA;AAGfA,KACgBA;KACTA,WACLA;CvB18CNC;AuB68CID;;AApBCA,sBAlBiBA,0BA0ClBA,+BvBn/CNA;AuBs/CQA,QACeA;SAKjBA,SAGAA,6BACaA;AACXA,sBACiBA;AACfA,SA1D2CA;AA6DhCA;YvBtgDrBA;AAOEA;;AuBkgDcA;AACVA;KAIJA,WAAoBA,OAAOA,YAM7BA;AALEA,OACiBA;GvBj/C2BA;AuBo/C5CA,6BACFA,C;EAWcE,QACEA;AAMdA,8BACaA;AACXA,WAEwBA;AAClBA;AAAJA,SACEA;AACAA,oBvB7iDRA;AuBgjDqBA;;AAIfA,MACgBA;AATRA,SAUDA,YACLA;AACAA,SAZMA;CvB1gDZD;AuByhDIC;;AAvBCA,sBAbiBA,0BAwClBA,+BvB/jDNA;AuBkkDQA,QACeA;SAKjBA,qBAgUEA,yBA9TFA;KAGAA,6BACaA;AACXA,sBACiBA;AACfA,SAzBFA;AA4BaA;AACfA;YvBrlDNA;AAOEA;;AuBilDcA;AACVA;KAIJA,WAAoBA,OAAOA,YAO7BA;AANEA,QACiBA;6BvBhkD2BA;AuBokD5CA,6BACFA,C;EAKcC,QACZA;SAAkBA,QAkBpBA;AAhBOA,SADqBA,YAExBA;AAGFA,sBACuBA;cAkRFA,0BAhRjBA;AAEFA,gBACEA,KAGKA;AAETA,OAAOA,yBACTA,C;EAKcC,IACZA,cAAsBA,YAKxBA;AAJEA,cAAsBA,YAIxBA;AAHEA,eAAuBA,aAGzBA;AAFEA,iBAAyBA,eAE3BA;AADEA,QACFA,C;EAEcC,QAEZA,OAAOA,YAA4CA,SACrDA,C;EAEcC,cAEPA;AAGLA,WAC4BA,eAiB9BA;KAVaA,cAAwCA;IJl2DjCA,aIs2DhBA,KAAYA,SAMhBA,MALoCA,oBACnBA;AAGfA,OADSA,WAEXA,C;EAOcC,eJn3DMA;AIs3DbA,0BACAA,cACHA,OAAOA,aAGXA;AADEA,OAAOA,OACTA,C;EAEeC,UAEbA;YACEA,WACEA,UAAMA;AAERA,OAAOA,YAAyCA,SA6BpDA,CA1BEA,WAA6BA,WA0B/BA;AvBztDAA;CuBksDMA;AAYJA,MAAwBA,SAVLA;GvBrqDyBA;AuByrD5CA,6BACFA,C;EAEeC,QAEbA,OAAOA,YAA4CA,SAErDA,C;EAaeC,QAA2DA;OAEhDA,QACtBA,SAuBJA;AArBmBA;AACCA;AACIA;AACCA;AACvBA,YACEA,SAgBJA;AAd8BA;AAoqBLA,YAAjBA,+BA/pBJA,OvB31DgBA,kCuBo2DpBA;AAPEA,gBAEEA,OAAOA,4BAKXA;AADEA,WACFA,C;EAEcC,IAAsBA;AAGlCA,UAGEA;;AACeA;AACAA,wBAKfA,UAGEA,YAEEA;AAXsCA,SAOxCA;AATUA,SAMRA;AAHKA;AAeTA,wBACeA;;AAEUA;AACAA;AACvBA,MAIJA,OAAcA,cAChBA,C;EAMcC,cAGLA;AAAPA,eAGIA,cACNA,C;EAWeC,cAGCA;AAIdA,2BACaA;YACQA,uBACjBA;KAIAA,WACgBA;AAEdA,YACEA;AACAA,SAGFA,YACEA;AAduCA,SASjCA,SAUHA,cACLA;AApByCA,wBA8DzCA,0BAvCAA;;SAIAA,sBAEMA;AAAJA,QACaA;AACXA,sBAGiBA;AADfA,SAjCmCA;AAsC3BA,sBvBh3DtBA;AAOEA;AuB42DcA;AvB52DCA,CA2BfZ;AuBm1DIY;KAIJA,WACEA,QAMJA;AAJEA,OACeA;GvB91D6BA;AuBg2D5CA,6BACFA,C;EAoDYC,IACNA,gBAAsBA,QAG5BA;AADEA,OADYA,mBAEdA,C;EAOcC,IACZA;AAAKA,YAA8BA,QAsBrCA;AApBwBA;AAECA,sBAAvBA;AAEMA,qBCx7DYC,aD07DZD;IC17DYA,YD47DVA,WAGJA,UACKA,WADLA;KAIAA;AAdCA,MAiBLA,KAAiBA;AACjBA,OAAOA,YACTA,C;EAacE,MAAsDA;AAE7DA,YAEHA,SADyBA,SA2B7BA;AAvBwBA;AAECA,sBAAvBA;AAEEA,YACgCA,ICj+DhBA,gCDk+DZA;AACAA,UAEAA;AARDA,UAUIA,WAJHA;KAOFA;AAbCA,SC79DaA;AD6+DlBA,mBAA6CA,GJlsE3BA;KIwrEZA;AAUNA,KACEA,UAKJA;AAH4BA,wBAAcA;AACxCA,MAA8BA,WAAcA;AAC5CA,OAAOA,YACTA,C;EAGcC,eACHA;AAAeA,cAAuBA,YAC7CA,iBACaA;AACXA,UACEA,OAAUA,mBAA0BA,YAS5CA;YANYA,yBACJA,MAINA,QACFA,C;EAwTWC,MACLA;AACJA,qBACiBA;AACfA,gBACmBA;KAGjBA;AACAA,iBACmBA;KAEjBA,UAAMA,oCAIZA,QACFA,C;EAYcC,YAC4DA;AAMxEA,qBADKA;MAEYA;AACfA,UACaA,UACOA;KALjBA;;AAGHA,MNx6FsCA;AM46FpCA,MANyBA,IAU7BA,UACMA,ONj7FkCA;KMq6FnCA;AAYHA,KACEA,OAAOA,YAyBbA;KpC36FAC,WoCo5FcD,mBAGGA;OAOQA,YANrBA,SACiBA;AACfA,SACEA,UAAMA;AAERA,WACEA,SACEA,UAAMA;AAERA,OAAUA;AACVA,UACKA,UACLA;KAEAA,WAINA,ONv8FOA,CADKA,QMy8FdA,C;EAEYE,IACNA;AACJA,oBACFA,C;EAqwBeC,QASOA;OAIJA,wBAAhBA,SACSA;AACPA,kBAAwCA;AACxCA,WACEA;AAEEA,SAEFA,UAAMA,aAGVA,YAGEA,UAAMA;KAERA,SAEEA,UACAA;AAEAA,kBACSA;AACPA,WACEA,gBACKA,kBACLA,MAGJA,QACEA;KAG4BA;AAGvBA,2CACHA,UAAMA;AAERA,OAGJA;AAQmCA;KAPXA,eAEfA;KAKSA,cAAqCA;AAErDA,WACSA,kBAGXA,OAxiBFA,eAyiBAA,C;EA2McC,GAmPPA;AAhMMA;AAIEA;AAOFA;AAaAA;AAUTA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AAGAA,KADIA;AAGAA;AACJA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJA;AACAA;AACAA;AACAA;AACAA;AAEIA;AACJ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", + "x_org_dartlang_dart2js": { + "minified_names": { + "global": "mF,349,mG,349,mH,349,hX,1060,kt,1061,dA,1062,bb,1063,iP,1064,kp,1065,iU,1066,b6,30,b,28,ap,1067,mY,29,mA,58,fy,1068,kO,1069,y,1070,bt,95,Q,153,mp,155,jF,148,mg,149,jA,150,n,91,jT,15,o,17,ia,1071,iC,6,L,1072,b7,1073,j4,1074,b9,1075,cs,31,aQ,1076,fe,1077,hM,129,kP,1077,aA,1078,cL,288,I,98,bH,1079,B,1080,d_,1081,at,79,cq,25,jC,136,W,278,kR,1082,f7,1083,aL,345,d6,1084,jw,344,fp,1085,aV,1086,ie,1087,fq,1088,v,1089,f0,145,jP,40,ds,40,j_,1090,iZ,1091,fC,1092,kW,1093,eO,1094,b2,104,jf,1095,jh,1096,lc,1097,jg,1098,aJ,1099,lo,1100,ch,1101,le,1102,ld,1103,jm,1104,ip,1105,jl,1106,lb,1107,ji,1108,lg,1109,je,1110,eb,1111,jk,1112,lp,1113,cA,1076,cz,277,cf,1114,T,1115,as,1116,lZ,111,m_,109,lj,1117,lk,1118,aC,1119,av,217,cg,1120,lm,1121,cr,216,j2,1122,ln,1123,io,1124,im,1125,ll,1126,hw,1127,aK,86,cp,87,mn,89,mo,88,lf,1128,lu,1129,kS,1130,hr,1131,jx,106,hq,107,ai,1132,kD,1133,mb,292,j1,1134,S,1135,bS,1136,d5,513,fz,1137,ft,1138,fs,1139,fB,1140,bC,1141,iB,1142,mJ,65,j7,1076,ha,1143,mO,60,jN,1144,hQ,1145,i1,1146,jJ,1147,i2,63,jQ,62,iD,366,p,1148,dM,286,mK,66,mI,68,jS,1149,mQ,64,br,69,hU,1150,hV,1150,hW,1150,d3,1151,e0,1152,km,1153,ks,1154,kq,1155,iO,1156,iM,1157,iL,1158,iN,1159,kr,1160,kn,1161,du,1162,ib,1163,aN,1076,O,1164,ce,1165,jc,1166,mm,103,jL,92,cm,97,mB,102,iw,99,m0,100,lt,1167,mC,101,jy,119,li,1168,lV,117,lL,127,lK,125,lX,118,f1,112,mL,93,D,210,ii,1169,jB,211,m3,212,m7,215,jv,214,j3,1170,k,1171,m6,124,au,110,ma,126,lY,114,jD,128,m2,123,m5,140,m8,144,mN,151,m4,116,m9,115,mw,70,lW,113,ls,1172,bs,44,mM,42,fY,1173,jR,346,hY,1060,hZ,1174,ak,1175,e,1176,ac,1177,a3,1178,iY,1179,fH,1096,jz,350,il,1076,lP,227,lM,228,lO,229,lN,230,mr,232,mc,225,fX,1180,u,1181,ko,1076,cG,1182,f,1183,bY,1184,aP,0,af,1185,F,1186,hP,1187,f2,5,eB,1188,aw,36,b5,39,bA,1189,cb,1190,fx,1191,aM,37,mq,38,id,1076,bR,1192,dN,1193,bT,1194,aq,1195,mS,73,fD,1196,j6,1197,fE,1198,d2,35,lQ,231,hz,1199,hA,1199,H,1200,i7,1082,mh,237,bn,1201,fZ,1202,b1,248,jH,240,dV,1203,cn,1204,bq,1205,ix,1206,me,238,co,1207,l2,1208,fS,1209,fR,1210,lh,1076,ho,224,hp,1211,r,1076,dP,285,fU,1212,fT,1213,hd,1214,jE,245,iy,244,hN,1215,mk,241,kw,1216,c_,1217,h8,1218,h7,1219,h6,1220,ij,1221,h5,1222,f6,1076,cB,233,iJ,1223,mj,246,mi,247,h9,1224,dU,1225,h_,1226,h4,1227,h1,1228,h2,1228,h3,1228,mT,242,h0,1229,hg,1230,iz,1231,hO,1232,b0,1233,lS,352,ct,364,fm,510,kM,1076,bJ,1234,by,1235,aj,7,iv,358,hC,1236,hD,1236,md,357,iR,1237,bQ,1238,jd,1076,jj,1076,iQ,1239,eQ,1240,aB,1241,i8,1242,hx,1243,dz,1076,bi,287,bz,1244,bZ,1245,fu,1246,ed,1247,fv,1248,iW,1249,bG,1076,c0,1250,ik,1251,hb,1252,c1,253,eH,341,hn,1253,hl,1254,hm,1254,ar,1255,dT,1256,he,1257,bo,336,cX,1258,J,1259,l6,1260,kL,1249,C,1261,ff,1262,fg,1262,q,1263,eG,1264,kv,1265,fc,1266,i9,1267,kC,1268,ih,1076,hK,1269,mV,75,fQ,1270,jI,74,aW,1271,ek,1272,iT,1273,K,1076,fh,289,fk,1274,f4,72,cC,1275,kI,1276,kJ,1277,iS,1278,fa,1279,la,1076,e7,1280,iV,1281,my,41,hh,1282,hi,1282,hj,1282,hk,1282,e1,1283,fW,1284,iX,1285,kF,1286,kE,1287,kG,1288,fV,1289,hf,351,hJ,1290,hH,1291,hI,1291,kV,1292,dw,1293,kU,1294,kT,1295,Y,1296,j8,1297,jG,330,ew,1298,lC,1299,bp,1300,lD,1301,lz,1302,j0,1303,lB,1304,lA,1305,is,1306,ly,1307,iq,1308,i0,1096,jn,1309,ja,1310,bl,1311,fK,1312,iu,1313,ku,1314,cJ,1315,lx,1316,l0,1317,hu,1318,lI,1319,lJ,1320,am,1321,j5,1322,kQ,1323,l1,1324,jb,1325,fO,1326,fN,1327,cj,1328,ck,1329,jr,1330,it,1331,ir,1332,ms,27,hT,2,hs,1333,ht,1334,jt,1335,hv,1336,lR,80,mx,26,lE,1337,lG,1338,lH,1339,jq,1340,jo,1341,jp,1342,lw,1343,js,1344,j9,1345,lF,1346,fI,1347,fJ,1348,l_,1349,fG,1350,lv,1351,lT,329,hE,1352,hF,1353,hG,1354,e2,1355,fF,1356,iK,1357,lU,77,kN,1358,kK,1359,mf,256,hB,257,eg,1360,eh,1361,mR,362,bV,1362,i3,1363,i4,1363,fw,1364,hL,1365,i_,1366,ju,1367,ic,1368,bd,1369,t,1370,d0,1371,G,1372,bF,1373,a,1374,aF,1375,dp,1376,b_,1377,aT,1378,ag,1379,fl,1380,E,1381,R,1382,be,1383,i,1384,bE,1385,d1,1386,d,1387,aE,1388,aI,1389,bW,1390,fA,1391,bB,1392,dO,1393,bk,1394,x,1395,bv,1396,aR,1397,aH,1398,cH,1399,cI,1400,dF,1401,ig,1402,fr,1403,dc,1404,bM,1405,dd,1406,bg,1407,bK,1408,bL,1409,de,1410,df,1411,dg,1412,dh,1413,di,1414,dj,1415,dk,1416,bN,1417,aZ,1418,bO,1419,e8,1420,z,1421,dY,1422,hy,1423,hc,1424,eP,1425,bI,1426,aG,1427,an,1428,c7,1429,f8,1430,f9,1431,cK,1432,cM,1433,fd,1434,fj,1435,fi,1436,fn,1437,fo,1438,fL,1439,fP,1440,fM,1441,dn,1442,eE,1443,dQ,1444,l,1445,n_,1446,n0,1447,cw,1448,cx,1449,n1,1450,cy,1451,n3,1452,ba,1453,bu,1454,aO,1455,n6,1456,a0,1457,n7,1458,n8,1459,na,1460,nb,1461,cO,1462,nc,1463,w,1464,bc,1465,fb,1466,nd,1467,N,1468,X,1469,cP,1470,cQ,1471,ne,1472,cR,1473,aS,1474,ng,1475,cS,1476,bw,1477,aX,1478,bx,1479,cT,1480,cU,1481,ad,1482,m,1483,h,1484,c,1485,nh,1486,a1,1487,cV,1488,cW,1489,cY,1490,a2,1491,cZ,1492,aU,1493,bD,1494,nj,1495,aD,1496,bf,1497,nk,1498,nl,1499,d7,1500,nm,1501,nn,1502,d8,1503,d9,1504,da,1505,a4,1506,db,1507,bP,1508,no,1509,a6,1510,dq,1511,dt,1512,dv,1513,nq,1514,nr,1515,a7,1516,dx,1517,a8,1518,dy,1519,a9,1520,dB,1521,U,1522,bU,1523,dD,1524,dE,1525,bj,1526,nt,1527,aY,1528,aa,1529,V,1530,dG,1531,dH,1532,dI,1533,ab,1534,dJ,1535,dK,1536,P,1537,dR,1538,dS,1539,nG,1540,nH,1541,bm,1542,dZ,1543,bX,1544,ec,1545,c2,1546,ez,1547,eF,1548,dW,1549,a5,1550,A,1551,c8,342,cN,1552,mZ,1553,ni,1554,ah,1555,d4,1556,al,1557,dl,1558,dr,1559,bh,1560,dC,1561,j,1562,ao,1563,dL,1564,cD,1565,n2,1566,cE,1567,cF,1568,az,1569,dm,1570,cl,1571,c3,1572,c4,1573,c5,1574,c6,1575,ci,1576,e_,1577,e3,1578,e4,1579,e5,1580,e6,1581,e9,1582,ea,1583,ee,1584,ef,1585,el,1586,em,1587,en,1588,eo,1589,ep,1590,eq,1591,et,1592,eu,1593,ev,1594,c9,1595,ca,1596,ex,1597,ey,1598,eA,1599,eI,1600,eJ,1601,cc,1602,cd,1603,eK,1604,eL,1605,eR,1606,eS,1607,eT,1608,eU,1609,eV,1610,eW,1611,eX,1612,eY,1613,eZ,1614,f_,1615,ei,1616,ej,1617,er,1618,es,1619,eC,1620,eD,1621,eM,1622,eN,1623,dX,1624,mP,365,hS,367,kH,1625,jO,16,iA,51,mW,57,o2,59,hR,85,Z,108,nM,130,nO,131,nN,132,nP,133,nR,134,nQ,135,nS,137,nU,138,nT,139,nV,141,nX,142,nW,143,nZ,146,nY,147,lr,1626,lq,1627,l3,1628,l4,1629,l5,1630,ml,239,ns,1076,l7,1631,l8,1632,l9,1633,mX,363,nf,1037,nu,1634,nv,1635,nw,1636,nx,1637,nA,1638,nB,1639,nz,1640,ny,1641,nD,1642,nC,1643,nI,1644,nE,1645,nF,1646,nJ,1647,nL,1648,o_,1053,o1,1054,nK,1649,n9,1650,o0,1057,n4,1651,n5,1652,kx,1653,ky,1654,kz,1655,kA,1656,kB,1657,kX,1658,kY,1659,kZ,1660,np,1661,jV,1037,ka,1053,cu,1057,jW,1634,jX,1635,jY,1636,jZ,1637,k1,1638,k2,1639,k0,1640,k_,1641,k4,1642,k3,1643,iE,1644,k8,1649,jU,1650,k6,1646,k5,1645,k9,1648,kb,1054,k7,1647,ay,1662,b3,1663,ae,1664,b4,1665,ax,1666,kg,1667,b8,1668,M,1669,i6,1670,i5,1671,kj,1672,ke,1673,mU,1674,cv,1675,jK,1676,mt,1677,mu,1678,mv,1679,a_,1680,iH,1681,kc,1682,iG,1683,kh,1684,kl,1685,mD,1686,mE,1687,ki,1688,iI,1689,kd,1690,m1,1691,kf,1692,kk,1693,f5,1694,iF,1695,f3,1696,jM,1697,mz,1698", + "instance": "bH,1699,bF,1699,bL,1076,bI,1700,bK,1076,bG,1701,bJ,1076,ao,1702,M,1703,a1,1704,ga1,1704,Z,1705,gZ,1705,b3,1706,gb3,1706,ba,1707,gba,1707,n,1708,t,1709,gt,1709,k,1699,i,1710,gi,1710,si,1710,q,1711,aA,1712,gaA,1712,az,1713,gaz,1713,aP,1714,gaP,1714,F,1715,gF,1715,D,1716,aC,1717,aY,1718,cq,1719,bn,1720,aD,1721,bo,1722,b4,1723,l,1724,I,1725,cp,1726,B,1727,gB,1727,v,1728,gv,1728,bN,1729,bt,1730,cc,1731,aS,1732,gaS,1732,cj,1733,gcj,1733,aO,1734,a5,1735,ga5,1735,br,1736,aK,1737,ad,1738,L,1739,b6,1740,aJ,1741,b7,1742,aV,1730,ap,1743,aq,1744,bc,1745,cC,1746,ac,1747,aE,1748,b5,1749,cr,1750,cm,1751,aa,1752,gaa,1752,cA,1753,aU,1754,cw,1755,a2,1756,b_,1757,c2,1758,aZ,1759,b0,1760,au,1761,bP,1762,bO,1763,A,1764,bs,1765,V,1766,gV,1766,bB,1767,G,1768,Y,1769,co,1770,bC,1771,aM,1772,cG,1773,bE,1774,bu,1773,ag,1775,a8,1776,ga8,1776,bx,1777,gbx,1777,bp,1778,gbp,1778,S,1779,gS,1779,K,1780,gK,1780,sK,1780,a9,1781,J,1702,aX,1782,bA,1783,c1,1784,a4,1785,c0,1786,X,1787,R,1700,bb,1788,c7,1789,b1,1790,bM,1791,av,1792,ar,1793,aB,1794,b2,1795,bS,1796,P,1797,ak,1701,ab,1798,gab,1798,cb,1702,W,1799,gW,1799,C,1800,m,1801,O,1801,bU,1802,cg,1803,gcg,1803,u,1804,bW,1805,gbW,1805,p,1806,T,1807,aH,1808,cs,1809,al,1810,U,1811,aT,1812,ae,1813,gae,1813,bT,1814,aG,1815,bd,1816,bh,1770,a7,1817,a0,1818,b8,1819,bZ,1820,bY,1821,b9,1822,cn,1770,bD,1292,aQ,1823,gaQ,1823,aF,1824,c4,1825,a6,1826,bv,1827,gbv,1827,H,1800,a_,1828,an,1829,gan,1829,bi,1830,gbi,1830,bw,1831,gbw,1831,aN,1832,gaN,1832,aj,1833,gaj,1833,bq,1834,gbq,1834,bl,1835,gbl,1835,aR,1836,gaR,1836,bj,1837,gbj,1837,bg,1838,gbg,1838,bk,1839,gbk,1839,bR,1840,cl,1841,bm,1842,ca,1843,aw,1844,cd,1845,c3,1846,cf,1847,gcf,1847,bV,1848,aI,1849,c6,1850,ai,1851,gai,1851,ah,1842,ci,1852,ct,1853,ce,1854,gce,1854,a3,1855,c5,1856,bX,1857,bf,1737,aW,1858,E,1859,gE,1859,af,1860,ck,1841,be,1861,cE,1862,cF,1863,c9,1768,cH,1864,gcH,1864,cz,1755,cD,1754,cB,1753,cu,1736,c8,1865,gc8,1865,cv,1817,bQ,1866,c_,1867,aL,1770,by,1868,h,1869,j,1870,bz,1871,am,1872,N,1873" + }, + "frames": "ohIAuEiBojCyC;QAEF8xByC;wcG4RF9xB2C;QAEF8xB2C;eAkqBwB9xBsB;eAEFA6B;qvHIplBb+xBiB;cAAAAa;6CAuBQCM;gJAYVDiB;+JA+BIEW;qbAkmBU3xBoB;0KAgCnBAwB;gBASAAuB;2BAmCcNa;sgBAoQZAmR;iZA+MJAW;8fA2DOA+B;qZAAAAiE;mBAkCcA+B;gBAOpBAkC;wFAKCAU;4EAWiBAqE;wHASjBAU;0EAiCuBAW;4DAGtBAW;gUA+FFAAGn2D0BAgE,A;iUH+9DtBAgD;AAEAA6O;gvCAyPFA4D;6sBAqF6BkyBuC;AACHCmC;yEA4HtBlyDAC/9DTmyDoB,M;qDDq/DcpyBiD;kKAuJXAY;u2BEv6EDv/BAA2BTq+B4G,A;8HAZSr+BAAYTq+B4G,A;6dArEuB/9BAAzChBsxDmD,A;qrBAiRSpxD4D;2nBKtIhB2nDADjBQ5oBgD,A;WCiBRynB0B;AAC+D6Ka;AAA7DCQ;oBACAAI;yBAGFAQ;2tDNnGQCmB;WASeCO;mBACfDiB;AADeCM;4qCAsdACO;AACICS;2LA4BsBCAA7PR5yBc,A;AA8PrB6yBM;AAEACM;AAEACK;iHAwCFCS;iEAaZtwDAA9CkCuwDK,A;sEAqEpCrwDAAxEuCqwDG,A;sUA8JdvwDAA3JWuwDkF,A;+DAgL5BhxD4B;6DA0EQixDoBAlFlBxwDAAxKsCuwDiB,A,A;4EAgQLEO;wBAOM9vDU;gBAAAAAAKrC+vDY,A;oBAQgB9vB0B;iBAGXtDAA0CTAAAAAAAACMozBG,A,A,W;6BAvCF/vDM;gBAAAAAAfA+vDY,A;oBA8CqBnxD0B;+DAoCrBkEmD;8BAGIktDG;+EAkBAAG;oMAsBACU;wEAUCCgB;mEASLCK;0CAsCArtDoC;8EAUAstDK;8PAsBGCmB;wHAwBOCG;iBAKV/wDAAlgBuCqwDG,A;8IAyhB7BUG;iBAKV/wDAA9hBuCqwDG,A;uYAumBvBrtBuB;sCAgBTguBS;imEAoPFztDAAm3DPkEG,6E;2DA12DmBwpDAAxtCCCO,A;20BAk2CJCAA90CIDG,A;gDDtPFEmB;qNCswDHCgB;iMAiCLCoC;gCAOMCG;cAGVCa;+BAIIFkC;kCAMMGI;cAGVCiB;+FAiDFbS;AACADQ;+DAyF8BeAAIpB3BAA/qDP5yBsB,A,AAgrDHw0BM,AACACM,0B;8BAKSCAA/CXCsB,A;oKAkEY/BAAzsDP5yBsB,A;AA0sDHw0BM;AACAIK;CACAHM;sCAMSIAAzEXFsB,A;yTAyGY/BAAlvDP5yBsB,A;AAmvDHw0BM;AACAIK;CACAHM;sCAMSKAAhHXHsB,A;4FA2HmBtBG;AACfltDiE;8BAGKssDgB;sCAKGGAA/wDP5yBsB,A;AAgxDHw0BM;AACAIK;CACAHM;gFAUAMAAKUnCAAjyDP5yBsB,A,AAkyDHw0BO,AACAIM,AACAHM,0B;kKAqBmB/BO;wEA0BVsC6B;kCAKMCAAKLrCAA71DP5yBsB,A,AA81DHw0BM,AACAIM,AACAMS,WAGE1CS,AAEFiCM,0B;2DAyBSUkB;QAEACGAlBNCuB,A;kCAuBYCAAKL1CAA14DP5yBsB,A,AA24DHw0BO,AACAIM,AACAMM,AACATM,0B;qBAgBScoC;gCAKTCAAKU5CAAx6DP5yBsB,A,AAy6DHw0BO,AACAIM,AACAMM,AACATM,0B;qBA6CSgBAAtCPCiB,AADYpyBO,AACZoyBkJ,A;8CA2CFCAAKU/CAAn+DP5yBsB,A,AAo+DHw0BO,AACAIM,AACAMM,AACATM,0B;uBAcSmBSARXCwB,A;8PA4CYjDAAzhEP5yBsB,A;AA0hEHw0BO;AACAIM;AACAMK;CACATM;6FAyKOqBgB;qUA4BCCmB;qBAIkB9BiB;qBAIA+BiB;sBAIACiB;sBAItBCAAgFRCS,AACACQ,A;qQAtCQFAAqCRCS,AACACQ,A;8CA9BQFAA6BRCS,AACACQ,A;cA1BQCAA2KSn0BYAoCEo0BI,gBAEnBFiC,A,A;uBA7MQFAAqBRCS,AACACQ,A;eAlBQGAAyKSCYAqCEFI,gBAEnBFiC,A,A;cA5MYK0BA+KZNqC,AAEADAApKACS,AACACQ,A,M;oXAsBoDMoB;2DAUpCCiH;6eAsFyC/DAAv5ElB5yBc,A;AAw5Ef6yBM;AAEACM;AAEACY;sKA+CA6DkB;wBAIACkB;0FAOLPI;gBAEnBFY;qmBA0IEjwD0B;q6CAgMsB6sDI;sDAQAAI;wDASAAM;8FAoBX8DS;oGAQAnEM;sBAEQKM;kIAuCE+DQ;2NAgBTCAA9gGwBCG,A;GA+gGxBDAA/gGwBCG,A;uFAmiGpBjEO;AACAAI;8wCWxuGZkES;4BA2BRl3BU;wBA4GWASAxCSm3BAAAAn3ByB,A,a;uCAuDHo3BE;yMA2DMp3BoB;AAAAq3BW;4HAiCX5PM;oLCuNI6PiB;AACICG;sDAQhBCiB;8EA0IuBCqB;gCAGYCG;AACxBCM;sHA+BcCG;2CACDCK;0CAIbFM;mDA4EIGG;wLAkBTCwB;wBAMgBCe;AACFCuB;AACZCyB;gDAcIDyB;iBAEVZiB;AAGAcmB;uQGhyBQCU;iBAUqBp4BqB;qCAKrBo4BU;sFAoBkBp4BiB;+KAuD3Bl0BW;iBCw0EGk0BqB;OAAAAU;0mDE57DmCAwC;kBAQ9BAuC;gBA8fMAsB;uIAqdnBAAAAAAO,A;uKGl4CeAkB;kFAoBN+mBG;oqBC7BA/mB+B;qmDfmFMq4BgB;0TAqQNCO;+LA2EECmC;0BA8EHv4BiC;kDA+DQw4BgB;AAEDCO;2BAGFAO;qBAGEAU;uFAyHoBCoBFrqBcCK,A;cE4qBnCCsB;oEAKRCAAzKaCyC,A;sKX1iBVCO;2vBgCuvBCCmB;8EAqBch5Ba;qBAGpBg5B6B;qBAMKjSG;uuBCzpBakSuC;4FCsrBFCyF;+sBAAAAS;YAAAAI;+eAsOTl5B0B;CAIGm5BiF;KAAAAsEA8dAdO,iG;KA9dAcyD;OAAAA4C;66DAo7BMxoBkC;iMAoCP3QiD;0GAeIAc;2GASXuyBAvBv+CJ6GO,A;+BuB2+CaC0B;+BAGIr5Bc;mJAHJq5Ba;2BAqBGr5Bc;AAAJuyBoB;kFAYLxLG;qLA4BQ/mBc;6GAWXuyBAvBnjDJ6GO,A;+BuBujDaE0B;+BAGIt5Bc;wDAQJu5ByB;0MAaGv5Bc;AAAJuyBoB;0GAaLxLG;sMAeAyS0B;gYA4CIhBa;sFAeAAY;iPAoBEx4Be;wCAuBN+mBG;+MAiCH0S2C;OAIYXkC;iuBAmGoBS0B;mMAkBpBv5Bc;AAAJuyBa;oBAAAACvB32DZ6GY,A;0DuBw3DOrSG;iOAwEQ2SACv7DOlBa,A;YDy7DLAY;4OAsCDAgC;iFAYLAQ;sBAA4CAiB;slBAuZhDzPK;2BAAAAU;mCAtBgC4QAJznFV35BW,A;+QI+oFtB+oBS;qnBAg1BQ+Ie;g/GE0mRC7KAUhxYyBjnBW,A;AVgxYzB45BAA6tUL55BQ,A;2BA7tUKinBAUhxYyBjnBkB,A;2GVmzpCZAAA+9FJAAAea65BAAAA75BoC,A,4B,A;cA/+FxCAQ;6DAoCiBysBoL;6EAgtDXzsBAA5KkC85BQ,AACECQ,AACGCc,A;AA2E7Ch6BU;AAkGci6BAD15sCDj6BU,A;+tGErTTk6B2B;gdCmdcl6BAsBusBSAA5CnoCvBAAAzB0Bo3BAAAAp3BiC,A,A,gC,A;qzBuB6B9Bm6BS;SAAAAa;uHA2DU3BQ;iZA+BKpNgB;AAAwBAmB;AAAxBAK;oBAEAAgB;AACPAmB;AAHOAK;sCAiBGgPM;YAAXHAJ+KMj6BW,A;iBI/KKo6BY;SAsCgCCoB;AACHCY;0HAoRnBCyC;0UAmBqBbAT/CzBlB6C,A;2ESkDI1lDSAoEpB0nDe,kB;AApEFCAHy+kCJF0B,A;6IGv9kCEvnDyIAkCoBunDyB,kD;+JAMsBGATxdhCCO,A;oCSwgBNCsFAOqB9IW,gH;OAPrB8IAAWY9Ia,yD;4pCE1jBT+IyC;AACcAsD;eAErBN0B;AACAA0B;AACOE2C;AAEPF0B;AACAA0B;AACOEwC;kwBlCuHO7mDAA8CgBmrB0D,A;qMAfhClrBAAmB0BkrBqF,A;8V4B4XR+7BqB;iyG5BpQY7IW;gBAqB5B8IgB;4a4BrLsBCA0ByFuBh7BkB,A;gC1BzFvBg7BA0ByFuBh7B4B,A;6B1B4C/Ci7B6B;ksBA0RACkB;+GAiE4BCe;gBAcEn7BoB;kJAmD9Bk7BuC;ilDLprBOEwB;8JAwFACiC;uwClC/FuBr7BS;iBAAAAe;OAAAAa;4YAoKPAmB;6BAAAAqC;2MG9IGAmB;yBAAAAc;iPA2UAAmB;0XA6DAAmB;ohBG1SPs7BK;oDAaVAO;2sBC48CmB9C+B;g5BAs2BVvGS;gKoBp5EPjyBmB;yDAAAAW;UAIqB+nBgB;YAAAAAAJrB/nB4B,A;8EAWFu7BS;qSA8CICG;wqBA8HgBx7BiC;ghBA0HlBAU;sBAAAAAA0BbAAAAAAO,A,A;mbd1Tey7BG;0JAmFFz7BW;qCAgDGsyBG;+CAQkBoJK;mNAuElBpJkB;AAIIqJAA5GECe,A;kEA+GVC0B;0rCLtJHzJiB;qDAMyB0JM;AAygC3BpIqB;02BW/2BG1zBc;iMChRI+7BW;iEAQZCS;6EAYYDW;qFAoHPEW;oBACEpEY;AAA6BqEI;8CAazBrEK;kGAQLDU;kRAkIkBnQW;kGAoBAznBuC;QACP8oBwD;wDASO9oB+B;QACPm8BwD;6GAgGbCG;6CAQiB7EQ;AACLSY;uBAQdlsDgB;gFAQEswDG;kGAiBiB7EQ;AACLSY;mCAQdlsDgB;mSAsGFurDW;oCAQAgFmB;iGAiEAvwDmB;4DAOY2rDmB;AAGR3rDgB;oEAgBJAmB;gkBAwEyBwwDGApjBlBzES,AAAU0Ea,A;gCAsjBwB7EE;2BACDAQ;mDAOcMiB;AAC3BPmB;IACqBCI;+LAkBjB8EC;IAAAAAA7nBxB3ES,AAA+B4EO,A;gIAsoBC/ES;iBAElBgFAA9oBdCU,A;0DAmpBsBjFa;kJC0kBvBkFsD;8HAyMJjFU;6eKzbS33BwB;KAAAAAA6XbAAAAAAU,A,A;yMAnWew7BiB;qzBA+JiBx7B+B;qhBwB1wCJAkB;sBAAAAW;8CA6QFg7BAevDuBh7BW,A;QfuDvBg7BAevDuBh7B8B,A;sFfkS5Bm7Be;sSrBlaf5Ie;AACAAAd2fJ6GU,A;Ac1fI7GW;sUwBGesKkB;4DA0CEpVG;eAAAAiB;mBAMKAe;AAFS+QuB;AAET/QG;AAAtB8Ke;AAAsB9KgB;0BAMHAG;AAFnB8KkB;AAEmB9KgB;sHA+FeAM;qBAAAAS;iIvB5IlCqVG;iJAWYAa;AAA2BpVK;sCAMvCoVU;AAAiC/UAHnH1B/nBM,G;kBGmH0B+nBOHnH1B/nBW,A;QGoHJAc;+BASH88BS;4HA+BAAS;4GAiCAAS;4QAgDAAS;2VA0DWAiB;0CASAAU;kCAEclUASuTC5oBuB,A;wdRjiBjB+8B2D;mNAqBmBrVqB;oEAQd1nBc;AAAJuyBa;mBAAAsGAhBgfGCiB,A;0FgBheYpRQ;uGASvB6KAhBkdN6GK,A;QgB9cyCrSG;omBuBsE1B/mBc;0FAQR+mBG;2DCnCqBsEa;UAAAAI;8MvBjHD2Rc;8DAYZtRqB;iKAmDFuRiC;mUAqCACU;qYAoJNl9BY;AAAAm9Be;8VA8QqBn9BoC;glBAatB64BAjBMWCa,A;iFiBGLDAjBHKCa,A;ciBQLDAjBRKCa,A;kBiBeLDAjBfKCe,A;AiBgBLDAjBhBKCC,AAAjBMa,A;wMiB4CQPAjB5CSCW,A;iFiBwDbDAjBxDaCmB,A;oCiBiEV/RG;gCjBxdgCqWmB;s1BXoQftVK;ihDgCzOiB9nBgB;UAAAAa;8frBnMXiyBc;qRuBovCpBoLsB;wEAKFAwB;AACAAyB;weAoNqBCMA+1ClB5DAJ/7EWlB2B,A,AIm8ElBtJa,+BAIFqOOA/BY7DAJx6EQlBsB,A,4BI+6EpBjG4B,A,yD;sLAr0C8D/CG;qCAA9DxvBG;wVAuackvBG;iBAEIwKAJnhDElBmC,A;qBI6hDyBAiB;iSA47B3CtJmB;IACACa;oEAIAIa;sBACACK;oBACACa;sBADADK;kPAnlBegOuC;AACU9DAJ74DPlBc,A;AI84DlBjGAvBlsDJ6GS,A;AuBmsDqBoEW;AAHFAa;0NAssCEC2FAgBdz9BG,A;0BAhBcy9B2B;6jBA02BjBCgC;aACAC6B;cACACwB;aACAC+B;8OAaAH+B;UACAC6B;oNAoDG39BI;AADFuvBQ;2MAgEemKAJhkIElBgC,A;wCI0kIkBAiB;ioCEurNpBsFoB;AAAOCgB;wIAKzBDoB;AAAcAiB;aACdCmB;AAAaAgB;0HAIeDoB;AAAMCK;CAAAAU;odAi9CI/9BmB;sCA8JXAW;mFAumBCg+BAAs8xBuBCc,cAyBvDDAAAAAAACEEAAoFAlTO,Y,AAnFAmTAAiKAnTO,+B,A,A,A;2BA7nyB4BhrB+B;+LAkBVo+BwB;iLAkBdCAA0BDCgF,A;u0CAk7P4BCkB;4TA0GAAkB;+lBAmhClB7WyB;sMAeuBAuB;0JAsFLmTe;SAGejSAAy6cnC5oBU,A;iCAz6cmC4oBAAy6cnC5oBQ,A;k5BAv5UoBu+BkB;wiCAg0DlB1DgB;mVA0aM76BoC;AACV45BAA1sME55BW,A;IA0sMiB45BAA1sMjB55BY,A;0IAiyMQA6B;AAId45BAAryMM55BU,A;uCAuyMO45BAAvyMP55BU,A;SAwyMF45BAAxyME55BW,A;IAwyMe45BAAxyMf55BQ,A;oJAg2MQA6B;AAId45BAAp2MM55BU,A;uCAs2MF45BAAt2ME55BW,A;IAs2MmB45BAAt2MnB55BQ,A;gGA27MF2rBQ;qzCA4pJWmSoB;AAAOCmB;AAAM3WqB;AAASCmB;qHAKxCyWoB;AAAcAiB;aACdCmB;AAAaAgB;aACb3WkB;6BACACmB;wFAE4ByWoB;AAAMCmB;AAAK3WqB;AAAOCQ;CAAAAU;upCA4oC9BwTU;8CAAAAAA4DX2DoB,A;kJAjDDCwB;uCAiDCDkB;qDAIPjEI;2DA0GkCMAA9G3B2DkB,A;mBA8G2B3DwB;AAAY6DQ;qBAG9CjEAA7GAFI,A;EA6GAEwB;AAAYiEa;8bAiBNDoB;UACAEI;MAAAAc;kCAQAFoB;YACOEI;MAAAAY;iIA+yBEnGY;2EAWCoGiB;sBAaTCoC;mBAImBCU;EAAAAuC;+BAInBCAAiDDCqB,A;+CAkhCmBxGQ;qPA+Cdx4BkB;sBAAAAW;+1BAitDC66BAA9xHL2DmC,A;mrBAkoKI3DAAloKJ2DG,kvB;iwBA0rKUpEADv/uCJ6ES,A;ACw/uCMvX0B;AAObmT6C;iCAAAAQ;YAAAAAAlsKC2D2B,A;AAosKiB3DAApsKjB2DmH,A;sVA6kKDUK;iEAAAAsBAwBJ7QiC,iB;4xBkBhiwCEqKgB;8OAqCyC9PW;wBAyBflBE;qTC3C5BTU;mBAAYgTAxDgZZnIS,A;AwDhZA7KATkJuCjnBW,A;WSlJvCinBATkJuCjnBgB,A;WSlJ3Bi6BAxDgZZnIiB,A;YwDrYE+IiB;KAAAAAAuG4BlTsB,A;gBADNDK;UAAAAG;kCACMCmB;SAGAwX8B;OAAUvWApBigBZ5oBoB,A;2MG9KxBAwB;u+BmBg7EmB66BArBgjgClB2DkB,A;qHqBrigCQhGY;0BAQf+BI;sCA6B6Bv6BkB;4FAoBnBitBO;AAAuBmSAAlBDp/BWFh7FT45BAnBqotBZ55Ba,A,A,A;QqBlsnBMw6BU;qCAWGwDArBg3mCiCC0B,AAyBvDDAAAAAAACEEAAoFAlTO,Y,AAnFAmTAAiKAnTO,Q,A,A,A;AqB5inCoBqUArBq+mCpBrUO,AAAQhrBY,A;AqBn+mCcAArB66pChBAW,A;AqB/6pCcg+B2B;gEAUEh+B6B;AAEF45BArB2qnBT55Ba,A;+gBsBptsBoBu+BkB;+enB1bxB1DAHu7lCA2DqD,A;AGr7lCK3DAHq7lCL2DmC,A;uGGx6lCP1iCAuBlBAwjCuD,A;uUvBkCiBCG;gBADSC6B;mBACTDqB;AACHtFAOqIsBj6BwB,A;APrIZo6BkB;aAAAAa;gFAQVVAJ6kBQlBa,A;kVI1hBLx4BsB;qPAyDWu6BiC;AAAAA2C;kcA2B5BA2D;8FAcAAqC;AAAAAsC;AAIIvPAHysnCG6T2B,A;6iBGvpnCWnFAhB1NIlBO,A;uBgB2NpB5PAxC0GwB5oBS,iB;AwC1GxBynBY;WAAAAG;sBAAAAwC;8QAaoB8SsB;AACKxT6C;qFAOHwTwC;6GAmBR/BQ;6KAgBhBiHM;AAEACiEAlFEnFuC,A;AAmFFoFmF;kGAUqCnHa;oOAiBrCiHS;+pBA+BqD5EAH4rlCnBAAA9G3B2DyB,A,A;AG9klC8CoBAHi9YhB5/BS,AAAkBqxBAA9LfrxBa,A,A;AGnxYa66BAH4rlCP6DY,A;+JGhrlCjB3XS;uHAgBvB0YY;kOA0BQIO;AAAoBCO;2BAEHCsB;AACQCS;qBAEcAiE;AAC7CC6D;0pBElaN1F0B;AACAA0B;AACOE2C;AAEPF0B;AACAA0B;AACOEM;ygsBtC+vCQyF0G;mEAUAC8G;iEAUACuD;mEAUAC2D;wHwBnxBgCCU;2cMkB/BCM;qtC5B1ZOCAAsE3B1hCAEnJAv+BuB,A,A;AA+EkBqTAA8CgBmrBAANKz+B" + } +} diff --git a/flutter/static-assets/favicon.png b/flutter/static-assets/favicon.png new file mode 100644 index 000000000..43d2ffa07 Binary files /dev/null and b/flutter/static-assets/favicon.png differ diff --git a/flutter/static-assets/github.css b/flutter/static-assets/github.css new file mode 100644 index 000000000..791932b87 --- /dev/null +++ b/flutter/static-assets/github.css @@ -0,0 +1,99 @@ +/* + +github.com style (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #f8f8f8; +} + +.hljs-comment, +.hljs-quote { + color: #998; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold; +} + +.hljs-number, +.hljs-literal, +.hljs-variable, +.hljs-template-variable, +.hljs-tag .hljs-attr { + color: #008080; +} + +.hljs-string, +.hljs-doctag { + color: #d14; +} + +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #900; + font-weight: bold; +} + +.hljs-subst { + font-weight: normal; +} + +.hljs-type, +.hljs-class .hljs-title { + color: #458; + font-weight: bold; +} + +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal; +} + +.hljs-regexp, +.hljs-link { + color: #009926; +} + +.hljs-symbol, +.hljs-bullet { + color: #990073; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #0086b3; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + background: #fdd; +} + +.hljs-addition { + background: #dfd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/flutter/static-assets/highlight.pack.js b/flutter/static-assets/highlight.pack.js new file mode 100644 index 000000000..dabdd3c0f --- /dev/null +++ b/flutter/static-assets/highlight.pack.js @@ -0,0 +1,775 @@ +/*! + Highlight.js v11.0.1 (git: 1cf31f015d) + (c) 2006-2021 Ivan Sagalaev and other contributors + License: BSD-3-Clause + */ +var hljs=function(){"use strict";var e={exports:{}};function t(e){ +return e instanceof Map?e.clear=e.delete=e.set=()=>{ +throw Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((n=>{var i=e[n] +;"object"!=typeof i||Object.isFrozen(i)||t(i)})),e} +e.exports=t,e.exports.default=t;var n=e.exports;class i{constructor(e){ +void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1} +ignoreMatch(){this.isMatchIgnored=!0}}function r(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function s(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const o=e=>!!e.kind +;class a{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=r(e)}openNode(e){if(!o(e))return;let t=e.kind +;t=e.sublanguage?"language-"+t:((e,{prefix:t})=>{if(e.includes(".")){ +const n=e.split(".") +;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ") +}return`${t}${e}`})(t,{prefix:this.classPrefix}),this.span(t)}closeNode(e){ +o(e)&&(this.buffer+="")}value(){return this.buffer}span(e){ +this.buffer+=``}}class l{constructor(){this.rootNode={ +children:[]},this.stack=[this.rootNode]}get top(){ +return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){ +this.top.children.push(e)}openNode(e){const t={kind:e,children:[]} +;this.add(t),this.stack.push(t)}closeNode(){ +if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){ +for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)} +walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){ +"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{ +l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e} +addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())} +addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root +;n.kind=t,n.sublanguage=!0,this.add(n)}toHTML(){ +return new a(this,this.options).value()}finalize(){return!0}}function g(e){ +return e?"string"==typeof e?e:e.source:null}function d(...e){ +return e.map((e=>g(e))).join("")}function u(...e){return"("+((e=>{ +const t=e[e.length-1] +;return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{} +})(e).capture?"":"?:")+e.map((e=>g(e))).join("|")+")"}function h(e){ +return RegExp(e.toString()+"|").exec("").length-1} +const f=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./ +;function p(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n +;let i=g(e),r="";for(;i.length>0;){const e=f.exec(i);if(!e){r+=i;break} +r+=i.substring(0,e.index), +i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+t):(r+=e[0], +"("===e[0]&&n++)}return r})).map((e=>`(${e})`)).join(t)} +const b="[a-zA-Z]\\w*",m="[a-zA-Z_]\\w*",E="\\b\\d+(\\.\\d+)?",x="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",y="\\b(0b[01]+)",w={ +begin:"\\\\[\\s\\S]",relevance:0},_={scope:"string",begin:"'",end:"'", +illegal:"\\n",contains:[w]},v={scope:"string",begin:'"',end:'"',illegal:"\\n", +contains:[w]},O=(e,t,n={})=>{const i=s({scope:"comment",begin:e,end:t, +contains:[]},n);i.contains.push({scope:"doctag", +begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)", +end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0}) +;const r=u("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/) +;return i.contains.push({begin:d(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i +},k=O("//","$"),N=O("/\\*","\\*/"),S=O("#","$");var M=Object.freeze({ +__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:b,UNDERSCORE_IDENT_RE:m, +NUMBER_RE:E,C_NUMBER_RE:x,BINARY_NUMBER_RE:y, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=d(t,/.*\b/,e.binary,/\b.*/)),s({scope:"meta",begin:t, +end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)}, +BACKSLASH_ESCAPE:w,APOS_STRING_MODE:_,QUOTE_STRING_MODE:v,PHRASAL_WORDS_MODE:{ +begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/ +},COMMENT:O,C_LINE_COMMENT_MODE:k,C_BLOCK_COMMENT_MODE:N,HASH_COMMENT_MODE:S, +NUMBER_MODE:{scope:"number",begin:E,relevance:0},C_NUMBER_MODE:{scope:"number", +begin:x,relevance:0},BINARY_NUMBER_MODE:{scope:"number",begin:y,relevance:0}, +REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//, +end:/\/[gimuy]*/,illegal:/\n/,contains:[w,{begin:/\[/,end:/\]/,relevance:0, +contains:[w]}]}]},TITLE_MODE:{scope:"title",begin:b,relevance:0}, +UNDERSCORE_TITLE_MODE:{scope:"title",begin:m,relevance:0},METHOD_GUARD:{ +begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}})});function R(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function j(e,t){ +void 0!==e.className&&(e.scope=e.className,delete e.className)}function A(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=R,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function I(e,t){ +Array.isArray(e.illegal)&&(e.illegal=u(...e.illegal))}function B(e,t){ +if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function T(e,t){ +void 0===e.relevance&&(e.relevance=1)}const L=(e,t)=>{if(!e.beforeMatch)return +;if(e.starts)throw Error("beforeMatch cannot be used with starts") +;const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t] +})),e.keywords=n.keywords, +e.begin=d(n.beforeMatch,d("(?=",n.begin,")")),e.starts={relevance:0, +contains:[Object.assign(n,{endsParent:!0})]},e.relevance=0,delete n.beforeMatch +},D=["of","and","for","in","not","or","if","then","parent","list","value"] +;function P(e,t,n="keyword"){const i=Object.create(null) +;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{ +Object.assign(i,P(e[n],t,n))})),i;function r(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;i[n[0]]=[e,C(n[0],n[1])]}))}}function C(e,t){ +return t?Number(t):(e=>D.includes(e.toLowerCase()))(e)?0:1}const H={},$=e=>{ +console.error(e)},U=(e,...t)=>{console.log("WARN: "+e,...t)},z=(e,t)=>{ +H[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),H[`${e}/${t}`]=!0) +},K=Error();function W(e,t,{key:n}){let i=0;const r=e[n],s={},o={} +;for(let e=1;e<=t.length;e++)o[e+i]=r[e],s[e+i]=!0,i+=h(t[e-1]) +;e[n]=o,e[n]._emit=s,e[n]._multi=!0}function X(e){(e=>{ +e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope, +delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={ +_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope +}),(e=>{if(Array.isArray(e.begin)){ +if(e.skip||e.excludeBegin||e.returnBegin)throw $("skip, excludeBegin, returnBegin not compatible with beginScope: {}"), +K +;if("object"!=typeof e.beginScope||null===e.beginScope)throw $("beginScope must be object"), +K;W(e,e.begin,{key:"beginScope"}),e.begin=p(e.begin,{joinWith:""})}})(e),(e=>{ +if(Array.isArray(e.end)){ +if(e.skip||e.excludeEnd||e.returnEnd)throw $("skip, excludeEnd, returnEnd not compatible with endScope: {}"), +K +;if("object"!=typeof e.endScope||null===e.endScope)throw $("endScope must be object"), +K;W(e,e.end,{key:"endScope"}),e.end=p(e.end,{joinWith:""})}})(e)}function G(e){ +function t(t,n){return RegExp(g(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))} +class n{constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=h(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null) +;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(p(e,{joinWith:"|" +}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex +;const t=this.matcherRe.exec(e);if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,i)}}class i{constructor(){ +this.rules=[],this.multiRegexes=[], +this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){ +if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=s(e.classNameAliases||{}),function n(r,o){const a=r +;if(r.isCompiled)return a +;[j,B,X,L].forEach((e=>e(r,o))),e.compilerExtensions.forEach((e=>e(r,o))), +r.__beforeBegin=null,[A,I,T].forEach((e=>e(r,o))),r.isCompiled=!0;let l=null +;return"object"==typeof r.keywords&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords), +l=r.keywords.$pattern, +delete r.keywords.$pattern),l=l||/\w+/,r.keywords&&(r.keywords=P(r.keywords,e.case_insensitive)), +a.keywordPatternRe=t(l,!0), +o&&(r.begin||(r.begin=/\B|\b/),a.beginRe=t(r.begin),r.end||r.endsWithParent||(r.end=/\B|\b/), +r.end&&(a.endRe=t(r.end)), +a.terminatorEnd=g(r.end)||"",r.endsWithParent&&o.terminatorEnd&&(a.terminatorEnd+=(r.end?"|":"")+o.terminatorEnd)), +r.illegal&&(a.illegalRe=t(r.illegal)), +r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>s(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:Z(e)?s(e,{ +starts:e.starts?s(e.starts):null +}):Object.isFrozen(e)?s(e):e))("self"===e?r:e)))),r.contains.forEach((e=>{n(e,a) +})),r.starts&&n(r.starts,o),a.matcher=(e=>{const t=new i +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(a),a}(e)}function Z(e){ +return!!e&&(e.endsWithParent||Z(e.starts))}const F=r,V=s,q=Symbol("nomatch") +;var J=(e=>{const t=Object.create(null),r=Object.create(null),s=[];let o=!0 +;const a="Could not find the language '{}', did you forget to load/include a language module?",l={ +disableAutodetect:!0,name:"Plain text",contains:[]};let g={ +ignoreUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +cssSelector:"pre code",languages:null,__emitter:c};function d(e){ +return g.noHighlightRe.test(e)}function u(e,t,n,i){let r="",s="" +;"object"==typeof t?(r=e, +n=t.ignoreIllegals,s=t.language,i=void 0):(z("10.7.0","highlight(lang, code, ...args) has been deprecated."), +z("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"), +s=e,r=t),void 0===n&&(n=!0);const o={code:r,language:s};w("before:highlight",o) +;const a=o.result?o.result:h(o.language,o.code,n,i) +;return a.code=o.code,w("after:highlight",a),a}function h(e,n,r,s){ +const l=Object.create(null);function c(){if(!k.keywords)return void S.addText(M) +;let e=0;k.keywordPatternRe.lastIndex=0;let t=k.keywordPatternRe.exec(M),n="" +;for(;t;){n+=M.substring(e,t.index) +;const r=_.case_insensitive?t[0].toLowerCase():t[0],s=(i=r,k.keywords[i]);if(s){ +const[e,i]=s +;if(S.addText(n),n="",l[r]=(l[r]||0)+1,l[r]<=7&&(R+=i),e.startsWith("_"))n+=t[0];else{ +const n=_.classNameAliases[e]||e;S.addKeyword(t[0],n)}}else n+=t[0] +;e=k.keywordPatternRe.lastIndex,t=k.keywordPatternRe.exec(M)}var i +;n+=M.substr(e),S.addText(n)}function d(){null!=k.subLanguage?(()=>{ +if(""===M)return;let e=null;if("string"==typeof k.subLanguage){ +if(!t[k.subLanguage])return void S.addText(M) +;e=h(k.subLanguage,M,!0,N[k.subLanguage]),N[k.subLanguage]=e._top +}else e=f(M,k.subLanguage.length?k.subLanguage:null) +;k.relevance>0&&(R+=e.relevance),S.addSublanguage(e._emitter,e.language) +})():c(),M=""}function u(e,t){let n=1;for(;void 0!==t[n];){if(!e._emit[n]){n++ +;continue}const i=_.classNameAliases[e[n]]||e[n],r=t[n] +;i?S.addKeyword(r,i):(M=r,c(),M=""),n++}}function p(e,t){ +return e.scope&&"string"==typeof e.scope&&S.openNode(_.classNameAliases[e.scope]||e.scope), +e.beginScope&&(e.beginScope._wrap?(S.addKeyword(M,_.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap), +M=""):e.beginScope._multi&&(u(e.beginScope,t),M="")),k=Object.create(e,{parent:{ +value:k}}),k}function b(e,t,n){let r=((e,t)=>{const n=e&&e.exec(t) +;return n&&0===n.index})(e.endRe,n);if(r){if(e["on:end"]){const n=new i(e) +;e["on:end"](t,n),n.isMatchIgnored&&(r=!1)}if(r){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return b(e.parent,t,n)}function m(e){ +return 0===k.matcher.regexIndex?(M+=e[0],1):(I=!0,0)}function x(e){ +const t=e[0],i=n.substr(e.index),r=b(k,e,i);if(!r)return q;const s=k +;k.endScope&&k.endScope._wrap?(d(), +S.addKeyword(t,k.endScope._wrap)):k.endScope&&k.endScope._multi?(d(), +u(k.endScope,e)):s.skip?M+=t:(s.returnEnd||s.excludeEnd||(M+=t), +d(),s.excludeEnd&&(M=t));do{ +k.scope&&!k.isMultiClass&&S.closeNode(),k.skip||k.subLanguage||(R+=k.relevance), +k=k.parent}while(k!==r.parent) +;return r.starts&&p(r.starts,e),s.returnEnd?0:t.length}let y={};function w(t,s){ +const a=s&&s[0];if(M+=t,null==a)return d(),0 +;if("begin"===y.type&&"end"===s.type&&y.index===s.index&&""===a){ +if(M+=n.slice(s.index,s.index+1),!o){const t=Error(`0 width match regex (${e})`) +;throw t.languageName=e,t.badRule=y.rule,t}return 1} +if(y=s,"begin"===s.type)return(e=>{ +const t=e[0],n=e.rule,r=new i(n),s=[n.__beforeBegin,n["on:begin"]] +;for(const n of s)if(n&&(n(e,r),r.isMatchIgnored))return m(t) +;return n.skip?M+=t:(n.excludeBegin&&(M+=t), +d(),n.returnBegin||n.excludeBegin||(M=t)),p(n,e),n.returnBegin?0:t.length})(s) +;if("illegal"===s.type&&!r){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(k.scope||"")+'"') +;throw e.mode=k,e}if("end"===s.type){const e=x(s);if(e!==q)return e} +if("illegal"===s.type&&""===a)return 1 +;if(A>1e5&&A>3*s.index)throw Error("potential infinite loop, way more iterations than matches") +;return M+=a,a.length}const _=E(e) +;if(!_)throw $(a.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const v=G(_);let O="",k=s||v;const N={},S=new g.__emitter(g);(()=>{const e=[] +;for(let t=k;t!==_;t=t.parent)t.scope&&e.unshift(t.scope) +;e.forEach((e=>S.openNode(e)))})();let M="",R=0,j=0,A=0,I=!1;try{ +for(k.matcher.considerAll();;){ +A++,I?I=!1:k.matcher.considerAll(),k.matcher.lastIndex=j +;const e=k.matcher.exec(n);if(!e)break;const t=w(n.substring(j,e.index),e) +;j=e.index+t}return w(n.substr(j)),S.closeAllNodes(),S.finalize(),O=S.toHTML(),{ +language:e,value:O,relevance:R,illegal:!1,_emitter:S,_top:k}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{language:e,value:F(n), +illegal:!0,relevance:0,_illegalBy:{message:t.message,index:j, +context:n.slice(j-100,j+100),mode:t.mode,resultSoFar:O},_emitter:S};if(o)return{ +language:e,value:F(n),illegal:!1,relevance:0,errorRaised:t,_emitter:S,_top:k} +;throw t}}function f(e,n){n=n||g.languages||Object.keys(t);const i=(e=>{ +const t={value:F(e),illegal:!1,relevance:0,_top:l,_emitter:new g.__emitter(g)} +;return t._emitter.addText(e),t})(e),r=n.filter(E).filter(y).map((t=>h(t,e,!1))) +;r.unshift(i);const s=r.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(E(e.language).supersetOf===t.language)return 1 +;if(E(t.language).supersetOf===e.language)return-1}return 0})),[o,a]=s,c=o +;return c.secondBest=a,c}function p(e){let t=null;const n=(e=>{ +let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"" +;const n=g.languageDetectRe.exec(t);if(n){const t=E(n[1]) +;return t||(U(a.replace("{}",n[1])), +U("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"} +return t.split(/\s+/).find((e=>d(e)||E(e)))})(e);if(d(n))return +;w("before:highlightElement",{el:e,language:n +}),!g.ignoreUnescapedHTML&&e.children.length>0&&(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."), +console.warn("https://github.com/highlightjs/highlight.js/issues/2886"), +console.warn(e)),t=e;const i=t.textContent,s=n?u(i,{language:n,ignoreIllegals:!0 +}):f(i);e.innerHTML=s.value,((e,t,n)=>{const i=t&&r[t]||n +;e.classList.add("hljs"),e.classList.add("language-"+i) +})(e,n,s.language),e.result={language:s.language,re:s.relevance, +relevance:s.relevance},s.secondBest&&(e.secondBest={ +language:s.secondBest.language,relevance:s.secondBest.relevance +}),w("after:highlightElement",{el:e,result:s,text:i})}let b=!1;function m(){ +"loading"!==document.readyState?document.querySelectorAll(g.cssSelector).forEach(p):b=!0 +}function E(e){return e=(e||"").toLowerCase(),t[e]||t[r[e]]} +function x(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{ +r[e.toLowerCase()]=t}))}function y(e){const t=E(e) +;return t&&!t.disableAutodetect}function w(e,t){const n=e;s.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +b&&m()}),!1),Object.assign(e,{highlight:u,highlightAuto:f,highlightAll:m, +highlightElement:p, +highlightBlock:e=>(z("10.7.0","highlightBlock will be removed entirely in v12.0"), +z("10.7.0","Please use highlightElement now."),p(e)),configure:e=>{g=V(g,e)}, +initHighlighting:()=>{ +m(),z("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")}, +initHighlightingOnLoad:()=>{ +m(),z("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.") +},registerLanguage:(n,i)=>{let r=null;try{r=i(e)}catch(e){ +if($("Language definition for '{}' could not be registered.".replace("{}",n)), +!o)throw e;$(e),r=l} +r.name||(r.name=n),t[n]=r,r.rawDefinition=i.bind(null,e),r.aliases&&x(r.aliases,{ +languageName:n})},unregisterLanguage:e=>{delete t[e] +;for(const t of Object.keys(r))r[t]===e&&delete r[t]}, +listLanguages:()=>Object.keys(t),getLanguage:E,registerAliases:x, +autoDetection:y,inherit:V,addPlugin:e=>{(e=>{ +e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{ +e["before:highlightBlock"](Object.assign({block:t.el},t)) +}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{ +e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),s.push(e)} +}),e.debugMode=()=>{o=!1},e.safeMode=()=>{o=!0},e.versionString="11.0.1" +;for(const e in M)"object"==typeof M[e]&&n(M[e]);return Object.assign(e,M),e +})({}),Y=Object.freeze({__proto__:null});const Q=J +;for(const e of Object.keys(Y)){const t=e.replace("grmr_","") +;Q.registerLanguage(t,Y[e])}return Q}() +;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);hljs.registerLanguage("xml",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function n(e){return a("(?=",e,")")} +function a(...n){return n.map((n=>e(n))).join("")}function s(...n){ +return"("+((e=>{const n=e[e.length-1] +;return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{} +})(n).capture?"":"?:")+n.map((n=>e(n))).join("|")+")"}return e=>{ +const t=a(/[A-Z_]/,a("(?:",/[A-Z0-9_.-]*:/,")?"),/[A-Z0-9_.-]*/),i={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},c={begin:/\s/, +contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},r=e.inherit(c,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{ +className:"string"}),g=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),m={ +endsWithParent:!0,illegal:/`]+/}]}]}]};return{ +name:"HTML, XML", +aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"], +case_insensitive:!0,contains:[{className:"meta",begin://, +relevance:10,contains:[c,g,l,r,{begin:/\[/,end:/\]/,contains:[{className:"meta", +begin://,contains:[c,r,g,l]}]}]},e.COMMENT(//,{ +relevance:10}),{begin://,relevance:10},i,{ +className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[m],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[m],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name", +begin:t,relevance:0,starts:m}]},{className:"tag",begin:a(/<\//,n(a(t,/>/))), +contains:[{className:"name",begin:t,relevance:0},{begin:/>/,relevance:0, +endsParent:!0}]}]}}})());hljs.registerLanguage("markdown",(()=>{"use strict";function n(...n){ +return n.map((n=>{return(e=n)?"string"==typeof e?e:e.source:null;var e +})).join("")}return e=>{const a={begin:/<\/?[A-Za-z_]/,end:">", +subLanguage:"xml",relevance:0},i={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0 +},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{begin:n(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.+?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{ +className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},s={className:"strong",contains:[], +variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},c={ +className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{ +begin:/_(?!_)/,end:/_/,relevance:0}]};s.contains.push(c),c.contains.push(s) +;let t=[a,i] +;return s.contains=s.contains.concat(t),c.contains=c.contains.concat(t), +t=t.concat(s,c),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:t},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:t}]}]},a,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},s,c,{className:"quote",begin:"^>\\s+",contains:t, +end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{ +begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{ +begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))", +contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{ +begin:"^[-\\*]{3,}",end:"$"},i,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})());hljs.registerLanguage("css",(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],t=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],i=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],o=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],r=["align-content","align-items","align-self","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","auto","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","clip-path","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-variant","font-variant-ligatures","font-variation-settings","font-weight","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inherit","initial","justify-content","left","letter-spacing","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marks","mask","max-height","max-width","min-height","min-width","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","perspective","perspective-origin","pointer-events","position","quotes","resize","right","src","tab-size","table-layout","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-indent","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","white-space","widows","width","word-break","word-spacing","word-wrap","z-index"].reverse() +;return n=>{const a=(e=>({IMPORTANT:{scope:"meta",begin:"!important"},HEXCOLOR:{ +scope:"number",begin:"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"}, +ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$", +contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{ +scope:"number", +begin:e.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?", +relevance:0}}))(n),l=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"}, +contains:[n.C_BLOCK_COMMENT_MODE,{begin:/-(webkit|moz|ms|o)-(?=[a-z])/ +},a.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0 +},{className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},a.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+i.join("|")+")"},{begin:"::("+o.join("|")+")"}]},{ +className:"attribute",begin:"\\b("+r.join("|")+")\\b"},{begin:":",end:"[;}]", +contains:[a.HEXCOLOR,a.IMPORTANT,a.CSS_NUMBER_MODE,...l,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}] +},{className:"built_in",begin:/[\w-]+(?=\()/}]},{ +begin:(s=/@/,((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?=",s,")")), +end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword", +begin:/@-?\w[\w]*(-\w+)*/},{begin:/\s/,endsWithParent:!0,excludeEnd:!0, +relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:"and or not only", +attribute:t.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute" +},...l,a.CSS_NUMBER_MODE]}]},{className:"selector-tag", +begin:"\\b("+e.join("|")+")\\b"}]};var s}})());hljs.registerLanguage("plaintext",(()=>{"use strict";return t=>({ +name:"Plain text",aliases:["text","txt"],disableAutodetect:!0})})());hljs.registerLanguage("bash",(()=>{"use strict";function e(...e){ +return e.map((e=>{return(s=e)?"string"==typeof s?s:s.source:null;var s +})).join("")}return s=>{const n={},t={begin:/\$\{/,end:/\}/,contains:["self",{ +begin:/:-/,contains:[n]}]};Object.assign(n,{className:"variable",variants:[{ +begin:e(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},t]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[s.BACKSLASH_ESCAPE]},i={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[s.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},c={className:"string",begin:/"/,end:/"/, +contains:[s.BACKSLASH_ESCAPE,n,a]};a.contains.push(c);const o={begin:/\$\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},s.NUMBER_MODE,n] +},r=s.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),l={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[s.inherit(s.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{ +name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z._-]+\b/, +keyword:["if","then","else","elif","fi","for","while","in","do","done","case","esac","function"], +literal:["true","false"], +built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp" +},contains:[r,s.SHEBANG(),l,o,s.HASH_COMMENT_MODE,i,c,{className:"",begin:/\\"/ +},{className:"string",begin:/'/,end:/'/},n]}}})());hljs.registerLanguage("kotlin",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",n="[0-9a-fA-F](_*[0-9a-fA-F])*",a={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${n})\\.?|(${n})?\\.(${n}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${n})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};return e=>{const n={ +keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual", +built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing", +literal:"true false null"},i={className:"symbol",begin:e.UNDERSCORE_IDENT_RE+"@" +},s={className:"subst",begin:/\$\{/,end:/\}/,contains:[e.C_NUMBER_MODE]},t={ +className:"variable",begin:"\\$"+e.UNDERSCORE_IDENT_RE},r={className:"string", +variants:[{begin:'"""',end:'"""(?=[^"])',contains:[t,s]},{begin:"'",end:"'", +illegal:/\n/,contains:[e.BACKSLASH_ESCAPE]},{begin:'"',end:'"',illegal:/\n/, +contains:[e.BACKSLASH_ESCAPE,t,s]}]};s.contains.push(r);const l={ +className:"meta", +begin:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UNDERSCORE_IDENT_RE+")?" +},c={className:"meta",begin:"@"+e.UNDERSCORE_IDENT_RE,contains:[{begin:/\(/, +end:/\)/,contains:[e.inherit(r,{className:"string"})]}] +},o=a,b=e.COMMENT("/\\*","\\*/",{contains:[e.C_BLOCK_COMMENT_MODE]}),E={ +variants:[{className:"type",begin:e.UNDERSCORE_IDENT_RE},{begin:/\(/,end:/\)/, +contains:[]}]},d=E;return d.variants[1].contains=[E],E.variants[1].contains=[d], +{name:"Kotlin",aliases:["kt","kts"],keywords:n, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{className:"doctag", +begin:"@[A-Za-z]+"}]}),e.C_LINE_COMMENT_MODE,b,{className:"keyword", +begin:/\b(break|continue|return|this)\b/,starts:{contains:[{className:"symbol", +begin:/@\w+/}]}},i,l,c,{className:"function",beginKeywords:"fun",end:"[(]|$", +returnBegin:!0,excludeEnd:!0,keywords:n,relevance:5,contains:[{ +begin:e.UNDERSCORE_IDENT_RE+"\\s*\\(",returnBegin:!0,relevance:0, +contains:[e.UNDERSCORE_TITLE_MODE]},{className:"type",begin://, +keywords:"reified",relevance:0},{className:"params",begin:/\(/,end:/\)/, +endsParent:!0,keywords:n,relevance:0,contains:[{begin:/:/,end:/[=,\/]/, +endsWithParent:!0,contains:[E,e.C_LINE_COMMENT_MODE,b],relevance:0 +},e.C_LINE_COMMENT_MODE,b,l,c,r,e.C_NUMBER_MODE]},b]},{className:"class", +beginKeywords:"class interface trait",end:/[:\{(]|$/,excludeEnd:!0, +illegal:"extends implements",contains:[{ +beginKeywords:"public protected internal private constructor" +},e.UNDERSCORE_TITLE_MODE,{className:"type",begin://,excludeBegin:!0, +excludeEnd:!0,relevance:0},{className:"type",begin:/[,:]\s*/,end:/[<\(,]|$/, +excludeBegin:!0,returnEnd:!0},l,c]},r,{className:"meta",begin:"^#!/usr/bin/env", +end:"$",illegal:"\n"},o]}}})());hljs.registerLanguage("diff",(()=>{"use strict";function e(...e){ +return"("+((e=>{const n=e[e.length-1] +;return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{} +})(e).capture?"":"?:")+e.map((e=>{return(n=e)?"string"==typeof n?n:n.source:null +;var n})).join("|")+")"}return n=>({name:"Diff",aliases:["patch"],contains:[{ +className:"meta",relevance:10, +match:e(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/) +},{className:"comment",variants:[{ +begin:e(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/), +end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{ +className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/, +end:/$/}]})})());hljs.registerLanguage("shell",(()=>{"use strict";return s=>({ +name:"Shell Session",aliases:["console","shellsession"],contains:[{ +className:"meta",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{ +end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]})})());hljs.registerLanguage("json",(()=>{"use strict";return e=>({name:"JSON", +contains:[{className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01 +},{match:/[{}[\],:]/,className:"punctuation",relevance:0},e.QUOTE_STRING_MODE,{ +beginKeywords:"true false null" +},e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}) +})());hljs.registerLanguage("java",(()=>{"use strict" +;var e="\\.([0-9](_*[0-9])*)",a="[0-9a-fA-F](_*[0-9a-fA-F])*",n={ +className:"number",variants:[{ +begin:`(\\b([0-9](_*[0-9])*)((${e})|\\.)?|(${e}))[eE][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:`\\b([0-9](_*[0-9])*)((${e})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{ +begin:`(${e})[fFdD]?\\b`},{begin:"\\b([0-9](_*[0-9])*)[fFdD]\\b"},{ +begin:`\\b0[xX]((${a})\\.?|(${a})?\\.(${a}))[pP][+-]?([0-9](_*[0-9])*)[fFdD]?\\b` +},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${a})[lL]?\\b`},{ +begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}], +relevance:0};function s(e,a,n){return-1===n?"":e.replace(a,(t=>s(e,a,n-1)))} +return e=>{ +const a="[\xc0-\u02b8a-zA-Z_$][\xc0-\u02b8a-zA-Z_$0-9]*",t=a+s("(?:<"+a+"~~~(?:\\s*,\\s*"+a+"~~~)*>)?",/~~~/g,2),i={ +keyword:["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do"], +literal:["false","true","null"], +type:["char","boolean","long","float","int","byte","short","double"], +built_in:["super","this"]},r={className:"meta",begin:"@"+a,contains:[{ +begin:/\(/,end:/\)/,contains:["self"]}]},l={className:"params",begin:/\(/, +end:/\)/,keywords:i,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0} +;return{name:"Java",aliases:["jsp"],keywords:i,illegal:/<\/|#/, +contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/, +relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{ +begin:/import java\.[a-z]+\./,keywords:"import",relevance:2 +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{ +match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,a],className:{ +1:"keyword",3:"title.class"}},{begin:[a,/\s+/,a,/\s+/,/=/],className:{1:"type", +3:"variable",5:"operator"}},{begin:[/record/,/\s+/,a],className:{1:"keyword", +3:"title.class"},contains:[l,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{ +beginKeywords:"new throw return else",relevance:0},{ +begin:["(?:"+t+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{ +2:"title.function"},keywords:i,contains:[{className:"params",begin:/\(/, +end:/\)/,keywords:i,relevance:0, +contains:[r,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,n,e.C_BLOCK_COMMENT_MODE] +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},n,r]}}})());hljs.registerLanguage("objectivec",(()=>{"use strict";return e=>{ +const n=/[a-zA-Z@][a-zA-Z0-9_]*/,_={$pattern:n, +keyword:["@interface","@class","@protocol","@implementation"]};return{ +name:"Objective-C",aliases:["mm","objc","obj-c","obj-c++","objective-c++"], +keywords:{$pattern:n, +keyword:["int","float","while","char","export","sizeof","typedef","const","struct","for","union","unsigned","long","volatile","static","bool","mutable","if","do","return","goto","void","enum","else","break","extern","asm","case","short","default","double","register","explicit","signed","typename","this","switch","continue","wchar_t","inline","readonly","assign","readwrite","self","@synchronized","id","typeof","nonatomic","super","unichar","IBOutlet","IBAction","strong","weak","copy","in","out","inout","bycopy","byref","oneway","__strong","__weak","__block","__autoreleasing","@private","@protected","@public","@try","@property","@end","@throw","@catch","@finally","@autoreleasepool","@synthesize","@dynamic","@selector","@optional","@required","@encode","@package","@import","@defs","@compatibility_alias","__bridge","__bridge_transfer","__bridge_retained","__bridge_retain","__covariant","__contravariant","__kindof","_Nonnull","_Nullable","_Null_unspecified","__FUNCTION__","__PRETTY_FUNCTION__","__attribute__","getter","setter","retain","unsafe_unretained","nonnull","nullable","null_unspecified","null_resettable","class","instancetype","NS_DESIGNATED_INITIALIZER","NS_UNAVAILABLE","NS_REQUIRES_SUPER","NS_RETURNS_INNER_POINTER","NS_INLINE","NS_AVAILABLE","NS_DEPRECATED","NS_ENUM","NS_OPTIONS","NS_SWIFT_UNAVAILABLE","NS_ASSUME_NONNULL_BEGIN","NS_ASSUME_NONNULL_END","NS_REFINED_FOR_SWIFT","NS_SWIFT_NAME","NS_SWIFT_NOTHROW","NS_DURING","NS_HANDLER","NS_ENDHANDLER","NS_VALUERETURN","NS_VOIDRETURN"], +literal:["false","true","FALSE","TRUE","nil","YES","NO","NULL"], +built_in:["BOOL","dispatch_once_t","dispatch_queue_t","dispatch_sync","dispatch_async","dispatch_once"] +},illegal:"/,end:/$/,illegal:"\\n" +},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{className:"class", +begin:"("+_.keyword.join("|")+")\\b",end:/(\{|$)/,excludeEnd:!0,keywords:_, +contains:[e.UNDERSCORE_TITLE_MODE]},{begin:"\\."+e.UNDERSCORE_IDENT_RE, +relevance:0}]}}})());hljs.registerLanguage("dart",(()=>{"use strict";return e=>{const n={ +className:"subst",variants:[{begin:"\\$[A-Za-z0-9_]+"}]},a={className:"subst", +variants:[{begin:/\$\{/,end:/\}/}],keywords:"true false null this is new super" +},t={className:"string",variants:[{begin:"r'''",end:"'''"},{begin:'r"""', +end:'"""'},{begin:"r'",end:"'",illegal:"\\n"},{begin:'r"',end:'"',illegal:"\\n" +},{begin:"'''",end:"'''",contains:[e.BACKSLASH_ESCAPE,n,a]},{begin:'"""', +end:'"""',contains:[e.BACKSLASH_ESCAPE,n,a]},{begin:"'",end:"'",illegal:"\\n", +contains:[e.BACKSLASH_ESCAPE,n,a]},{begin:'"',end:'"',illegal:"\\n", +contains:[e.BACKSLASH_ESCAPE,n,a]}]};a.contains=[e.C_NUMBER_MODE,t] +;const i=["Comparable","DateTime","Duration","Function","Iterable","Iterator","List","Map","Match","Object","Pattern","RegExp","Set","Stopwatch","String","StringBuffer","StringSink","Symbol","Type","Uri","bool","double","int","num","Element","ElementList"],r=i.map((e=>e+"?")) +;return{name:"Dart",keywords:{ +keyword:["abstract","as","assert","async","await","break","case","catch","class","const","continue","covariant","default","deferred","do","dynamic","else","enum","export","extends","extension","external","factory","false","final","finally","for","Function","get","hide","if","implements","import","in","inferface","is","late","library","mixin","new","null","on","operator","part","required","rethrow","return","set","show","static","super","switch","sync","this","throw","true","try","typedef","var","void","while","with","yield"], +built_in:i.concat(r).concat(["Never","Null","dynamic","print","document","querySelector","querySelectorAll","window"]), +$pattern:/[A-Za-z][A-Za-z0-9_]*\??/}, +contains:[t,e.COMMENT(/\/\*\*(?!\/)/,/\*\//,{subLanguage:"markdown",relevance:0 +}),e.COMMENT(/\/{3,} ?/,/$/,{contains:[{subLanguage:"markdown",begin:".", +end:"$",relevance:0}]}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{ +className:"class",beginKeywords:"class interface",end:/\{/,excludeEnd:!0, +contains:[{beginKeywords:"extends implements"},e.UNDERSCORE_TITLE_MODE] +},e.C_NUMBER_MODE,{className:"meta",begin:"@[A-Za-z]+"},{begin:"=>"}]}}})());hljs.registerLanguage("ruby",(()=>{"use strict";function e(e){ +return n("(?=",e,")")}function n(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return a=>{ +const i="([a-zA-Z_]\\w*[!?=]?|[-+~]@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?)",s={ +keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor __FILE__", +built_in:"proc lambda",literal:"true false nil"},r={className:"doctag", +begin:"@[A-Za-z]+"},b={begin:"#<",end:">"},c=[a.COMMENT("#","$",{contains:[r] +}),a.COMMENT("^=begin","^=end",{contains:[r],relevance:10 +}),a.COMMENT("^__END__","\\n$")],t={className:"subst",begin:/#\{/,end:/\}/, +keywords:s},g={className:"string",contains:[a.BACKSLASH_ESCAPE,t],variants:[{ +begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/`/,end:/`/},{begin:/%[qQwWx]?\(/, +end:/\)/},{begin:/%[qQwWx]?\[/,end:/\]/},{begin:/%[qQwWx]?\{/,end:/\}/},{ +begin:/%[qQwWx]?/},{begin:/%[qQwWx]?\//,end:/\//},{begin:/%[qQwWx]?%/, +end:/%/},{begin:/%[qQwWx]?-/,end:/-/},{begin:/%[qQwWx]?\|/,end:/\|/},{ +begin:/\B\?(\\\d{1,3})/},{begin:/\B\?(\\x[A-Fa-f0-9]{1,2})/},{ +begin:/\B\?(\\u\{?[A-Fa-f0-9]{1,6}\}?)/},{ +begin:/\B\?(\\M-\\C-|\\M-\\c|\\c\\M-|\\M-|\\C-\\M-)[\x20-\x7e]/},{ +begin:/\B\?\\(c|C-)[\x20-\x7e]/},{begin:/\B\?\\?\S/},{ +begin:n(/<<[-~]?'?/,e(/(\w+)(?=\W)[^\n]*\n(?:[^\n]*\n)*?\s*\1\b/)), +contains:[a.END_SAME_AS_BEGIN({begin:/(\w+)/,end:/(\w+)/, +contains:[a.BACKSLASH_ESCAPE,t]})]}]},d="[0-9](_?[0-9])*",l={className:"number", +relevance:0,variants:[{ +begin:`\\b([1-9](_?[0-9])*|0)(\\.(${d}))?([eE][+-]?(${d})|r)?i?\\b`},{ +begin:"\\b0[dD][0-9](_?[0-9])*r?i?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*r?i?\\b" +},{begin:"\\b0[oO][0-7](_?[0-7])*r?i?\\b"},{ +begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*r?i?\\b"},{ +begin:"\\b0(_?[0-7])+r?i?\\b"}]},o={className:"params",begin:"\\(",end:"\\)", +endsParent:!0,keywords:s},_=[g,{className:"class",beginKeywords:"class module", +end:"$|;",illegal:/=/,contains:[a.inherit(a.TITLE_MODE,{ +begin:"[A-Za-z_]\\w*(::\\w+)*(\\?|!)?"}),{begin:"<\\s*",contains:[{ +begin:"("+a.IDENT_RE+"::)?"+a.IDENT_RE,relevance:0}]}].concat(c)},{ +className:"function",begin:n(/def\s+/,e(i+"\\s*(\\(|;|$)")),relevance:0, +keywords:"def",end:"$|;",contains:[a.inherit(a.TITLE_MODE,{begin:i +}),o].concat(c)},{begin:a.IDENT_RE+"::"},{className:"symbol", +begin:a.UNDERSCORE_IDENT_RE+"(!|\\?)?:",relevance:0},{className:"symbol", +begin:":(?!\\s)",contains:[g,{begin:i}],relevance:0},l,{className:"variable", +begin:"(\\$\\W)|((\\$|@@?)(\\w+))(?=[^@$?])(?![A-Za-z])(?![@$?'])"},{ +className:"params",begin:/\|/,end:/\|/,relevance:0,keywords:s},{ +begin:"("+a.RE_STARTERS_RE+"|unless)\\s*",keywords:"unless",contains:[{ +className:"regexp",contains:[a.BACKSLASH_ESCAPE,t],illegal:/\n/,variants:[{ +begin:"/",end:"/[a-z]*"},{begin:/%r\{/,end:/\}[a-z]*/},{begin:"%r\\(", +end:"\\)[a-z]*"},{begin:"%r!",end:"![a-z]*"},{begin:"%r\\[",end:"\\][a-z]*"}] +}].concat(b,c),relevance:0}].concat(b,c);t.contains=_,o.contains=_;const E=[{ +begin:/^\s*=>/,starts:{end:"$",contains:_}},{className:"meta", +begin:"^([>?]>|[\\w#]+\\(\\w+\\):\\d+:\\d+>|(\\w+-)?\\d+\\.\\d+\\.\\d+(p\\d+)?[^\\d][^>]+>)(?=[ ])", +starts:{end:"$",contains:_}}];return c.unshift(b),{name:"Ruby", +aliases:["rb","gemspec","podspec","thor","irb"],keywords:s,illegal:/\/\*/, +contains:[a.SHEBANG({binary:"ruby"})].concat(E).concat(c).concat(_)}}})());hljs.registerLanguage("yaml",(()=>{"use strict";return e=>{ +const n="true false yes no null",a="[\\w#;/?:@&=+$,.~*'()[\\]]+",s={ +className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/ +},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable", +variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},i=e.inherit(s,{ +variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),l={ +end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},t={begin:/\{/, +end:/\}/,contains:[l],illegal:"\\n",relevance:0},g={begin:"\\[",end:"\\]", +contains:[l],illegal:"\\n",relevance:0},b=[{className:"attr",variants:[{ +begin:"\\w[\\w :\\/.-]*:(?=[ \t]|$)"},{begin:'"\\w[\\w :\\/.-]*":(?=[ \t]|$)'},{ +begin:"'\\w[\\w :\\/.-]*':(?=[ \t]|$)"}]},{className:"meta",begin:"^---\\s*$", +relevance:10},{className:"string", +begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{ +begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0, +relevance:0},{className:"type",begin:"!\\w+!"+a},{className:"type", +begin:"!<"+a+">"},{className:"type",begin:"!"+a},{className:"type",begin:"!!"+a +},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta", +begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)", +relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{ +className:"number", +begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b" +},{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},t,g,s],c=[...b] +;return c.pop(),c.push(i),l.contains=c,{name:"YAML",case_insensitive:!0, +aliases:["yml"],contains:b}}})());hljs.registerLanguage("javascript",(()=>{"use strict" +;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],t=["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer","BigInt64Array","BigUint64Array","BigInt"],s=["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],r=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],i=["arguments","this","super","console","window","document","localStorage","module","global"],c=[].concat(r,t,s) +;function o(e){return l("(?=",e,")")}function l(...e){return e.map((e=>{ +return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return b=>{ +const g=e,d={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/, +isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,t=e.input[a] +;"<"!==t?">"===t&&(((e,{after:n})=>{const a="",B={ +match:[/const|var|let/,/\s+/,g,/\s*/,/=\s*/,o(C)],className:{1:"keyword", +3:"title.function"},contains:[w]};return{name:"Javascript", +aliases:["js","jsx","mjs","cjs"],keywords:u,exports:{PARAMS_CONTAINS:S}, +illegal:/#(?![$_A-z])/,contains:[b.SHEBANG({label:"shebang",binary:"node", +relevance:5}),{label:"use_strict",className:"meta",relevance:10, +begin:/^\s*['"]use (strict|asm)['"]/ +},b.APOS_STRING_MODE,b.QUOTE_STRING_MODE,N,f,A,v,y,O,{className:"attr", +begin:g+o(":"),relevance:0},B,{ +begin:"("+b.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*", +keywords:"return throw case",relevance:0,contains:[v,b.REGEXP_MODE,{ +className:"function",begin:C,returnBegin:!0,end:"\\s*=>",contains:[{ +className:"params",variants:[{begin:b.UNDERSCORE_IDENT_RE,relevance:0},{ +className:null,begin:/\(\s*\)/,skip:!0},{begin:/\(/,end:/\)/,excludeBegin:!0, +excludeEnd:!0,keywords:u,contains:S}]}]},{begin:/,/,relevance:0},{match:/\s+/, +relevance:0},{variants:[{begin:"<>",end:""},{begin:d.begin, +"on:begin":d.isTrulyOpeningTag,end:d.end}],subLanguage:"xml",contains:[{ +begin:d.begin,end:d.end,skip:!0,contains:["self"]}]}]},I,{ +beginKeywords:"while if switch catch for"},{ +begin:"\\b(?!function)"+b.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{", +returnBegin:!0,label:"func.def",contains:[w,b.inherit(b.TITLE_MODE,{begin:g, +className:"title.function"})]},{match:/\.\.\./,relevance:0},M,{match:"\\$"+g, +relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"}, +contains:[w]},T,{relevance:0,match:/\b[A-Z][A-Z_]+\b/, +className:"variable.constant"},R,k,{match:/\$[(.]/}]}}})());hljs.registerLanguage("c",(()=>{"use strict";function e(e){ +return((...e)=>e.map((e=>(e=>e?"string"==typeof e?e:e.source:null)(e))).join(""))("(?:",e,")?") +}return n=>{const t=n.COMMENT("//","$",{contains:[{begin:/\\\n/}] +}),s="[a-zA-Z_]\\w*::",r="(decltype\\(auto\\)|"+e(s)+"[a-zA-Z_]\\w*"+e("<[^<>]+>")+")",a={ +className:"type",variants:[{begin:"\\b[a-z\\d_]*_t\\b"},{ +match:/\batomic_[a-z]{3,6}\b/}]},i={className:"string",variants:[{ +begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[n.BACKSLASH_ESCAPE]},{ +begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)", +end:"'",illegal:"."},n.END_SAME_AS_BEGIN({ +begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},l={ +className:"number",variants:[{begin:"\\b(0b[01']+)"},{ +begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)" +},{ +begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)" +}],relevance:0},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{ +keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include" +},contains:[{begin:/\\\n/,relevance:0},n.inherit(i,{className:"string"}),{ +className:"string",begin:/<.*?>/},t,n.C_BLOCK_COMMENT_MODE]},o={ +className:"title",begin:e(s)+n.IDENT_RE,relevance:0 +},d=e(s)+n.IDENT_RE+"\\s*\\(",u={ +keyword:["asm","auto","break","case","const","continue","default","do","else","enum","extern","for","fortran","goto","if","inline","register","restrict","return","sizeof","static","struct","switch","typedef","union","volatile","while","_Alignas","_Alignof","_Atomic","_Generic","_Noreturn","_Static_assert","_Thread_local","alignas","alignof","noreturn","static_assert","thread_local","_Pragma"], +type:["float","double","signed","unsigned","int","short","long","char","void","_Bool","_Complex","_Imaginary","_Decimal32","_Decimal64","_Decimal128","complex","bool","imaginary"], +literal:"true false NULL", +built_in:"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set pair bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap priority_queue make_pair array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr" +},g=[c,a,t,n.C_BLOCK_COMMENT_MODE,l,i],m={variants:[{begin:/=/,end:/;/},{ +begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}], +keywords:u,contains:g.concat([{begin:/\(/,end:/\)/,keywords:u, +contains:g.concat(["self"]),relevance:0}]),relevance:0},_={ +begin:"("+r+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0, +keywords:u,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:"decltype\\(auto\\)", +keywords:u,relevance:0},{begin:d,returnBegin:!0,contains:[n.inherit(o,{ +className:"title.function"})],relevance:0},{relevance:0,match:/,/},{ +className:"params",begin:/\(/,end:/\)/,keywords:u,relevance:0, +contains:[t,n.C_BLOCK_COMMENT_MODE,i,l,a,{begin:/\(/,end:/\)/,keywords:u, +relevance:0,contains:["self",t,n.C_BLOCK_COMMENT_MODE,i,l,a]}] +},a,t,n.C_BLOCK_COMMENT_MODE,c]};return{name:"C",aliases:["h"],keywords:u, +disableAutodetect:!0,illegal:"=]/,contains:[{ +beginKeywords:"final class struct"},n.TITLE_MODE]}]),exports:{preprocessor:c, +strings:i,keywords:u}}}})());hljs.registerLanguage("swift",(()=>{"use strict";function e(e){ +return e?"string"==typeof e?e:e.source:null}function a(e){return t("(?=",e,")")} +function t(...a){return a.map((a=>e(a))).join("")}function n(...a){ +return"("+((e=>{const a=e[e.length-1] +;return"object"==typeof a&&a.constructor===Object?(e.splice(e.length-1,1),a):{} +})(a).capture?"":"?:")+a.map((a=>e(a))).join("|")+")"} +const i=e=>t(/\b/,e,/\w$/.test(e)?/\b/:/\B/),s=["Protocol","Type"].map(i),u=["init","self"].map(i),c=["Any","Self"],r=["actor","associatedtype","async","await",/as\?/,/as!/,"as","break","case","catch","class","continue","convenience","default","defer","deinit","didSet","do","dynamic","else","enum","extension","fallthrough",/fileprivate\(set\)/,"fileprivate","final","for","func","get","guard","if","import","indirect","infix",/init\?/,/init!/,"inout",/internal\(set\)/,"internal","in","is","lazy","let","mutating","nonmutating",/open\(set\)/,"open","operator","optional","override","postfix","precedencegroup","prefix",/private\(set\)/,"private","protocol",/public\(set\)/,"public","repeat","required","rethrows","return","set","some","static","struct","subscript","super","switch","throws","throw",/try\?/,/try!/,"try","typealias",/unowned\(safe\)/,/unowned\(unsafe\)/,"unowned","var","weak","where","while","willSet"],o=["false","nil","true"],l=["assignment","associativity","higherThan","left","lowerThan","none","right"],m=["#colorLiteral","#column","#dsohandle","#else","#elseif","#endif","#error","#file","#fileID","#fileLiteral","#filePath","#function","#if","#imageLiteral","#keyPath","#line","#selector","#sourceLocation","#warn_unqualified_access","#warning"],p=["abs","all","any","assert","assertionFailure","debugPrint","dump","fatalError","getVaList","isKnownUniquelyReferenced","max","min","numericCast","pointwiseMax","pointwiseMin","precondition","preconditionFailure","print","readLine","repeatElement","sequence","stride","swap","swift_unboxFromSwiftValueWithType","transcode","type","unsafeBitCast","unsafeDowncast","withExtendedLifetime","withUnsafeMutablePointer","withUnsafePointer","withVaList","withoutActuallyEscaping","zip"],F=n(/[/=\-+!*%<>&|^~?]/,/[\u00A1-\u00A7]/,/[\u00A9\u00AB]/,/[\u00AC\u00AE]/,/[\u00B0\u00B1]/,/[\u00B6\u00BB\u00BF\u00D7\u00F7]/,/[\u2016-\u2017]/,/[\u2020-\u2027]/,/[\u2030-\u203E]/,/[\u2041-\u2053]/,/[\u2055-\u205E]/,/[\u2190-\u23FF]/,/[\u2500-\u2775]/,/[\u2794-\u2BFF]/,/[\u2E00-\u2E7F]/,/[\u3001-\u3003]/,/[\u3008-\u3020]/,/[\u3030]/),d=n(F,/[\u0300-\u036F]/,/[\u1DC0-\u1DFF]/,/[\u20D0-\u20FF]/,/[\uFE00-\uFE0F]/,/[\uFE20-\uFE2F]/),b=t(F,d,"*"),h=n(/[a-zA-Z_]/,/[\u00A8\u00AA\u00AD\u00AF\u00B2-\u00B5\u00B7-\u00BA]/,/[\u00BC-\u00BE\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF]/,/[\u0100-\u02FF\u0370-\u167F\u1681-\u180D\u180F-\u1DBF]/,/[\u1E00-\u1FFF]/,/[\u200B-\u200D\u202A-\u202E\u203F-\u2040\u2054\u2060-\u206F]/,/[\u2070-\u20CF\u2100-\u218F\u2460-\u24FF\u2776-\u2793]/,/[\u2C00-\u2DFF\u2E80-\u2FFF]/,/[\u3004-\u3007\u3021-\u302F\u3031-\u303F\u3040-\uD7FF]/,/[\uF900-\uFD3D\uFD40-\uFDCF\uFDF0-\uFE1F\uFE30-\uFE44]/,/[\uFE47-\uFEFE\uFF00-\uFFFD]/),f=n(h,/\d/,/[\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]/),w=t(h,f,"*"),y=t(/[A-Z]/,f,"*"),g=["autoclosure",t(/convention\(/,n("swift","block","c"),/\)/),"discardableResult","dynamicCallable","dynamicMemberLookup","escaping","frozen","GKInspectable","IBAction","IBDesignable","IBInspectable","IBOutlet","IBSegueAction","inlinable","main","nonobjc","NSApplicationMain","NSCopying","NSManaged",t(/objc\(/,w,/\)/),"objc","objcMembers","propertyWrapper","requires_stored_property_inits","resultBuilder","testable","UIApplicationMain","unknown","usableFromInline"],E=["iOS","iOSApplicationExtension","macOS","macOSApplicationExtension","macCatalyst","macCatalystApplicationExtension","watchOS","watchOSApplicationExtension","tvOS","tvOSApplicationExtension","swift"] +;return e=>{const F={match:/\s+/,relevance:0},h=e.COMMENT("/\\*","\\*/",{ +contains:["self"]}),v=[e.C_LINE_COMMENT_MODE,h],A={match:[/\./,n(...s,...u)], +className:{2:"keyword"}},N={match:t(/\./,n(...r)),relevance:0 +},C=r.filter((e=>"string"==typeof e)).concat(["_|0"]),D={variants:[{ +className:"keyword", +match:n(...r.filter((e=>"string"!=typeof e)).concat(c).map(i),...u)}]},k={ +$pattern:n(/\b\w+/,/#\w+/),keyword:C.concat(m),literal:o},B=[A,N,D],_=[{ +match:t(/\./,n(...p)),relevance:0},{className:"built_in", +match:t(/\b/,n(...p),/(?=\()/)}],S={match:/->/,relevance:0},M=[S,{ +className:"operator",relevance:0,variants:[{match:b},{match:`\\.(\\.|${d})+`}] +}],x="([0-9a-fA-F]_*)+",I={className:"number",relevance:0,variants:[{ +match:"\\b(([0-9]_*)+)(\\.(([0-9]_*)+))?([eE][+-]?(([0-9]_*)+))?\\b"},{ +match:`\\b0x(${x})(\\.(${x}))?([pP][+-]?(([0-9]_*)+))?\\b`},{ +match:/\b0o([0-7]_*)+\b/},{match:/\b0b([01]_*)+\b/}]},L=(e="")=>({ +className:"subst",variants:[{match:t(/\\/,e,/[0\\tnr"']/)},{ +match:t(/\\/,e,/u\{[0-9a-fA-F]{1,8}\}/)}]}),O=(e="")=>({className:"subst", +match:t(/\\/,e,/[\t ]*(?:[\r\n]|\r\n)/)}),T=(e="")=>({className:"subst", +label:"interpol",begin:t(/\\/,e,/\(/),end:/\)/}),$=(e="")=>({begin:t(e,/"""/), +end:t(/"""/,e),contains:[L(e),O(e),T(e)]}),j=(e="")=>({begin:t(e,/"/), +end:t(/"/,e),contains:[L(e),T(e)]}),P={className:"string", +variants:[$(),$("#"),$("##"),$("###"),j(),j("#"),j("##"),j("###")]},K={ +match:t(/`/,w,/`/)},z=[K,{className:"variable",match:/\$\d+/},{ +className:"variable",match:`\\$${f}+`}],q=[{match:/(@|#)available/, +className:"keyword",starts:{contains:[{begin:/\(/,end:/\)/,keywords:E, +contains:[...M,I,P]}]}},{className:"keyword",match:t(/@/,n(...g))},{ +className:"meta",match:t(/@/,w)}],U={match:a(/\b[A-Z]/),relevance:0,contains:[{ +className:"type", +match:t(/(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)/,f,"+") +},{className:"type",match:y,relevance:0},{match:/[?!]+/,relevance:0},{ +match:/\.\.\./,relevance:0},{match:t(/\s+&\s+/,a(y)),relevance:0}]},Z={ +begin://,keywords:k,contains:[...v,...B,...q,S,U]};U.contains.push(Z) +;const V={begin:/\(/,end:/\)/,relevance:0,keywords:k,contains:["self",{ +match:t(w,/\s*:/),keywords:"_|0",relevance:0 +},...v,...B,..._,...M,I,P,...z,...q,U]},W={begin://,contains:[...v,U] +},G={begin:/\(/,end:/\)/,keywords:k,contains:[{ +begin:n(a(t(w,/\s*:/)),a(t(w,/\s+/,w,/\s*:/))),end:/:/,relevance:0,contains:[{ +className:"keyword",match:/\b_\b/},{className:"params",match:w}] +},...v,...B,...M,I,P,...q,U,V],endsParent:!0,illegal:/["']/},R={ +match:[/func/,/\s+/,n(K.match,w,b)],className:{1:"keyword",3:"title.function"}, +contains:[W,G,F],illegal:[/\[/,/%/]},X={ +match:[/\b(?:subscript|init[?!]?)/,/\s*(?=[<(])/],className:{1:"keyword"}, +contains:[W,G,F],illegal:/\[|%/},H={match:[/operator/,/\s+/,b],className:{ +1:"keyword",3:"title"}},J={begin:[/precedencegroup/,/\s+/,y],className:{ +1:"keyword",3:"title"},contains:[U],keywords:[...l,...o],end:/}/} +;for(const e of P.variants){const a=e.contains.find((e=>"interpol"===e.label)) +;a.keywords=k;const t=[...B,..._,...M,I,P,...z];a.contains=[...t,{begin:/\(/, +end:/\)/,contains:["self",...t]}]}return{name:"Swift",keywords:k, +contains:[...v,R,X,{beginKeywords:"struct protocol class extension enum actor", +end:"\\{",excludeEnd:!0,keywords:k,contains:[e.inherit(e.TITLE_MODE,{ +className:"title.class",begin:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/}),...B] +},H,J,{beginKeywords:"import",end:/$/,contains:[...v],relevance:0 +},...B,..._,...M,I,P,...z,...q,U,V]}}})()); \ No newline at end of file diff --git a/flutter/static-assets/play_button.svg b/flutter/static-assets/play_button.svg new file mode 100644 index 000000000..c39a2f4a8 --- /dev/null +++ b/flutter/static-assets/play_button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/flutter/static-assets/readme.md b/flutter/static-assets/readme.md new file mode 100644 index 000000000..357c11ca4 --- /dev/null +++ b/flutter/static-assets/readme.md @@ -0,0 +1,22 @@ +# highlight.js + +Generated from https://highlightjs.org/download/ on 2021-07-13 + +**Included languages:** + +* bash +* c +* css +* dart +* diff +* html, xml +* java +* javascript +* json +* kotlin +* markdown +* objective-c +* plaintext +* shell +* swift +* yaml diff --git a/flutter/static-assets/search.svg b/flutter/static-assets/search.svg new file mode 100644 index 000000000..58f4299fc --- /dev/null +++ b/flutter/static-assets/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/flutter/static-assets/styles.css b/flutter/static-assets/styles.css new file mode 100644 index 000000000..09b85b518 --- /dev/null +++ b/flutter/static-assets/styles.css @@ -0,0 +1,1200 @@ +.light-theme { + /*background-color body, listdropdown*/ + --main-bg-color: #fff; + /*header id-tittle*/ + --main-header-color: #eeeeee; + /*package-name*/ + --main-sidebar-color: #727272; + /*section-title and section subtitle, desc markdown(body, dd, h3), header a*/ + --main-text-color: #111111; + /*typehead search-box*/ + --main-search-bar: #fff; + /* scrollbar-thumb */ + --main-scrollbar-color: #CCC; + /* footer */ + --main-footer-background: #111111; + /*header text color*/ + --main-h-text: black; + /* hyperlinks*/ + --main-hyperlinks-color: #0175C2; + /*search background*/ + --main-search-background: transparent; + + /*code snippets*/ + --main-code-bg: #f8f8f8; + --main-keyword-color: #333; + --main-tag-color: #000080; + --main-section-color: #900; + --main-comment-color: #998; + --main-var-color: #008080; + --main-string-color: #d14; + + --main-number-filter: invert(0%); + --main-icon-color: black; +} + +.dark-theme { + /*background-color body, listdropdown*/ + --main-bg-color: #10161E; + /*header id-tittle*/ + --main-header-color: #1C2834; + /*package-name*/ + --main-sidebar-color: #fff; + /*section-title and section subtitle, desc markdown(body, dd, h3), header a*/ + --main-text-color: #fff; + /*typehead search-box*/ + --main-search-bar: #454545; + /* scrollbar-thumb */ + --main-scrollbar-color: #5f6368; + /* footer */ + --main-footer-background: #27323a; + /* hyperlinks*/ + --main-hyperlinks-color: #00D2FA; + /*search background*/ + --main-search-background: black; + + /*code snippets*/ + --main-code-bg: #10161E; + --main-keyword-color: white; + --main-tag-color: #00D2FA; + --main-section-color: #FF2D64; + --main-comment-color: #909CC3; + --main-var-color: #55A09B; + --main-string-color: #FF2D64; + + --main-number-filter: invert(100%); + --main-icon-color: white; +} + +#theme { + display: none; +} + +#theme-button { + position: absolute; + right: 30px; + height: 24px; +} + +#theme-button .material-symbols-outlined { + color: var(--main-icon-color); + user-select: none; + cursor: pointer; +} + +.light-theme #light-theme-button { + display: none; +} + +.dark-theme #dark-theme-button { + display: none; +} + +/* +Only show images that fit their theme using GitHub's syntax, see: +https://github.blog/changelog/2021-11-24-specify-theme-context-for-images-in-markdown/ +*/ +.dark-theme img[src$="#gh-light-mode-only"] { + display: none; +} + +.light-theme img[src$="#gh-dark-mode-only"] { + display: none; +} + +/* for layout */ +html, +body { + margin: 0; + padding: 0; + height: 100%; + width: 100%; + overflow: hidden; + box-sizing: border-box; +} + +*, *:before, *:after { + box-sizing: inherit; +} + +body { + display: flex; + flex-direction: column; + -webkit-overflow-scrolling: touch; +} + +header { + flex: 0 0 50px; + display: flex; + flex-direction: row; + align-items: center; + padding-left: 30px; + padding-right: 30px; + background-color: var(--main-header-color); +} + +header ol { + list-style: none; + margin: 0; + padding: 0; +} + +header ol li { + display: inline; +} + +header form { + display: flex; + flex: 1; + justify-content: flex-end; +} + +header#header-search-sidebar { + height: 50px; + margin-bottom: 25px; +} + +footer { + flex: 0 0 16px; + text-align: center; + padding: 16px 20px; +} + +main { + flex: 1; + display: flex; + flex-direction: row; + padding: 20px; + min-height: 0; +} + +.sidebar-offcanvas-left { + flex: 0 1 230px; + order: 1; + overflow-y: scroll; + padding: 20px 0 15px 30px; + margin: 5px 20px 0 0; +} + +::-webkit-scrollbar-button{ display: none; height: 13px; border-radius: 0; background-color: #AAA; } +::-webkit-scrollbar-button:hover{ background-color: #AAA; } +::-webkit-scrollbar-thumb{ background-color: var(--main-scrollbar-color); } +::-webkit-scrollbar-thumb:hover{ background-color: var(--main-scrollbar-color); } +::-webkit-scrollbar{ width: 4px; } + +.main-content::-webkit-scrollbar{ width: 8px; } + +.main-content { + flex: 1; + order: 2; + overflow-y: scroll; + padding: 10px 20px 0 20px; +} + +.sidebar-offcanvas-right { + flex: 0 1 12em; + order: 3; + overflow-y: scroll; + padding: 20px 15px 15px 15px; + margin-top: 5px; + margin-right: 20px; +} +/* end for layout */ + +body { + -webkit-text-size-adjust: 100%; + overflow-x: hidden; + font-family: Roboto, sans-serif; + font-size: 16px; + line-height: 1.42857143; + color: var(--main-text-color); + background-color: var(--main-bg-color); +} + +nav.navbar { + background-color: inherit; + min-height: 50px; + border: 0; +} + +@media (max-width: 840px) { + .hidden-xs { + display: none !important; + } +} + +@media (min-width: 841px) { + .hidden-l { + display: none !important; + } +} + +nav.navbar .row { + padding-top: 8px; +} + +nav .container { + white-space: nowrap; +} + +header { + background-color: var(--main-header-color); + box-shadow: 0 3px 5px rgba(0,0,0,0.1); +} + +.pre { + border: 1px solid #ddd; + font-size: 14px; +} + +.hljs-string, .hljs-doctag { + color: var(--main-string-color); +} + +.hljs-number, .hljs-literal, .hljs-variable, .hljs-template-variable, .hljs-tag .hljs-attr { + color: var(--main-var-color); +} + +.hljs-comment, .hljs-quote { + color: var(--main-comment-color); + font-style: italic; +} + +.hljs-title, .hljs-section, .hljs-selector-id { + color: var(--main-section-color); + font-weight: bold; +} + +.hljs-tag, .hljs-name, .hljs-attribute { + color: var(--main-tag-color); + font-weight: normal; +} + +.hljs-keyword, .hljs-selector-tag, .hljs-subst { + color: var(--main-keyword-color); + font-weight: bold; +} + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: var(--main-text-color); + background: var(--main-code-bg); +} + +a { + text-decoration: none; +} + +section { + margin-bottom: 36px; +} + +dl { + margin: 0; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: Roboto, sans-serif; + font-weight: 400; + margin-top: 1.5em; + color: var(--main-text-color); +} + +h1.title { + overflow: hidden; + text-overflow: ellipsis; +} + +h1 { + font-size: 37px; + margin-top: 0; + margin-bottom: 0.67em; +} + +h2 { + font-size: 28px; +} + +h5 { + font-size: 16px; +} + +p { + margin-bottom: 1em; + margin-top: 0; +} + +a { + color: var(--main-hyperlinks-color); +} + +a:hover { + color: #13B9FD; +} + +pre.prettyprint { + font-family: 'Roboto Mono', Menlo, monospace; + color: black; + border-radius: 0; + font-size: 15px; + word-wrap: normal; + line-height: 1.4; + border: 0; + margin: 16px 0 16px 0; + padding: 8px; +} + +pre code { + white-space: pre; + word-wrap: initial; + font-size: 100% +} + +.fixed { + white-space: pre; +} + +pre { + border: 1px solid #ddd; + background-color: #eee; + font-size: 14px; +} + +code { + font-family: 'Roboto Mono', Menlo, monospace; + color: inherit; + padding: 0.2em 0.4em; + font-size: 85%; + background-color: rgba(27,31,35,0.05); + border-radius: 3px; +} + +@media(max-width: 840px) { + nav .container { + width: 100% + } + + h1 { + font-size: 24px; + } + + pre { + margin: 16px 0; + } +} + +header h1 { + font-weight: 400; + margin-bottom: 16px; +} + +header a, +header p, +header li { + color: #0175C2; +} + +header a:hover { + color: #0175C2; +} + +header h1 .kind { + color: #555; +} + +dt { + font-weight: normal; +} + +dd { + color: var(--main-text-color); + margin-bottom: 1em; + margin-left: 0; +} + +dd.callable, dd.constant, dd.property { + margin-bottom: 24px; +} + +dd p { + overflow-x: hidden; + text-overflow: ellipsis; + margin-bottom: 0; +} + +/* Enum values do not have their own pages; their full docs are presented on the + * enum class's page. */ +dt.constant + dd p { + margin-bottom: 1em; +} + +/* indents wrapped lines */ +section.summary dt { + margin-left: 24px; + text-indent: -24px; +} + +.dl-horizontal dd { + margin-left: initial; +} + +dl.dl-horizontal dt { + font-style: normal; + text-align: left; + color: #727272; + margin-right: 20px; + width: initial; +} + +dt .name { + font-weight: 500; +} + +dl dt.callable .name { + float: none; + width: auto; +} + +.type-parameter { + white-space: nowrap; +} + +.multi-line-signature .type-parameter .parameter { + margin-left: 0; + display: unset; +} + +.parameter-list { + display: table-cell; + margin-left: 10px; + list-style-type: none; + padding-inline-start: unset; +} + +.signature { + color: var(--main-text-color); +} + +.signature a { + color: var(--main-hyperlinks-color); +} + +.optional { + font-style: italic; +} + +.undocumented { + font-style: italic; +} + +.is-const { + font-style: italic; +} + +.deprecated { + text-decoration: line-through; +} + +.category.linked { + font-weight: bold; + opacity: 1; +} + +/* Colors for category based on categoryOrder in dartdoc_options.config. */ +.category.cp-0 { + background-color: #54b7c4 +} + +.category.cp-1 { + background-color: #54c47f +} + +.category.cp-2 { + background-color: #c4c254 +} + +.category.cp-3 { + background-color: #c49f54 +} + +.category.cp-4 { + background-color: #c45465 +} + +.category.cp-5 { + background-color: #c454c4 +} + +.category a { + color: white; +} + +.category { + padding: 2px 4px; + font-size: 12px; + border-radius: 4px; + background-color: #999; + text-transform: uppercase; + color: white; + opacity: .5; +} + +h1 .category { + vertical-align: middle; +} + +/* The badge under a declaration for things like "const", "read-only", etc. and for the badges inline like sealed or interface */ +/* See https://github.com/dart-lang/dartdoc/blob/main/lib/src/model/feature.dart */ +.feature { + display: inline-block; + background: var(--main-bg-color); + border: 1px solid var(--main-hyperlinks-color); + border-radius: 20px; + color: var(--main-hyperlinks-color); + + font-size: 12px; + padding: 1px 6px; + margin: 0 8px 0 0; +} + +a.feature:hover { + border-color: #13B9FD; +} + +h1 .feature { + vertical-align: middle; + margin: 0 -2px 0 0; +} + +.source-link { + padding: 18px 4px; + font-size: 18px; + vertical-align: middle; +} + +@media (max-width: 840px) { + .source-link { + padding: 7px 2px; + font-size: 10px; + } +} + +#external-links { + float: right; +} + +.btn-group { + position: relative; + display: inline-flex; + vertical-align: middle; +} + +footer { + color: #fff; + background-color: var(--main-footer-background); + width: 100%; +} + +footer p { + margin: 0; +} + +footer .no-break { + white-space: nowrap; +} + +footer .container { + padding-left: 0; + padding-right: 0; +} + +footer a, footer a:hover { + color: #fff; +} + +.markdown.desc { + max-width: 700px; +} + +.markdown h1 { + font-size: 24px; + margin-bottom: 8px; +} + +.markdown h2 { + font-size: 20px; + margin-top: 24px; + margin-bottom: 8px; +} + +.markdown h3 { + font-size: 18px; + margin-bottom: 8px; + color: var(--main-text-color); +} + +.markdown h4 { + font-size: 16px; + margin-bottom: 0; +} + +.markdown li p { + margin: 0; +} + +table { + margin-bottom: 1em; +} + +table, +th, +td { + border: 1px solid lightgrey; + border-collapse: collapse; +} + +th, +td { + padding: 8px; +} + +.gt-separated { + list-style: none; + padding: 0; + margin: 0; +} + +.gt-separated li { + display: inline-block; +} + +.gt-separated li:before { + background-image: url("data:image/svg+xml;utf8,"); + background-position: center; + content: "\00a0"; + margin: 0 6px 0 4px; + padding: 0 3px 0 0; +} + +.gt-separated.dark li:before { + background-image: url("data:image/svg+xml;utf8,"); +} + +.gt-separated li:first-child:before { + background-image: none; + content: ""; + margin: 0; + padding: 0; +} + +.multi-line-signature { + font-size: 17px; + color: #727272; +} + +.multi-line-signature .parameter { + margin-left: 24px; + display: block; +} + +.breadcrumbs { + padding: 0; + margin: 8px 0 8px 0; + white-space: nowrap; + line-height: 1; +} + +@media screen and (min-width: 840px) { + nav ol.breadcrumbs { + float: left; + } +} + +@media screen and (max-width: 840px) { + .breadcrumbs { + margin: 0 0 24px 0; + overflow-x: hidden; + } +} + +.breadcrumbs .gt-separated .dark .hidden-xs li+li:before { + color: var(--main-h-text); +} + +ol.breadcrumbs li a { + color: var(--main-hyperlinks-color); +} + +.self-crumb { + color: var(--main-h-text); +} + +.self-name { + color: #555; + display: none; +} + +.annotation-list { + list-style: none; + padding: 0; + display: inline; +} + +.comma-separated { + list-style: none; + padding: 0; + display: inline; +} + +.comma-separated li { + display: inline; +} + +.comma-separated li:after { + content: ", "; +} + +.comma-separated li:last-child:after { + content: ""; +} + +.end-with-period li:last-child:after { + content: "."; +} + +.container > section:first-child { + border: 0; +} + +.constructor-modifier { + font-style: italic; +} + +section.multi-line-signature div.parameters { + margin-left: 24px; +} + +/* sidebar styles */ + +.sidebar ol { + list-style: none; + line-height: 22px; + margin-top: 0; + margin-bottom: 0; + padding: 0 0 15px 0; +} + +.sidebar h5 a, +.sidebar h5 a:hover { + color: var(--main-sidebar-color); +} + +.sidebar h5, +.sidebar ol li { + text-overflow: ellipsis; + overflow: hidden; + padding: 3px 0 3px 3px; +} + +.sidebar h5 { + color: var(--main-sidebar-color); + font-size: 18px; + margin: 0 0 22px 0; + padding-top: 0; +} + +.sidebar ol li.section-title { + font-size: 18px; + font-weight: normal; + text-transform: uppercase; + padding-top: 25px; +} + +.sidebar ol li.section-subtitle a { + color: inherit; +} + +.sidebar ol li.section-subtitle { + font-weight: 400; + text-transform: uppercase; +} + +.sidebar ol li.section-subitem { + margin-left: 12px; +} + +.sidebar ol li:first-child { + padding-top: 3px; + margin-top: 0; +} + +button { + padding: 0; +} + +#sidenav-left-toggle { + display: none; + vertical-align: text-bottom; + padding: 0; + color: var(--main-icon-color); + user-select: none; + cursor: pointer; +} + +/* left-nav disappears, and can transition in from the left */ +@media screen and (max-width:840px) { + #sidenav-left-toggle { + display: inline; + width: 24px; + height: 24px; + border: none; + margin-right: 24px; + margin-left: 24px; + font-size: 24px; + } + + #overlay-under-drawer.active { + opacity: 0.4; + height: 100%; + z-index: 1999; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: black; + display: block; + } + + .sidebar-offcanvas-left { + left: -100%; + position: fixed; + -webkit-transition:all .25s ease-out; + -o-transition:all .25s ease-out; + transition:all .25s ease-out; + z-index: 2000; + top: 0; + width: 280px; /* works all the way down to an iphone 4 */ + height: 90%; + background-color: var(--main-bg-color); + overflow-y: scroll; /* TODO: how to hide scroll bars? */ + padding: 10px; + margin: 10px 10px; + box-shadow: 5px 5px 5px 5px #444444; + } + + ol#sidebar-nav { + font-size: 18px; + white-space: pre-line; + } + + .sidebar-offcanvas-left.active { + left: 0; /* this animates our drawer into the page */ + } + + .self-name { + display: inline-block; + color: var(--main-hyperlinks-color); + } +} + +.sidebar-offcanvas-left h5 { + margin-bottom: 10px; +} + +.sidebar-offcanvas-left h5:last-of-type { + border: 0; + margin-bottom: 25px; +} + +/* the right nav disappears out of view when the window shrinks */ +@media screen and (max-width: 992px) { + .sidebar-offcanvas-right { + display: none; + } +} + +#overlay-under-drawer { + display: none; +} + +/* find-as-you-type search box */ + +.form-control { + border-radius: 0; + border: 0; +} + +@media screen and (max-width: 840px) { + form.search { + display: none; + } +} + +.typeahead { + width: 200px; + padding: 2px 7px 1px 7px; + line-height: 20px; + outline: none; +} + +.tt-wrapper { + position: relative; + display: inline-block; +} + +.tt-input { + position: relative; + vertical-align: top; +} + +.navbar-right .tt-menu { + right: 0; + left: inherit !important; + width: 540px; + max-height: 280px; + overflow-y: scroll; +} + +.navbar-right { + padding-right: 60px; +} + +.tt-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 100; + font-size: 14px; + margin: 0; + background-color: var(--main-bg-color); + border: 1px solid var(--main-header-color); + -webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2); + -moz-box-shadow: 0 5px 10px rgba(0,0,0,.2); + box-shadow: 0 5px 10px rgba(0,0,0,.2); +} + + +.typeahead { + padding: 17px 17px 17px 50px; + width: 422px; + height: 20px; + font-size: 13px; + background-image: url("http://github.com/search.svg"); + background-repeat: no-repeat; + background-position: 4%; + outline: 0; + background-size: 20px; + filter: var(--main-number-filter); + -webkit-filter: var(--main-number-filter); +} + +.search-summary { + margin-bottom: 10px; +} + +a.tt-container { + font-size: 16px; + color: var(--main-hyperlinks-color); +} + +.enter-search-message { + position: -webkit-sticky; + position: sticky; + top: 0; + background-color: #AAA; + padding: 0; + font-size: 14px; + margin: 0; + clear: both; + text-align: center; + color: black; +} + +.tt-suggestion:hover { + cursor: pointer; + color: #fff; + background-color: #0097cf; +} + +.tt-suggestion:hover .search-from-lib { + color: #ddd; +} + +.tt-suggestion.tt-cursor { + color: #fff; + background-color: #0097cf; +} + +.tt-suggestion.tt-cursor .search-from-lib { + color: #ddd; +} + +.tt-suggestion p { + margin: 0; +} + +.tt-container { + font-size: 14px; + margin-bottom: 0; + margin-top: 15px; +} + +.tt-container-text { + color: var(--main-text-color); +} + + +/* Search results formatting for mini results below search bar. */ + +.tt-search-results .tt-container { + margin-top: 5px; + margin-bottom: 5px; +} + +/* Do not show the container as a section. */ +.tt-search-results .tt-container-text { + display: none +} + +/* An inline style. */ +.tt-search-results .tt-suggestion { + color: var(--main-text-color); + margin-top: 5px; + overflow: hidden; + padding-left: 10px; + padding-right: 10px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.tt-search-results .tt-suggestion-title { + font-size: 14px; + padding-right: 5px; +} + +.tt-search-results .tt-suggestion-container { + color: var(--main-keyword-color); + font-size: 14px; + font-style: italic; + padding-right: 5px; +} + +.tt-search-results .one-line-description { + color: var(--main-keyword-color); + display: inline; + margin-left: 0; +} + + +.tt-search-results .one-line-description::before { + content: open-quote; +} + +.tt-search-results .one-line-description::after { + content: close-quote; +} + +/* Search results formatting for `search.html`. */ + +/* A block style. */ +#dartdoc-main-content .tt-suggestion { + color: var(--main-text-color); + margin-top: 5px; + margin-bottom: 10px; + border-style: solid; + border-color: lightgrey; + border-width: 0.5px; +} + +#dartdoc-main-content .tt-suggestion-title { + display: block; + font-weight: 500; + margin: 4px 10px 0; +} + +#dartdoc-main-content .one-line-description { + display: block; + margin: 2px 10px 3px; +} + +/* Do not show a result's container. */ +#dartdoc-main-content .tt-suggestion-container { + display: none; +} + +@media screen and (max-width: 840px) { + .typeahead { + padding: 17px 17px 17px 33px; + width: 240px; + height: 17px; + border: 1px solid #f5f5f5; + background-position: 3%; + margin: 10px 10px 10px 9px; + } + + header { + padding-left: 0; + } +} + +@media screen and (max-width: 320px) { + #sidenav-left-toggle { + margin-right: 10px; + margin-left: 20px; + } + + .self-name { + margin-right: 10px; + } +} + +::placeholder { + filter: brightness(0.85); +} + +.search-body { + border: 1px solid #7f7f7f; + max-width: 400px; + box-shadow: 3px 3px 5px rgba(0,0,0,0.1); +} + +section#setter { + border-top: 1px solid #ddd; + padding-top: 36px; +} + +li.inherited a { + opacity: 0.65; + font-style: italic; +} + +#instance-methods dt.inherited .name, +#instance-properties dt.inherited .name, +#operators dt.inherited .name { + font-weight: 400; + font-style: italic; +} + +#instance-methods dt.inherited .signature, +#instance-properties dt.inherited .signature, +#operators dt.inherited .signature { + font-weight: 400; +} + +@media print { + .subnav, .sidebar { + display: none; + } + + a[href]:after { + content: "" !important; + } +} \ No newline at end of file diff --git a/packages/dart/CHANGELOG.md b/packages/dart/CHANGELOG.md deleted file mode 100644 index 459f3f8ab..000000000 --- a/packages/dart/CHANGELOG.md +++ /dev/null @@ -1,336 +0,0 @@ -## [5.1.1](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-5.1.0...dart-5.1.1) (2023-05-20) - -### Bug Fixes - -* Query conditions `inQuery` and `notInQuery` not working properly ([#869](https://github.com/parse-community/Parse-SDK-Flutter/pull/869)) - -## [5.1.0](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-5.0.0...dart-5.1.0) (2023-05-14) - -### Features - -* Downgrade collection dependency to ^1.16.0 for compatibility with Flutter >=3.3 ([#880](https://github.com/parse-community/Parse-SDK-Flutter/pull/880)) - -## [5.0.0](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-4.0.2...dart-5.0.0) (2023-05-14) - -### BREAKING CHANGES - -* The minimum required Dart SDK version is 2.18.0. ([#867](https://github.com/parse-community/Parse-SDK-Flutter/pull/867)) -* Performing an atomic update on a key of a Parse Object now returns the prospective value, instead of a map of the operation that will be sent to the server; for example for a Parse Object `obj` with a key `count`, the atomic update `obj.setIncrement('count', 1);` previously returned the value `{__op: Increment, amount: 1}` but now returns the prospective result of the operation, which would be `1` if the key's previous value was `0`. ([#860](https://github.com/parse-community/Parse-SDK-Flutter/pull/860)) - -### Bug Fixes - -* Incorrect Dart and Flutter SDKs compatibility range ([#867](https://github.com/parse-community/Parse-SDK-Flutter/pull/867)) -* Setting atomic operation on Parse Object returns operation instead of prospective value ([#860](https://github.com/parse-community/Parse-SDK-Flutter/pull/860)) - -## [4.0.2](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-4.0.1...dart-4.0.2) (2023-03-23) - -### Bug Fixes - -* Attempt to save `ParseObject` even if its nested `ParseObject` failed to save ([#859](https://github.com/parse-community/Parse-SDK-Flutter/pull/859)) - -## [4.0.1](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-4.0.0...dart-4.0.1) (2023-03-20) - -### Bug Fixes - -* Unhandled exception when saving a `ParseObject` but its nested object fails to save ([#858](https://github.com/parse-community/Parse-SDK-Flutter/pull/858)) - -## [4.0.0](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.14...dart-4.0.0) (2023-03-07) - -### BREAKING CHANGES - -* Upgrades to dio 5.x ([#824](https://github.com/parse-community/Parse-SDK-Flutter/pull/824)) - -### Feature - -* Upgrade various dependencies and fix warnings ([#824](https://github.com/parse-community/Parse-SDK-Flutter/pull/824)) - -## [3.1.15](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.14...dart-3.1.15) (2023-02-28) - -### Bug Fixes - -* Updating and deleting a ParseObject sends requests even if object ID is null ([#829](https://github.com/parse-community/Parse-SDK-Flutter/pull/829)) - -## [3.1.14](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.13...dart-3.1.14) (2023-02-26) - -### Bug Fixes - -* Dio error object holds a reference to null values ([#774](https://github.com/parse-community/Parse-SDK-Flutter/issues/774)) - -## [3.1.13](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.12...dart-3.1.13) (2023-02-15) - -### Bug Fixes - -* `ParseUser.save` fails when user is logged in ([#819](https://github.com/parse-community/Parse-SDK-Flutter/issues/819)) - -## [3.1.12](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.11...dart-3.1.12) (2023-02-01) - -### Bug Fixes - -* `ParseObject.fromJson` does not send proper payload to server ([#688](https://github.com/parse-community/Parse-SDK-Flutter/issues/688)) - -## [3.1.11](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.10...dart-3.1.11) (2023-01-21) - -### Features - -* Add query constraint `wherePolygonContains` to determine whether a point in within a polygon ([#777](https://github.com/parse-community/Parse-SDK-Flutter/issues/777)) - -## [3.1.10](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.9...dart-3.1.10) (2023-01-16) - -### Bug Fixes - -* Time zone data not set in `ParseInstallation` ([#96](https://github.com/parse-community/Parse-SDK-Flutter/issues/96)) - -## [3.1.9](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.8...dart-3.1.9) (2022-12-25) - -### Bug Fixes - -* Include option in `getObject` feature is not working ([#813](https://github.com/parse-community/Parse-SDK-Flutter/issues/813)) - -## [3.1.8](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.7...dart-3.1.8) (2022-12-23) - -### Features - -* Add `ParseObject.toJson()` to create a JSON representation ([#616](https://github.com/parse-community/Parse-SDK-Flutter/issues/616)) - -## [3.1.7](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.6...dart-3.1.7) (2022-12-22) - -### Features - -* Add `include` option to `getObject` and `fetch` ([#798](https://github.com/parse-community/Parse-SDK-Flutter/issues/798)) - -## [3.1.6](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.5...dart-3.1.6) (2022-12-21) - -### Bug Fixes - -* Add `and`, `nor` operators in QueryBuilder ([#795](https://github.com/parse-community/Parse-SDK-Flutter/issues/795)) - -## [3.1.5](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.4...dart-3.1.5) (2022-12-16) - -### Bug Fixes - -* Add upload / download cancel and progress callback for ParseFile ([#807](https://github.com/parse-community/Parse-SDK-Flutter/issues/807)) - -## [3.1.4](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.3...dart-3.1.4) (2022-12-14) - -### Bug Fixes - -* SDK crashes due to missing error code property in `ParseNetworkResponse.data` ([#799](https://github.com/parse-community/Parse-SDK-Flutter/issues/799)) - -## [3.1.3](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.2...dart-3.1.3) (2022-11-15) - -### Bug Fixes - -* Custom JSON encoder for List and Map doesn't work correctly in `full` mode ([#788](https://github.com/parse-community/Parse-SDK-Flutter/issues/788)) - -## [3.1.2](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.1...dart-3.1.2) (2022-07-09) - -### Bug Fixes - -* unhandled exception in `ParseRelation`, type `ParseObject` is not a subtype of type ([#696](https://github.com/parse-community/Parse-SDK-Flutter/issues/696)) -* error in progress callback ([#679](https://github.com/parse-community/Parse-SDK-Flutter/issues/679)) -* incorrect return type when calling `first()` ([#661](https://github.com/parse-community/Parse-SDK-Flutter/issues/661)) -* error in `ParseLiveListWidget` when enabling `lazyloading` ([#653](https://github.com/parse-community/Parse-SDK-Flutter/issues/653)) -* unexpected null value after call `user.logout()` ([#770](https://github.com/parse-community/Parse-SDK-Flutter/issues/770)) - -## [3.1.1](https://github.com/parse-community/Parse-SDK-Flutter/compare/V3.1.0...dart-3.1.1) (2022-05-30) - -### Refactors - -* fix analyzer code style warnings ([#733](https://github.com/parse-community/Parse-SDK-Flutter/issues/733)) - -# [3.1.0](https://github.com/parse-community/Parse-SDK-Flutter/compare/V3.0.0...V3.1.0) (2021-06-28) - -### Bug Fixes - -* General improvements -* Updated dependencies - -# [3.0.0](https://github.com/parse-community/Parse-SDK-Flutter/compare/2.1.0...V3.0.0) (2021-04-14) - -### Bug Fixes - -* Stable null safety release - -# [2.1.0](https://github.com/parse-community/Parse-SDK-Flutter/compare/2.0.1...2.1.0) (2021-02-18) - -### BREAKING CHANGES - -* Changed to HTTP method POST for login -* Change in progress callback for file upload - -### Features - -* Option to use `ParseHTTPClient` (default) or `ParseDioClient` (slow on Flutter Web) -* Added method excludeKeys to exclude specific fields from the returned query - -### Bug Fixes - -* General improvements -* Updated dependencies - -## [2.0.1](https://github.com/parse-community/Parse-SDK-Flutter/compare/2.0.0...2.0.1) (2020-10-24) - -### Bug Fixes - -* Fixed network exceptions ([#482](https://github.com/parse-community/Parse-SDK-Flutter/pull/482)) - -## [2.0.0](https://github.com/parse-community/Parse-SDK-Flutter/compare/1.0.28...2.0.0) (2020-10-13) - -### BREAKING CHANGES - -* From this release onwards the previous repository has been separated into a pure dart (parse_server_sdk) and a flutter package (parse_server_sdk_flutter). This was done in order to provide a dart package for the parse-server, while keeping maintenance simple. You can find both packages in the package directory. If you are using flutter you should migrate using [this guide](https://github.com/parse-community/Parse-SDK-Flutter/blob/release/2.0.0/docs/migrate-2-0-0.md). - -### Features - -* Added full web support -* Moved ParseHTTPClient to Dio [#459](https://github.com/parse-community/Parse-SDK-Flutter/pull/459) - -### Bug Fixes - -* General improvements - -## 1.0.28 - -1.0.28 was renamed to 2.0.0 - -## 1.0.27 - -User login / signUp / loginAnonymous delete SessionId stored in device before calling server - -## 1.0.26 - -LiveList -Bug fixes -Sembast update - -## 1.0.25 - -Update dependencies - -## 1.0.24 - -Fixed lint - -## 1.0.23 - -Fixed LiveQuery -Bug fixes - -## 1.0.22 - -Added dirty children -Added option of sembast or share_preferences - -## 1.0.21 - -LiveQuery fix -Logout fix - -## 1.0.20 - -ACL now working -emailVerified - -## 1.0.19 - -Bug fix - -## 1.0.18 - -Bug fix - -## 1.0.17 - -LiveQuery fix -Bug fixes - -## 1.0.16 - -Bug fixes -Fixed object delete -Added port support - -## 1.0.15 - -Fixed 'full' bool issue - -## 1.0.14 - -Corrected delete & path issue -Added Geo queries -Added ability to add login oAuth data - -## 1.0.13 - -Added full bool to convert objects to JSON correctly - -## 1.0.12 - -Fixed logout - -## 1.0.11 - -ParseFile fixed -Anonymous login -SecurityContext -CloudFunctions with objects - -## 1.0.10 - -Add ParseConfig. -Fixed whereEqualsTo('', PARSEOBJECT) and other queries - -## 1.0.9 - -Fixed Health Check issue - -## 1.0.8 - -Fixed some queries - -## 1.0.7 - -Some items now return a response rather than a ParseObject - -## 1.0.6 - -BREAK FIX - Fixed ParseUser return type so now returns ParseResponse -BREAK FIX - Changed query names to make more human readable -Fixed pinning and unpinning - -## 1.0.5 - -Corrected save. Now formatted items correctly for saving on server - -## 1.0.4 - -Bug fix for get all items -Can now pin/unpin/fromPin for all ParseObjects -Now supports generics -Cody tidy around extending - -## 1.0.3 - -Added persistent storage. When a logged in user closes the app, then reopens, the data -will now be persistent. Best practice would be to Parse.init, then Parse.currentUser. This -will return the current user session and allow auto login. Can also pin data in storage. - -## 1.0.2 - -Fixed login - -## 1.0.1 - -Added documentation and GeoPoints - -## 1.0.0 - -First full release! - -## 0.0.4 - -Added description - -## 0.0.3 - -Added more cloud functions diff --git a/packages/dart/LICENSE b/packages/dart/LICENSE deleted file mode 100644 index 0e303d0f1..000000000 --- a/packages/dart/LICENSE +++ /dev/null @@ -1,176 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/packages/dart/NOTICE b/packages/dart/NOTICE deleted file mode 100644 index 70eabd859..000000000 --- a/packages/dart/NOTICE +++ /dev/null @@ -1,10 +0,0 @@ -Parse Dart SDK - -Copyright 2021-present Parse Platform - -This product includes software developed at Parse Platform. -www.parseplatform.org - ---- - -As of October 19, 2021, the original author Phill Wiggins has transferred this code to the Parse Platform organization. \ No newline at end of file diff --git a/packages/dart/README.md b/packages/dart/README.md deleted file mode 100644 index 6a5b865ab..000000000 --- a/packages/dart/README.md +++ /dev/null @@ -1,903 +0,0 @@ -![parse-repository-header-sdk-dart](https://user-images.githubusercontent.com/5673677/166120960-ea1f58e3-a62b-4770-b541-f64186859339.png) - ---- - -This library gives you access to the powerful Parse Server backend from your Dart app. For more information on Parse Platform and its features, visit [parseplatform.org](https://parseplatform.org). The Flutter package was moved [here](https://pub.dev/packages/parse_server_sdk_flutter). If you are using Flutter see [this guide](https://github.com/parse-community/Parse-SDK-Flutter/blob/release/2.0.0/docs/migrate-2-0-0.md) for how to migrate. - ---- - -- [Compatibility](#compatibility) -- [Getting Started](#getting-started) - - [Early Web support](#early-web-support) -- [Objects](#objects) -- [Custom Objects](#custom-objects) -- [Add New Values to Objects](#add-new-values-to-objects) -- [Save Objects using Pins](#save-objects-using-pins) -- [Storage](#storage) -- [Increment Counter Values](#increment-counter-values) -- [Array Operator in Objects](#array-operator-in-objects) -- [Queries](#queries) - - [Alternative Query Methods](#alternative-query-methods) -- [Complex Queries](#complex-queries) -- [Relational queries](#relational-queries) -- [Counting objects](#counting-objects) -- [LiveQuery](#livequery) -- [ParseLiveList](#parselivelist) - - [General Use](#general-use) - - [Included Sub-Objects](#included-sub-objects) -- [Users](#users) -- [Facebook, OAuth and 3rd Party Login/User](#facebook-oauth-and-3rd-party-loginuser) -- [Security for Objects - ParseACL](#security-for-objects---parseacl) -- [Config](#config) -- [Cloud Functions](#cloud-functions) -- [Relation](#relation) -- [File](#file) -- [Other Features](#other-features) - ---- - -## Compatibility - -The Parse Dart SDK is continuously tested with the most recent release of the Dart framework to ensure compatibility. To give developers time to upgrade their app to the newest Dart framework, previous Dart framework releases are supported for at least 1 year after their [release date](https://dart.dev/get-dart/archive). - -| Version | Latest Version | End of Support | Compatible | -|-----------|----------------|----------------|----------------------------------------------| -| Dart 3.0 | 3.0.0 | May 2024 | ✅ Yes | -| Dart 2.19 | 2.19.6 | Mar 2024 | ✅ Yes | -| Dart 2.18 | 2.18.7 | Jan 2024 | ✅ Yes | -| Dart 2.17 | 2.17.7 | Aug 2023 | ❌ No (Parse Dart SDK requires Dart >=2.18.0) | - -## Getting Started - -To install, either add [dependency in your pubspec.yaml file](https://pub.dev/packages/parse_server_sdk/install). - -Once you have the library added to your project, upon first call to your app (Similar to what your application class would be) add the following... - -```dart -await Parse().initialize( - keyApplicationId, - keyParseServerUrl, - ); -``` - -If you want to use secure storage or use the Flutter web/desktop SDK, please change to the below instance of CoreStorage as it has no dependencies on Flutter. - -**The `CoreStoreSembastImp` does not encrypt the data on web!** (Web is not safe anyway. Encrypt fields manually as needed.) -```dart - -await Parse().initialize( - keyParseApplicationId, - keyParseServerUrl, - coreStore: await CoreStoreSembastImp.getInstance("/data")); -``` -It's possible to add other parameters to work with your instance of Parse Server:- - -```dart - await Parse().initialize( - keyApplicationId, - keyParseServerUrl, - clientKey: keyParseClientKey, // Required for some setups - debug: true, // When enabled, prints logs to console - liveQueryUrl: keyLiveQueryUrl, // Required if using LiveQuery - autoSendSessionId: true, // Required for authentication and ACL - securityContext: securityContext, // Again, required for some setups - coreStore: CoreStoreMemoryImp()); // Non persistent mode (default): Sdk will store everything in memmore instead of using Sembast as an internal DB. -``` -⚠️ Please note that the master key should only be used in safe environments and never on client side ‼️ Using this package on a server should be fine. - -#### Early Web support -Currently this requires adding `X-Parse-Installation-Id` as an allowed header to parse-server. -When running directly via docker, set the env var `PARSE_SERVER_ALLOW_HEADERS=X-Parse-Installation-Id`. -When running via express, set [ParseServerOptions](https://parseplatform.org/parse-server/api/master/ParseServerOptions.html) `allowHeaders: ['X-Parse-Installation-Id']`. - -Be aware that for web ParseInstallation does include app name, version or package identifier. - -## Objects -You can create custom objects by calling: -```dart -var dietPlan = ParseObject('DietPlan') - ..set('Name', 'Ketogenic') - ..set('Fat', 65); -await dietPlan.save(); -``` -Or update existing object by its objectId by calling: -```dart -var dietPlan = ParseObject('DietPlan') - ..objectId = 'R5EonpUDWy' - ..set('Fat', 70); -await dietPlan.save(); -``` -Verify that the object has been successfully saved using -```dart -var response = await dietPlan.save(); -if (response.success) { - dietPlan = response.results.first; -} -``` -Types supported: - * String - * Double - * Int - * Boolean - * DateTime - * File - * Geopoint - * ParseObject/ParseUser (Pointer) - * Map - * List (all types supported) - -You then have the ability to do the following with that object: -The features available are:- - * Get - * GetAll - * Create - * Save - * Query - By object Id - * Delete - * Complex queries as shown above - * Pin - * Plenty more - * Counters - * Array Operators - -## Custom Objects -You can create your own `ParseObjects` or convert your existing objects into Parse Objects by doing the following: - -```dart -class DietPlan extends ParseObject implements ParseCloneable { - - DietPlan() : super(_keyTableName); - DietPlan.clone(): this(); - - /// Looks strangely hacky but due to Flutter not using reflection, we have to - /// mimic a clone - @override clone(Map map) => DietPlan.clone()..fromJson(map); - - static const String _keyTableName = 'Diet_Plans'; - static const String keyName = 'Name'; - - String get name => get(keyName); - set name(String name) => set(keyName, name); -} - -``` - -When receiving an `ParseObject` from the SDK, you can often provide an instance of your custom object as an copy object. -To always use your custom object class, you can register your subclass at the initialization of the SDK. -```dart -Parse().initialize( - ..., - registeredSubClassMap: { - 'Diet_Plans': () => DietPlan(), - }, - parseUserConstructor: (username, password, emailAddress, {client, debug, sessionToken}) => CustomParseUser(username, password, emailAddress), -); -``` -Additionally you can register `SubClasses` after the initialization of the SDK. -```dart -ParseCoreData().registerSubClass('Diet_Plans', () => DietPlan()); -ParseCoreData().registerUserSubClass((username, password, emailAddress, {client, debug, sessionToken}) => CustomParseUser(username, password, emailAddress)); -``` -Providing a `ParseObject` as described above should still work, even if you have registered a different `SubClass`. - -For custom file classes have a lock at [here](#File). - -## Add New Values to Objects -To add a variable to an object call and retrieve it, call - -```dart -dietPlan.set('RandomInt', 8); -var randomInt = dietPlan.get('RandomInt'); -``` - -## Save Objects using Pins - -You can now save an object by calling `.pin()` on an instance of an object - -```dart -dietPlan.pin(); -``` - -and to retrieve it - -```dart -var dietPlan = DietPlan().fromPin('OBJECT ID OF OBJECT'); -``` - -## Storage - -We now have 2 types of storage, secure and unsecure. We currently rely on 2 third party options: - -- SharedPreferences -- Sembast -Sembast offers secured storage, whilst SharePreferences wraps NSUserDefaults (on iOS) and SharedPreferences (on Android). - -The storage method is defined in the parameter __coreStore__ in Parse().initialize - -Check sample code for options - -## Increment Counter Values - -Retrieve it, call - -```dart -var response = await dietPlan.increment("count", 1); - -``` -or using with save function - -```dart -dietPlan.setIncrement('count', 1); -dietPlan.setDecrement('count', 1); -var response = dietPlan.save() - -``` - -## Array Operator in Objects - -Retrieve it, call - -```dart -var response = await dietPlan.add("listKeywords", ["a", "a","d"]); - -var response = await dietPlan.addUnique("listKeywords", ["a", "a","d"]); - -var response = await dietPlan.remove("listKeywords", ["a"]); - -``` -or using with save function - -```dart -dietPlan.setAdd('listKeywords', ['a','a','d']); -dietPlan.setAddUnique('listKeywords', ['a','a','d']); -dietPlan.setRemove('listKeywords', ['a']); -var response = dietPlan.save() -``` - -## Queries -Once you have setup the project and initialised the instance, you can then retreive data from your server by calling: -```dart -var apiResponse = await ParseObject('ParseTableName').getAll(); - -if (apiResponse.success){ - for (var testObject in apiResponse.result) { - print(ApplicationConstants.APP_NAME + ": " + testObject.toString()); - } -} -``` -Or you can get an object by its objectId: - -```dart -var dietPlan = await DietPlan().getObject('R5EonpUDWy'); - -if (dietPlan.success) { - print(ApplicationConstants.keyAppName + ": " + (dietPlan.result as DietPlan).toString()); -} else { - print(ApplicationConstants.keyAppName + ": " + dietPlan.exception.message); -} -``` - -### Alternative Query Methods - -The standard query method `query()` returns a `ParseResponse` that contains the result or the error. As an alternative, you can also use `Future> find()` for receiving options. -This method returns an `Future` that either resolves in an error (equivalent of the error in the `ParseResponse`) or an `List` containing the queried objects. One difference, you should be aware of, is the fact, that `Future> find()` will return an empty list instead of the 'No results' error you receive in case no object matches you query. - -Choosing between `query()` and `find()` comes down to personal preference. Both methods can be used for querying a `ParseQuery`, just the output method differs. - -Similar to `find()` the `QueryBuilder` also has a function called `Future first()`. Just like `find()` `first()` is just a convenience method that makes querying the first object satisfying the query simpler. `first()` returns an `Future`, that resoles in an error or the first object matching the query. In case no object satisfies the query, the result will be `null`. - -## Complex Queries -You can create complex queries to really put your database to the test: - -```dart -var queryBuilder = QueryBuilder(DietPlan()) - ..startsWith(DietPlan.keyName, "Keto") - ..greaterThan(DietPlan.keyFat, 64) - ..lessThan(DietPlan.keyFat, 66) - ..equals(DietPlan.keyCarbs, 5); - -var response = await queryBuilder.query(); - -if (response.success) { - print(ApplicationConstants.keyAppName + ": " + ((response.results as List).first as DietPlan).toString()); -} else { - print(ApplicationConstants.keyAppName + ": " + response.exception.message); -} -``` - -if you want to find objects that match one of several queries, you can use __QueryBuilder.or__ method to construct a query that is an OR of the queries passed in. For instance if you want to find players who either have a lot of wins or a few wins, you can do: -```dart -ParseObject playerObject = ParseObject("Player"); - -QueryBuilder lotsOfWins = - QueryBuilder(playerObject)) - ..whereGreaterThan('wins', 50); - -QueryBuilder fewWins = - QueryBuilder(playerObject) - ..whereLessThan('wins', 5); - -QueryBuilder mainQuery = QueryBuilder.or( - playerObject, - [lotsOfWins, fewWins], - ); - -var apiResponse = await mainQuery.query(); -``` - -To find objects that match several queries use __QueryBuilder.and__. To find objects that do not match any given query use __QueryBuilder.nor__. - -The features available are:- - * Equals - * Contains - * LessThan - * LessThanOrEqualTo - * GreaterThan - * GreaterThanOrEqualTo - * NotEqualTo - * StartsWith - * EndsWith - * Exists - * Near - * WithinMiles - * WithinKilometers - * WithinRadians - * WithinGeoBox - * WithinPolygon - * MatchesQuery - * DoesNotMatchQuery - * MatchesKeyInQuery - * DoesNotMatchKeyInQuery - * Regex - * Order - * Limit - * Skip - * Ascending - * Descending - * Plenty more! - -## Relational queries -If you want to retrieve objects where a field contains an object that matches another query, you can use the -__whereMatchesQuery__ condition. -For example, imagine you have Post class and a Comment class, where each Comment has a pointer to its parent Post. -You can find comments on posts with images by doing: - -```dart -QueryBuilder queryPost = - QueryBuilder(ParseObject('Post')) - ..whereValueExists('image', true); - -QueryBuilder queryComment = - QueryBuilder(ParseObject('Comment')) - ..whereMatchesQuery('post', queryPost); - -var apiResponse = await queryComment.query(); -``` - -If you want to retrieve objects where a field contains an object that does not match another query, you can use the -__whereDoesNotMatchQuery__ condition. -Imagine you have Post class and a Comment class, where each Comment has a pointer to its parent Post. -You can find comments on posts without images by doing: - -```dart -QueryBuilder queryPost = - QueryBuilder(ParseObject('Post')) - ..whereValueExists('image', true); - -QueryBuilder queryComment = - QueryBuilder(ParseObject('Comment')) - ..whereDoesNotMatchQuery('post', queryPost); - -var apiResponse = await queryComment.query(); -``` - -You can use the __whereMatchesKeyInQuery__ method to get objects where a key matches the value of a key in a set of objects resulting from another query. For example, if you have a class containing sports teams and you store a user’s hometown in the user class, you can issue one query to find the list of users whose hometown teams have winning records. The query would look like:: - -```dart -QueryBuilder teamQuery = - QueryBuilder(ParseObject('Team')) - ..whereGreaterThan('winPct', 0.5); - -QueryBuilder userQuery = - QueryBuilderParseUser.forQuery()) - ..whereMatchesKeyInQuery('hometown', 'city', teamQuery); - -var apiResponse = await userQuery.query(); -``` - -Conversely, to get objects where a key does not match the value of a key in a set of objects resulting from another query, use __whereDoesNotMatchKeyInQuery__. For example, to find users whose hometown teams have losing records: - -```dart -QueryBuilder teamQuery = - QueryBuilder(ParseObject('Team')) - ..whereGreaterThan('winPct', 0.5); - -QueryBuilder losingUserQuery = - QueryBuilderParseUser.forQuery()) - ..whereDoesNotMatchKeyInQuery('hometown', 'city', teamQuery); - -var apiResponse = await losingUserQuery.query(); -``` - -To filter rows based on objectId’s from pointers in a second table, you can use dot notation: -```dart -QueryBuilder rolesOfTypeX = - QueryBuilder(ParseObject('Role')) - ..whereEqualTo('type', 'x'); - -QueryBuilder groupsWithRoleX = - QueryBuilder(ParseObject('Group'))) - ..whereMatchesKeyInQuery('objectId', 'belongsTo.objectId', rolesOfTypeX); - -var apiResponse = await groupsWithRoleX.query(); -``` - -## Counting objects -If you only care about the number of games played by a particular player: - -```dart -QueryBuilder queryPlayers = - QueryBuilder(ParseObject('GameScore')) - ..whereEqualTo('playerName', 'Jonathan Walsh'); -var apiResponse = await queryPlayers.count(); -if (apiResponse.success && apiResponse.result != null) { - int countGames = apiResponse.count; -} -``` - -## LiveQuery - -This tool allows you to subscribe to a QueryBuilder you are interested in. Once subscribed, the server will notify clients -whenever a ParseObject that matches the QueryBuilder is created or updated, in real-time. - -Parse LiveQuery contains two parts, the LiveQuery server and the LiveQuery clients. In order to use live queries, you need -to set up both of them. - -The Parse Server configuration guide on the server is found here https://docs.parseplatform.org/parse-server/guide/#live-queries and is not part of this documentation. - -Initialize the Parse Live Query by entering the parameter liveQueryUrl in Parse().initialize: -```dart -Parse().initialize( - keyApplicationId, - keyParseServerUrl, - clientKey: keyParseClientKey, - debug: true, - liveQueryUrl: keyLiveQueryUrl, - autoSendSessionId: true); -``` - -Declare LiveQuery: -```dart -final LiveQuery liveQuery = LiveQuery(); -``` - -Set the QueryBuilder that will be monitored by LiveQuery: -```dart -QueryBuilder query = - QueryBuilder(ParseObject('TestAPI')) - ..whereEqualTo('intNumber', 1); -``` -__Create a subscription__ -You’ll get the LiveQuery events through this subscription. -The first time you call subscribe, we’ll try to open the WebSocket connection to the LiveQuery server for you. - -```dart -Subscription subscription = await liveQuery.client.subscribe(query); -``` - -__Event Handling__ -We define several types of events you’ll get through a subscription object: - -__Create event__ -When a new ParseObject is created and it fulfills the QueryBuilder you subscribe, you’ll get this event. -The object is the ParseObject which was created. -```dart -subscription.on(LiveQueryEvent.create, (value) { - print('*** CREATE ***: ${DateTime.now().toString()}\n $value '); - print((value as ParseObject).objectId); - print((value as ParseObject).updatedAt); - print((value as ParseObject).createdAt); - print((value as ParseObject).get('objectId')); - print((value as ParseObject).get('updatedAt')); - print((value as ParseObject).get('createdAt')); -}); -``` - -__Update event__ -When an existing ParseObject which fulfills the QueryBuilder you subscribe is updated (The ParseObject fulfills the -QueryBuilder before and after changes), you’ll get this event. -The object is the ParseObject which was updated. Its content is the latest value of the ParseObject. -```dart -subscription.on(LiveQueryEvent.update, (value) { - print('*** UPDATE ***: ${DateTime.now().toString()}\n $value '); - print((value as ParseObject).objectId); - print((value as ParseObject).updatedAt); - print((value as ParseObject).createdAt); - print((value as ParseObject).get('objectId')); - print((value as ParseObject).get('updatedAt')); - print((value as ParseObject).get('createdAt')); -}); -``` - -__Enter event__ -When an existing ParseObject’s old value does not fulfill the QueryBuilder but its new value fulfills the QueryBuilder, -you’ll get this event. The object is the ParseObject which enters the QueryBuilder. -Its content is the latest value of the ParseObject. -```dart -subscription.on(LiveQueryEvent.enter, (value) { - print('*** ENTER ***: ${DateTime.now().toString()}\n $value '); - print((value as ParseObject).objectId); - print((value as ParseObject).updatedAt); - print((value as ParseObject).createdAt); - print((value as ParseObject).get('objectId')); - print((value as ParseObject).get('updatedAt')); - print((value as ParseObject).get('createdAt')); -}); -``` - -__Leave event__ -When an existing ParseObject’s old value fulfills the QueryBuilder but its new value doesn’t fulfill the QueryBuilder, -you’ll get this event. The object is the ParseObject which leaves the QueryBuilder. -Its content is the latest value of the ParseObject. -```dart -subscription.on(LiveQueryEvent.leave, (value) { - print('*** LEAVE ***: ${DateTime.now().toString()}\n $value '); - print((value as ParseObject).objectId); - print((value as ParseObject).updatedAt); - print((value as ParseObject).createdAt); - print((value as ParseObject).get('objectId')); - print((value as ParseObject).get('updatedAt')); - print((value as ParseObject).get('createdAt')); -}); -``` - -__Delete event__ -When an existing ParseObject which fulfills the QueryBuilder is deleted, you’ll get this event. -The object is the ParseObject which is deleted -```dart -subscription.on(LiveQueryEvent.delete, (value) { - print('*** DELETE ***: ${DateTime.now().toString()}\n $value '); - print((value as ParseObject).objectId); - print((value as ParseObject).updatedAt); - print((value as ParseObject).createdAt); - print((value as ParseObject).get('objectId')); - print((value as ParseObject).get('updatedAt')); - print((value as ParseObject).get('createdAt')); -}); -``` - -__Unsubscribe__ -If you would like to stop receiving events from a QueryBuilder, you can just unsubscribe the subscription. -After that, you won’t get any events from the subscription object and will close the WebSocket connection to the -LiveQuery server. - -```dart -liveQuery.client.unSubscribe(subscription); -``` - -__Disconnection__ -In case the client's connection to the server breaks, -LiveQuery will automatically try to reconnect. -LiveQuery will wait at increasing intervals between reconnection attempts. -By default, these intervals are set to `[0, 500, 1000, 2000, 5000, 10000]` for mobile and `[0, 500, 1000, 2000, 5000]` for web. -You can change these by providing a custom list using the `liveListRetryIntervals` parameter at `Parse.initialize()` ("-1" means "do not try to reconnect"). - -## ParseLiveList -ParseLiveList makes implementing a dynamic List as simple as possible. - -### General Use -It ships with the ParseLiveList class itself, this class manages all elements of the list, sorts them, -keeps itself up to date and Notifies you on changes. - -### Included Sub-Objects - -By default, ParseLiveQuery will provide you with all the objects you included in your Query like this: -```dart -queryBuilder.includeObject(/*List of all the included sub-objects*/); -``` -ParseLiveList will not listen for updates on this objects by default. -To activate listening for updates on all included objects, add `listenOnAllSubItems: true` to your ParseLiveListWidgets constructor. -If you want ParseLiveList to listen for updates on only some sub-objects, use `listeningIncludes: const [/*all the included sub-objects*/]` instead. -Just as QueryBuilder, ParseLiveList supports nested sub-objects too. - -**NOTE:** To use this features you have to enable [Live Queries](#live-queries) first. - -## Users - -You can create and control users just as normal using this SDK. - -To register a user, first create one : -```dart -var user = ParseUser().create("TestFlutter", "TestPassword123", "TestFlutterSDK@gmail.com"); -``` -Then have the user sign up: - -```dart -var response = await user.signUp(); -if (response.success) user = response.result; -``` -You can also login with the user: -```dart -var response = await user.login(); -if (response.success) user = response.result; -``` -You can also logout with the user: -```dart -var response = await user.logout(); -if (response.success) { - print('User logout'); -} -``` -Also, once logged in you can manage sessions tokens. This feature can be called after Parse().init() on startup to check for a logged in user. -```dart -user = ParseUser.currentUser(); -``` - -To add additional columns to the user: -```dart -var user = ParseUser("TestFlutter", "TestPassword123", "TestFlutterSDK@gmail.com") - ..set("userLocation", "FlutterLand"); -``` - -Other user features are:- - * Request Password Reset - * Verification Email Request - * Get all users - * Save - * Destroy user - * Queries - - ## Facebook, OAuth and 3rd Party Login/User - - Usually, each provider will provide their own library for logins, but the loginWith method on ParseUser accepts a name of provider, then a Map with the authentication details required. - For Facebook and the example below, we used the library provided at https://pub.dev/packages/flutter_facebook_login - - ``` - Future goToFacebookLogin() async { - final FacebookLogin facebookLogin = FacebookLogin(); - final FacebookLoginResult result = await facebookLogin.logInWithReadPermissions(['email']); - - switch (result.status) { - case FacebookLoginStatus.loggedIn: - final ParseResponse response = await ParseUser.loginWith( - 'facebook', - facebook(result.accessToken.token, - result.accessToken.userId, - result.accessToken.expires)); - - if (response.success) { - // User is logged in, test with ParseUser.currentUser() - } - break; - case FacebookLoginStatus.cancelledByUser: - // User cancelled - break; - case FacebookLoginStatus.error: - // Error - break; - } - } -``` - -For Google and the example below, we used the library provided at https://pub.dev/packages/google_sign_in - -``` -class OAuthLogin { - final GoogleSignIn _googleSignIn = GoogleSignIn( scopes: ['email', 'https://www.googleapis.com/auth/contacts.readonly'] ); - - sigInGoogle() async { - GoogleSignInAccount account = await _googleSignIn.signIn(); - GoogleSignInAuthentication authentication = await account.authentication; - await ParseUser.loginWith( - 'google', - google(_googleSignIn.currentUser.id, - authentication.accessToken, - authentication.idToken)); - } -} -``` - -## Security for Objects - ParseACL -For any object, you can specify which users are allowed to read the object, and which users are allowed to modify an object. -To support this type of security, each object has an access control list, implemented by the __ParseACL__ class. - -If ParseACL is not specified (with the exception of the ParseUser class) all objects are set to Public for read and write. -The simplest way to use a ParseACL is to specify that an object may only be read or written by a single user. -To create such an object, there must first be a logged in ParseUser. Then, new ParseACL(user) generates a ParseACL that -limits access to that user. An object’s ACL is updated when the object is saved, like any other property. - -```dart -ParseUser user = await ParseUser.currentUser() as ParseUser; -ParseACL parseACL = ParseACL(owner: user); - -ParseObject parseObject = ParseObject("TestAPI"); -... -parseObject.setACL(parseACL); -var apiResponse = await parseObject.save(); -``` -Permissions can also be granted on a per-user basis. You can add permissions individually to a ParseACL using -__setReadAccess__ and __setWriteAccess__ -```dart -ParseUser user = await ParseUser.currentUser() as ParseUser; -ParseACL parseACL = ParseACL(); -//grant total access to current user -parseACL.setReadAccess(userId: user.objectId, allowed: true); -parseACL.setWriteAccess(userId: user.objectId, allowed: true); -//grant read access to userId: 'TjRuDjuSAO' -parseACL.setReadAccess(userId: 'TjRuDjuSAO', allowed: true); -parseACL.setWriteAccess(userId: 'TjRuDjuSAO', allowed: false); - -ParseObject parseObject = ParseObject("TestAPI"); -... -parseObject.setACL(parseACL); -var apiResponse = await parseObject.save(); -``` -You can also grant permissions to all users at once using setPublicReadAccess and setPublicWriteAccess. -```dart -ParseACL parseACL = ParseACL(); -parseACL.setPublicReadAccess(allowed: true); -parseACL.setPublicWriteAccess(allowed: true); - -ParseObject parseObject = ParseObject("TestAPI"); -... -parseObject.setACL(parseACL); -var apiResponse = await parseObject.save(); -``` -Operations that are forbidden, such as deleting an object that you do not have write access to, result in a -ParseError with code 101: 'ObjectNotFound'. -For security purposes, this prevents clients from distinguishing which object ids exist but are secured, versus which -object ids do not exist at all. - -You can retrieve the ACL list of an object using: -```dart -ParseACL parseACL = parseObject.getACL(); -``` - -To set the ACL to `ParseRole` use: - -```dart -parseACL.setReadAccess(userId: "role:ROLE_NAME", allowed: true); -parseACL.setWriteAccess(userId: "role:ROLE_NAME", allowed: true); - -``` -## Config -The SDK supports Parse Config. A map of all configs can be grabbed from the server by calling : -```dart -var response = await ParseConfig().getConfigs(); -``` - -and to add a config: -```dart -ParseConfig().addConfig('TestConfig', 'testing'); -``` - -## Cloud Functions -The SDK supports call Cloud Functions. - -Executes a cloud function that returns a ParseObject type -```dart -final ParseCloudFunction function = ParseCloudFunction('hello'); -final ParseResponse result = - await function.executeObjectFunction(); -if (result.success) { - if (result.result is ParseObject) { - final ParseObject parseObject = result.result; - print(parseObject.className); - } -} -``` - -Executes a cloud function with parameters -```dart -final ParseCloudFunction function = ParseCloudFunction('hello'); -final Map params = {'plan': 'paid'}; -function.execute(parameters: params); -``` - -## Relation - -The SDK supports Relation. - -To add relation to object: - -```dart -dietPlan.addRelation('fruits', [ParseObject("Fruits")..set("objectId", "XGadzYxnac")]); -``` - -To remove relation to object: - -```dart -dietPlan.removeRelation('fruits', [ParseObject("Fruits")..set("objectId", "XGadzYxnac")]); -``` - -To Retrive a relation instance for user, call: -```dart -final relation = dietPlan.getRelation('fruits'); -``` - -and then you can add a relation to the passed in object: -``` -relation.add(dietPlan); -final result = await user.save(); -``` - -To retrieve objects that are members of Relation field of a parent object: -```dart -QueryBuilder query = - QueryBuilder(ParseObject('Fruits')) - ..whereRelatedTo('fruits', 'DietPlan', DietPlan.objectId); -``` - -## File -There are three different file classes in this SDK: -- `ParseFileBase` is and abstract class and is the foundation of every file class that can be handled by this SDK. -- `ParseFile` (former the only file class in the SDK) extends ParseFileBase and is by default used as the file class on every platform but web. -This class uses a `File` from `dart:io` for storing the raw file. -- `ParseWebFile` is the equivalent to ParseFile used at Flutter Web. -This class uses an `Uint8List` for storing the raw file. - -These classes are used by default to represent files, but you can also build your own class extending ParseFileBase and provide a custom `ParseFileConstructor` similar to the `SubClasses`. - -Have a look at the example application for a small (non web) example. - -When uploading or downloading a file, you can use the `progressCallback`-parameter to track the progress of the http request. -```dart -//A short example for showing an image from a ParseFileBase -Widget buildImage(ParseFileBase image){ - return FutureBuilder( - future: image.download(), - builder: (BuildContext context, - AsyncSnapshot snapshot) { - if (snapshot.hasData) { - if (kIsWeb) { - return Image.memory((snapshot.data as ParseWebFile).file); - } else { - return Image.file((snapshot.data as ParseFile).file); - } - } else { - return CircularProgressIndicator(); - } - }, - ); -} -``` -```dart -//A short example for storing a selected picture -//libraries: image_picker (https://pub.dev/packages/image_picker), image_picker_for_web (https://pub.dev/packages/image_picker_for_web) -PickedFile pickedFile = await ImagePicker().getImage(source: ImageSource.gallery); -ParseFileBase parseFile; -if (kIsWeb) { - //Seems weird, but this lets you get the data from the selected file as an Uint8List very easily. - ParseWebFile file = ParseWebFile(null, name: null, url: pickedFile.path); - await file.download(); - parseFile = ParseWebFile(file.file, name: file.name); -} else { - parseFile = ParseFile(File(pickedFile.path)); -} -someParseObject.set("image", parseFile); -//This saves the ParseObject as well as all of its children, and the ParseFileBase is such a child. -await someParseObject.save(); -``` -```dart -//progressCallback example -file.upload(progressCallback: (int count, int total) => print("$count of $total")); -``` - -## Other Features - -Main: -* Installation (View the example application) -* GeoPoints (View the example application) -* Persistent storage -* Debug Mode - Logging API calls -* Manage Session ID's tokens - -User: -* Queries -* Anonymous (View the example application) -* 3rd Party Authentication - -Objects: -* Create new object -* Extend Parse Object and create local objects that can be saved and retreived -* Queries diff --git a/packages/dart/analysis_options.yaml b/packages/dart/analysis_options.yaml deleted file mode 100644 index 572dd239d..000000000 --- a/packages/dart/analysis_options.yaml +++ /dev/null @@ -1 +0,0 @@ -include: package:lints/recommended.yaml diff --git a/packages/dart/example/main.dart b/packages/dart/example/main.dart deleted file mode 100644 index ce96602d3..000000000 --- a/packages/dart/example/main.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'package:parse_server_sdk/parse_server_sdk.dart'; - -Future main() async { - // Parse initialize - await Parse().initialize("keyApplicationId", "keyParseServerUrl", - clientKey: "keyParseClientKey", - debug: true, - liveQueryUrl: "keyLiveQueryUrl", - autoSendSessionId: true, - coreStore: CoreStoreMemoryImp()); - - // Set a ParseObject and save it - var dietPlan = ParseObject('DietPlan') - ..set('Name', 'Ketogenic') - ..set('Fat', 65); - - var response = await dietPlan.save(); - - if (response.success) { - dietPlan = response.results?.first; - print("Response received successfully"); - } -} diff --git a/packages/dart/example/pubspec.yaml b/packages/dart/example/pubspec.yaml deleted file mode 100644 index 818e74736..000000000 --- a/packages/dart/example/pubspec.yaml +++ /dev/null @@ -1,14 +0,0 @@ -name: example -description: example -version: 1.0.0 -publish_to: 'none' - -environment: - sdk: ">=2.18.0 <4.0.0" - -dependencies: - parse_server_sdk: - path: ../ - -dev_dependencies: - lints: ^1.0.1 \ No newline at end of file diff --git a/packages/dart/lib/parse_server_sdk.dart b/packages/dart/lib/parse_server_sdk.dart deleted file mode 100644 index 93ada12ac..000000000 --- a/packages/dart/lib/parse_server_sdk.dart +++ /dev/null @@ -1,177 +0,0 @@ -library flutter_parse_sdk; - -import 'dart:async'; -import 'dart:convert'; -import 'dart:math'; -import 'dart:typed_data'; - -import 'package:collection/collection.dart'; -import 'package:dio/dio.dart'; -import 'package:meta/meta.dart'; -import 'package:mime_type/mime_type.dart'; -import 'package:path/path.dart' as path; -import 'package:sembast/sembast.dart'; -import 'package:sembast/sembast_io.dart'; -import 'package:sembast_web/sembast_web.dart'; -import 'package:timezone/data/latest.dart' as tz; -import 'package:timezone/timezone.dart' as tz; -import 'package:universal_io/io.dart'; -import 'package:uuid/uuid.dart'; -import 'package:web_socket_channel/web_socket_channel.dart'; -import 'package:xxtea/xxtea.dart'; - -import 'src/network/parse_http_client.dart'; -import 'src/network/parse_websocket.dart' as parse_web_socket; - -export 'src/network/parse_dio_client.dart'; -export 'src/network/parse_http_client.dart'; - -part 'src/base/parse_constants.dart'; -part 'src/data/parse_core_data.dart'; -part 'src/data/parse_subclass_handler.dart'; -part 'src/enums/parse_enum_api_rq.dart'; -part 'src/network/options.dart'; -part 'src/network/parse_client.dart'; -part 'src/network/parse_connectivity.dart'; -part 'src/network/parse_live_query.dart'; -part 'src/network/parse_query.dart'; -part 'src/objects/parse_acl.dart'; -part 'src/objects/parse_array.dart'; -part 'src/objects/parse_base.dart'; -part 'src/objects/parse_cloneable.dart'; -part 'src/objects/parse_config.dart'; -part 'src/objects/parse_error.dart'; -part 'src/objects/parse_file.dart'; -part 'src/objects/parse_number.dart'; -part 'src/objects/parse_file_base.dart'; -part 'src/objects/parse_file_web.dart'; -part 'src/objects/parse_function.dart'; -part 'src/objects/parse_geo_point.dart'; -part 'src/objects/parse_installation.dart'; -part 'src/objects/parse_object.dart'; -part 'src/objects/parse_exception.dart'; -part 'src/objects/parse_operation/parse_add_operation.dart'; -part 'src/objects/parse_operation/parse_add_relation_operation.dart'; -part 'src/objects/parse_operation/parse_add_unique_operation.dart'; -part 'src/objects/parse_operation/parse_increment_operation.dart'; -part 'src/objects/parse_operation/parse_operation.dart'; -part 'src/objects/parse_operation/parse_remove_operation.dart'; -part 'src/objects/parse_operation/parse_remove_relation_operation.dart'; -part 'src/objects/parse_relation.dart'; -part 'src/objects/parse_response.dart'; -part 'src/objects/parse_save_state_aware_child.dart'; -part 'src/objects/parse_session.dart'; -part 'src/objects/parse_user.dart'; -part 'src/objects/response/parse_error_response.dart'; -part 'src/objects/response/parse_exception_response.dart'; -part 'src/objects/response/parse_response_builder.dart'; -part 'src/objects/response/parse_response_utils.dart'; -part 'src/objects/response/parse_success_no_results.dart'; -part 'src/storage/core_store.dart'; -part 'src/storage/core_store_memory.dart'; -part 'src/storage/core_store_sem_impl.dart'; -part 'src/storage/xxtea_codec.dart'; -part 'src/utils/parse_date_format.dart'; -part 'src/utils/parse_decoder.dart'; -part 'src/utils/parse_encoder.dart'; -part 'src/utils/parse_live_list.dart'; -part 'src/utils/parse_logger.dart'; -part 'src/utils/parse_login_helpers.dart'; -part 'src/utils/parse_utils.dart'; -part 'src/utils/valuable.dart'; - -class Parse { - bool _hasBeenInitialized = false; - - /// To initialize Parse Server in your application - /// - /// This should be initialized in MyApp() creation - /// - /// ``` - /// Parse().initialize( - /// "PARSE_APP_ID", - /// "https://parse.myaddress.com/parse/,-%20%20///%20%20%20%20%20%20%20%20clientKey:"asd23rjh234r234r234r", - /// debug: true, - /// liveQuery: true); - /// ``` - Future initialize( - String appId, - String serverUrl, { - bool debug = false, - String? appName, - String? appVersion, - String? appPackageName, - String? locale, - String? liveQueryUrl, - String? clientKey, - String? masterKey, - String? sessionId, - bool autoSendSessionId = true, - SecurityContext? securityContext, - CoreStore? coreStore, - Map? registeredSubClassMap, - ParseUserConstructor? parseUserConstructor, - ParseFileConstructor? parseFileConstructor, - List? liveListRetryIntervals, - ParseConnectivityProvider? connectivityProvider, - String? fileDirectory, - Stream? appResumedStream, - ParseClientCreator? clientCreator, - }) async { - final String url = removeTrailingSlash(serverUrl); - - await ParseCoreData.init( - appId, - url, - debug: debug, - appName: appName, - appVersion: appVersion, - appPackageName: appPackageName, - locale: locale, - liveQueryUrl: liveQueryUrl, - masterKey: masterKey, - clientKey: clientKey, - sessionId: sessionId, - autoSendSessionId: autoSendSessionId, - securityContext: securityContext, - store: coreStore, - registeredSubClassMap: registeredSubClassMap, - parseUserConstructor: parseUserConstructor, - parseFileConstructor: parseFileConstructor, - liveListRetryIntervals: liveListRetryIntervals, - connectivityProvider: connectivityProvider, - fileDirectory: fileDirectory, - appResumedStream: appResumedStream, - clientCreator: clientCreator, - ); - - _hasBeenInitialized = true; - - return this; - } - - bool hasParseBeenInitialized() => _hasBeenInitialized; - - Future healthCheck( - {bool? debug, ParseClient? client, bool? sendSessionIdByDefault}) async { - final bool debugLocal = isDebugEnabled(objectLevelDebug: debug); - - final ParseClient clientLocal = client ?? - ParseCoreData().clientCreator( - sendSessionId: - sendSessionIdByDefault ?? ParseCoreData().autoSendSessionId, - securityContext: ParseCoreData().securityContext); - - const String className = 'parseBase'; - const ParseApiRQ type = ParseApiRQ.healthCheck; - - try { - final ParseNetworkResponse response = await clientLocal - .get('${ParseCoreData().serverUrl}$keyEndPointHealth'); - return handleResponse(null, response, type, debugLocal, className); - } on Exception catch (e) { - return handleException(e, type, debugLocal, className); - } - } -} diff --git a/packages/dart/lib/src/base/parse_constants.dart b/packages/dart/lib/src/base/parse_constants.dart deleted file mode 100644 index c8554339d..000000000 --- a/packages/dart/lib/src/base/parse_constants.dart +++ /dev/null @@ -1,85 +0,0 @@ -part of flutter_parse_sdk; - -// Library -const String keySdkVersion = '5.1.1'; -const String keyLibraryName = 'Flutter Parse SDK'; - -// End Points -const String keyEndPointUserName = '/users/me'; -const String keyEndPointLogin = '/login'; -const String keyEndPointLogout = '/logout'; -const String keyEndPointUsers = '/users'; -const String keyEndPointSessions = '/sessions'; -const String keyEndPointInstallations = '/installations'; -const String keyEndPointVerificationEmail = '/verificationEmailRequest'; -const String keyEndPointRequestPasswordReset = '/requestPasswordReset'; -const String keyEndPointClasses = '/classes/'; -const String keyEndPointHealth = '/health'; -const String keyEndPointAggregate = '/aggregate/'; - -// ParseObject variables -const String keyVarClassName = 'className'; -const String keyVarObjectId = 'objectId'; -const String keyVarCreatedAt = 'createdAt'; -const String keyVarUpdatedAt = 'updatedAt'; -const String keyVarUsername = 'username'; -const String keyVarEmail = 'email'; -const String keyVarPassword = 'password'; -const String keyVarSessionToken = 'sessionToken'; -const String keyVarAuthData = 'authData'; -const String keyVarAcl = 'ACL'; -const String keyVarName = 'name'; -const String keyVarURL = 'url'; - -// Classes -const String keyClassMain = 'ParseMain'; -const String keyClassUser = '_User'; -const String keyClassSession = '_Session'; -const String keyClassInstallation = '_Installation'; -const String keyGeoPoint = 'GeoPoint'; -const String keyFile = 'File'; -const String keyRelation = 'Relation'; -const String keyFileClassname = 'ParseFile'; - -// Headers -const String keyHeaderSessionToken = 'X-Parse-Session-Token'; -const String keyHeaderRevocableSession = 'X-Parse-Revocable-Session'; -const String keyHeaderUserAgent = 'user-agent'; -const String keyHeaderApplicationId = 'X-Parse-Application-Id'; -const String keyHeaderContentType = 'content-type'; -const String keyHeaderContentTypeJson = 'application/json'; -const String keyHeaderMasterKey = 'X-Parse-Master-Key'; -const String keyHeaderClientKey = 'X-Parse-Client-Key'; -const String keyHeaderInstallationId = 'X-Parse-Installation-Id'; - -// URL params -const String keyParamSessionToken = 'sessionToken'; - -// Storage -const String keyParseStoreBase = 'flutter_parse_sdk_'; -const String keyParseStoreUser = '${keyParseStoreBase}user'; -const String keyParseStoreInstallation = '${keyParseStoreBase}installation'; - -// Installation -const String keyTimeZone = 'timeZone'; -const String keyLocaleIdentifier = 'localeIdentifier'; -const String keyDeviceToken = 'deviceToken'; -const String keyDeviceType = 'deviceType'; -const String keyInstallationId = 'installationId'; -const String keyAppName = 'appName'; -const String keyAppVersion = 'appVersion'; -const String keyAppIdentifier = 'appIdentifier'; -const String keyParseVersion = 'parseVersion'; - -// Parse Session -const String keyVarUser = 'user'; -const String keyVarCreatedWith = 'createdWith'; -const String keyVarRestricted = 'restricted'; -const String keyVarExpiresAt = 'expiresAt'; -const String keyVarInstallationId = 'installationId'; - -// Error -const String keyError = 'error'; -const String keyCode = 'code'; - -const bool parseIsWeb = identical(0, 0.0); diff --git a/packages/dart/lib/src/data/parse_core_data.dart b/packages/dart/lib/src/data/parse_core_data.dart deleted file mode 100644 index aea6adf36..000000000 --- a/packages/dart/lib/src/data/parse_core_data.dart +++ /dev/null @@ -1,136 +0,0 @@ -part of flutter_parse_sdk; - -/// Singleton class that defines all user keys and data -class ParseCoreData { - factory ParseCoreData() => _instance; - - ParseCoreData._init(this.applicationId, this.serverUrl); - - static late ParseCoreData _instance; - - static ParseCoreData get instance => _instance; - - /// Creates an instance of Parse Server - /// - /// This class should not be user unless switching servers during the app, - /// which is odd. Should only be user by Parse.init - static Future init( - String appId, - String serverUrl, { - required bool debug, - String? appName, - String? appVersion, - String? appPackageName, - String? locale, - String? liveQueryUrl, - String? masterKey, - String? clientKey, - String? sessionId, - required bool autoSendSessionId, - SecurityContext? securityContext, - CoreStore? store, - Map? registeredSubClassMap, - ParseUserConstructor? parseUserConstructor, - ParseFileConstructor? parseFileConstructor, - List? liveListRetryIntervals, - ParseConnectivityProvider? connectivityProvider, - String? fileDirectory, - Stream? appResumedStream, - ParseClientCreator? clientCreator, - }) async { - _instance = ParseCoreData._init(appId, serverUrl); - - _instance.storage = store ?? CoreStoreMemoryImp(); - _instance.debug = debug; - _instance.appName = appName; - _instance.appVersion = appVersion; - _instance.appPackageName = appPackageName; - _instance.locale = locale; - _instance.liveQueryURL = liveQueryUrl; - _instance.clientKey = clientKey; - _instance.masterKey = masterKey; - _instance.sessionId = sessionId; - _instance.autoSendSessionId = autoSendSessionId; - _instance.securityContext = securityContext; - _instance.liveListRetryIntervals = liveListRetryIntervals ?? - (parseIsWeb - ? [0, 500, 1000, 2000, 5000] - : [0, 500, 1000, 2000, 5000, 10000]); - _instance._subClassHandler = ParseSubClassHandler( - registeredSubClassMap: registeredSubClassMap, - parseUserConstructor: parseUserConstructor, - parseFileConstructor: parseFileConstructor, - ); - _instance.connectivityProvider = connectivityProvider; - _instance.fileDirectory = fileDirectory; - _instance.appResumedStream = appResumedStream; - _instance.clientCreator = clientCreator ?? - (({required bool sendSessionId, SecurityContext? securityContext}) => - ParseHTTPClient( - sendSessionId: sendSessionId, - securityContext: securityContext)); - } - - String applicationId; - String serverUrl; - String? appName; - String? appVersion; - String? appPackageName; - String? locale; - String? liveQueryURL; - String? masterKey; - String? clientKey; - String? sessionId; - late bool autoSendSessionId; - SecurityContext? securityContext; - late bool debug; - late CoreStore storage; - late ParseSubClassHandler _subClassHandler; - late List liveListRetryIntervals; - ParseConnectivityProvider? connectivityProvider; - String? fileDirectory; - Stream? appResumedStream; - late ParseClientCreator clientCreator; - - void registerSubClass( - String className, ParseObjectConstructor objectConstructor) { - _subClassHandler.registerSubClass(className, objectConstructor); - } - - void registerUserSubClass(ParseUserConstructor parseUserConstructor) { - _subClassHandler.registerUserSubClass(parseUserConstructor); - } - - void registerFileSubClass(ParseFileConstructor parseFileConstructor) { - _subClassHandler.registerFileSubClass(parseFileConstructor); - } - - ParseObject createObject(String classname) { - return _subClassHandler.createObject(classname); - } - - ParseUser createParseUser( - String? username, String? password, String? emailAddress, - {String? sessionToken, bool? debug, ParseClient? client}) { - return _subClassHandler.createParseUser(username, password, emailAddress, - sessionToken: sessionToken, debug: debug, client: client); - } - - ParseFileBase createFile({String? url, String? name}) => - _subClassHandler.createFile(name: name, url: url); - - /// Sets the current sessionId. - /// - /// This is generated when a users logs in, or calls currentUser to update - /// their keys - void setSessionId(String sessionId) { - this.sessionId = sessionId; - } - - CoreStore getStore() { - return storage; - } - - @override - String toString() => '$applicationId $masterKey'; -} diff --git a/packages/dart/lib/src/data/parse_subclass_handler.dart b/packages/dart/lib/src/data/parse_subclass_handler.dart deleted file mode 100644 index f7ed18cf9..000000000 --- a/packages/dart/lib/src/data/parse_subclass_handler.dart +++ /dev/null @@ -1,75 +0,0 @@ -part of flutter_parse_sdk; - -typedef ParseObjectConstructor = ParseObject Function(); -typedef ParseUserConstructor = ParseUser Function( - String? username, String? password, String? emailAddress, - {String? sessionToken, bool? debug, ParseClient? client}); -typedef ParseFileConstructor = ParseFileBase Function( - {String? name, String? url}); - -class ParseSubClassHandler { - ParseSubClassHandler( - {Map? registeredSubClassMap, - ParseUserConstructor? parseUserConstructor, - ParseFileConstructor? parseFileConstructor}) { - _subClassMap = registeredSubClassMap ?? {}; - _parseUserConstructor = parseUserConstructor; - if (parseFileConstructor != null) { - _parseFileConstructor = parseFileConstructor; - } - } - - late Map _subClassMap; - ParseUserConstructor? _parseUserConstructor; - ParseFileConstructor _parseFileConstructor = defaultParseFileConstructor; - - static ParseFileBase defaultParseFileConstructor( - {String? name, String? url}) { - if (parseIsWeb) { - return ParseWebFile(null, name: name!, url: url); - } else { - return ParseFile(null, name: name, url: url); - } - } - - void registerSubClass( - String className, ParseObjectConstructor objectConstructor) { - if (className != keyClassUser && - className != keyClassInstallation && - className != keyClassSession && - className != keyFileClassname) { - _subClassMap[className] = objectConstructor; - } - } - - void registerUserSubClass(ParseUserConstructor parseUserConstructor) { - _parseUserConstructor = parseUserConstructor; - } - - void registerFileSubClass(ParseFileConstructor parseFileConstructor) { - _parseFileConstructor = parseFileConstructor; - } - - ParseObject createObject(String classname) { - if (classname == keyClassUser) { - return createParseUser(null, null, null); - } - if (_subClassMap.containsKey(classname)) { - return _subClassMap[classname]!(); - } - return ParseObject(classname); - } - - ParseUser createParseUser( - String? username, String? password, String? emailAddress, - {String? sessionToken, bool? debug, ParseClient? client}) { - return _parseUserConstructor != null - ? _parseUserConstructor!(username, password, emailAddress, - sessionToken: sessionToken, debug: debug, client: client) - : ParseUser(username, password, emailAddress, - sessionToken: sessionToken, debug: debug, client: client); - } - - ParseFileBase createFile({String? name, String? url}) => - _parseFileConstructor(name: name, url: url); -} diff --git a/packages/dart/lib/src/enums/parse_enum_api_rq.dart b/packages/dart/lib/src/enums/parse_enum_api_rq.dart deleted file mode 100644 index 56bb33ef8..000000000 --- a/packages/dart/lib/src/enums/parse_enum_api_rq.dart +++ /dev/null @@ -1,37 +0,0 @@ -part of flutter_parse_sdk; - -/// Used to define the API calls made in ParseObject logs -enum ParseApiRQ { - healthCheck, - get, - getAll, - unset, - create, - save, - query, - delete, - currentUser, - signUp, - login, - logout, - loginAnonymous, - loginWith, - verificationEmailRequest, - requestPasswordReset, - destroy, - all, - execute, - executeObjectionFunction, - upload, - add, - addAll, - addUnique, - remove, - removeAll, - increment, - decrement, - getConfigs, - addConfig, - liveQuery, - batch -} diff --git a/packages/dart/lib/src/network/dio_adapter_io.dart b/packages/dart/lib/src/network/dio_adapter_io.dart deleted file mode 100644 index 976810283..000000000 --- a/packages/dart/lib/src/network/dio_adapter_io.dart +++ /dev/null @@ -1,14 +0,0 @@ -import 'package:universal_io/io.dart'; - -import 'package:dio/io.dart'; -import 'package:dio/dio.dart'; - -HttpClientAdapter createHttpClientAdapter(SecurityContext? securityContext) { - final IOHttpClientAdapter defaultHttpClientAdapter = IOHttpClientAdapter(); - - if (securityContext != null) { - defaultHttpClientAdapter.onHttpClientCreate = - (HttpClient client) => HttpClient(context: securityContext); - } - return defaultHttpClientAdapter; -} diff --git a/packages/dart/lib/src/network/dio_adapter_js.dart b/packages/dart/lib/src/network/dio_adapter_js.dart deleted file mode 100644 index c35b0a444..000000000 --- a/packages/dart/lib/src/network/dio_adapter_js.dart +++ /dev/null @@ -1,8 +0,0 @@ -import 'package:dio/browser.dart'; -import 'package:dio/dio.dart'; - -HttpClientAdapter createHttpClientAdapter(dynamic securityContext) { - final BrowserHttpClientAdapter browserHttpClientAdapter = - BrowserHttpClientAdapter(); - return browserHttpClientAdapter; -} diff --git a/packages/dart/lib/src/network/http_client_io.dart b/packages/dart/lib/src/network/http_client_io.dart deleted file mode 100644 index f94193813..000000000 --- a/packages/dart/lib/src/network/http_client_io.dart +++ /dev/null @@ -1,6 +0,0 @@ -import 'dart:io'; -import 'package:http/io_client.dart'; - -getClient(SecurityContext securityContext) { - return IOClient(HttpClient(context: securityContext)); -} diff --git a/packages/dart/lib/src/network/http_client_js.dart b/packages/dart/lib/src/network/http_client_js.dart deleted file mode 100644 index 8f5dea0a3..000000000 --- a/packages/dart/lib/src/network/http_client_js.dart +++ /dev/null @@ -1,6 +0,0 @@ -import 'dart:io'; -import 'package:http/browser_client.dart'; - -getClient(SecurityContext securityContext) { - return BrowserClient(); -} diff --git a/packages/dart/lib/src/network/options.dart b/packages/dart/lib/src/network/options.dart deleted file mode 100644 index 7f33a5c6c..000000000 --- a/packages/dart/lib/src/network/options.dart +++ /dev/null @@ -1,10 +0,0 @@ -part of flutter_parse_sdk; - -class ParseNetworkOptions { - ParseNetworkOptions({this.headers}); - - final Map? headers; - // final ParseNetworkResponseType responseType; -} - -enum ParseNetworkResponseType { json, stream, plain, bytes } diff --git a/packages/dart/lib/src/network/parse_client.dart b/packages/dart/lib/src/network/parse_client.dart deleted file mode 100644 index ad16235d0..000000000 --- a/packages/dart/lib/src/network/parse_client.dart +++ /dev/null @@ -1,104 +0,0 @@ -part of flutter_parse_sdk; - -typedef ParseClientCreator = ParseClient Function( - {required bool sendSessionId, SecurityContext? securityContext}); - -abstract class ParseClient { - Future get( - String path, { - ParseNetworkOptions? options, - ProgressCallback? onReceiveProgress, - }); - - Future put( - String path, { - String? data, - ParseNetworkOptions? options, - }); - - Future post( - String path, { - String? data, - ParseNetworkOptions? options, - }); - - Future postBytes( - String path, { - Stream>? data, - ParseNetworkOptions? options, - ProgressCallback? onSendProgress, - dynamic cancelToken, - }); - - Future delete( - String path, { - ParseNetworkOptions? options, - }); - - Future getBytes( - String path, { - ParseNetworkOptions? options, - ProgressCallback? onReceiveProgress, - dynamic cancelToken, - }); - - // Future putBytes( - // String path, { - // dynamic data, - // Map queryParameters, - // ParseNetworkOptions options, - // ProgressCallback onReceiveProgress, - // }); - // - // Future postBytes( - // String path, { - // String data, - // ParseNetworkOptions options, - // ProgressCallback onReceiveProgress, - // ProgressCallback onSendProgress, - // }); - // - // Future deleteBytes( - // String path, { - // Map queryParameters, - // ParseNetworkOptions options, - // }); - - @Deprecated("Use ParseCoreData() instead.") - ParseCoreData get data => ParseCoreData(); -} - -/// Callback to listen the progress for sending/receiving data. -/// -/// [count] is the length of the bytes have been sent/received. -/// -/// [total] is the content length of the response/request body. -/// 1.When receiving data: -/// [total] is the request body length. -/// 2.When receiving data: -/// [total] will be -1 if the size of the response body is not known in advance, -/// for example: response data is compressed with gzip or no content-length header. -typedef ProgressCallback = void Function(int count, int total); - -class ParseNetworkResponse { - ParseNetworkResponse({ - required this.data, - this.statusCode = -1, - }); - - final String data; - final int statusCode; -} - -class ParseNetworkByteResponse extends ParseNetworkResponse { - ParseNetworkByteResponse({ - this.bytes, - final String data = 'byte response', - final int statusCode = -1, - }) : super( - data: data, - statusCode: statusCode, - ); - - final List? bytes; -} diff --git a/packages/dart/lib/src/network/parse_connectivity.dart b/packages/dart/lib/src/network/parse_connectivity.dart deleted file mode 100644 index 731ad1a4b..000000000 --- a/packages/dart/lib/src/network/parse_connectivity.dart +++ /dev/null @@ -1,18 +0,0 @@ -part of flutter_parse_sdk; - -/// Connection status check result. -enum ParseConnectivityResult { - /// WiFi: Device connected via Wi-Fi - wifi, - - /// Mobile: Device connected to cellular network - mobile, - - /// None: Device not connected to any network - none -} - -abstract class ParseConnectivityProvider { - Future checkConnectivity(); - Stream get connectivityStream; -} diff --git a/packages/dart/lib/src/network/parse_dio_client.dart b/packages/dart/lib/src/network/parse_dio_client.dart deleted file mode 100644 index 3cdfba743..000000000 --- a/packages/dart/lib/src/network/parse_dio_client.dart +++ /dev/null @@ -1,302 +0,0 @@ -import 'package:dio/dio.dart' as dio; -import 'package:parse_server_sdk/parse_server_sdk.dart'; - -import 'dio_adapter_io.dart' if (dart.library.js) 'dio_adapter_js.dart'; - -class ParseDioClient extends ParseClient { - // securityContext is SecurityContext - ParseDioClient({bool sendSessionId = false, dynamic securityContext}) { - _client = _ParseDioClient( - sendSessionId: sendSessionId, - securityContext: securityContext, - ); - } - - late _ParseDioClient _client; - - @override - Future get( - String path, { - ParseNetworkOptions? options, - ProgressCallback? onReceiveProgress, - }) async { - try { - final dio.Response dioResponse = await _client.get( - path, - options: _Options(headers: options?.headers), - ); - - return ParseNetworkResponse( - data: dioResponse.data!, - statusCode: dioResponse.statusCode!, - ); - } on dio.DioError catch (error) { - return ParseNetworkResponse( - data: error.response?.data ?? _fallbackErrorData, - statusCode: error.response?.statusCode ?? ParseError.otherCause, - ); - } - } - - @override - Future getBytes( - String path, { - ParseNetworkOptions? options, - ProgressCallback? onReceiveProgress, - dynamic cancelToken, - }) async { - try { - final dio.Response> dioResponse = await _client.get>( - path, - cancelToken: cancelToken, - onReceiveProgress: onReceiveProgress, - options: _Options( - headers: options?.headers, responseType: dio.ResponseType.bytes), - ); - return ParseNetworkByteResponse( - bytes: dioResponse.data, - statusCode: dioResponse.statusCode!, - ); - } on dio.DioError catch (error) { - if (error.response != null) { - return ParseNetworkByteResponse( - data: error.response?.data ?? _fallbackErrorData, - statusCode: error.response?.statusCode ?? ParseError.otherCause, - ); - } else { - return _getOtherCaseErrorForParseNetworkResponse( - error.error.toString()); - } - } - } - - @override - Future put(String path, - {String? data, ParseNetworkOptions? options}) async { - try { - final dio.Response dioResponse = await _client.put( - path, - data: data, - options: _Options(headers: options?.headers), - ); - - return ParseNetworkResponse( - data: dioResponse.data!, - statusCode: dioResponse.statusCode!, - ); - } on dio.DioError catch (error) { - return ParseNetworkResponse( - data: error.response?.data ?? _fallbackErrorData, - statusCode: error.response?.statusCode ?? ParseError.otherCause, - ); - } - } - - @override - Future post(String path, - {String? data, ParseNetworkOptions? options}) async { - try { - final dio.Response dioResponse = await _client.post( - path, - data: data, - options: _Options(headers: options?.headers), - ); - - return ParseNetworkResponse( - data: dioResponse.data!, - statusCode: dioResponse.statusCode!, - ); - } on dio.DioError catch (error) { - return ParseNetworkResponse( - data: error.response?.data ?? _fallbackErrorData, - statusCode: error.response?.statusCode ?? ParseError.otherCause, - ); - } - } - - @override - Future postBytes(String path, - {Stream>? data, - ParseNetworkOptions? options, - ProgressCallback? onSendProgress, - dynamic cancelToken}) async { - try { - final dio.Response dioResponse = await _client.post( - path, - data: data, - cancelToken: cancelToken, - options: _Options(headers: options?.headers), - onSendProgress: onSendProgress, - ); - - return ParseNetworkResponse( - data: dioResponse.data!, - statusCode: dioResponse.statusCode!, - ); - } on dio.DioError catch (error) { - if (error.response != null) { - return ParseNetworkResponse( - data: error.response?.data ?? _fallbackErrorData, - statusCode: error.response?.statusCode ?? ParseError.otherCause, - ); - } else { - return _getOtherCaseErrorForParseNetworkResponse( - error.error.toString()); - } - } - } - - _getOtherCaseErrorForParseNetworkResponse(String error) { - return ParseNetworkResponse( - data: "{\"code\":${ParseError.otherCause},\"error\":\"$error\"}", - statusCode: ParseError.otherCause); - } - - @override - Future delete(String path, - {ParseNetworkOptions? options}) async { - try { - final dio.Response dioResponse = await _client.delete( - path, - options: _Options(headers: options?.headers), - ); - - return ParseNetworkResponse( - data: dioResponse.data!, - statusCode: dioResponse.statusCode!, - ); - } on dio.DioError catch (error) { - return ParseNetworkResponse( - data: error.response?.data ?? _fallbackErrorData, - statusCode: error.response?.statusCode ?? ParseError.otherCause, - ); - } - } - - String get _fallbackErrorData => '{"$keyError":"NetworkError"}'; -} - -/// Creates a custom version of HTTP Client that has Parse Data Preset -class _ParseDioClient with dio.DioMixin implements dio.Dio { - _ParseDioClient({bool sendSessionId = false, dynamic securityContext}) - : _sendSessionId = sendSessionId { - options = dio.BaseOptions(); - httpClientAdapter = createHttpClientAdapter(securityContext); - } - - final bool _sendSessionId; - final String _userAgent = '$keyLibraryName $keySdkVersion'; - ParseCoreData parseCoreData = ParseCoreData(); - Map? additionalHeaders; - - /// Overrides the call method for HTTP Client and adds custom headers - @override - Future> request( - String path, { - dynamic data, - Map? queryParameters, - dio.CancelToken? cancelToken, - dio.Options? options, - ProgressCallback? onSendProgress, - ProgressCallback? onReceiveProgress, - }) { - options ??= dio.Options(); - options.headers ??= {}; - if (!identical(0, 0.0)) { - options.headers![keyHeaderUserAgent] = _userAgent; - } - options.headers![keyHeaderApplicationId] = parseCoreData.applicationId; - if (_sendSessionId && - parseCoreData.sessionId != null && - options.headers![keyHeaderSessionToken] == null) { - options.headers![keyHeaderSessionToken] = parseCoreData.sessionId; - } - - if (parseCoreData.clientKey != null) { - options.headers![keyHeaderClientKey] = parseCoreData.clientKey; - } - if (parseCoreData.masterKey != null) { - options.headers![keyHeaderMasterKey] = parseCoreData.masterKey; - } - - /// If developer wants to add custom headers, extend this class and add headers needed. - if (additionalHeaders != null && additionalHeaders!.isNotEmpty) { - additionalHeaders!.forEach( - (String key, String value) => options!.headers![key] = value); - } - - if (parseCoreData.debug) { - _logCUrl(options, data, path); - } - - return super.request( - path, - data: data, - queryParameters: queryParameters, - cancelToken: cancelToken, - options: options, - onSendProgress: onSendProgress, - onReceiveProgress: onReceiveProgress, - ); - } - - void _logCUrl(dio.Options options, dynamic data, String url) { - String curlCmd = 'curl'; - curlCmd += ' -X ${options.method!}'; - bool compressed = false; - options.headers!.forEach((String name, dynamic value) { - if (name.toLowerCase() == 'accept-encoding' && - value?.toString().toLowerCase() == 'gzip') { - compressed = true; - } - curlCmd += ' -H \'$name: $value\''; - }); - - //TODO: log request - // if (options.method == 'POST' || options.method == 'PUT') { - // if (request is Request) { - // final String body = latin1.decode(request.bodyBytes); - // curlCmd += ' -d \'$body\''; - // } - // } - - curlCmd += (compressed ? ' --compressed ' : ' ') + url; - curlCmd += '\n\n ${Uri.decodeFull(url)}'; - print('╭-- Parse Request'); - print(curlCmd); - print('╰--'); - } -} - -class _Options extends dio.Options { - _Options({ - String? method, - Duration? sendTimeout, - Duration? receiveTimeout, - Map? extra, - Map? headers, - dio.ResponseType? responseType, - String? contentType, - dio.ValidateStatus? validateStatus, - bool? receiveDataWhenStatusError, - bool? followRedirects, - int? maxRedirects, - dio.RequestEncoder? requestEncoder, - dio.ResponseDecoder? responseDecoder, - }) : super( - method: method, - sendTimeout: sendTimeout, - receiveTimeout: receiveTimeout, - extra: extra, - headers: headers, - responseType: responseType, - contentType: contentType ?? - (headers ?? {})[dio.Headers.contentTypeHeader], - validateStatus: validateStatus, - receiveDataWhenStatusError: receiveDataWhenStatusError, - followRedirects: followRedirects, - maxRedirects: maxRedirects, - requestEncoder: requestEncoder, - responseDecoder: responseDecoder, - ); -} diff --git a/packages/dart/lib/src/network/parse_http_client.dart b/packages/dart/lib/src/network/parse_http_client.dart deleted file mode 100644 index 86210be50..000000000 --- a/packages/dart/lib/src/network/parse_http_client.dart +++ /dev/null @@ -1,188 +0,0 @@ -import 'dart:convert'; -import 'package:universal_io/io.dart'; - -import 'package:http/http.dart' as http; - -import 'package:parse_server_sdk/parse_server_sdk.dart'; - -import 'http_client_io.dart' if (dart.library.js) 'http_client_js.dart'; - -class ParseHTTPClient extends ParseClient { - ParseHTTPClient( - {bool sendSessionId = false, SecurityContext? securityContext}) { - _client = _ParseHTTPClient( - sendSessionId: sendSessionId, - securityContext: securityContext, - ); - } - - late _ParseHTTPClient _client; - - Map? get additionalHeaders => _client.additionalHeaders; - - set additionalHeaders(Map? additionalHeaders) => - _client.additionalHeaders = additionalHeaders; - - @override - Future get( - String path, { - ParseNetworkOptions? options, - ProgressCallback? onReceiveProgress, - }) async { - final http.Response response = await _client.get( - Uri.parse(path), - headers: options?.headers, - ); - return ParseNetworkResponse( - data: response.body, statusCode: response.statusCode); - } - - @override - Future getBytes( - String path, { - ParseNetworkOptions? options, - ProgressCallback? onReceiveProgress, - dynamic cancelToken, - }) async { - final http.Response response = await _client.get( - Uri.parse(path), - headers: options?.headers, - ); - return ParseNetworkByteResponse( - bytes: response.bodyBytes, statusCode: response.statusCode); - } - - @override - Future put( - String path, { - String? data, - ParseNetworkOptions? options, - }) async { - final http.Response response = await _client.put( - Uri.parse(path), - body: data, - headers: options?.headers, - ); - return ParseNetworkResponse( - data: response.body, statusCode: response.statusCode); - } - - @override - Future post( - String path, { - String? data, - ParseNetworkOptions? options, - }) async { - final http.Response response = await _client.post( - Uri.parse(path), - body: data, - headers: options?.headers, - ); - return ParseNetworkResponse( - data: response.body, statusCode: response.statusCode); - } - - @override - Future postBytes( - String path, { - Stream>? data, - ParseNetworkOptions? options, - ProgressCallback? onSendProgress, - dynamic cancelToken, - }) async { - final http.Response response = await _client.post( - Uri.parse(path), - //Convert the stream to a list - body: await data?.fold>([], - (List previous, List element) => previous..addAll(element)), - headers: options?.headers, - ); - return ParseNetworkResponse( - data: response.body, statusCode: response.statusCode); - } - - @override - Future delete(String path, - {ParseNetworkOptions? options}) async { - final http.Response response = await _client.delete( - Uri.parse(path), - headers: options?.headers, - ); - return ParseNetworkResponse( - data: response.body, statusCode: response.statusCode); - } -} - -/// Creates a custom version of HTTP Client that has Parse Data Preset -class _ParseHTTPClient extends http.BaseClient { - _ParseHTTPClient( - {bool sendSessionId = false, SecurityContext? securityContext}) - : _sendSessionId = sendSessionId, - _client = securityContext != null - ? getClient(securityContext) - : http.Client(); - - final http.Client _client; - final bool _sendSessionId; - final String _userAgent = '$keyLibraryName $keySdkVersion'; - ParseCoreData parseCoreData = ParseCoreData(); - Map? additionalHeaders; - - /// Overrides the call method for HTTP Client and adds custom headers - @override - Future send(http.BaseRequest request) { - if (!identical(0, 0.0)) { - request.headers[keyHeaderUserAgent] = _userAgent; - } - request.headers[keyHeaderApplicationId] = parseCoreData.applicationId; - if (_sendSessionId && - parseCoreData.sessionId != null && - request.headers[keyHeaderSessionToken] == null) { - request.headers[keyHeaderSessionToken] = parseCoreData.sessionId!; - } - - if (parseCoreData.clientKey != null) { - request.headers[keyHeaderClientKey] = parseCoreData.clientKey!; - } - if (parseCoreData.masterKey != null) { - request.headers[keyHeaderMasterKey] = parseCoreData.masterKey!; - } - - /// If developer wants to add custom headers, extend this class and add headers needed. - if (additionalHeaders != null && additionalHeaders!.isNotEmpty) { - additionalHeaders! - .forEach((String key, String value) => request.headers[key] = value); - } - - if (parseCoreData.debug) { - _logCUrl(request); - } - - return _client.send(request); - } - - void _logCUrl(http.BaseRequest request) { - String curlCmd = 'curl'; - curlCmd += ' -X ${request.method}'; - bool compressed = false; - request.headers.forEach((String name, String value) { - if (name.toLowerCase() == 'accept-encoding' && - value.toLowerCase() == 'gzip') { - compressed = true; - } - curlCmd += ' -H \'$name: $value\''; - }); - if (request.method == 'POST' || request.method == 'PUT') { - if (request is http.Request) { - final String body = latin1.decode(request.bodyBytes); - curlCmd += ' -d \'$body\''; - } - } - - curlCmd += (compressed ? ' --compressed ' : ' ') + request.url.toString(); - curlCmd += '\n\n ${Uri.decodeFull(request.url.toString())}'; - print('╭-- Parse Request'); - print(curlCmd); - print('╰--'); - } -} diff --git a/packages/dart/lib/src/network/parse_live_query.dart b/packages/dart/lib/src/network/parse_live_query.dart deleted file mode 100644 index 0f94861f3..000000000 --- a/packages/dart/lib/src/network/parse_live_query.dart +++ /dev/null @@ -1,443 +0,0 @@ -part of flutter_parse_sdk; - -enum LiveQueryEvent { create, enter, update, leave, delete, error } - -const String _printConstLiveQuery = 'LiveQuery: '; - -class Subscription { - Subscription(this.query, this.requestId, {T? copyObject}) { - _copyObject = copyObject; - } - - QueryBuilder query; - T? _copyObject; - int requestId; - bool _enabled = false; - final List _liveQueryEvent = [ - 'create', - 'enter', - 'update', - 'leave', - 'delete', - 'error' - ]; - Map eventCallbacks = {}; - void on(LiveQueryEvent op, Function callback) { - eventCallbacks[_liveQueryEvent[op.index]] = callback; - } - - T? get copyObject { - return _copyObject; - } -} - -enum LiveQueryClientEvent { connected, disconnected, userDisconnected } - -class LiveQueryReconnectingController { - LiveQueryReconnectingController( - this._reconnect, - this._eventStream, - this.debug, - ) { - final ParseConnectivityProvider? connectivityProvider = - ParseCoreData().connectivityProvider; - if (connectivityProvider != null) { - connectivityProvider.checkConnectivity().then(_connectivityChanged); - connectivityProvider.connectivityStream.listen(_connectivityChanged); - } else { - print( - 'LiveQuery does not work, if there is no ParseConnectivityProvider provided.'); - } - _eventStream.listen((LiveQueryClientEvent event) { - switch (event) { - case LiveQueryClientEvent.connected: - _isConnected = true; - _retryState = 0; - _userDisconnected = false; - break; - case LiveQueryClientEvent.disconnected: - _isConnected = false; - _setReconnect(); - break; - case LiveQueryClientEvent.userDisconnected: - _userDisconnected = true; - Timer? currentTimer = _currentTimer; - if (currentTimer != null) { - currentTimer.cancel(); - _currentTimer = null; - } - break; - } - - if (debug) { - print('$debugTag: $event'); - } - }); - ParseCoreData().appResumedStream?.listen((void _) => _setReconnect()); - } - - static List get retryInterval => ParseCoreData().liveListRetryIntervals; - static const String debugTag = 'LiveQueryReconnectingController'; - - final Function _reconnect; - final Stream _eventStream; - final bool debug; - - int _retryState = 0; - bool _isOnline = false; - bool _isConnected = false; - bool _userDisconnected = false; - - Timer? _currentTimer; - - void _connectivityChanged(ParseConnectivityResult state) { - if (!_isOnline && state != ParseConnectivityResult.none) { - _retryState = 0; - } - _isOnline = state != ParseConnectivityResult.none; - if (state == ParseConnectivityResult.none) { - _isConnected = false; - } - if (debug) { - print('$debugTag: $state'); - } - _setReconnect(); - } - - void _setReconnect() { - if (_isOnline && - !_isConnected && - _currentTimer == null && - !_userDisconnected && - retryInterval[_retryState] >= 0) { - _currentTimer = - Timer(Duration(milliseconds: retryInterval[_retryState]), () { - _currentTimer = null; - _reconnect(); - }); - if (debug) { - print('$debugTag: Retry timer set to ${retryInterval[_retryState]}ms'); - } - if (_retryState < retryInterval.length - 1) { - _retryState++; - } - } - } -} - -class LiveQueryClient { - factory LiveQueryClient() => _getInstance(); - - LiveQueryClient._internal(this._liveQueryURL, - {bool? debug, bool? autoSendSessionId}) { - _clientEventStreamController = StreamController(); - _clientEventStream = - _clientEventStreamController.stream.asBroadcastStream(); - - _debug = isDebugEnabled(objectLevelDebug: debug); - _sendSessionId = autoSendSessionId ?? ParseCoreData().autoSendSessionId; - - reconnectingController = LiveQueryReconnectingController( - () => reconnect(userInitialized: false), getClientEventStream, _debug); - } - static LiveQueryClient get instance => _getInstance(); - static LiveQueryClient? _instance; - static LiveQueryClient _getInstance({bool? debug, bool? autoSendSessionId}) { - String? liveQueryURL = ParseCoreData().liveQueryURL; - if (liveQueryURL == null) { - assert(false, - 'liveQueryUrl is not set. For how to setup Live Queries, see https://github.com/parse-community/Parse-SDK-Flutter/tree/master/packages/flutter#live-queries.'); - liveQueryURL = ""; - } else { - if (liveQueryURL.contains('https')) { - liveQueryURL = liveQueryURL.replaceAll('https', 'wss'); - } else if (liveQueryURL.contains('http')) { - liveQueryURL = liveQueryURL.replaceAll('http', 'ws'); - } - } - LiveQueryClient instance = _instance ?? - LiveQueryClient._internal(liveQueryURL, - debug: debug, autoSendSessionId: autoSendSessionId); - _instance ??= instance; - return instance; - } - - Stream get getClientEventStream { - return _clientEventStream; - } - - parse_web_socket.WebSocket? _webSocket; - late bool _debug; - late bool _sendSessionId; - WebSocketChannel? _channel; - final String _liveQueryURL; - bool _connecting = false; - late StreamController _clientEventStreamController; - late Stream _clientEventStream; - late LiveQueryReconnectingController reconnectingController; - - final Map _requestSubscription = {}; - - Future reconnect({bool userInitialized = false}) async { - await _connect(userInitialized: userInitialized); - _connectLiveQuery(); - } - - int readyState() { - parse_web_socket.WebSocket? webSocket = _webSocket; - if (webSocket != null) { - return webSocket.readyState; - } - return parse_web_socket.WebSocket.connecting; - } - - Future disconnect({bool userInitialized = false}) async { - parse_web_socket.WebSocket? webSocket = _webSocket; - if (webSocket != null && - webSocket.readyState == parse_web_socket.WebSocket.open) { - if (_debug) { - print('$_printConstLiveQuery: Socket closed'); - } - await webSocket.close(); - _webSocket = null; - } - WebSocketChannel? channel = _channel; - if (channel != null) { - if (_debug) { - print('$_printConstLiveQuery: close'); - } - await channel.sink.close(); - _channel = null; - } - _requestSubscription.values.toList().forEach((Subscription subscription) { - subscription._enabled = false; - }); - _connecting = false; - if (userInitialized) { - _clientEventStreamController.sink - .add(LiveQueryClientEvent.userDisconnected); - } - } - - Future> subscribe( - QueryBuilder query, - {T? copyObject}) async { - if (_webSocket == null) { - await _clientEventStream.any((LiveQueryClientEvent event) => - event == LiveQueryClientEvent.connected); - } - final int requestId = _requestIdGenerator(); - final Subscription subscription = - Subscription(query, requestId, copyObject: copyObject); - _requestSubscription[requestId] = subscription; - //After a client connects to the LiveQuery server, - //it can send a subscribe message to subscribe a ParseQuery. - _subscribeLiveQuery(subscription); - return subscription; - } - - void unSubscribe(Subscription subscription) { - //Mount message for Unsubscribe - final Map unsubscribeMessage = { - 'op': 'unsubscribe', - 'requestId': subscription.requestId, - }; - WebSocketChannel? channel = _channel; - if (channel != null) { - if (_debug) { - print('$_printConstLiveQuery: UnsubscribeMessage: $unsubscribeMessage'); - } - channel.sink.add(jsonEncode(unsubscribeMessage)); - subscription._enabled = false; - _requestSubscription.remove(subscription.requestId); - } - } - - static int _requestIdCount = 1; - - int _requestIdGenerator() { - return _requestIdCount++; - } - - Future _connect({bool userInitialized = false}) async { - if (_connecting) { - print('already connecting'); - return Future.value(null); - } - await disconnect(userInitialized: userInitialized); - _connecting = true; - - try { - parse_web_socket.WebSocket webSocket = - await parse_web_socket.WebSocket.connect(_liveQueryURL); - _webSocket = webSocket; - _connecting = false; - if (webSocket.readyState == parse_web_socket.WebSocket.open) { - if (_debug) { - print('$_printConstLiveQuery: Socket opened'); - } - } else { - if (_debug) { - print('$_printConstLiveQuery: Error when connection client'); - } - return Future.value(null); - } - WebSocketChannel channel = webSocket.createWebSocketChannel(); - _channel = channel; - channel.stream.listen((dynamic message) { - _handleMessage(message); - }, onDone: () { - _clientEventStreamController.sink - .add(LiveQueryClientEvent.disconnected); - if (_debug) { - print('$_printConstLiveQuery: Done'); - } - }, onError: (Object error) { - _clientEventStreamController.sink - .add(LiveQueryClientEvent.disconnected); - if (_debug) { - print( - '$_printConstLiveQuery: Error: ${error.runtimeType.toString()}'); - } - return Future.value(handleException( - Exception(error), - ParseApiRQ.liveQuery, - _debug, - !parseIsWeb ? 'IOWebSocketChannel' : 'HtmlWebSocketChannel')); - }); - } on Exception catch (e) { - _connecting = false; - _clientEventStreamController.sink.add(LiveQueryClientEvent.disconnected); - if (_debug) { - print('$_printConstLiveQuery: Error: ${e.toString()}'); - } - return handleException(e, ParseApiRQ.liveQuery, _debug, 'LiveQuery'); - } - } - - void _connectLiveQuery() { - WebSocketChannel? channel = _channel; - if (channel == null) { - return; - } - //The connect message is sent from a client to the LiveQuery server. - //It should be the first message sent from a client after the WebSocket connection is established. - final Map connectMessage = { - 'op': 'connect', - 'applicationId': ParseCoreData().applicationId - }; - - if (_sendSessionId) { - String? sessionId = ParseCoreData().sessionId; - if (sessionId != null) { - connectMessage['sessionToken'] = sessionId; - } - } - String? clientKey = ParseCoreData().clientKey; - String? masterKey = ParseCoreData().masterKey; - if (clientKey != null) connectMessage['clientKey'] = clientKey; - if (masterKey != null) connectMessage['masterKey'] = masterKey; - - if (_debug) { - print('$_printConstLiveQuery: ConnectMessage: $connectMessage'); - } - channel.sink.add(jsonEncode(connectMessage)); - } - - void _subscribeLiveQuery(Subscription subscription) { - if (subscription._enabled) { - return; - } - subscription._enabled = true; - final QueryBuilder query = subscription.query; - final List? keysToReturn = query.limiters['keys']?.split(','); - query.limiters.clear(); //Remove limits in LiveQuery - final String where = query.buildQuery().replaceAll('where=', ''); - - //Convert where condition to Map - Map whereMap = {}; - if (where != '') { - whereMap = json.decode(where); - } - - final Map subscribeMessage = { - 'op': 'subscribe', - 'requestId': subscription.requestId, - 'query': { - 'className': query.object.parseClassName, - 'where': whereMap, - if (keysToReturn != null && keysToReturn.isNotEmpty) - 'fields': keysToReturn - } - }; - if (_sendSessionId && ParseCoreData().sessionId != null) { - subscribeMessage['sessionToken'] = ParseCoreData().sessionId; - } - - if (_debug) { - print('$_printConstLiveQuery: SubscribeMessage: $subscribeMessage'); - } - - _channel?.sink.add(jsonEncode(subscribeMessage)); - } - - void _handleMessage(String message) { - if (_debug) { - print('$_printConstLiveQuery: Listen: $message'); - } - - final Map actionData = jsonDecode(message); - - Subscription? subscription; - if (actionData.containsKey('op') && actionData['op'] == 'connected') { - print('Re subscription:$_requestSubscription'); - - _requestSubscription.values.toList().forEach((Subscription subscription) { - _subscribeLiveQuery(subscription); - }); - _clientEventStreamController.sink.add(LiveQueryClientEvent.connected); - return; - } - if (actionData.containsKey('requestId')) { - subscription = _requestSubscription[actionData['requestId']]; - } - if (subscription == null) { - return; - } - if (subscription.eventCallbacks.containsKey(actionData['op'])) { - Function? eventCallback = subscription.eventCallbacks[actionData['op']]; - if (eventCallback != null) { - if (actionData.containsKey('object')) { - final Map map = actionData['object']; - final String? className = map['className']; - if (className != null) { - if (className == keyClassUser) { - eventCallback((subscription.copyObject ?? - ParseCoreData.instance.createParseUser(null, null, null)) - .fromJson(map)); - } else { - eventCallback((subscription.copyObject ?? - ParseCoreData.instance.createObject(className)) - .fromJson(map)); - } - } - } else { - eventCallback(actionData); - } - } - } - } -} - -class LiveQuery { - LiveQuery({bool? debug, bool? autoSendSessionId}) { - _debug = isDebugEnabled(objectLevelDebug: debug); - _sendSessionId = autoSendSessionId ?? ParseCoreData().autoSendSessionId; - client = LiveQueryClient._getInstance( - debug: _debug, autoSendSessionId: _sendSessionId); - } - - bool? _debug; - bool? _sendSessionId; - late LiveQueryClient client; -} diff --git a/packages/dart/lib/src/network/parse_query.dart b/packages/dart/lib/src/network/parse_query.dart deleted file mode 100644 index 39f5b0282..000000000 --- a/packages/dart/lib/src/network/parse_query.dart +++ /dev/null @@ -1,579 +0,0 @@ -part of flutter_parse_sdk; - -/// Class to create complex queries -class QueryBuilder { - /// Class to create complex queries - QueryBuilder(this.object) : super(); - - factory QueryBuilder.name(String classname) { - return QueryBuilder(ParseCoreData.instance.createObject(classname) as T); - } - - QueryBuilder.or(this.object, List> list) { - _constructorInitializer(query: '"\$or":[', list: list); - } - - QueryBuilder.and(this.object, List> list) { - _constructorInitializer(query: '"\$and":[', list: list); - } - - QueryBuilder.nor(this.object, List> list) { - _constructorInitializer(query: '"\$nor":[', list: list); - } - - void _constructorInitializer( - {required String query, required List> list}) { - for (int i = 0; i < list.length; ++i) { - if (i > 0) { - query += ','; - } - query += '{${list[i].buildQueries(list[i].queries)}}'; - } - query += ']'; - queries.add(MapEntry(_noOperatorNeeded, query)); - } - - factory QueryBuilder.copy(QueryBuilder query) { - QueryBuilder copy = QueryBuilder(query.object); - copy.queries = query.queries - .map((MapEntry entry) => - MapEntry(entry.key, entry.value.toString())) - .toList(); - query.limiters.forEach((String key, dynamic value) => - copy.limiters.putIfAbsent(key, () => value.toString())); - return copy; - } - - static const String _noOperatorNeeded = 'NO_OP'; - static const String _singleQuery = 'SINGLE_QUERY'; - - T object; - List> queries = >[]; - final Map limiters = {}; - final Map extraOptions = {}; - - /// Used by ParseRelation getQuery() - void setRedirectClassNameForKey(String key) { - extraOptions['redirectClassNameForKey'] = key; - } - - /// Adds a limit to amount of results return from Parse - void setLimit(int limit) { - limiters['limit'] = limit; - } - - /// Useful for pagination, skips [int] amount of results - void setAmountToSkip(int skip) { - limiters['skip'] = skip; - } - - /// Creates a query based on where - void whereEquals(String where) { - limiters['where'] = where; - } - - /// Sorts the results in ascending order. - /// - /// [String] order will be the column of the table that the results are - /// ordered by - void orderByAscending(String order) { - if (!limiters.containsKey('order')) { - limiters['order'] = order; - } else { - limiters['order'] = limiters['order'] + ',' + order; - } - } - - /// Sorts the results descending order. - /// - /// [String] order will be the column of the table that the results are - /// ordered by - void orderByDescending(String order) { - if (!limiters.containsKey('order')) { - limiters['order'] = '-$order'; - } else { - limiters['order'] = limiters['order'] + ',' + '-$order'; - } - } - - /// Define which keys in an object to return. - /// - /// [String] keys will only return the columns of a result you want the data for, - /// this is useful for large objects - void keysToReturn(List keys) { - limiters['keys'] = concatenateArray(keys); - } - - ///Exclude specific fields from the returned query - /// - /// [String] keys not will return the columns of a result you want the data for - void excludeKeys(List keys) { - limiters['excludeKeys'] = concatenateArray(keys); - } - - /// Includes other ParseObjects stored as a Pointer - void includeObject(List objectTypes) { - limiters['include'] = concatenateArray(objectTypes); - } - - /// Returns an object where the [String] column starts with [value] - void whereStartsWith(String column, String query, - {bool caseSensitive = false}) { - if (caseSensitive) { - queries.add(MapEntry( - _singleQuery, '"$column":{"\$regex": "^$query"}')); - } else { - queries.add(MapEntry( - _singleQuery, '"$column":{"\$regex": "^$query", "\$options": "i"}')); - } - } - - /// Returns an object where the [String] column ends with [value] - void whereEndsWith(String column, String query, - {bool caseSensitive = false}) { - if (caseSensitive) { - queries.add(MapEntry( - _singleQuery, '"$column":{"\$regex": "$query\$"}')); - } else { - queries.add(MapEntry( - _singleQuery, '"$column":{"\$regex": "$query\$", "\$options": "i"}')); - } - } - - /// Returns an object where the [String] column equals [value] - void whereEqualTo(String column, dynamic value) { - queries.add(_buildQueryWithColumnValueAndOperator( - MapEntry(column, value), _noOperatorNeeded)); - } - - /// Returns an object where the [String] column contains a value less than - /// value - void whereLessThan(String column, dynamic value) { - queries.add(_buildQueryWithColumnValueAndOperator( - MapEntry(column, value), '\$lt')); - } - - /// Returns an object where the [String] column contains a value less or equal - /// to than value - void whereLessThanOrEqualTo(String column, dynamic value) { - queries.add(_buildQueryWithColumnValueAndOperator( - MapEntry(column, value), '\$lte')); - } - - /// Returns an object where the [String] column contains a value greater - /// than value - void whereGreaterThan(String column, dynamic value) { - queries.add(_buildQueryWithColumnValueAndOperator( - MapEntry(column, value), '\$gt')); - } - - /// Returns an object where the [String] column contains a value greater - /// than equal to value - void whereGreaterThanOrEqualsTo(String column, dynamic value) { - queries.add(_buildQueryWithColumnValueAndOperator( - MapEntry(column, value), '\$gte')); - } - - /// Returns an object where the [String] column is not equal to value - void whereNotEqualTo(String column, dynamic value) { - queries.add(_buildQueryWithColumnValueAndOperator( - MapEntry(column, value), '\$ne')); - } - - /// Returns an object where the [String] column is containedIn - void whereContainedIn(String column, List value) { - queries.add(_buildQueryWithColumnValueAndOperator( - MapEntry(column, value), '\$in')); - } - - /// Returns an object where the [String] column is notContainedIn - void whereNotContainedIn(String column, List value) { - queries.add(_buildQueryWithColumnValueAndOperator( - MapEntry(column, value), '\$nin')); - } - - /// Returns an object where the [String] column for the object has data correctly entered/saved - void whereValueExists(String column, bool value) { - queries.add(_buildQueryWithColumnValueAndOperator( - MapEntry(column, value), '\$exists')); - } - - /// Retrieves related objets where [String] column is a relation field to the class [String] className - void whereRelatedTo(String column, String className, String objectId) { - queries.add(MapEntry(_singleQuery, - '"\$relatedTo":{"object":{"__type":"Pointer","className":"$className","objectId":"$objectId"},"key":"$column"}')); - } - - /// Returns an object where the [String] column contains select - void selectKeys(String column, dynamic value) { - queries.add(_buildQueryWithColumnValueAndOperator( - MapEntry(column, value), '\$select')); - } - - /// Returns an object where the [String] column doesn't select - void dontSelectKeys(String column, dynamic value) { - queries.add(_buildQueryWithColumnValueAndOperator( - MapEntry(column, value), '\$dontSelect')); - } - - /// Returns an object where the [String] column contains all - void whereArrayContainsAll(String column, List value) { - queries.add(_buildQueryWithColumnValueAndOperator( - MapEntry(column, value), '\$all')); - } - - /// Returns an object where the [String] column has a regEx performed on, - /// this can include ^StringsWith, or ^EndsWith. This can be manipulated to the users desire - void regEx(String column, String value) { - queries.add(_buildQueryWithColumnValueAndOperator( - MapEntry(column, value), '\$regex')); - } - - /// Performs a search to see if [String] contains other string - void whereContains(String column, String value, - {bool caseSensitive = false}) { - if (caseSensitive) { - queries.add(MapEntry( - _singleQuery, '"$column":{"\$regex": "$value"}')); - } else { - queries.add(MapEntry( - _singleQuery, '"$column":{"\$regex": "$value", "\$options": "i"}')); - } - } - - /// Powerful search for containing whole words. This search is much quicker than regex and can search for whole words including whether they are case sensitive or not. - /// This search can also order by the score of the search - void whereContainsWholeWord(String column, String query, - {bool caseSensitive = false, - bool orderByScore = true, - bool diacriticSensitive = false}) { - queries.add(MapEntry(_singleQuery, - '"$column":{"\$text":{"\$search":{"\$term": "$query", "\$caseSensitive": $caseSensitive , "\$diacriticSensitive": $diacriticSensitive }}}')); - if (orderByScore) { - orderByAscending('\$score'); - keysToReturn(['\$score']); - } - } - - /// Returns an objects with key point values near the point given - void whereNear(String column, ParseGeoPoint point) { - final double latitude = point.latitude; - final double longitude = point.longitude; - queries.add(MapEntry(_singleQuery, - '"$column":{"\$nearSphere":{"__type":"GeoPoint","latitude":$latitude,"longitude":$longitude}}')); - } - - /// Returns an object with key point values near the point given and within the maximum distance given. - void whereWithinMiles( - String column, ParseGeoPoint point, double maxDistance) { - final double latitude = point.latitude; - final double longitude = point.longitude; - - queries.add(MapEntry(_singleQuery, - '"$column":{"\$nearSphere":{"__type":"GeoPoint","latitude":$latitude,"longitude":$longitude},"\$maxDistanceInMiles":$maxDistance}')); - } - - /// Returns an object with key point values near the point given and within the maximum distance given. - void whereWithinKilometers( - String column, ParseGeoPoint point, double maxDistance) { - final double latitude = point.latitude; - final double longitude = point.longitude; - - queries.add(MapEntry(_singleQuery, - '"$column":{"\$nearSphere":{"__type":"GeoPoint","latitude":$latitude,"longitude":$longitude},"\$maxDistanceInKilometers":$maxDistance}')); - } - - /// Returns an object with key point values near the point given and within the maximum distance given. - void whereWithinRadians( - String column, ParseGeoPoint point, double maxDistance) { - final double latitude = point.latitude; - final double longitude = point.longitude; - - queries.add(MapEntry(_singleQuery, - '"$column":{"\$nearSphere":{"__type":"GeoPoint","latitude":$latitude,"longitude":$longitude},"\$maxDistanceInRadians":$maxDistance}')); - } - - /// Returns an object with key point values contained within a given rectangular geographic bounding box. - void whereWithinGeoBox( - String column, ParseGeoPoint southwest, ParseGeoPoint northeast) { - final double latitudeS = southwest.latitude; - final double longitudeS = southwest.longitude; - - final double latitudeN = northeast.latitude; - final double longitudeN = northeast.longitude; - - queries.add(MapEntry(_singleQuery, - '"$column":{"\$within":{"\$box": [{"__type": "GeoPoint","latitude":$latitudeS,"longitude":$longitudeS},{"__type": "GeoPoint","latitude":$latitudeN,"longitude":$longitudeN}]}}')); - } - - /// Return an object with key coordinates be contained within and on the bounds of a given polygon. - /// Supports closed and open (last point is connected to first) paths - /// Polygon must have at least 3 points - void whereWithinPolygon(String column, List points) { - if (points.length < 3) { - throw ArgumentError('Polygon must have at least 3 points'); - } - Map dictionary = {}; - dictionary['\$polygon'] = points.map((e) => e.toJson()).toList(); - - queries.add(MapEntry( - _singleQuery, '"$column":{"\$geoWithin":${jsonEncode(dictionary)}}')); - } - - /// Add a constraint to the query that requires a particular key's coordinates that contains a point - void wherePolygonContains(String column, ParseGeoPoint point) { - final double latitude = point.latitude; - final double longitude = point.longitude; - - queries.add(MapEntry(_singleQuery, - '"$column":{"\$geoIntersects":{"\$point":{"__type":"GeoPoint","latitude":$latitude,"longitude":$longitude}}}')); - } - - /// Add a constraint to the query that requires a particular key's value match another QueryBuilder - void whereMatchesQuery( - String column, QueryBuilder query) { - final String inQuery = - query._buildQueryRelational(query.object.parseClassName); - - queries.add(MapEntry( - _singleQuery, '"$column":{"\$inQuery":$inQuery}')); - } - - ///Add a constraint to the query that requires a particular key's value does not match another QueryBuilder - void whereDoesNotMatchQuery( - String column, QueryBuilder query) { - final String inQuery = - query._buildQueryRelational(query.object.parseClassName); - - queries.add(MapEntry( - _singleQuery, '"$column":{"\$notInQuery":$inQuery}')); - } - - /// Add a constraint to the query that requires a particular key's value matches a value for a key in the results of another ParseQuery. - void whereMatchesKeyInQuery( - String column, String keyInQuery, QueryBuilder query) { - if (query.queries.isEmpty) { - throw ArgumentError('query conditions is required'); - } - if (limiters.containsKey('order')) { - throw ArgumentError('order is not allowed'); - } - if (limiters.containsKey('include')) { - throw ArgumentError('include is not allowed'); - } - - final String inQuery = - query._buildQueryRelationalKey(query.object.parseClassName, keyInQuery); - - queries.add(MapEntry( - _singleQuery, '"$column":{"\$select":$inQuery}')); - } - - /// Add a constraint to the query that requires a particular key's value does not match any value for a key in the results of another ParseQuery - void whereDoesNotMatchKeyInQuery( - String column, String keyInQuery, QueryBuilder query) { - if (query.queries.isEmpty) { - throw ArgumentError('query conditions is required'); - } - if (limiters.containsKey('order')) { - throw ArgumentError('order is not allowed'); - } - if (limiters.containsKey('include')) { - throw ArgumentError('include is not allowed'); - } - - final String inQuery = - query._buildQueryRelationalKey(query.object.parseClassName, keyInQuery); - - queries.add(MapEntry( - _singleQuery, '"$column":{"\$dontSelect":$inQuery}')); - } - - /// Finishes the query and calls the server - /// - /// Make sure to call this after defining your queries - Future query( - {ProgressCallback? progressCallback}) async { - return object.query( - buildQuery(), - progressCallback: progressCallback, - ); - } - - Future distinct( - String className) async { - final String queryString = 'distinct=$className'; - return object.distinct(queryString); - } - - ///Counts the number of objects that match this query - Future count() async { - return object.query(_buildQueryCount()); - } - - /// Builds the query for Parse - String buildQuery() { - queries = _checkForMultipleColumnInstances(queries); - return 'where={${buildQueries(queries)}}${getLimiters(limiters)}${getExtraOptions(extraOptions)}'; - } - - /// Builds the query relational for Parse - String _buildQueryRelational(String className) { - queries = _checkForMultipleColumnInstances(queries); - return '{"where":{${buildQueries(queries)}},"className":"$className",${getLimitersRelational(limiters)}}'; - } - - /// Builds the query relational with Key for Parse - String _buildQueryRelationalKey(String className, String keyInQuery) { - queries = _checkForMultipleColumnInstances(queries); - return '{"query":{"className":"$className","where":{${buildQueries(queries)}}},"key":"$keyInQuery"}'; - } - - /// Builds the query for Parse - String _buildQueryCount() { - queries = _checkForMultipleColumnInstances(queries); - return 'where={${buildQueries(queries)}}&count=1'; - } - - /// Runs through all queries and adds them to a query string - String buildQueries(List> queries) { - String queryBuilder = ''; - - for (final MapEntry item in queries) { - if (item == queries.first) { - queryBuilder += item.value; - } else { - queryBuilder += ',${item.value}'; - } - } - - return queryBuilder; - } - - /// Creates a query param using the column, the value and the queryOperator - /// that the column and value are being queried against - MapEntry _buildQueryWithColumnValueAndOperator( - MapEntry columnAndValue, String queryOperator) { - final String key = columnAndValue.key; - final dynamic value = - convertValueToCorrectType(parseEncode(columnAndValue.value)); - - if (queryOperator == _noOperatorNeeded) { - return MapEntry( - _noOperatorNeeded, '"$key": ${jsonEncode(value)}'); - } else { - String queryString = '"$key":'; - final Map queryOperatorAndValueMap = {}; - queryOperatorAndValueMap[queryOperator] = parseEncode(value); - final String formattedQueryOperatorAndValue = - jsonEncode(queryOperatorAndValueMap); - queryString += formattedQueryOperatorAndValue; - return MapEntry(key, queryString); - } - } - - /// This joins queries that should be joined together... e.g. age > 10 && - /// age < 20, this would be similar to age > 10 < 20 - List> _checkForMultipleColumnInstances( - List> queries) { - final List> sanitizedQueries = - >[]; - final List keysAlreadyCompacted = []; - - // Run through each query - for (final MapEntry query in queries) { - // Add queries that don't need sanitizing - if (query.key == _noOperatorNeeded || query.key == _singleQuery) { - sanitizedQueries - .add(MapEntry(_noOperatorNeeded, query.value)); - } - - // Check if query with same column name has been sanitized - if (!keysAlreadyCompacted.contains(query.key) && - query.key != _noOperatorNeeded && - query.key != _singleQuery) { - // If not, check that it now has - keysAlreadyCompacted.add(query.key); - - // Build a list of all queries with the same column name - final List> listOfQueriesCompact = queries - .where((MapEntry entry) => query.key == entry.key) - .toList(); - - // Build first part of query - String queryStart = '"${query.key}":'; - String queryEnd = ''; - - // Compact all the queries in the correct format - for (MapEntry queryToCompact in listOfQueriesCompact) { - String queryToCompactValue = queryToCompact.value.toString(); - queryToCompactValue = queryToCompactValue.replaceFirst('{', ''); - queryToCompactValue = queryToCompactValue.replaceRange( - queryToCompactValue.length - 1, queryToCompactValue.length, ''); - if (listOfQueriesCompact.first == queryToCompact) { - queryEnd += queryToCompactValue.replaceAll(queryStart, ' '); - } else { - queryEnd += queryToCompactValue.replaceAll(queryStart, ', '); - } - } - - sanitizedQueries.add( - MapEntry(query.key, queryStart += '{$queryEnd}')); - } - } - - return sanitizedQueries; - } - - /// Adds the limiters to the query, i.e. skip=10, limit=10 - String getLimiters(Map map) { - String result = ''; - map.forEach((String key, dynamic value) { - result = '$result&$key=$value'; - }); - return result; - } - - /// Adds extra options to the query - String getExtraOptions(Map map) { - String result = ''; - map.forEach((String key, dynamic value) { - result = '$result&$key=$value'; - }); - return result; - } - - /// Adds the limiters to the query relational, i.e. skip=10, limit=10 - String getLimitersRelational(Map map) { - String result = ''; - map.forEach((String key, dynamic value) { - if (result.isNotEmpty) { - result = '$result,"$key":$value'; - } else { - result = '"$key":$value'; - } - }); - return result; - } - - /// Find the first object that satisfies the query. - /// Returns null, if no object is found. - Future first() async { - ParseResponse parseResponse = - await (QueryBuilder.copy(this)..setLimit(1)).query(); - if (parseResponse.success) { - return parseResponse.results?.first; - } - throw parseResponse.error ?? ParseError(); - } - - /// Find the objects that satisfy the query. - /// Returns an empty list if no objects are found. - Future> find() async { - ParseResponse parseResponse = await query(); - if (parseResponse.success) { - return parseResponse.results?.map((e) => e as T).toList() ?? []; - } - throw parseResponse.error ?? ParseError(); - } -} diff --git a/packages/dart/lib/src/network/parse_websocket.dart b/packages/dart/lib/src/network/parse_websocket.dart deleted file mode 100644 index 4ec07c900..000000000 --- a/packages/dart/lib/src/network/parse_websocket.dart +++ /dev/null @@ -1,2 +0,0 @@ -export 'parse_websocket_io.dart' - if (dart.library.js) 'parse_websocket_html.dart'; diff --git a/packages/dart/lib/src/network/parse_websocket_html.dart b/packages/dart/lib/src/network/parse_websocket_html.dart deleted file mode 100644 index 35593e9a8..000000000 --- a/packages/dart/lib/src/network/parse_websocket_html.dart +++ /dev/null @@ -1,33 +0,0 @@ -/// If you change this file, you should apply the same changes to the 'parse_websocket_io.dart' file - -import 'dart:html' as html; - -import 'package:web_socket_channel/html.dart'; -import 'package:web_socket_channel/web_socket_channel.dart'; - -class WebSocket { - WebSocket._(this._webSocket); - - static const int connecting = 0; - static const int open = 1; - static const int closing = 2; - static const int closed = 3; - - final html.WebSocket _webSocket; - - static Future connect(String liveQueryURL) async { - final html.WebSocket webSocket = html.WebSocket(liveQueryURL); - await webSocket.onOpen.first; - return WebSocket._(webSocket); - } - - int get readyState => _webSocket.readyState; - - Future close() async { - return _webSocket.close(); - } - - WebSocketChannel createWebSocketChannel() { - return HtmlWebSocketChannel(_webSocket); - } -} diff --git a/packages/dart/lib/src/network/parse_websocket_io.dart b/packages/dart/lib/src/network/parse_websocket_io.dart deleted file mode 100644 index b2cd15503..000000000 --- a/packages/dart/lib/src/network/parse_websocket_io.dart +++ /dev/null @@ -1,31 +0,0 @@ -/// If you change this file, you should apply the same changes to the 'parse_websocket_html.dart' file - -import 'dart:io' as io; - -import 'package:web_socket_channel/io.dart'; -import 'package:web_socket_channel/web_socket_channel.dart'; - -class WebSocket { - WebSocket._(this._webSocket); - - static const int connecting = 0; - static const int open = 1; - static const int closing = 2; - static const int closed = 3; - - final io.WebSocket _webSocket; - - static Future connect(String liveQueryURL) async { - return WebSocket._(await io.WebSocket.connect(liveQueryURL)); - } - - int get readyState => _webSocket.readyState; - - Future close() { - return _webSocket.close(); - } - - WebSocketChannel createWebSocketChannel() { - return IOWebSocketChannel(_webSocket); - } -} diff --git a/packages/dart/lib/src/objects/parse_acl.dart b/packages/dart/lib/src/objects/parse_acl.dart deleted file mode 100644 index 618b86c5f..000000000 --- a/packages/dart/lib/src/objects/parse_acl.dart +++ /dev/null @@ -1,128 +0,0 @@ -part of flutter_parse_sdk; - -/// [ParseACL] is used to control which users can access or modify a particular object -/// [ParseObject] can have its own [ParseACL] -/// You can grant read and write permissions separately to specific users -/// or you can grant permissions to "the public" so that, for example, any user could read a particular object but -/// only a particular set of users could write to that object -class ParseACL { - ///Creates an ACL where only the provided user has access. - ///[owner] The only user that can read or write objects governed by this ACL. - ParseACL({ParseUser? owner}) { - if (owner != null) { - setReadAccess(userId: owner.objectId!, allowed: true); - setWriteAccess(userId: owner.objectId!, allowed: true); - } - } - - final String _publicKEY = '*'; - final Map _permissionsById = - {}; - - /// Helper for setting stuff - void _setPermissionsIfNonEmpty( - {required String userId, - required bool readPermission, - required bool writePermission}) { - if (!(readPermission || writePermission)) { - _permissionsById.remove(userId); - } else { - _permissionsById[userId] = - _ACLPermissions(readPermission, writePermission); - } - } - - ///Get whether the public is allowed to read this object. - bool getPublicReadAccess() { - return getReadAccess(userId: _publicKEY); - } - - ///Set whether the public is allowed to read this object. - void setPublicReadAccess({required bool allowed}) { - setReadAccess(userId: _publicKEY, allowed: allowed); - } - - /// Set whether the public is allowed to write this object. - bool getPublicWriteAccess() { - return getWriteAccess(userId: _publicKEY); - } - - ///Set whether the public is allowed to write this object. - void setPublicWriteAccess({required bool allowed}) { - setWriteAccess(userId: _publicKEY, allowed: allowed); - } - - ///Set whether the given user id is allowed to read this object. - void setReadAccess({required String userId, bool allowed = true}) { - final bool writePermission = getWriteAccess(userId: userId); - _setPermissionsIfNonEmpty( - userId: userId, - readPermission: allowed, - writePermission: writePermission); - } - - /// Get whether the given user id is *explicitly* allowed to read this object. Even if this returns - /// [false], the user may still be able to access it if getPublicReadAccess returns - /// [true] or a role that the user belongs to has read access. - bool getReadAccess({required String userId}) { - return _permissionsById[userId]?.readPermission ?? false; - } - - ///Set whether the given user id is allowed to write this object. - void setWriteAccess({required String userId, bool allowed = true}) { - final bool readPermission = getReadAccess(userId: userId); - _setPermissionsIfNonEmpty( - userId: userId, - readPermission: readPermission, - writePermission: allowed); - } - - ///Get whether the given user id is *explicitly* allowed to write this object. Even if this - ///returns [false], the user may still be able to write it if getPublicWriteAccess returns - ///[true] or a role that the user belongs to has write access. - bool getWriteAccess({required String userId}) { - return _permissionsById[userId]?.writePermission ?? false; - } - - Map toJson() { - final Map map = {}; - _permissionsById.forEach((String user, _ACLPermissions permission) { - map[user] = permission.toJson(); - }); - return map; - } - - @override - String toString() => json.encode(toJson()); - - ParseACL fromJson(Map map) { - final ParseACL parseACL = ParseACL(); - - map.forEach((String userId, dynamic permission) { - if (permission['read'] != null) { - parseACL.setReadAccess(userId: userId, allowed: permission['read']); - } - if (permission['write'] != null) { - parseACL.setWriteAccess(userId: userId, allowed: permission['write']); - } - }); - return parseACL; - } -} - -class _ACLPermissions { - _ACLPermissions(this._readPermission, this._writePermission); - final String _keyReadPermission = 'read'; - final String _keyWritePermission = 'write'; - final bool _readPermission; - final bool _writePermission; - - bool get readPermission => _readPermission; - - bool get writePermission => _writePermission; - - Map toJson() => { - _keyReadPermission: _readPermission, - _keyWritePermission: _writePermission - }; -} diff --git a/packages/dart/lib/src/objects/parse_array.dart b/packages/dart/lib/src/objects/parse_array.dart deleted file mode 100644 index 1bf36e273..000000000 --- a/packages/dart/lib/src/objects/parse_array.dart +++ /dev/null @@ -1,121 +0,0 @@ -part of flutter_parse_sdk; - -class _ParseArray implements _Valuable, _ParseSaveStateAwareChild { - _ParseArray({this.setMode = false}); - - bool setMode; - - List _savedArray = []; - List estimatedArray = []; - - set savedArray(List array) { - _savedArray = array.toList(); - estimatedArray = array.toList(); - } - - List get savedArray => _savedArray; - - _ParseArrayOperation? lastPreformedOperation; - - _ParseArray preformArrayOperation( - _ParseArrayOperation arrayOperation, - ) { - arrayOperation.mergeWithPrevious(lastPreformedOperation ?? this); - - lastPreformedOperation = arrayOperation; - - estimatedArray = lastPreformedOperation!.value.toList(); - - if (setMode) { - lastPreformedOperation = null; - } - - return this; - } - - Object toJson({bool full = false}) { - if (full) { - return { - 'className': 'ParseArray', - 'estimatedArray': parseEncode(estimatedArray, full: full), - 'savedArray': parseEncode(_savedArray, full: full), - 'lastPreformedOperation': lastPreformedOperation?.toJson(full: full) - }; - } - - return lastPreformedOperation?.toJson(full: full) ?? - parseEncode(estimatedArray, full: full); - } - - factory _ParseArray.fromFullJson(Map json) { - return _ParseArray() - .._savedArray = parseDecode(json['savedArray']) - ..estimatedArray = parseDecode(json['estimatedArray']) - ..lastPreformedOperation = json['lastPreformedOperation'] == null - ? null - : _ParseArrayOperation.fromFullJson(json['lastPreformedOperation']); - } - - @override - List getValue() { - return estimatedArray.toList(); - } - - _ParseArrayOperation? _lastPreformedOperationBeforeSaving; - List? _estimatedArrayBeforeSaving; - - @override - @mustCallSuper - void onSaved() { - setMode = false; - _savedArray.clear(); - _savedArray.addAll(_estimatedArrayBeforeSaving ?? []); - _estimatedArrayBeforeSaving = null; - - if (_lastPreformedOperationBeforeSaving == lastPreformedOperation) { - // No operations were performed during the save process - lastPreformedOperation = null; - } else { - // remove the saved objects and keep the new added objects while saving - if (lastPreformedOperation is _ParseRemoveOperation) { - lastPreformedOperation?.valueForApiRequest - .retainWhere((e) => _savedArray.contains(e)); - } else { - lastPreformedOperation?.valueForApiRequest - .removeWhere((e) => _savedArray.contains(e)); - } - } - - _lastPreformedOperationBeforeSaving = null; - } - - @override - @mustCallSuper - void onSaving() { - _lastPreformedOperationBeforeSaving = lastPreformedOperation; - _estimatedArrayBeforeSaving = estimatedArray.toList(); - } - - @override - @mustCallSuper - void onRevertSaving() { - _lastPreformedOperationBeforeSaving = null; - _estimatedArrayBeforeSaving = null; - } - - @override - @mustCallSuper - void onErrorSaving() { - _lastPreformedOperationBeforeSaving = null; - _estimatedArrayBeforeSaving = null; - } - - @override - @mustCallSuper - void onClearUnsaved() { - estimatedArray = savedArray; - lastPreformedOperation = null; - _lastPreformedOperationBeforeSaving = null; - _estimatedArrayBeforeSaving = null; - } -} diff --git a/packages/dart/lib/src/objects/parse_base.dart b/packages/dart/lib/src/objects/parse_base.dart deleted file mode 100644 index 97eced61e..000000000 --- a/packages/dart/lib/src/objects/parse_base.dart +++ /dev/null @@ -1,332 +0,0 @@ -part of flutter_parse_sdk; - -abstract class ParseBase { - /// refers to the Table Name in your Parse Server - String parseClassName = 'ParseBase'; - final bool _dirty = false; // reserved property - final Map _unsavedChanges = {}; - final Map _savingChanges = {}; - - /// Stores all the values of a class - Map _objectData = {}; - - /// Returns [String] objectId - String? get objectId => get(keyVarObjectId); - - set objectId(String? objectId) => set(keyVarObjectId, objectId); - - bool isDirty({String? key}) { - if (key != null) { - return _unsavedChanges[key] != null; - } - return _isDirty(true); - } - - bool _isDirty(bool considerChildren) { - if (_dirty || _unsavedChanges.isNotEmpty || objectId == null) { - return true; - } - - if (considerChildren) { - return _areChildrenDirty({}); - } - return false; - } - - bool _areChildrenDirty(Set seenObjects) { - if (seenObjects.contains(this)) { - return false; - } - seenObjects.add(this); - if (_dirty || _unsavedChanges.isNotEmpty) { - return true; - } - bool match = false; - _getObjectData().forEach((String key, dynamic value) { - if (value is ParseObject && value._areChildrenDirty(seenObjects)) { - match = true; - } - }); - return match; - } - - /// Returns [DateTime] createdAt - DateTime? get createdAt { - if (get(keyVarCreatedAt) is String) { - final String? dateAsString = get(keyVarCreatedAt); - return dateAsString != null ? _parseDateFormat.parse(dateAsString) : null; - } else { - return get(keyVarCreatedAt); - } - } - - /// Returns [DateTime] updatedAt - DateTime? get updatedAt { - if (get(keyVarUpdatedAt) is String) { - final String? dateAsString = get(keyVarUpdatedAt); - return dateAsString != null ? _parseDateFormat.parse(dateAsString) : null; - } else { - return get(keyVarUpdatedAt); - } - } - - /// Converts object to [String] in JSON format - Map toJson({ - bool full = false, - bool forApiRQ = false, - bool allowCustomObjectId = false, - }) { - final Map map = { - keyVarClassName: parseClassName, - }; - - if (objectId != null) { - map[keyVarObjectId] = objectId; - } - - if (createdAt != null) { - map[keyVarCreatedAt] = _parseDateFormat.format(createdAt!); - } - - if (updatedAt != null) { - map[keyVarUpdatedAt] = _parseDateFormat.format(updatedAt!); - } - - final target = forApiRQ ? _unsavedChanges : _getObjectData(); - target.forEach((String key, dynamic value) { - if (!map.containsKey(key)) { - map[key] = parseEncode(value, full: full); - } - - if (forApiRQ && - value is _ParseRelation && - !value.shouldIncludeInRequest()) { - map.remove(key); - } - }); - - if (forApiRQ) { - map.remove(keyVarCreatedAt); - map.remove(keyVarUpdatedAt); - map.remove(keyVarClassName); - //map.remove(keyVarAcl); - - if (!allowCustomObjectId) { - map.remove(keyVarObjectId); - } - map.remove(keyParamSessionToken); - } - - return map; - } - - @override - String toString() => json.encode(toJson(full: true)); - - dynamic fromJsonForManualObject(Map objectData) { - return _fromJson(objectData, true); - } - - dynamic fromJson(Map objectData) { - return _fromJson(objectData, false); - } - - dynamic _fromJson(Map objectData, bool addInUnSave) { - objectData.forEach((String key, dynamic value) { - if (key == parseClassName || key == '__type') { - // NO OP - } else if (key == keyVarObjectId) { - _getObjectData()[keyVarObjectId] = value; - } else if (key == keyVarCreatedAt) { - if (value is String) { - _getObjectData()[keyVarCreatedAt] = _parseDateFormat.parse(value); - } else { - _getObjectData()[keyVarCreatedAt] = value; - } - } else if (key == keyVarUpdatedAt) { - if (value is String) { - _getObjectData()[keyVarUpdatedAt] = _parseDateFormat.parse(value); - } else { - _getObjectData()[keyVarUpdatedAt] = value; - } - } else if (key == keyVarAcl) { - _getObjectData()[keyVarAcl] = ParseACL().fromJson(value); - } else { - var decodedValue = parseDecode(value); - - if (decodedValue is List) { - if (addInUnSave) { - decodedValue = _ParseArray()..estimatedArray = decodedValue; - } else { - decodedValue = _ParseArray()..savedArray = decodedValue; - } - } - - if (decodedValue is num) { - if (addInUnSave) { - decodedValue = _ParseNumber(decodedValue); - } else { - decodedValue = _ParseNumber(decodedValue) - ..savedNumber = decodedValue; - } - } - - _getObjectData()[key] = decodedValue; - - if (addInUnSave) { - _unsavedChanges[key] = decodedValue; - } - } - }); - - return this; - } - - /// Creates a copy of this class - @protected - dynamic copy() => fromJson(toJson()); - - /// Sets all the objects variables - @protected - void _setObjectData(Map objectData) => - _objectData = objectData; - - /// Returns the objects variables - @protected - Map _getObjectData() => _objectData; - - bool containsValue(Object value) { - for (final val in _getObjectData().values) { - if (val == value || (val is _Valuable && val.getValue() == value)) { - return true; - } - } - - return false; - } - - bool containsKey(String key) { - return _getObjectData().containsKey(key); - } - - dynamic operator [](String key) { - return get(key); - } - - void operator []=(String key, dynamic value) { - set(key, value); - } - - /// Saves in storage - Future saveInStorage(String key) async { - final String objectJson = json.encode(toJson(full: true)); - await ParseCoreData().getStore().setString(key, objectJson); - } - - void clearUnsavedChanges() { - _unsavedChanges.clear(); - _notifyChildrenAboutClearUnsaved(); - } - - void _notifyChildrenAboutClearUnsaved() { - for (final child in _getObjectData().values) { - if (child is _ParseSaveStateAwareChild) { - child.onClearUnsaved(); - } - } - } - - /// Add a key-value pair to this object. - /// - /// It is recommended to name keys in `camelCaseLikeThis` - /// - /// [bool] forceUpdate is always true, if unsure as to whether an item is - /// needed or not, set to false - void set(String key, T value, {bool forceUpdate = true}) { - if (_getObjectData()[key] == value && !forceUpdate) { - return; - } - - _getObjectData()[key] = _ParseOperation.maybeMergeWithPrevious( - newValue: value, - previousValue: _getObjectData()[key], - parent: this as ParseObject, - key: key, - ); - - _unsavedChanges[key] = _getObjectData()[key]; - } - - /// Get a value of type [T] associated with a given [key] - /// - /// Returns null or [defaultValue] if provided. - T? get(String key, {T? defaultValue}) { - if (_getObjectData().containsKey(key)) { - final result = _getObjectData()[key]; - - if (result is _Valuable) { - return result.getValue() as T?; - } - - if (result is _ParseRelation) { - return (result - ..parent = (this as ParseObject) - ..key = key) as T?; - } - - return result as T?; - } else { - return defaultValue; - } - } - - /// Saves item to value storage - Future pin() async { - if (objectId != null) { - await unpin(); - final Map? objectMap = parseEncode(this, full: true); - final String json = jsonEncode(objectMap); - await ParseCoreData().getStore().setString(objectId!, json); - return true; - } else { - return false; - } - } - - /// Remove item from value storage - Future unpin({String? key}) async { - if (objectId != null || key != null) { - await ParseCoreData().getStore().remove(key ?? objectId!); - return true; - } - - return false; - } - - /// Get item from value storage - Future fromPin(String objectId) async { - final CoreStore coreStore = ParseCoreData().getStore(); - final String? itemFromStore = await coreStore.getString(objectId); - - if (itemFromStore != null) { - return fromJson(json.decode(itemFromStore)); - } - return null; - } - - Map toPointer() => encodeObject(parseClassName, objectId!); - - /// Set the [ParseACL] governing this object. - void setACL(ParseACL acl) { - set(keyVarAcl, acl); - } - - /// Access the [ParseACL] governing this object. - ParseACL getACL() { - if (_getObjectData().containsKey(keyVarAcl)) { - return _getObjectData()[keyVarAcl]; - } else { - return ParseACL(); - } - } -} diff --git a/packages/dart/lib/src/objects/parse_cloneable.dart b/packages/dart/lib/src/objects/parse_cloneable.dart deleted file mode 100644 index 589b60149..000000000 --- a/packages/dart/lib/src/objects/parse_cloneable.dart +++ /dev/null @@ -1,6 +0,0 @@ -part of flutter_parse_sdk; - -/// Creates method which can be used to deep clone objects -abstract class ParseCloneable { - dynamic clone(Map map); -} diff --git a/packages/dart/lib/src/objects/parse_config.dart b/packages/dart/lib/src/objects/parse_config.dart deleted file mode 100644 index 8df935d63..000000000 --- a/packages/dart/lib/src/objects/parse_config.dart +++ /dev/null @@ -1,41 +0,0 @@ -part of flutter_parse_sdk; - -class ParseConfig extends ParseObject { - /// Creates an instance of ParseConfig so that you can grab all configs from the server - ParseConfig({ - bool? debug, - ParseClient? client, - bool? autoSendSessionId, - }) : super( - 'config', - debug: debug, - client: client, - autoSendSessionId: autoSendSessionId, - ); - - /// Gets all configs from the server - Future getConfigs() async { - try { - final String uri = '${ParseCoreData().serverUrl}/config'; - final ParseNetworkResponse result = await _client.get(uri); - return handleResponse( - this, result, ParseApiRQ.getConfigs, _debug, parseClassName); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.getConfigs, _debug, parseClassName); - } - } - - /// Adds a new config - Future addConfig(String key, dynamic value) async { - try { - final String uri = '${ParseCoreData().serverUrl}/config'; - final String body = - '{"params":{"$key": ${json.encode(parseEncode(value))}}}'; - final ParseNetworkResponse result = await _client.put(uri, data: body); - return handleResponse( - this, result, ParseApiRQ.addConfig, _debug, parseClassName); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.addConfig, _debug, parseClassName); - } - } -} diff --git a/packages/dart/lib/src/objects/parse_error.dart b/packages/dart/lib/src/objects/parse_error.dart deleted file mode 100644 index 323905c77..000000000 --- a/packages/dart/lib/src/objects/parse_error.dart +++ /dev/null @@ -1,306 +0,0 @@ -part of flutter_parse_sdk; - -/// ParseException is used in [ParseResult] to inform the user of the exception -class ParseError { - ParseError( - {this.code = otherCause, - this.message = 'OtherCause', - this.exception, - bool debug = false}) { - type = _exceptions[code]; - if (debug) { - print(toString()); - } - } - - /// Error code indicating some error other than those enumerated here. - static const int otherCause = -1; - - /// Error code indicating that something has gone wrong with the server. - static const int internalServerError = 1; - - /// Error code indicating the connection to the Parse servers failed. - static const int connectionFailed = 100; - - /// Error code indicating the specified object doesn't exist. - static const int objectNotFound = 101; - - /// Error code indicating you tried to query with a datatype that doesn't - /// support it, like exact matching an array or object. - static const int invalidQuery = 102; - - /// Error code indicating a missing or invalid classname. Classnames are - /// case-sensitive. They must start with a letter, and a-zA-Z0-9_ are the - /// only valid characters. - static const int invalidClassName = 103; - - /// Error code indicating an unspecified object id. - static const int missingObjectId = 104; - - /// Error code indicating an invalid key name. Keys are case-sensitive. They - /// must start with a letter, and a-zA-Z0-9_ are the only valid characters. - static const int invalidKeyName = 105; - - /// Error code indicating a malformed pointer. You should not see this unless - /// you have been mucking about changing internal Parse code. - static const int invalidPointer = 106; - - /// Error code indicating that badly formed JSON was received upstream. This - /// either indicates you have done something unusual with modifying how - /// things encode to JSON, or the network is failing badly. - static const int invalidJson = 107; - - /// Error code indicating that the feature you tried to access is only - /// available internally for testing purposes. - static const int commandUnavailable = 108; - - /// You must call Parse().initialize before using the Parse library. - static const int notInitialized = 109; - - /// Error code indicating that a field was set to an inconsistent type. - static const int incorrectType = 111; - - /// Error code indicating an invalid channel name. A channel name is either - /// an empty string (the broadcast channel) or contains only a-zA-Z0-9_ - /// characters and starts with a letter. - static const int invalidChannelName = 112; - - /// Error code indicating that push is misconfigured. - static const int pushMisconfigured = 115; - - /// Error code indicating that the object is too large. - static const int objectTooLarge = 116; - - /// Error code indicating that the operation isn't allowed for clients. - static const int operationForbidden = 119; - - /// Error code indicating the result was not found in the cache. - static const int cacheMiss = 120; - - /// Error code indicating that an invalid key was used in a nested - /// JSONObject. - static const int invalidNestedKey = 121; - - /// Error code indicating that an invalid filename was used for ParseFile. - /// A valid file name contains only a-zA-Z0-9_. characters and is between 1 - /// and 128 characters. - static const int invalidFileName = 122; - - /// Error code indicating an invalid ACL was provided. - static const int invalidAcl = 123; - - /// Error code indicating that the request timed out on the server. Typically - /// this indicates that the request is too expensive to run. - static const int timeout = 124; - - /// Error code indicating that the email address was invalid. - static const int invalidEmailAddress = 125; - - /// Error code indicating a missing content type. - static const int missingContentType = 126; - - /// Error code indicating a missing content length. - static const int missingContentLength = 127; - - /// Error code indicating an invalid content length. - static const int invalidContentLength = 128; - - /// Error code indicating a file that was too large. - static const int fileTooLarge = 129; - - /// Error code indicating an error saving a file. - static const int fileSaveError = 130; - - /// Error code indicating that a unique field was given a value that is - /// already taken. - static const int duplicateValue = 137; - - /// Error code indicating that a role's name is invalid. - static const int invalidRoleName = 139; - - /// Error code indicating that an application quota was exceeded. Upgrade to - /// resolve. - static const int exceededQuota = 140; - - /// Error code indicating that a Cloud Code script failed. - static const int scriptFailed = 141; - - /// Error code indicating that a Cloud Code validation failed. - static const int validationError = 142; - - /// Error code indicating that invalid image data was provided. - static const int invalidImageData = 143; - - /// Error code indicating an unsaved file. - static const int unsavedFileError = 151; - - /// Error code indicating an invalid push time. - static const int invalidPushTimeError = 152; - - /// Error code indicating an error deleting a file. - static const int fileDeleteError = 153; - - /// Error code indicating an error deleting an unnamed file. - static const int fileDeleteUnnamedError = 161; - - /// Error code indicating that the application has exceeded its request - /// limit. - static const int requestLimitExceeded = 155; - - /// Error code indicating that the request was a duplicate and has been discarded due to - /// idempotency rules. - static const int duplicateRequest = 159; - - /// Error code indicating an invalid event name. - static const int invalidEventName = 160; - - /// Error code indicating that a field had an invalid value. - static const int invalidValue = 162; - - /// Error code indicating that the username is missing or empty. - static const int usernameMissing = 200; - - /// Error code indicating that the password is missing or empty. - static const int passwordMissing = 201; - - /// Error code indicating that the username has already been taken. - static const int usernameTaken = 202; - - /// Error code indicating that the email has already been taken. - static const int emailTaken = 203; - - /// Error code indicating that the email is missing, but must be specified. - static const int emailMissing = 204; - - /// Error code indicating that a user with the specified email was not found. - static const int emailNotFound = 205; - - /// Error code indicating that a user object without a valid session could - /// not be altered. - static const int sessionMissing = 206; - - /// Error code indicating that a user can only be created through signup. - static const int mustCreateUserThroughSignup = 207; - - /// Error code indicating that an an account being linked is already linked - /// to another user. - static const int accountAlreadyLinked = 208; - - /// Error code indicating that the current session token is invalid. - static const int invalidSessionToken = 209; - - /// Error code indicating an error enabling or verifying MFA - static const int mfaError = 210; - - /// Error code indicating that a valid MFA token must be provided - static const int mfaTokenRequired = 211; - - /// Error code indicating that a user cannot be linked to an account because - /// that account's id could not be found. - static const int linkedIdMissing = 250; - - /// Error code indicating that a user with a linked (e.g. Facebook) account - /// has an invalid session. - static const int invalidLinkedSession = 251; - - /// Error code indicating that a service being linked (e.g. Facebook or - /// Twitter) is unsupported. - static const int unsupportedService = 252; - - /// Error code indicating an invalid operation occured on schema - static const int invalidSchemaOperation = 255; - - /// Error code indicating that there were multiple errors. Aggregate errors - /// have an "errors" property, which is an array of error objects with more - /// detail about each error that occurred. - static const int aggregateError = 600; - - /// Error code indicating the client was unable to read an input file. - static const int fileReadError = 601; - - /// Error code indicating a real error code is unavailable because - /// we had to use an XDomainRequest object to allow CORS requests in - /// Internet Explorer, which strips the body from HTTP responses that have - /// a non-2XX status code. - static const int xDomainRequest = 602; - - static const Map _exceptions = { - otherCause: 'OtherCause', - internalServerError: 'InternalServerError', - connectionFailed: 'ConnectionFailed', - objectNotFound: 'ObjectNotFound', - invalidQuery: 'InvalidQuery', - invalidClassName: 'InvalidClassName', - missingObjectId: 'MissingObjectId', - invalidKeyName: 'InvalidKeyName', - invalidPointer: 'InvalidPointer', - invalidJson: 'InvalidJson', - commandUnavailable: 'CommandUnavailable', - notInitialized: 'NotInitialized', - incorrectType: 'IncorrectType', - invalidChannelName: 'InvalidChannelName', - pushMisconfigured: 'PushMisconfigured', - objectTooLarge: 'ObjectTooLarge', - operationForbidden: 'OperationForbidden', - cacheMiss: 'CacheMiss', - invalidNestedKey: 'InvalidNestedKey', - invalidFileName: 'InvalidFileName', - invalidAcl: 'InvalidAcl', - timeout: 'Timeout', - invalidEmailAddress: 'InvalidEmailAddress', - missingContentType: 'MissingContentType', - missingContentLength: 'MissingContentLength', - invalidContentLength: 'InvalidContentLength', - fileTooLarge: 'FileTooLarge', - fileSaveError: 'FileSaveError', - duplicateValue: 'DuplicateValue', - invalidRoleName: 'InvalidRoleName', - exceededQuota: 'ExceededQuota', - scriptFailed: 'ScriptError', - validationError: 'ValidationError', - invalidImageData: 'InvalidImageData', - unsavedFileError: 'UnsavedFileError', - invalidPushTimeError: 'InvalidPushTimeError', - fileDeleteError: 'FileDeleteError', - fileDeleteUnnamedError: 'FileDeleteUnnamedError', - requestLimitExceeded: 'RequestLimitExceeded', - duplicateRequest: 'DuplicateRequest', - invalidEventName: 'InvalidEventName', - invalidValue: 'InvalidValue', - usernameMissing: 'UsernameMissing', - passwordMissing: 'PasswordMissing', - usernameTaken: 'UsernameTaken', - emailTaken: 'EmailTaken', - emailMissing: 'EmailMissing', - emailNotFound: 'EmailNotFound', - sessionMissing: 'SessionMissing', - mustCreateUserThroughSignup: 'MustCreateUserThroughSignUp', - accountAlreadyLinked: 'AccountAlreadyLinked', - invalidSessionToken: 'InvalidSessionToken', - mfaError: 'MfaError', - mfaTokenRequired: 'MfaTokenRequired', - linkedIdMissing: 'LinkedIdMissing', - invalidLinkedSession: 'InvalidLinkedSession', - unsupportedService: 'UnsupportedService', - invalidSchemaOperation: 'InvalidSchemaOperation', - aggregateError: 'AggregateError', - fileReadError: 'FileReadError', - xDomainRequest: 'XDomainRequest', - }; - - final int code; - final String message; - final Exception? exception; - String? type; - - @override - String toString() { - String exceptionString = ' \n'; - exceptionString += '----'; - exceptionString += '\nParseException (Type: $type) :'; - exceptionString += '\nCode: $code'; - exceptionString += '\nMessage: $message'; - exceptionString += '----'; - return exceptionString; - } -} diff --git a/packages/dart/lib/src/objects/parse_exception.dart b/packages/dart/lib/src/objects/parse_exception.dart deleted file mode 100644 index 27cdaf70a..000000000 --- a/packages/dart/lib/src/objects/parse_exception.dart +++ /dev/null @@ -1,44 +0,0 @@ -part of flutter_parse_sdk; - -abstract class ParseException implements Exception {} - -class ParseRelationException implements ParseException { - final String? message; - - const ParseRelationException([this.message]); - - @override - String toString() { - if (message == null) return "ParseRelationException"; - return "ParseRelationException: $message"; - } -} - -class ParseOperationException implements ParseException { - final String? message; - - const ParseOperationException([this.message]); - - @override - String toString() { - if (message == null) return "ParseOperationException"; - return "ParseOperationException: $message"; - } -} - -class _UnmergeableOperationException extends ParseOperationException { - final _ParseOperation current; - final Object previous; - - const _UnmergeableOperationException(this.current, this.previous); - - @override - String toString() { - if (previous is _ParseOperation) { - return '${current.operationName} operation is invalid after ' - '${(previous as _ParseOperation).operationName} operation'; - } - - return 'can not perform ${current.operationName} merge operation on the previous value $previous'; - } -} diff --git a/packages/dart/lib/src/objects/parse_file.dart b/packages/dart/lib/src/objects/parse_file.dart deleted file mode 100644 index faa666d34..000000000 --- a/packages/dart/lib/src/objects/parse_file.dart +++ /dev/null @@ -1,123 +0,0 @@ -part of flutter_parse_sdk; - -class ParseFile extends ParseFileBase { - /// Creates a new file - /// - /// {https://docs.parseplatform.org/rest/guide/#files/} - ParseFile(this.file, - {String? name, - String? url, - bool? debug, - ParseClient? client, - bool? autoSendSessionId}) - : super( - name: file != null ? path.basename(file.path) : name!, - url: url, - debug: debug, - client: client, - autoSendSessionId: autoSendSessionId, - ); - - File? file; - CancelToken? _cancelToken; - ProgressCallback? _progressCallback; - - Future loadStorage() async { - final File possibleFile = File('${ParseCoreData().fileDirectory}/$name'); - // ignore: avoid_slow_async_io - final bool exists = await possibleFile.exists(); - - if (exists) { - file = possibleFile; - } else { - file = null; - } - - return this; - } - - @override - Future download({ProgressCallback? progressCallback}) async { - if (url == null) { - return this; - } - - file = File('${ParseCoreData().fileDirectory}/$name'); - await file!.create(); - - progressCallback ??= _progressCallback; - - _cancelToken = CancelToken(); - - final ParseNetworkByteResponse response = await _client.getBytes( - url!, - onReceiveProgress: progressCallback, - cancelToken: _cancelToken, - ); - await file!.writeAsBytes(response.bytes!); - - return this; - } - - /// Uploads a file to Parse Server - @override - Future upload({ProgressCallback? progressCallback}) async { - if (saved) { - //Creates a Fake Response to return the correct result - final Map response = { - 'url': url!, - 'name': name - }; - return handleResponse( - this, - ParseNetworkResponse(data: json.encode(response), statusCode: 201), - ParseApiRQ.upload, - _debug, - parseClassName); - } - - progressCallback ??= _progressCallback; - - _cancelToken = CancelToken(); - - final Map headers = { - HttpHeaders.contentTypeHeader: - mime(file!.path) ?? 'application/octet-stream', - HttpHeaders.contentLengthHeader: '${file!.lengthSync()}', - }; - - try { - final String uri = ParseCoreData().serverUrl + _path; - final ParseNetworkResponse response = await _client.postBytes( - uri, - options: ParseNetworkOptions(headers: headers), - data: file!.openRead(), - onSendProgress: progressCallback, - cancelToken: _cancelToken, - ); - if (response.statusCode == 201) { - final Map map = json.decode(response.data); - url = map['url'].toString(); - name = map['name'].toString(); - } - - return handleResponse( - this, response, ParseApiRQ.upload, _debug, parseClassName); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.upload, _debug, parseClassName); - } - } - - /// Cancels the current request (upload or download of file). - @override - void cancel([dynamic reason]) { - _cancelToken?.cancel(reason); - _cancelToken = null; - } - - /// Add Progress Callback - @override - void progressCallback(ProgressCallback progressCallback) { - _progressCallback = progressCallback; - } -} diff --git a/packages/dart/lib/src/objects/parse_file_base.dart b/packages/dart/lib/src/objects/parse_file_base.dart deleted file mode 100644 index 08cabff6e..000000000 --- a/packages/dart/lib/src/objects/parse_file_base.dart +++ /dev/null @@ -1,55 +0,0 @@ -part of flutter_parse_sdk; - -abstract class ParseFileBase extends ParseObject { - /// Creates a new file - /// - /// {https://docs.parseplatform.org/rest/guide/#files/} - ParseFileBase( - {required String name, - String? url, - bool? debug, - ParseClient? client, - bool? autoSendSessionId}) - : super(keyFileClassname, - debug: debug, - autoSendSessionId: autoSendSessionId, - client: client) { - _path = '/files/$name'; - this.name = name; - if (url != null) this.url = url; - } - - String get name => super.get(keyVarName)!; - set name(String name) => set(keyVarName, name); - - String? get url => super.get(keyVarURL); - set url(http://github.com/String?%20url) => set(keyVarURL, url); - - bool get saved => url != null; - - @override - Map toJson({ - bool full = false, - bool forApiRQ = false, - bool allowCustomObjectId = false, - }) => - {'__type': keyFile, 'name': name, 'url': url}; - - @override - String toString() => json.encode(toJson(full: true)); - - /// Uploads a file to Parse Server - @override - Future save() async { - return upload(); - } - - /// Uploads a file to Parse Server - Future upload({ProgressCallback? progressCallback}); - - Future download({ProgressCallback? progressCallback}); - - void progressCallback(ProgressCallback progressCallback); - - void cancel([dynamic reason]); -} diff --git a/packages/dart/lib/src/objects/parse_file_web.dart b/packages/dart/lib/src/objects/parse_file_web.dart deleted file mode 100644 index c45f5a9c0..000000000 --- a/packages/dart/lib/src/objects/parse_file_web.dart +++ /dev/null @@ -1,99 +0,0 @@ -part of flutter_parse_sdk; - -class ParseWebFile extends ParseFileBase { - ParseWebFile(this.file, - {required String name, - String? url, - bool? debug, - ParseClient? client, - bool? autoSendSessionId}) - : super( - name: name, - url: url, - debug: debug, - client: client, - autoSendSessionId: autoSendSessionId, - ); - - Uint8List? file; - CancelToken? _cancelToken; - ProgressCallback? _progressCallback; - - @override - Future download({ProgressCallback? progressCallback}) async { - if (url == null) { - return this; - } - - progressCallback ??= _progressCallback; - - _cancelToken = CancelToken(); - - final ParseNetworkByteResponse response = await _client.getBytes( - url!, - onReceiveProgress: progressCallback, - cancelToken: _cancelToken, - ); - file = response.bytes as Uint8List?; - - return this; - } - - @override - Future upload({ProgressCallback? progressCallback}) async { - if (saved) { - //Creates a Fake Response to return the correct result - final Map response = { - 'url': url!, - 'name': name - }; - return handleResponse( - this, - ParseNetworkResponse(data: json.encode(response), statusCode: 201), - ParseApiRQ.upload, - _debug, - parseClassName); - } - - progressCallback ??= _progressCallback; - - _cancelToken = CancelToken(); - - final Map headers = { - HttpHeaders.contentTypeHeader: - mime(url ?? name) ?? 'application/octet-stream', - }; - try { - final String uri = ParseCoreData().serverUrl + _path; - final ParseNetworkResponse response = await _client.postBytes( - uri, - options: ParseNetworkOptions(headers: headers), - data: Stream>.fromIterable(>[file!]), - onSendProgress: progressCallback, - cancelToken: _cancelToken, - ); - if (response.statusCode == 201) { - final Map map = json.decode(response.data); - url = map['url'].toString(); - name = map['name'].toString(); - } - return handleResponse( - this, response, ParseApiRQ.upload, _debug, parseClassName); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.upload, _debug, parseClassName); - } - } - - /// Cancels the current request (upload or download of file). - @override - void cancel([dynamic reason]) { - _cancelToken?.cancel(reason); - _cancelToken = null; - } - - /// Add Progress Callback - @override - void progressCallback(ProgressCallback progressCallback) { - _progressCallback = progressCallback; - } -} diff --git a/packages/dart/lib/src/objects/parse_function.dart b/packages/dart/lib/src/objects/parse_function.dart deleted file mode 100644 index 68331baca..000000000 --- a/packages/dart/lib/src/objects/parse_function.dart +++ /dev/null @@ -1,67 +0,0 @@ -part of flutter_parse_sdk; - -class ParseCloudFunction extends ParseObject { - /// Creates a new cloud function object - /// - /// {https://docs.parseplatform.org/cloudcode/guide/} - ParseCloudFunction( - this.functionName, { - bool? debug, - ParseClient? client, - bool? autoSendSessionId, - }) : super( - functionName, - client: client, - autoSendSessionId: autoSendSessionId, - debug: debug, - ) { - _path = '/functions/$functionName'; - } - - final String functionName; - - @override - // ignore: overridden_fields - late String _path; - - /// Executes a cloud function - /// - /// To add the parameters, create an object and call [set](value to set) - Future execute( - {Map? parameters, Map? headers}) async { - final String uri = '${ParseCoreData().serverUrl}$_path'; - if (parameters != null) { - _setObjectData(parameters); - } - try { - final ParseNetworkResponse result = await _client.post(uri, - options: ParseNetworkOptions(headers: headers), - data: json.encode(_getObjectData())); - return handleResponse( - this, result, ParseApiRQ.execute, _debug, parseClassName); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.execute, _debug, parseClassName); - } - } - - /// Executes a cloud function that returns a ParseObject type - /// - /// To add the parameters, create an object and call [set](value to set) - Future executeObjectFunction( - {Map? parameters, Map? headers}) async { - final String uri = '${ParseCoreData().serverUrl}$_path'; - if (parameters != null) { - _setObjectData(parameters); - } - try { - final ParseNetworkResponse result = await _client.post(uri, - options: ParseNetworkOptions(headers: headers), - data: json.encode(_getObjectData())); - return handleResponse(this, result, - ParseApiRQ.executeObjectionFunction, _debug, parseClassName); - } on Exception catch (e) { - return handleException( - e, ParseApiRQ.executeObjectionFunction, _debug, parseClassName); - } - } -} diff --git a/packages/dart/lib/src/objects/parse_geo_point.dart b/packages/dart/lib/src/objects/parse_geo_point.dart deleted file mode 100644 index f7f60a2e8..000000000 --- a/packages/dart/lib/src/objects/parse_geo_point.dart +++ /dev/null @@ -1,31 +0,0 @@ -part of flutter_parse_sdk; - -const String keyLatitude = 'latitude'; -const String keyLongitude = 'longitude'; - -class ParseGeoPoint { - /// Creates a Parse Object of type GeoPoint - ParseGeoPoint({this.latitude = 0.0, this.longitude = 0.0}) - : assert( - latitude < 90, 'Latitude must be within the range (-90.0, 90.0).'), - assert( - latitude > -90, 'Latitude must be within the range (-90.0, 90.0).'), - assert(latitude < 180, - 'Longitude must be within the range (-180.0, 180.0).'), - assert(latitude > -180, - 'Longitude must be within the range (-180.0, 180.0).'); - - double latitude, longitude; - - Map toJson({bool full = false, bool forApiRQ = false}) => - { - '__type': 'GeoPoint', - 'latitude': latitude, - 'longitude': longitude - }; - - @override - String toString() { - return 'latitude: $latitude, longitude: $longitude'; - } -} diff --git a/packages/dart/lib/src/objects/parse_installation.dart b/packages/dart/lib/src/objects/parse_installation.dart deleted file mode 100644 index 12c891849..000000000 --- a/packages/dart/lib/src/objects/parse_installation.dart +++ /dev/null @@ -1,264 +0,0 @@ -part of flutter_parse_sdk; - -class ParseInstallation extends ParseObject { - /// Creates an instance of ParseInstallation - ParseInstallation({ - bool? debug, - ParseClient? client, - bool? autoSendSessionId, - }) : super( - keyClassInstallation, - client: client, - autoSendSessionId: autoSendSessionId, - debug: debug, - ); - - ParseInstallation.forQuery() : super(keyClassUser); - - static final List readOnlyKeys = [ - keyDeviceToken, - keyDeviceType, - keyInstallationId, - keyAppName, - keyAppVersion, - keyAppIdentifier, - keyParseVersion - ]; - static String? _currentInstallationId; - - //Getters/setters - Map get acl => super - .get>(keyVarAcl, defaultValue: {})!; - - set acl(Map acl) => - set>(keyVarAcl, acl); - - String? get deviceToken => super.get(keyDeviceToken); - - set deviceToken(String? deviceToken) => - set(keyDeviceToken, deviceToken); - - String? get deviceType => super.get(keyDeviceType); - - String? get installationId => super.get(keyInstallationId); - - set _installationId(String? installationId) => - set(keyInstallationId, installationId); - - String? get appName => super.get(keyAppName); - - String? get appVersion => super.get(keyAppVersion); - - String? get appIdentifier => super.get(keyAppIdentifier); - - String? get parseVersion => super.get(keyParseVersion); - - static Future isCurrent(ParseInstallation installation) async { - _currentInstallationId ??= (await _getFromLocalStore())?.installationId; - return _currentInstallationId != null && - installation.installationId == _currentInstallationId; - } - - /// Gets the current installation from storage - static Future currentInstallation() async { - return (await _getFromLocalStore()) ?? (await _createInstallation()); - } - - /// Updates the installation with current device data - Future _updateInstallation() async { - //Device type - if (parseIsWeb) { - set(keyDeviceType, 'web'); - } else if (Platform.isAndroid) { - set(keyDeviceType, 'android'); - } else if (Platform.isIOS) { - set(keyDeviceType, 'ios'); - } else if (Platform.isLinux) { - set(keyDeviceType, 'Linux'); - } else if (Platform.isMacOS) { - set(keyDeviceType, 'MacOS'); - } else if (Platform.isWindows) { - set(keyDeviceType, 'Windows'); - } - - //Locale - set(keyLocaleIdentifier, ParseCoreData().locale); - - //Timezone - set(keyTimeZone, _getNameLocalTimeZone()); - - //App info - set(keyAppName, ParseCoreData().appName); - set(keyAppVersion, ParseCoreData().appVersion); - set(keyAppIdentifier, ParseCoreData().appPackageName); - set(keyParseVersion, keySdkVersion); - } - - String _getNameLocalTimeZone() { - tz.initializeTimeZones(); - var locations = tz.timeZoneDatabase.locations; - - int milliseconds = DateTime.now().timeZoneOffset.inMilliseconds; - String name = ""; - - locations.forEach((key, value) { - for (var element in value.zones) { - if (element.offset == milliseconds) { - name = value.name; - break; - } - } - }); - return name; - } - - @override - Future create({bool allowCustomObjectId = false}) async { - final bool isCurrent = await ParseInstallation.isCurrent(this); - if (isCurrent) { - await _updateInstallation(); - } - - final ParseResponse parseResponse = - await _create(allowCustomObjectId: allowCustomObjectId); - if (parseResponse.success && isCurrent) { - clearUnsavedChanges(); - await saveInStorage(keyParseStoreInstallation); - } - return parseResponse; - } - - /// Saves the current installation - @override - Future save() async { - final bool isCurrent = await ParseInstallation.isCurrent(this); - if (isCurrent) { - await _updateInstallation(); - } - //ParseResponse parseResponse = await super.save(); - final ParseResponse parseResponse = await _save(); - if (parseResponse.success && isCurrent) { - clearUnsavedChanges(); - await saveInStorage(keyParseStoreInstallation); - } - return parseResponse; - } - - /// Gets the locally stored installation - static Future _getFromLocalStore() async { - final CoreStore coreStore = ParseCoreData().getStore(); - - final String? installationJson = - await coreStore.getString(keyParseStoreInstallation); - - if (installationJson != null) { - final Map? installationMap = - json.decode(installationJson); - - if (installationMap != null) { - return ParseInstallation()..fromJson(installationMap); - } - } - - return null; - } - - /// Creates a installation for current device - /// Assumes that this is called because there is no previous installation - /// so it creates and sets the static current installation UUID - static Future _createInstallation() async { - _currentInstallationId ??= const Uuid().v4(); - - final ParseInstallation installation = ParseInstallation(); - installation._installationId = _currentInstallationId; - await installation._updateInstallation(); - await ParseCoreData().getStore().setString(keyParseStoreInstallation, - json.encode(installation.toJson(full: true))); - return installation; - } - - /// Creates a new object and saves it online - Future _create({bool allowCustomObjectId = false}) async { - try { - final String uri = - '${ParseCoreData().serverUrl}$keyEndPointInstallations'; - final String body = json.encode(toJson( - forApiRQ: true, - allowCustomObjectId: allowCustomObjectId, - )); - final Map headers = { - keyHeaderContentType: keyHeaderContentTypeJson - }; - if (_debug) { - logRequest(ParseCoreData().appName, parseClassName, - ParseApiRQ.create.toString(), uri, body); - } - - final ParseNetworkResponse result = await _client.post(uri, - data: body, options: ParseNetworkOptions(headers: headers)); - - //Set the objectId on the object after it is created. - //This allows you to perform operations on the object after creation - if (result.statusCode == 201) { - final Map map = json.decode(result.data); - objectId = map['objectId'].toString(); - } - - return handleResponse( - this, result, ParseApiRQ.create, _debug, parseClassName); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.create, _debug, parseClassName); - } - } - - /// Saves the current object online - Future _save() async { - if (objectId == null) { - return create(); - } else { - try { - final String uri = - '${ParseCoreData().serverUrl}$keyEndPointInstallations/$objectId'; - final String body = json.encode(toJson(forApiRQ: true)); - if (_debug) { - logRequest(ParseCoreData().appName, parseClassName, - ParseApiRQ.save.toString(), uri, body); - } - final ParseNetworkResponse result = await _client.put(uri, data: body); - return handleResponse( - this, result, ParseApiRQ.save, _debug, parseClassName); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.save, _debug, parseClassName); - } - } - } - - ///Subscribes the device to a channel of push notifications. - Future subscribeToChannel(String value) async { - final List channel = [value]; - setAddAllUnique('channels', channel); - await save(); - } - - ///Unsubscribes the device to a channel of push notifications. - Future unsubscribeFromChannel(String value) async { - final List channel = [value]; - setRemove('channels', channel); - await save(); - } - - ///Returns an > containing all the channel names this device is subscribed to. - Future> getSubscribedChannels() async { - print('getSubscribedChannels'); - final ParseResponse apiResponse = - await ParseObject(keyClassInstallation).getObject(objectId!); - - if (apiResponse.success) { - final ParseObject installation = apiResponse.result; - return Future>.value(installation - .get>('channels', defaultValue: [])); - } else { - return []; - } - } -} diff --git a/packages/dart/lib/src/objects/parse_number.dart b/packages/dart/lib/src/objects/parse_number.dart deleted file mode 100644 index 2b6c1be25..000000000 --- a/packages/dart/lib/src/objects/parse_number.dart +++ /dev/null @@ -1,128 +0,0 @@ -part of flutter_parse_sdk; - -class _ParseNumber implements _Valuable, _ParseSaveStateAwareChild { - num estimateNumber; - - num _savedNumber = 0.0; - - set savedNumber(num number) { - estimateNumber = _savedNumber = number; - } - - num get savedNumber => _savedNumber; - - _ParseNumber(this.estimateNumber, {this.setMode = false}); - - bool setMode; - - _ParseNumberOperation? lastPreformedOperation; - - _ParseNumber preformNumberOperation( - _ParseNumberOperation incrementOperation, - ) { - incrementOperation.mergeWithPrevious(lastPreformedOperation ?? this); - - lastPreformedOperation = incrementOperation; - - estimateNumber = lastPreformedOperation!.value; - - return this; - } - - Object toJson({bool full = false}) { - if (full) { - return { - 'className': 'ParseNumber', - 'estimateNumber': estimateNumber, - 'savedNumber': _savedNumber, - 'setMode': setMode, - 'lastPreformedOperation': lastPreformedOperation?.toJson(full: full) - }; - } - - return setMode - ? estimateNumber - : lastPreformedOperation?.toJson(full: full) ?? estimateNumber; - } - - factory _ParseNumber.fromFullJson(Map json) { - return _ParseNumber(json['estimateNumber'] as num) - .._savedNumber = json['savedNumber'] as num - ..setMode = json['setMode'] as bool - ..lastPreformedOperation = json['lastPreformedOperation'] == null - ? null - : _ParseNumberOperation.fromFullJson(json['lastPreformedOperation']); - } - - @override - num getValue() { - return estimateNumber; - } - - _ParseNumberOperation? _lastPreformedOperationBeforeSaving; - num? _numberForApiRequestBeforeSaving; - num? _estimateNumberBeforeSaving; - - @override - @mustCallSuper - void onSaved() { - setMode = false; - - if (_lastPreformedOperationBeforeSaving == lastPreformedOperation) { - // No operations were performed during the save process - lastPreformedOperation = null; - } else { - // Some operations performed during the save process. - // Subtract the saved APiNumber from the modified APiNumber while saving, - // in order to keep only the modifications that were made while saving the object - if (lastPreformedOperation != null) { - lastPreformedOperation!.valueForApiRequest -= - _numberForApiRequestBeforeSaving ?? 0.0; - } - } - - if (_estimateNumberBeforeSaving != null) { - _savedNumber = _estimateNumberBeforeSaving!; - } - - _lastPreformedOperationBeforeSaving = null; - _estimateNumberBeforeSaving = null; - _numberForApiRequestBeforeSaving = null; - } - - @override - @mustCallSuper - void onSaving() { - _lastPreformedOperationBeforeSaving = lastPreformedOperation; - _estimateNumberBeforeSaving = estimateNumber; - _numberForApiRequestBeforeSaving = - lastPreformedOperation?.valueForApiRequest; - } - - @override - @mustCallSuper - void onRevertSaving() { - _lastPreformedOperationBeforeSaving = null; - _numberForApiRequestBeforeSaving = null; - _estimateNumberBeforeSaving = null; - } - - @override - @mustCallSuper - void onErrorSaving() { - _lastPreformedOperationBeforeSaving = null; - _numberForApiRequestBeforeSaving = null; - _estimateNumberBeforeSaving = null; - } - - @override - @mustCallSuper - void onClearUnsaved() { - estimateNumber = _savedNumber; - - lastPreformedOperation = null; - _lastPreformedOperationBeforeSaving = null; - _estimateNumberBeforeSaving = null; - _numberForApiRequestBeforeSaving = null; - } -} diff --git a/packages/dart/lib/src/objects/parse_object.dart b/packages/dart/lib/src/objects/parse_object.dart deleted file mode 100644 index dc60239a8..000000000 --- a/packages/dart/lib/src/objects/parse_object.dart +++ /dev/null @@ -1,680 +0,0 @@ -part of flutter_parse_sdk; - -/// [ParseObject] is a local representation of data that can be saved and -/// retrieved from the Parse cloud. -/// -/// The basic workflow for creating new data is to construct a new [ParseObject], -/// use set(key, value) to fill it with data, and then use [save] to persist -/// to the cloud. -/// -/// The basic workflow for accessing existing data is to use a [QueryBuilder] -/// to specify which existing data to retrieve. -class ParseObject extends ParseBase implements ParseCloneable { - /// Creates a new Parse Object - /// - /// [className], refers to the Table Name in your Parse Server - /// - /// [debug], will overwrite the current default debug settings - /// - /// [client], can be overwritten to create your own HTTP Client - ParseObject( - String className, { - bool? debug, - ParseClient? client, - bool? autoSendSessionId, - }) : super() { - parseClassName = className; - _path = '$keyEndPointClasses$className'; - _aggregatepath = '$keyEndPointAggregate$className'; - - _debug = isDebugEnabled(objectLevelDebug: debug); - _client = client ?? - ParseCoreData().clientCreator( - sendSessionId: - autoSendSessionId ?? ParseCoreData().autoSendSessionId, - securityContext: ParseCoreData().securityContext); - } - - ParseObject.clone(String className) : this(className); - - @override - dynamic clone(Map map) => - ParseObject.clone(parseClassName)..fromJson(map); - - late String _path; - late String _aggregatepath; - late bool _debug; - late ParseClient _client; - - /// Gets an object from the server using it's [objectId] - /// - /// [include], is a list of [ParseObject]s keys to be included directly and - /// not as a pointer. - Future getObject( - String objectId, { - List? include, - }) async { - try { - String? query; - if (include != null) { - query = 'include=${concatenateArray(include)}'; - } - - final Uri url = - getSanitisedUri(_client, '$_path/$objectId', query: query); - - final ParseNetworkResponse result = await _client.get(url.toString()); - return handleResponse( - this, result, ParseApiRQ.get, _debug, parseClassName); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.get, _debug, parseClassName); - } - } - - /// Gets all objects from this table - Limited response at the moment - Future getAll() async { - try { - final Uri url = getSanitisedUri(_client, _path); - final ParseNetworkResponse result = await _client.get(url.toString()); - return handleResponse( - this, result, ParseApiRQ.getAll, _debug, parseClassName); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.getAll, _debug, parseClassName); - } - } - - /// Creates a new object and saves it online - /// - /// Prefer using [save] over [create] - Future create({bool allowCustomObjectId = false}) async { - try { - final Uri url = getSanitisedUri(_client, _path); - final String body = json.encode(toJson( - forApiRQ: true, - allowCustomObjectId: allowCustomObjectId, - )); - - _saveChanges(); - - final ParseNetworkResponse result = - await _client.post(url.toString(), data: body); - - final response = handleResponse( - this, result, ParseApiRQ.create, _debug, parseClassName); - - if (!response.success) { - _notifyChildrenAboutErrorSaving(); - } - - return response; - } on Exception catch (e) { - _notifyChildrenAboutErrorSaving(); - return handleException(e, ParseApiRQ.create, _debug, parseClassName); - } - } - - /// Send the updated object to the server. - /// - /// Will only send the dirty (modified) data and not the entire object - /// - /// The object should hold an [objectId] in order to update it - /// - /// Prefer using [save] over [update] - Future update() async { - assert( - objectId != null && (objectId?.isNotEmpty ?? false), - "Can't update a parse object while the objectId property is null or empty", - ); - - try { - final Uri url = getSanitisedUri(_client, '$_path/$objectId'); - final String body = json.encode(toJson(forApiRQ: true)); - - _saveChanges(); - - final Map headers = { - keyHeaderContentType: keyHeaderContentTypeJson - }; - - final ParseNetworkResponse result = await _client.put(url.toString(), - data: body, options: ParseNetworkOptions(headers: headers)); - - final response = handleResponse( - this, result, ParseApiRQ.save, _debug, parseClassName); - - if (!response.success) { - _notifyChildrenAboutErrorSaving(); - } - - return response; - } on Exception catch (e) { - _notifyChildrenAboutErrorSaving(); - return handleException(e, ParseApiRQ.save, _debug, parseClassName); - } - } - - /// Saves the current object online. - /// - /// If the object not saved yet, this will create it. Otherwise, - /// it will send the updated object to the server. - /// - /// This will save any nested(child) object in this object. So you do not need - /// to each one of them manually. - /// - /// Example of saving child and parent objects using save(): - /// - /// ```dart - /// final dietPlan = ParseObject('Diet_Plans')..set('Fat', 15); - /// final plan = ParseObject('Plan')..set('planName', 'John.W'); - /// dietPlan.set('plan', plan); - /// - /// // the save function will create the nested(child) object first and then - /// // attempts to save the parent object. - /// // - /// // using create in this situation will throw an error, because the child - /// // object is not saved/created yet and you need to create it manually - /// await dietPlan.save(); - /// - /// print(plan.objectId); // DLde4rYA8C - /// print(dietPlan.objectId); // RGd4fdEUB - /// - /// ``` - /// - /// The same principle works with [ParseRelation] - /// - /// Its safe to call this function aging if an error occurred while saving. - /// - /// Prefer using [save] over [update] and [create] - Future save() async { - final ParseResponse childrenResponse = await _saveChildren(this); - if (childrenResponse.success) { - ParseResponse? response; - if (objectId == null) { - response = await create(); - } else if (_isDirty(false)) { - response = await update(); - } - - if (response != null) { - if (response.success) { - _savingChanges.clear(); - } else { - _revertSavingChanges(); - } - return response; - } - } - return childrenResponse; - } - - Future _saveChildren(dynamic object) async { - final Set uniqueObjects = {}; - final Set uniqueFiles = {}; - if (!_collectionDirtyChildren( - object, uniqueObjects, uniqueFiles, {}, {})) { - final ParseResponse response = ParseResponse(); - return response; - } - - if (object is ParseObject) { - uniqueObjects.remove(object); - } - - for (ParseFileBase file in uniqueFiles) { - final ParseResponse response = await file.save(); - if (!response.success) { - return response; - } - } - - List remaining = uniqueObjects.toList(); - final List finished = []; - - final ParseResponse totalResponse = ParseResponse() - ..success = true - ..results = [] - ..statusCode = 200; - - while (remaining.isNotEmpty) { - /* Partition the objects into two sets: those that can be save immediately, - and those that rely on other objects to be created first. */ - final List current = []; - final List nextBatch = []; - - for (ParseObject object in remaining) { - if (object._canbeSerialized(finished)) { - current.add(object); - } else { - nextBatch.add(object); - } - } - - remaining = nextBatch; - - // TODO(yulingtianxia): lazy User - /* Batch requests have currently a limit of 50 packaged requests per single request - This splitting will split the overall array into segments of upto 50 requests - and execute them concurrently with a wrapper task for all of them. */ - final List> chunks = >[]; - for (int i = 0; i < current.length; i += 50) { - chunks.add(current.sublist(i, min(current.length, i + 50))); - } - - for (List chunk in chunks) { - final List requests = chunk.map((ParseObject obj) { - return obj._getRequestJson(obj.objectId == null ? 'POST' : 'PUT'); - }).toList(); - - for (ParseObject obj in chunk) { - obj._saveChanges(); - } - final ParseResponse response = await batchRequest( - requests, - chunk, - client: _client, - ); - totalResponse.success &= response.success; - - if (response.success) { - totalResponse.results!.addAll(response.results!); - totalResponse.count += response.count; - - for (int i = 0; i < response.count; i++) { - if (response.results![i] is ParseError) { - // Batch request succeed, but part of batch failed. - chunk[i]._revertSavingChanges(); - - // if any request in a batch requests group fails, - // then the overall response will be considered unsuccessful. - totalResponse.success = false; - } else { - chunk[i]._savingChanges.clear(); - } - } - } else { - // If there was an error, we want to roll forward the save changes before rethrowing. - for (ParseObject obj in chunk) { - obj._revertSavingChanges(); - } - - totalResponse.statusCode = response.statusCode; - totalResponse.error = response.error; - } - } - - finished.addAll(current); - } - - return totalResponse; - } - - void _saveChanges() { - _savingChanges.clear(); - _savingChanges.addAll(_unsavedChanges); - _unsavedChanges.clear(); - _notifyChildrenAboutSaving(); - } - - void _revertSavingChanges() { - _savingChanges.addAll(_unsavedChanges); - _unsavedChanges.addAll(_savingChanges); - _savingChanges.clear(); - _notifyChildrenAboutRevertSaving(); - } - - dynamic _getRequestJson(String method) { - final Uri tempUri = Uri.parse(ParseCoreData().serverUrl); - final String parsePath = tempUri.path; - final dynamic request = { - 'method': method, - 'path': '$parsePath$_path${objectId != null ? '/$objectId' : ''}', - 'body': toJson(forApiRQ: true) - }; - return request; - } - - bool _canbeSerialized(List aftersaving, {dynamic value}) { - if (value != null) { - if (value is ParseObject) { - if (value is ParseFileBase) { - if (!value.saved && !aftersaving.contains(value)) { - return false; - } - } else if (value.objectId == null && !aftersaving.contains(value)) { - return false; - } - } else if (value is Map) { - for (dynamic child in value.values) { - if (!_canbeSerialized(aftersaving, value: child)) { - return false; - } - } - } else if (value is _Valuable) { - if (!_canbeSerialized(aftersaving, value: value.getValue())) { - return false; - } - } else if (value is _ParseRelation) { - if (!_canbeSerialized(aftersaving, value: value.valueForApiRequest())) { - return false; - } - } else if (value is Iterable) { - for (dynamic child in value) { - if (!_canbeSerialized(aftersaving, value: child)) { - return false; - } - } - } - } else if (!_canbeSerialized(aftersaving, value: _getObjectData())) { - return false; - } - // TODO(yulingtianxia): handle ACL - return true; - } - - bool _collectionDirtyChildren( - dynamic object, - Set uniqueObjects, - Set uniqueFiles, - Set seen, - Set seenNew) { - if (object is Iterable) { - for (dynamic child in object) { - if (!_collectionDirtyChildren( - child, uniqueObjects, uniqueFiles, seen, seenNew)) { - return false; - } - } - } else if (object is Map) { - for (dynamic child in object.values) { - if (!_collectionDirtyChildren( - child, uniqueObjects, uniqueFiles, seen, seenNew)) { - return false; - } - } - } else if (object is _Valuable) { - if (!_collectionDirtyChildren( - object.getValue(), uniqueObjects, uniqueFiles, seen, seenNew)) { - return false; - } - } else if (object is _ParseRelation) { - if (!_collectionDirtyChildren(object.valueForApiRequest(), uniqueObjects, - uniqueFiles, seen, seenNew)) { - return false; - } - } else if (object is ParseACL) { - // TODO(yulingtianxia): handle ACL - } else if (object is ParseFileBase) { - if (!object.saved) { - uniqueFiles.add(object); - } - } else if (object is ParseObject) { - /* Check for cycles of new objects. Any such cycle means it will be - impossible to save this collection of objects, so throw an exception. */ - if (object.objectId != null) { - seenNew = {}; - } else { - if (seenNew.contains(object)) { - // TODO(yulingtianxia): throw an error? - return false; - } - seenNew.add(object); - } - - /* Check for cycles of any object. If this occurs, then there's no - problem, but we shouldn't recurse any deeper, because it would be - an infinite recursion. */ - if (seen.contains(object)) { - return true; - } - seen.add(object); - - if (!_collectionDirtyChildren( - object._getObjectData(), uniqueObjects, uniqueFiles, seen, seenNew)) { - return false; - } - - if (object._isDirty(false)) { - uniqueObjects.add(object); - } - } - return true; - } - - void _notifyChildrenAboutSave() { - for (final child in _getObjectData().values) { - if (child is _ParseSaveStateAwareChild) { - child.onSaved(); - } - } - } - - void _notifyChildrenAboutSaving() { - for (final child in _getObjectData().values) { - if (child is _ParseSaveStateAwareChild) { - child.onSaving(); - } - } - } - - void _notifyChildrenAboutErrorSaving() { - for (final child in _getObjectData().values) { - if (child is _ParseSaveStateAwareChild) { - child.onErrorSaving(); - } - } - } - - void _notifyChildrenAboutRevertSaving() { - for (final child in _getObjectData().values) { - if (child is _ParseSaveStateAwareChild) { - child.onRevertSaving(); - } - } - } - - /// Get the instance of [ParseRelation] class associated with the given [key] - ParseRelation getRelation(String key) { - final potentialRelation = _getObjectData()[key]; - - if (potentialRelation == null) { - final relation = ParseRelation(parent: this, key: key); - - set(key, relation); - - return relation; - } - - if (potentialRelation is _ParseRelation) { - return potentialRelation - ..parent = this - ..key = key; - } - - throw ParseRelationException( - 'The key $key is associated with a value ($potentialRelation) ' - 'can not be a relation'); - } - - /// Remove every instance of an [element] from an array - /// associated with a given [key] - void setRemove(String key, dynamic element) { - set(key, _ParseRemoveOperation([element])); - } - - /// Removes all instances of the [elements] contained in a [List] from the - /// array associated with a given [key] - void setRemoveAll(String key, List elements) { - set(key, _ParseRemoveOperation(elements)); - } - - /// Add multiple [elements] to the end of the array - /// associated with a given [key] - void setAddAll(String key, List elements) { - set(key, _ParseAddOperation(elements)); - } - - /// Add an [element] to the array associated with a given [key], only if - /// it is not already present in the array. The position of the insert is not - /// guaranteed - void setAddUnique(String key, dynamic element) { - set(key, _ParseAddUniqueOperation([element])); - } - - /// Add multiple [elements] to the array associated with a given [key], only - /// adding elements which are not already present in the array. The position - /// of the insert is not guaranteed - void setAddAllUnique(String key, List elements) { - set(key, _ParseAddUniqueOperation(elements)); - } - - /// Add an [element] to the end of the array associated with a given [key] - void setAdd(String key, T element) { - set(key, _ParseAddOperation([element])); - } - - /// Add multiple [objets] to a relation associated with a given [key] - void addRelation(String key, List objets) { - set(key, _ParseAddRelationOperation(objets.toSet())); - } - - /// Remove multiple [objets] from a relation associated with a given [key] - void removeRelation(String key, List objets) { - set(key, _ParseRemoveRelationOperation(objets.toSet())); - } - - /// Increment a num value associated with a given [key] by the given [amount] - void setIncrement(String key, num amount) { - set(key, _ParseIncrementOperation(amount)); - } - - /// Decrement a num value associated with a given [key] by the given [amount] - void setDecrement(String key, num amount) { - set(key, _ParseIncrementOperation(-amount)); - } - - /// Can be used set an objects variable to undefined rather than null - /// - /// If object is not saved remotely, set offlineOnly to true to avoid api calls. - Future unset(String key, {bool offlineOnly = false}) async { - final dynamic object = _objectData[key]; - _objectData.remove(key); - _unsavedChanges.remove(key); - _savingChanges.remove(key); - - if (offlineOnly) { - return ParseResponse()..success = true; - } - - if (objectId == null) { - return ParseResponse()..success = false; - } - - try { - final Uri url = getSanitisedUri(_client, '$_path/$objectId'); - - final String body = '{"$key":{"__op":"Delete"}}'; - - final ParseNetworkResponse result = - await _client.put(url.toString(), data: body); - - final ParseResponse response = handleResponse( - this, result, ParseApiRQ.unset, _debug, parseClassName); - - if (response.success) { - return ParseResponse()..success = true; - } else { - _objectData[key] = object; - _unsavedChanges[key] = object; - _savingChanges[key] = object; - - return response; - } - } on Exception catch (e) { - _objectData[key] = object; - _unsavedChanges[key] = object; - _savingChanges[key] = object; - - return handleException(e, ParseApiRQ.unset, _debug, parseClassName); - } - } - - /// Can be used to create custom queries - Future query(String query, - {ProgressCallback? progressCallback}) async { - try { - final Uri url = getSanitisedUri(_client, _path, query: query); - final ParseNetworkResponse result = await _client.get( - url.toString(), - onReceiveProgress: progressCallback, - ); - return handleResponse( - this, result, ParseApiRQ.query, _debug, parseClassName); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.query, _debug, parseClassName); - } - } - - Future distinct(String query) async { - try { - final Uri url = getSanitisedUri(_client, _aggregatepath, query: query); - final ParseNetworkResponse result = await _client.get(url.toString()); - return handleResponse( - this, result, ParseApiRQ.query, _debug, parseClassName); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.query, _debug, parseClassName); - } - } - - /// Deletes the current object locally and online - Future delete({ - String? id, - String? path, - }) async { - assert(() { - final objId = objectId; - final isNotValidObjectId = objId == null || objId.isEmpty; - final isNotValidIdArg = id == null || id.isEmpty; - - if (isNotValidObjectId && isNotValidIdArg) { - throw Exception( - "Can't delete a parse object while the objectId property " - "and id argument is null or empty", - ); - } - - return true; - }()); - - try { - path ??= _path; - id ??= objectId; - final Uri url = getSanitisedUri(_client, '$_path/$id'); - final ParseNetworkResponse result = await _client.delete(url.toString()); - return handleResponse( - this, result, ParseApiRQ.delete, _debug, parseClassName); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.delete, _debug, parseClassName); - } - } - - /// Fetches this object with the data from the server. - /// - /// Call this whenever you want the state of the object to reflect exactly - /// what is on the server. - /// - /// [include], is a list of [ParseObject]s keys to be included directly and - /// not as a pointer. - Future fetch({List? include}) async { - if (objectId == null || objectId!.isEmpty) { - throw 'can not fetch without a objectId'; - } - - final ParseResponse response = await getObject(objectId!, include: include); - - if (response.success && response.results != null) { - return response.results!.first; - } else { - return this; - } - } -} diff --git a/packages/dart/lib/src/objects/parse_operation/parse_add_operation.dart b/packages/dart/lib/src/objects/parse_operation/parse_add_operation.dart deleted file mode 100644 index 16f892de6..000000000 --- a/packages/dart/lib/src/objects/parse_operation/parse_add_operation.dart +++ /dev/null @@ -1,39 +0,0 @@ -part of flutter_parse_sdk; - -/// An operation that adds a new element to an array -class _ParseAddOperation extends _ParseArrayOperation { - _ParseAddOperation(List value) : super(value); - - @override - String get operationName => 'Add'; - - @override - bool canMergeWith(Object other) { - return other is _ParseAddOperation || other is _ParseArray; - } - - @override - _ParseOperation merge(Object previous) { - final List previousValue; - - if (previous is _ParseArray) { - previousValue = previous.estimatedArray; - - if (previous.savedArray.isEmpty) { - valueForApiRequest.addAll(previous.estimatedArray); - } - } else { - final previousAdd = (previous as _ParseAddOperation); - - previousValue = previousAdd.value; - - valueForApiRequest.addAll(previousAdd.valueForApiRequest); - } - - valueForApiRequest.addAll(value); - - value = [...previousValue, ...value]; - - return this; - } -} diff --git a/packages/dart/lib/src/objects/parse_operation/parse_add_relation_operation.dart b/packages/dart/lib/src/objects/parse_operation/parse_add_relation_operation.dart deleted file mode 100644 index 716868096..000000000 --- a/packages/dart/lib/src/objects/parse_operation/parse_add_relation_operation.dart +++ /dev/null @@ -1,40 +0,0 @@ -part of flutter_parse_sdk; - -/// An operation that adds new objects to a [ParseRelation] -class _ParseAddRelationOperation extends _ParseRelationOperation { - _ParseAddRelationOperation(Set value) : super(value); - - @override - String get operationName => 'AddRelation'; - - @override - bool canMergeWith(Object other) { - return other is _ParseAddRelationOperation || other is _ParseRelation; - } - - @override - _ParseOperation> merge(Object previous) { - Set previousValue = {}; - - if (previous is _ParseRelation) { - previousValue = previous.knownObjects.toSet(); - } else { - final previousAdd = (previous as _ParseAddRelationOperation); - - previousValue = previousAdd.value.toSet(); - - valueForApiRequest.addAll(previousAdd.valueForApiRequest); - } - - valueForApiRequest.addAll(value); - - value = {...previousValue, ...value}; - - value = Set.from(removeDuplicateParseObjectByObjectId(value)); - - valueForApiRequest = - Set.from(removeDuplicateParseObjectByObjectId(valueForApiRequest)); - - return this; - } -} diff --git a/packages/dart/lib/src/objects/parse_operation/parse_add_unique_operation.dart b/packages/dart/lib/src/objects/parse_operation/parse_add_unique_operation.dart deleted file mode 100644 index a7cb87ceb..000000000 --- a/packages/dart/lib/src/objects/parse_operation/parse_add_unique_operation.dart +++ /dev/null @@ -1,52 +0,0 @@ -part of flutter_parse_sdk; - -/// An operation that adds a new element to an array field, -/// only if it wasn't already present -class _ParseAddUniqueOperation extends _ParseArrayOperation { - _ParseAddUniqueOperation(List value) : super(value); - - @override - String get operationName => 'AddUnique'; - - @override - bool canMergeWith(Object other) { - return other is _ParseAddUniqueOperation || other is _ParseArray; - } - - @override - _ParseOperation merge(Object previous) { - final List previousValue; - - value = value.toSet().toList(); - - // if the previous is _ParseArray this indicates that this operation - // is the first operation on this array - if (previous is _ParseArray) { - previousValue = previous.estimatedArray; - - if (previous.savedArray.isEmpty) { - valueForApiRequest.addAll(previous.estimatedArray.toSet()); - } - } else { - final previousAddUnique = (previous as _ParseAddUniqueOperation); - - previousValue = previousAddUnique.value; - - valueForApiRequest.addAll(previousAddUnique.valueForApiRequest); - } - - valueForApiRequest.addAll(value); - - value = [ - ...previousValue, - ...value.where((element) => !previousValue.contains(element)), - ]; - - value = removeDuplicateParseObjectByObjectId(value); - - valueForApiRequest = - removeDuplicateParseObjectByObjectId(valueForApiRequest); - - return this; - } -} diff --git a/packages/dart/lib/src/objects/parse_operation/parse_increment_operation.dart b/packages/dart/lib/src/objects/parse_operation/parse_increment_operation.dart deleted file mode 100644 index 765cf3494..000000000 --- a/packages/dart/lib/src/objects/parse_operation/parse_increment_operation.dart +++ /dev/null @@ -1,33 +0,0 @@ -part of flutter_parse_sdk; - -/// An operation that increment a numeric value by a given amount -class _ParseIncrementOperation extends _ParseNumberOperation { - _ParseIncrementOperation(num value) : super(value); - - @override - String get operationName => 'Increment'; - - @override - bool canMergeWith(Object other) { - return other is _ParseIncrementOperation || other is _ParseNumber; - } - - @override - _ParseOperation merge(Object previous) { - final num previousValue; - - if (previous is _ParseNumber) { - previousValue = previous.estimateNumber; - valueForApiRequest += previous.estimateNumber - previous.savedNumber; - } else { - final previousIncrement = (previous as _ParseIncrementOperation); - previousValue = previousIncrement.value; - - valueForApiRequest += previousIncrement.valueForApiRequest; - } - - value = value + previousValue; - - return this; - } -} diff --git a/packages/dart/lib/src/objects/parse_operation/parse_operation.dart b/packages/dart/lib/src/objects/parse_operation/parse_operation.dart deleted file mode 100644 index 68fc92ee4..000000000 --- a/packages/dart/lib/src/objects/parse_operation/parse_operation.dart +++ /dev/null @@ -1,314 +0,0 @@ -part of flutter_parse_sdk; - -/// Represents an operation performed on Parse data. It defines the core -/// functionality of any operation performed on Parse data. -abstract class _ParseOperation implements _Valuable { - /// Used to store the estimated value for operation. - /// - /// This is what the user will see as the result of any operation on the data. - /// For example, if the operation is an array addition and the user wants - /// to add the value 4 to the list, and the list originally looks like this: - /// [1,2,3], then the [value] variable will initially hold [1,2,3]. - /// After the addition operation is performed, the [value] variable will - /// hold [1,2,3,4], which is what the user will see. - /// The add operation itself will be stored in a separate variable, - /// [valueForApiRequest], which will only hold the data that needs - /// to be sent to the server, in this case [4]. - T value; - - /// The actual that will be sent to the server. - late T valueForApiRequest; - - _ParseOperation(this.value); - - /// The name of the preformed operation. - /// - /// This value can be used when sending the operation to the server. - /// - /// e.g: Add, AddUnique, Remove, Increment, AddRelation, RemoveRelation - String get operationName; - - /// Checks if [other] can be merged with the current operation. - /// - /// Some operations can be merged with others, and each operation defines - /// what can be merged. For example, an Add operation can be merged with - /// another Add operation or with a [_ParseArray] object. - bool canMergeWith(Object other); - - /// Preform the merge between [previous] and current operation. - /// - /// This should be called after [canMergeWith] to check if the [previous] - /// operation is eligible to merge with the current operation - /// - /// Will return the current(this) operation merged with the other(previous) - /// operation - _ParseOperation merge(Object previous); - - /// Merges the current operation with the [previous] operation if possible. - /// - /// Throws a [_UnmergeableOperationException] if the [previous] operation - /// cannot be merged with the current operation. - _ParseOperation mergeWithPrevious(Object previous) { - if (!canMergeWith(previous)) { - throw _UnmergeableOperationException(this, previous); - } - - return merge(previous); - } - - /// Convert the operation to json format (Map). - /// - /// Will be used to be sent the operation to the server or to store the - /// operation in the cache. When [full] is true that should indicate that - /// the intention of converting to json is to store the operation - /// in the local cache - Map toJson({bool full = false}); - - /// construct a new value of [newValue] to be used in parse object. - /// - /// * If the [newValue] is [Iterable] will return [_ParseArray] - /// * If the [newValue] is [num] will return [_ParseNumber] - /// * If the [newValue] is [_ParseOperation] will try to merge the this - /// operation with the [previousValue] and return this operation merged - /// with the [previousValue] if possible. - /// * Otherwise will return the [newValue] as it is. - static Object? maybeMergeWithPrevious({ - required R newValue, - required Object? previousValue, - required ParseObject parent, - required String key, - }) { - if (newValue is Iterable) { - return _ParseArray(setMode: true)..estimatedArray = newValue.toList(); - } - - if (newValue is num) { - return _ParseNumber(newValue, setMode: true); - } - - if (newValue is _ParseOperation) { - return _handelOperation(newValue, previousValue, parent, key); - } - - return newValue; - } - - static Object _handelOperation( - R newValue, - Object? previousValue, - ParseObject parent, - String key, - ) { - if (newValue is _ParseNumberOperation) { - return _handelNumOperation(newValue, previousValue); - } - - if (newValue is _ParseArrayOperation) { - return _handelArrayOperation(newValue, previousValue); - } - - if (newValue is _ParseRelationOperation) { - return _handelRelationOperation(newValue, previousValue, parent, key); - } - - throw ParseOperationException( - 'operation ${newValue.runtimeType} not implemented'); - } - - static _ParseNumber _handelNumOperation( - _ParseNumberOperation numberOperation, - Object? previousValue, - ) { - if (previousValue is _ParseNumber) { - return previousValue.preformNumberOperation(numberOperation); - } - - if (previousValue == null) { - return _ParseNumber(0).preformNumberOperation(numberOperation); - } - - throw ParseOperationException( - 'wrong key, unable to preform numeric operation on' - ' the previous value: ${previousValue.runtimeType}'); - } - - static _ParseArray _handelArrayOperation( - _ParseArrayOperation arrayOperation, - Object? previousValue, - ) { - if (previousValue is _ParseArray) { - return previousValue.preformArrayOperation(arrayOperation); - } - - if (previousValue == null) { - return _ParseArray().preformArrayOperation(arrayOperation); - } - - throw ParseOperationException( - 'wrong key, unable to preform Array operation on' - ' the previous value: ${previousValue.runtimeType}'); - } - - static _ParseRelation _handelRelationOperation( - _ParseRelationOperation relationOperation, - Object? previousValue, - ParseObject parent, - String key, - ) { - if (previousValue is _ParseRelation) { - return previousValue.preformRelationOperation(relationOperation); - } - - if (previousValue == null) { - return _ParseRelation(parent: parent, key: key) - .preformRelationOperation(relationOperation); - } - - throw ParseOperationException( - 'wrong key, unable to preform Relation operation on' - ' the previous value: ${previousValue.runtimeType}'); - } - - /// Returns the estimated value of this operation. - @override - T getValue() { - if (value is Iterable) { - // return as new Iterable to prevent the user from mutating the internal list state - return (value as Iterable).cast() as T; - } - - return value; - } -} - -abstract class _ParseArrayOperation extends _ParseOperation { - _ParseArrayOperation(List value) : super(value) { - super.valueForApiRequest = []; - } - - @override - Map toJson({bool full = false}) { - if (full) { - return { - '__op': operationName, - 'objects': parseEncode(value, full: full), - 'valueForAPIRequest': parseEncode(valueForApiRequest, full: full), - }; - } - - return { - '__op': operationName, - 'objects': parseEncode(valueForApiRequest, full: full), - }; - } - - static _ParseArrayOperation? fromFullJson(Map json) { - final List objects = parseDecode(json['objects']); - final List? objectsForAPIRequest = parseDecode(json['valueForAPIRequest']); - - final _ParseArrayOperation arrayOperation; - switch (json['__op']) { - case 'Add': - arrayOperation = _ParseAddOperation(objects); - break; - case 'Remove': - arrayOperation = _ParseRemoveOperation(objects); - break; - case 'AddUnique': - arrayOperation = _ParseAddUniqueOperation(objects); - break; - default: - return null; - } - - arrayOperation.valueForApiRequest = objectsForAPIRequest ?? []; - - return arrayOperation; - } -} - -abstract class _ParseRelationOperation - extends _ParseOperation> { - _ParseRelationOperation(Set value) : super(value) { - super.valueForApiRequest = {}; - } - - static _ParseRelationOperation? fromFullJson(Map json) { - final Set objects = - Set.from(parseDecode(json['objects']) ?? {}); - - final Set? objectsForAPIRequest = - json['valueForAPIRequest'] == null - ? null - : Set.from(parseDecode(json['valueForAPIRequest'])); - - final _ParseRelationOperation relationOperation; - switch (json['__op']) { - case 'AddRelation': - relationOperation = _ParseAddRelationOperation(objects); - break; - case 'RemoveRelation': - relationOperation = _ParseRemoveRelationOperation(objects); - break; - - default: - return null; - } - - relationOperation.valueForApiRequest = objectsForAPIRequest ?? {}; - - return relationOperation; - } - - @override - Map toJson({bool full = false}) { - if (full) { - return { - '__op': operationName, - 'objects': parseEncode(value, full: full), - 'valueForAPIRequest': parseEncode(valueForApiRequest, full: full), - }; - } - return { - '__op': operationName, - 'objects': parseEncode(valueForApiRequest, full: full) - }; - } -} - -abstract class _ParseNumberOperation extends _ParseOperation { - _ParseNumberOperation(num value) : super(value) { - super.valueForApiRequest = value; - } - - @override - Map toJson({bool full = false}) { - if (full) { - return { - '__op': operationName, - 'amount': valueForApiRequest, - 'estimatedValue': value - }; - } - - return {'__op': operationName, 'amount': valueForApiRequest}; - } - - static _ParseNumberOperation? fromFullJson(Map json) { - final num estimatedValueFromJson = json['estimatedValue'] as num; - final num valueForApiRequestFromJson = json['amount'] as num; - - final _ParseNumberOperation parseNumberOperation; - switch (json['__op']) { - case 'Increment': - parseNumberOperation = _ParseIncrementOperation(estimatedValueFromJson); - break; - default: - return null; - } - - parseNumberOperation.valueForApiRequest = valueForApiRequestFromJson; - - return parseNumberOperation; - } -} diff --git a/packages/dart/lib/src/objects/parse_operation/parse_remove_operation.dart b/packages/dart/lib/src/objects/parse_operation/parse_remove_operation.dart deleted file mode 100644 index 6ac974c4b..000000000 --- a/packages/dart/lib/src/objects/parse_operation/parse_remove_operation.dart +++ /dev/null @@ -1,38 +0,0 @@ -part of flutter_parse_sdk; - -/// An operation that removes every instance of an element from an array -class _ParseRemoveOperation extends _ParseArrayOperation { - _ParseRemoveOperation(List value) : super(value); - - @override - String get operationName => 'Remove'; - - @override - bool canMergeWith(Object other) { - return other is _ParseRemoveOperation || other is _ParseArray; - } - - @override - _ParseOperation merge(Object previous) { - final List previousValue; - - valueForApiRequest.addAll(value.toSet()); - - if (previous is _ParseArray) { - previousValue = previous.estimatedArray; - } else { - final previousRemove = (previous as _ParseRemoveOperation); - - previousValue = previousRemove.value; - - valueForApiRequest = { - ...valueForApiRequest, - ...previousRemove.valueForApiRequest, - }.toList(); - } - - value = [...previousValue]..removeWhere((e) => value.contains(e)); - - return this; - } -} diff --git a/packages/dart/lib/src/objects/parse_operation/parse_remove_relation_operation.dart b/packages/dart/lib/src/objects/parse_operation/parse_remove_relation_operation.dart deleted file mode 100644 index 725701ba3..000000000 --- a/packages/dart/lib/src/objects/parse_operation/parse_remove_relation_operation.dart +++ /dev/null @@ -1,45 +0,0 @@ -part of flutter_parse_sdk; - -/// An operation that Removes objects from a [ParseRelation] -class _ParseRemoveRelationOperation extends _ParseRelationOperation { - _ParseRemoveRelationOperation(Set value) : super(value); - - @override - String get operationName => 'RemoveRelation'; - - @override - bool canMergeWith(Object other) { - return other is _ParseRemoveRelationOperation || other is _ParseRelation; - } - - @override - _ParseOperation> merge(Object previous) { - Set previousValue = {}; - - if (previous is _ParseRelation) { - previousValue = previous.knownObjects.toSet(); - } else { - final previousRemove = (previous as _ParseRemoveRelationOperation); - - previousValue = previousRemove.value.toSet(); - - valueForApiRequest.addAll(previousRemove.valueForApiRequest); - } - - valueForApiRequest.addAll(value); - - final parseObjectToRemoveByIds = - value.where((e) => e.objectId != null).map((e) => e.objectId!); - - value = previousValue - ..removeWhere((e) => - value.contains(e) || parseObjectToRemoveByIds.contains(e.objectId)); - - value = Set.from(removeDuplicateParseObjectByObjectId(value)); - - valueForApiRequest = - Set.from(removeDuplicateParseObjectByObjectId(valueForApiRequest)); - - return this; - } -} diff --git a/packages/dart/lib/src/objects/parse_relation.dart b/packages/dart/lib/src/objects/parse_relation.dart deleted file mode 100644 index 16d75f627..000000000 --- a/packages/dart/lib/src/objects/parse_relation.dart +++ /dev/null @@ -1,273 +0,0 @@ -part of flutter_parse_sdk; - -abstract class ParseRelation { - //The owning object of this ParseRelation - ParseObject getParent(); - - //The key of the relation in the parent object. i.e. the column name - String getKey(); - - factory ParseRelation({ - required ParseObject parent, - required String key, - }) { - return _ParseRelation(parent: parent, key: key); - } - - /// The className of the target objects. - @Deprecated('use the targetClass getter') - String get getTargetClass; - - /// The className of the target objects. - String? get targetClass; - - /// Will work only if the current target class is null, otherwise will throw - /// [ParseRelationException] with the message: - /// The target class can not be modified if it is already set - set setTargetClass(String targetClass); - - /// Gets a query that can be used to query the objects in this relation. - /// - /// Return a [QueryBuilder] that restricts the results to objects in this relation - QueryBuilder getQuery(); - - /// Add object to this relation - void add(T parseObject); - - /// Add objects to this relation. - void addAll(List parseObjects); - - /// Remove object from this relation - void remove(T parseObject); - - /// Remove objects from this relation - void removeAll(List parseObjects); - - factory ParseRelation.fromJson( - Map map, { - ParseObject? parent, - String? key, - }) { - return _ParseRelation.fromJson(map, parent: parent, key: key); - } - - Map toJson({bool full = false}); -} - -class _ParseRelation - implements ParseRelation, _ParseSaveStateAwareChild { - String? _targetClass; - - ParseObject? parent; - - String? key; - - // For offline caching, we keep track of every object - // we've known to be in the relation. - Set knownObjects = {}; - - _ParseRelationOperation? lastPreformedOperation; - - _ParseRelation({required this.parent, required this.key}); - - Set valueForApiRequest() { - return lastPreformedOperation?.valueForApiRequest ?? {}; - } - - @override - ParseObject getParent() { - return parent!; - } - - @override - String getKey() { - return key!; - } - - _ParseRelation preformRelationOperation( - _ParseRelationOperation relationOperation, - ) { - resolveTargetClassFromRelationObjets(relationOperation.value); - - relationOperation.mergeWithPrevious(lastPreformedOperation ?? this); - - lastPreformedOperation = relationOperation; - - knownObjects = lastPreformedOperation!.value.toSet() as Set; - - return this; - } - - @override - QueryBuilder getQuery() { - final parentClassName = parent!.parseClassName; - final parentObjectId = parent!.objectId; - - if (parentObjectId == null) { - throw ParseRelationException( - 'The parent objectId is null. Query based on a Relation require ObjectId'); - } - - final QueryBuilder queryBuilder; - - if (_targetClass == null) { - queryBuilder = QueryBuilder(ParseObject(parentClassName)) - ..setRedirectClassNameForKey(key!); - } else { - queryBuilder = QueryBuilder( - ParseCoreData.instance.createObject(_targetClass!), - ); - } - - return queryBuilder..whereRelatedTo(key!, parentClassName, parentObjectId); - } - - @override - void add(T parseObject) { - parent!.addRelation(key!, [parseObject]); - } - - @override - void addAll(List parseObjects) { - parent!.addRelation(key!, parseObjects); - } - - @override - void remove(T parseObject) { - parent!.removeRelation(key!, [parseObject]); - } - - @override - void removeAll(List parseObjects) { - parent!.removeRelation(key!, parseObjects); - } - - @override - String get getTargetClass => _targetClass ?? ''; - - @override - String? get targetClass => _targetClass; - - @override - set setTargetClass(String targetClass) { - assert(targetClass.isNotEmpty); - - _targetClass ??= targetClass; - - if (_targetClass != targetClass) { - throw ParseRelationException( - 'The target class can not be modified if it is already set'); - } - } - - _ParseRelation.fromJson( - Map json, { - ParseObject? parent, - String? key, - }) { - if (parent != null) { - this.parent = parent; - } - if (key != null) { - this.key = key; - } - - knownObjects = Set.from(parseDecode(json['objects']) ?? {}); - _targetClass = json['className']; - } - - _ParseRelation.fromFullJson(Map json) { - knownObjects = Set.from(parseDecode(json['objects'])); - _targetClass = json['targetClass']; - key = json['key']; - knownObjects = Set.from(parseDecode(json['objects']) ?? {}); - lastPreformedOperation = json['lastPreformedOperation'] == null - ? null - : _ParseRelationOperation.fromFullJson(json['lastPreformedOperation']); - } - - @override - Map toJson({bool full = false}) { - if (full) { - return { - 'className': 'ParseRelation', - 'targetClass': targetClass, - 'key': key, - 'objects': parseEncode(knownObjects, full: full), - 'lastPreformedOperation': lastPreformedOperation?.toJson(full: full) - }; - } - - return lastPreformedOperation?.toJson(full: full) ?? {}; - } - - bool shouldIncludeInRequest() { - return lastPreformedOperation?.valueForApiRequest.isNotEmpty ?? false; - } - - void resolveTargetClassFromRelationObjets(Set relationObjects) { - var potentialTargetClass = _targetClass; - - for (final parseObject in relationObjects) { - potentialTargetClass = parseObject.parseClassName; - - if (_targetClass != null && potentialTargetClass != _targetClass) { - throw ParseRelationException( - 'Can not add more then one class for a relation. the current target ' - 'class $targetClass and the passed class $potentialTargetClass'); - } - } - - _targetClass = potentialTargetClass; - } - - _ParseRelationOperation? _lastPreformedOperationBeforeSaving; - List? _valueForApiRequestBeforeSaving; - - @override - void onSaved() { - if (_lastPreformedOperationBeforeSaving == lastPreformedOperation) { - // No operations were performed during the save process - lastPreformedOperation = null; - } else { - // remove the saved objects and keep the new added objects while saving - lastPreformedOperation?.valueForApiRequest - .removeAll(_valueForApiRequestBeforeSaving ?? []); - } - - _lastPreformedOperationBeforeSaving = null; - _valueForApiRequestBeforeSaving = null; - } - - @override - void onSaving() { - _lastPreformedOperationBeforeSaving = lastPreformedOperation; - _valueForApiRequestBeforeSaving = - lastPreformedOperation?.valueForApiRequest.toList(); - } - - @override - void onRevertSaving() { - _lastPreformedOperationBeforeSaving = null; - _valueForApiRequestBeforeSaving = null; - } - - @override - void onErrorSaving() { - _lastPreformedOperationBeforeSaving = null; - _valueForApiRequestBeforeSaving = null; - } - - @override - void onClearUnsaved() { - if (lastPreformedOperation != null) { - knownObjects.removeWhere( - (e) => lastPreformedOperation!.valueForApiRequest.contains(e), - ); - } - - lastPreformedOperation = null; - _lastPreformedOperationBeforeSaving = null; - _valueForApiRequestBeforeSaving = null; - } -} diff --git a/packages/dart/lib/src/objects/parse_response.dart b/packages/dart/lib/src/objects/parse_response.dart deleted file mode 100644 index 41a6950bb..000000000 --- a/packages/dart/lib/src/objects/parse_response.dart +++ /dev/null @@ -1,22 +0,0 @@ -part of flutter_parse_sdk; - -class ParseResponse { - ParseResponse({ - this.error, - }); - - bool success = false; - int statusCode = -1; - - /// If result is a singular result, i.e. getByObjectID - /// - /// This is now deprecated - Please use results. This will contain a list of - /// results, no need to check if its a list or a list of elements anymore. - dynamic result; - - /// All results stored as a list - Even if only one response is returned - // ignore: always_specify_types - List? results; - int count = 0; - ParseError? error; -} diff --git a/packages/dart/lib/src/objects/parse_save_state_aware_child.dart b/packages/dart/lib/src/objects/parse_save_state_aware_child.dart deleted file mode 100644 index 32fe4a5a1..000000000 --- a/packages/dart/lib/src/objects/parse_save_state_aware_child.dart +++ /dev/null @@ -1,72 +0,0 @@ -part of flutter_parse_sdk; - -/// An interface used to notify a child about its parent save state. -/// -/// x x -/// │ │ -/// ┌────▼─────┐ ┌───────▼────────┐ -/// ┌────────┤ onSaving │ │ onClearUnsaved │ -/// │ └─────┬────┘ └────────────────┘ -/// │ │ -/// ┌───────▼───────┐ ┌────▼────┐ -/// │ onErrorSaving │ │ onSaved │ -/// └───────┬───────┘ └─────────┘ -/// │ -/// ┌───────▼────────┐ -/// │ onRevertSaving │ -/// └────────────────┘ -/// -/// Each Parse data type should implement this interface. -/// The parent object will notify any child that implements this interface about -/// the state of the saving operation in the parent object -/// (i.e. saving, error saving, saved, revert saving, clear unsaved) -/// so the child can react to the save state. For instance, -/// when the parent notifies the children about (clear unsaved), -/// every Parse data type should clear its internal state, -/// keep only the saved data, and dispose of any unsaved data. -/// Another example is when the parent notifies the children about (being saved), -/// which means that the parent has been saved successfully. In this case, -/// every child should move its internal data from the unsaved state to the saved state. -/// -/// -/// The following classes make use of this interface: -/// -/// * [_ParseArray], used to encapsulate a list and perform ParseArray operations on it -/// * [_ParseRelation], used to represent a Parse Relation and perform operations on the relation -/// * [_ParseNumber], used to encapsulate a num datatype and perform Parse operations on it. -abstract class _ParseSaveStateAwareChild { - /// called when the parent object has been saved successfully. - /// - /// its safe to move any unsaved data to saved state - void onSaved(); - - /// called when the parent object attempts to save itself. - /// - /// At this stage, you can copy any unsaved data to a temporary variable so - /// that you can move it to the saved state if the parent saves successfully. - /// You need to take into account any operations that could be performed - /// while the parent is being saved, and thus you should cache the current - /// unsaved data in a separate variable. Then, when the parent saves - /// successfully, you should move only the saved data to the saved state. - void onSaving(); - - /// called when the parent object fails to save itself. - /// - /// At this stage, you can dispose any temporary data that was created - /// during [onSaving] - void onErrorSaving(); - - /// called when the parent object fails to save itself during a patch operation. - /// - /// In this scenario, the parent is part of a save operation for another object. - /// This event will only be triggered after [onErrorSaving] if the parent - /// is part of a save operation for another object - void onRevertSaving(); - - /// called when the parent object needs to clear all unsaved data. - /// - /// At this stage, any unsaved data or operations should be discarded, - /// and the data should be reverted back to its original state - /// before any modifications were made - void onClearUnsaved(); -} diff --git a/packages/dart/lib/src/objects/parse_session.dart b/packages/dart/lib/src/objects/parse_session.dart deleted file mode 100644 index 2be307542..000000000 --- a/packages/dart/lib/src/objects/parse_session.dart +++ /dev/null @@ -1,47 +0,0 @@ -part of flutter_parse_sdk; - -class ParseSession extends ParseObject implements ParseCloneable { - ParseSession({ - bool? debug, - ParseClient? client, - }) : super( - keyClassSession, - client: client, - debug: debug, - ); - - @override - ParseSession clone(Map map) { - return fromJson(map); - } - - String get sessionToken => super.get(keyVarSessionToken)!; - - ParseObject get user => super.get(keyVarUser)!; - - Map get createdWith => - super.get>(keyVarCreatedWith)!; - - bool get restricted => super.get(keyVarRestricted)!; - - DateTime get expiresAt => super.get(keyVarExpiresAt)!; - - String get installationId => super.get(keyVarInstallationId)!; - - set installationId(String installationId) => - set(keyVarInstallationId, installationId); - - Future getCurrentSessionFromServer() async { - try { - const String path = '$keyEndPointSessions/me'; - final Uri url = getSanitisedUri(_client, path); - - final ParseNetworkResponse response = await _client.get(url.toString()); - - return handleResponse( - this, response, ParseApiRQ.logout, _debug, parseClassName); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.logout, _debug, parseClassName); - } - } -} diff --git a/packages/dart/lib/src/objects/parse_user.dart b/packages/dart/lib/src/objects/parse_user.dart deleted file mode 100644 index 8bdf0c7d3..000000000 --- a/packages/dart/lib/src/objects/parse_user.dart +++ /dev/null @@ -1,522 +0,0 @@ -part of flutter_parse_sdk; - -class ParseUser extends ParseObject implements ParseCloneable { - /// Creates an instance of ParseUser - /// - /// Users can set whether debug should be set on this class with a [bool], - /// they can also create their own custom version of [ParseHttpClient] - /// - /// Creates a new user locally - /// - /// Requires [String] username, [String] password. [String] email address - /// is required as well to create a full new user object on ParseServer. Only - /// username and password is required to login - ParseUser( - String? username, - String? password, - String? emailAddress, { - String? sessionToken, - bool? debug, - ParseClient? client, - }) : super( - keyClassUser, - client: client, - autoSendSessionId: true, - debug: debug, - ) { - if (username != null) this.username = username; - if (emailAddress != null) this.emailAddress = emailAddress; - if (password != null) this.password = password; - if (sessionToken != null) this.sessionToken = sessionToken; - } - - ParseUser.forQuery() : super(keyClassUser); - - ParseUser.clone(Map map) - : this(map[keyVarUsername], null, map[keyVarEmail]); - - @override - dynamic clone(Map map) => - ParseUser.clone(map)..fromJson(map); - - static const String keyEmailVerified = 'emailVerified'; - static const String keyUsername = 'username'; - static const String keyEmailAddress = 'email'; - static const String path = '$keyEndPointClasses$keyClassUser'; - - String? _password; - - String? get password => _password; - - set password(String? password) { - if (_password != password) { - _password = password; - if (password != null) _unsavedChanges[keyVarPassword] = password; - } - } - - Map get acl => super - .get>(keyVarAcl, defaultValue: {})!; - - set acl(Map acl) => - set>(keyVarAcl, acl); - - bool? get emailVerified => super.get(keyEmailVerified); - - set emailVerified(bool? emailVerified) => - set(keyEmailVerified, emailVerified); - - String? get username => super.get(keyVarUsername); - - set username(String? username) => set(keyVarUsername, username); - - String? get emailAddress => super.get(keyVarEmail); - - set emailAddress(String? emailAddress) => - set(keyVarEmail, emailAddress); - - String? get sessionToken => super.get(keyVarSessionToken); - - set sessionToken(String? sessionToken) => - set(keyVarSessionToken, sessionToken); - - Map? get authData => - super.get>(keyVarAuthData); - - set authData(Map? authData) => - set?>(keyVarAuthData, authData); - - static ParseUser createUser( - [String? username, String? password, String? emailAddress]) { - return ParseCoreData.instance - .createParseUser(username, password, emailAddress); - } - - /// Gets the current user from the server - /// - /// Current user is stored locally, but in case of a server update [bool] - /// fromServer can be called and an updated version of the [User] object will be - /// returned. - /// - /// NOTE: If using custom ParseUserObject create instance and user [getUpdatedUser] - static Future getCurrentUserFromServer(String token, - {bool? debug, ParseClient? client}) async { - final ParseUser user = _getEmptyUser(); - user.sessionToken = token; - return user.getUpdatedUser(debug: debug, client: client); - } - - /// Get the updated version of the user from the server - /// - /// Uses token to get the latest version of the user. Prefer this to [getCurrentUserFromServer] - /// if using custom ParseUser object - Future getUpdatedUser( - {bool? debug, ParseClient? client}) async { - final bool debugLocal = isDebugEnabled(objectLevelDebug: debug); - final ParseClient clientLocal = client ?? - ParseCoreData().clientCreator( - sendSessionId: true, - securityContext: ParseCoreData().securityContext); - - // We can't get the current user and session without a sessionId - if ((ParseCoreData().sessionId == null) && (sessionToken == null)) { - ///return null; - throw 'can not get the current user and session without a sessionId'; - } - - final Map headers = {}; - if (sessionToken != null) { - headers[keyHeaderSessionToken] = sessionToken!; - } - - try { - final Uri url = getSanitisedUri(clientLocal, keyEndPointUserName); - final ParseNetworkResponse response = await clientLocal.get( - url.toString(), - options: ParseNetworkOptions(headers: headers), - ); - return await _handleResponse( - this, response, ParseApiRQ.currentUser, debugLocal, parseClassName); - } on Exception catch (e) { - return handleException( - e, ParseApiRQ.currentUser, debugLocal, parseClassName); - } - } - - /// Gets the current user from storage - /// - /// Current user is stored locally, but in case of a server update [bool] - /// fromServer can be called and an updated version of the [User] object will be - /// returned - static Future currentUser({ParseCloneable? customUserObject}) async { - if (customUserObject != null) { - return await _getUserFromLocalStore(cloneable: customUserObject); - } else { - return await _getUserFromLocalStore(); - } - } - - /// Registers a user on Parse Server - /// - /// After creating a new user via [Parse.create] call this method to register - /// that user on Parse - /// By setting [allowWithoutEmail] to `true`, you can sign up without setting an email - /// Set [doNotSendInstallationID] to 'true' in order to prevent the SDK from sending the installationID to the Server. - /// This option is especially useful if you are running you application on web and you don't have permission to add 'X-Parse-Installation-Id' as an allowed header on your parse-server. - Future signUp( - {bool allowWithoutEmail = false, - bool doNotSendInstallationID = false}) async { - forgetLocalSession(); - - try { - if (emailAddress == null) { - if (!allowWithoutEmail) { - assert(() { - print( - '`ParseUser().signUp()` failed, because the email is not set. If you want to allow signUp without a set email, you should run `ParseUser().signUp(allowWithoutEmail = true)`'); - return true; - }()); - throw '`signUp` failed, because `emailAddress` of ParseUser was not provided and `allowWithoutEmail` was `false`'; - } else { - assert(() { - print( - 'It is recommended to only allow user signUp with an email set.'); - return true; - }()); - } - } - - final Uri url = getSanitisedUri(_client, path); - final String body = json.encode(toJson(forApiRQ: true)); - _saveChanges(); - final String? installationId = await _getInstallationId(); - final ParseNetworkResponse response = await _client.post(url.toString(), - options: ParseNetworkOptions(headers: { - keyHeaderRevocableSession: '1', - if (installationId != null && !doNotSendInstallationID) - keyHeaderInstallationId: installationId, - }), - data: body); - - return await _handleResponse( - this, response, ParseApiRQ.signUp, _debug, parseClassName); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.signUp, _debug, parseClassName); - } - } - - /// Logs a user in via Parse - /// - /// Once a user is created using [Parse.create] and a username and password is - /// provided, call this method to login. - /// Set [doNotSendInstallationID] to 'true' in order to prevent the SDK from sending the installationID to the Server. - /// This option is especially useful if you are running you application on web and you don't have permission to set 'X-Parse-Installation-Id' as an allowed header on your parse-server. - Future login({bool doNotSendInstallationID = false}) async { - forgetLocalSession(); - - try { - final Map queryParams = { - keyVarUsername: username!, - keyVarPassword: password! - }; - final String? installationId = await _getInstallationId(); - final Uri url = getSanitisedUri(_client, keyEndPointLogin); - _saveChanges(); - final ParseNetworkResponse response = await _client.post( - url.toString(), - data: jsonEncode(queryParams), - options: ParseNetworkOptions(headers: { - keyHeaderRevocableSession: '1', - if (installationId != null && !doNotSendInstallationID) - keyHeaderInstallationId: installationId, - }), - ); - - return await _handleResponse( - this, response, ParseApiRQ.login, _debug, parseClassName); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.login, _debug, parseClassName); - } - } - - /// Logs in a user anonymously - /// Set [doNotSendInstallationID] to 'true' in order to prevent the SDK from sending the installationID to the Server. - /// This option is especially useful if you are running you application on web and you don't have permission to add 'X-Parse-Installation-Id' as an allowed header on your parse-server. - Future loginAnonymous( - {bool doNotSendInstallationID = false}) async { - forgetLocalSession(); - try { - final Uri url = getSanitisedUri(_client, keyEndPointUsers); - const Uuid uuid = Uuid(); - final String? installationId = await _getInstallationId(); - - final ParseNetworkResponse response = await _client.post( - url.toString(), - options: ParseNetworkOptions(headers: { - keyHeaderRevocableSession: '1', - if (installationId != null && !doNotSendInstallationID) - keyHeaderInstallationId: installationId, - }), - data: jsonEncode({ - 'authData': { - 'anonymous': {'id': uuid.v4()} - } - }), - ); - - return await _handleResponse( - this, response, ParseApiRQ.loginAnonymous, _debug, parseClassName); - } on Exception catch (e) { - return handleException( - e, ParseApiRQ.loginAnonymous, _debug, parseClassName); - } - } - - /// Logs in a user using a service - /// Set [doNotSendInstallationID] to 'true' in order to prevent the SDK from sending the installationID to the Server. - /// This option is especially useful if you are running you application on web and you don't have permission to add 'X-Parse-Installation-Id' as an allowed header on your parse-server. - static Future loginWith(String provider, Object authData, - {bool doNotSendInstallationID = false, - String? username, - String? password, - String? email}) async { - final ParseUser user = ParseUser.createUser(username, password, email); - final ParseResponse response = await user._loginWith(provider, authData, - doNotSendInstallationID: doNotSendInstallationID); - return response; - } - - /// Set [doNotSendInstallationID] to 'true' in order to prevent the SDK from sending the installationID to the Server. - /// This option is especially useful if you are running you application on web and you don't have permission to add 'X-Parse-Installation-Id' as an allowed header on your parse-server. - Future _loginWith(String provider, Object authData, - {bool doNotSendInstallationID = false}) async { - try { - final Uri url = getSanitisedUri(_client, keyEndPointUsers); - final String? installationId = await _getInstallationId(); - final Map body = toJson(forApiRQ: true); - body['authData'] = {provider: authData}; - final ParseNetworkResponse response = await _client.post( - url.toString(), - options: ParseNetworkOptions(headers: { - keyHeaderRevocableSession: '1', - if (installationId != null && !doNotSendInstallationID) - keyHeaderInstallationId: installationId, - }), - data: jsonEncode(body), - ); - - return await _handleResponse( - this, response, ParseApiRQ.loginWith, _debug, parseClassName); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.loginWith, _debug, parseClassName); - } - } - - /// Sends a request to delete the sessions token from the - /// server. Will also delete the local user data unless - /// deleteLocalUserData is false. - Future logout({bool deleteLocalUserData = true}) async { - final String? sessionId = ParseCoreData().sessionId; - - if (sessionId == null) { - return await _handleResponse( - this, - ParseNetworkResponse(data: "{}", statusCode: 200), - ParseApiRQ.logout, - _debug, - parseClassName); - } - - forgetLocalSession(); - - if (deleteLocalUserData == true) { - await this.deleteLocalUserData(); - } - - try { - final Uri url = getSanitisedUri(_client, keyEndPointLogout); - final ParseNetworkResponse response = await _client.post( - url.toString(), - options: ParseNetworkOptions( - headers: {keyHeaderSessionToken: sessionId}), - ); - - return await _handleResponse( - this, response, ParseApiRQ.logout, _debug, parseClassName); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.logout, _debug, parseClassName); - } - } - - void forgetLocalSession() { - ParseCoreData().sessionId = null; - } - - /// Delete the local user data. - Future deleteLocalUserData() async { - await unpin(key: keyParseStoreUser); - _setObjectData({}); - } - - /// Sends a verification email to the users email address - Future verificationEmailRequest() async { - try { - final ParseNetworkResponse response = await _client.post( - '${ParseCoreData().serverUrl}$keyEndPointVerificationEmail', - data: json.encode({keyVarEmail: emailAddress}), - ); - return await _handleResponse(this, response, - ParseApiRQ.verificationEmailRequest, _debug, parseClassName); - } on Exception catch (e) { - return handleException( - e, ParseApiRQ.verificationEmailRequest, _debug, parseClassName); - } - } - - /// Sends a password reset email to the users email address - Future requestPasswordReset() async { - try { - final ParseNetworkResponse response = await _client.post( - '${ParseCoreData().serverUrl}$keyEndPointRequestPasswordReset', - data: json.encode({keyVarEmail: emailAddress}), - ); - return await _handleResponse(this, response, - ParseApiRQ.requestPasswordReset, _debug, parseClassName); - } on Exception catch (e) { - return handleException( - e, ParseApiRQ.requestPasswordReset, _debug, parseClassName); - } - } - - /// Saves the current user - /// - /// If changes are made to the current user, call save to sync them with - /// Parse Server - @override - Future save() async { - if (objectId == null) { - return await signUp(); - } else { - final ParseResponse response = await super.save(); - if (response.success) { - await _onResponseSuccess(); - } - return response; - } - } - - @override - Future update() async { - if (objectId == null) { - return await signUp(); - } else { - final ParseResponse response = await super.update(); - if (response.success) { - await _onResponseSuccess(); - } - return response; - } - } - - Future _onResponseSuccess() async { - await saveInStorage(keyParseStoreUser); - } - - /// Removes a user from Parse Server locally and online - Future destroy() async { - if (objectId != null) { - try { - final Uri url = getSanitisedUri(_client, '$_path/$objectId'); - final ParseNetworkResponse response = - await _client.delete(url.toString()); - return await _handleResponse( - this, response, ParseApiRQ.destroy, _debug, parseClassName); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.destroy, _debug, parseClassName); - } - } - - return null; - } - - /// Gets a list of all users (limited return) - static Future all({bool? debug, ParseClient? client}) async { - final ParseUser emptyUser = _getEmptyUser(); - - final bool debugLocal = isDebugEnabled(objectLevelDebug: debug); - final ParseClient clientLocal = client ?? - ParseCoreData().clientCreator( - sendSessionId: true, - securityContext: ParseCoreData().securityContext); - - try { - final Uri url = getSanitisedUri(clientLocal, path); - final ParseNetworkResponse response = - await clientLocal.get(url.toString()); - final ParseResponse parseResponse = handleResponse( - emptyUser, response, ParseApiRQ.getAll, debugLocal, keyClassUser); - return parseResponse; - } on Exception catch (e) { - return handleException(e, ParseApiRQ.getAll, debugLocal, keyClassUser); - } - } - - static Future _getUserFromLocalStore( - {ParseCloneable? cloneable}) async { - final CoreStore coreStore = ParseCoreData().getStore(); - final String? userJson = await coreStore.getString(keyParseStoreUser); - - if (userJson != null) { - final Map userMap = json.decode(userJson); - if (cloneable != null) { - return cloneable.clone(userMap); - } else { - if (userMap.containsKey(keyParamSessionToken)) { - ParseCoreData().setSessionId(userMap[keyParamSessionToken]); - return parseDecode(userMap); - } - } - } - - return null; - } - - /// Handles all the response data for this class - static Future _handleResponse( - ParseUser user, - ParseNetworkResponse response, - ParseApiRQ type, - bool debug, - String className) async { - final ParseResponse parseResponse = - handleResponse(user, response, type, debug, className); - - final Map responseData = jsonDecode(response.data); - if (responseData.containsKey(keyParamSessionToken)) { - user.sessionToken = responseData[keyParamSessionToken]; - ParseCoreData().setSessionId(user.sessionToken!); - } - - if ((parseResponse.statusCode != 200 && parseResponse.statusCode != 201) || - type == ParseApiRQ.getAll || - type == ParseApiRQ.destroy || - type == ParseApiRQ.requestPasswordReset || - type == ParseApiRQ.verificationEmailRequest || - type == ParseApiRQ.logout) { - return parseResponse; - } else { - final ParseUser user = parseResponse.result; - await user._onResponseSuccess(); - return parseResponse; - } - } - - static ParseUser _getEmptyUser() => - ParseCoreData.instance.createParseUser(null, null, null); - - static Future _getInstallationId() async { - final ParseInstallation parseInstallation = - await ParseInstallation.currentInstallation(); - return parseInstallation.installationId; - } -} diff --git a/packages/dart/lib/src/objects/response/parse_error_response.dart b/packages/dart/lib/src/objects/response/parse_error_response.dart deleted file mode 100644 index 665de480b..000000000 --- a/packages/dart/lib/src/objects/response/parse_error_response.dart +++ /dev/null @@ -1,16 +0,0 @@ -part of flutter_parse_sdk; - -/// Handles any errors returned in response -ParseResponse buildErrorResponse( - ParseResponse response, ParseNetworkResponse apiResponse) { - final Map responseData = json.decode(apiResponse.data); - - response.error = ParseError( - code: responseData[keyCode] ?? ParseError.otherCause, - message: responseData[keyError].toString(), - ); - - response.statusCode = responseData[keyCode] ?? ParseError.otherCause; - - return response; -} diff --git a/packages/dart/lib/src/objects/response/parse_exception_response.dart b/packages/dart/lib/src/objects/response/parse_exception_response.dart deleted file mode 100644 index 649135fc2..000000000 --- a/packages/dart/lib/src/objects/response/parse_exception_response.dart +++ /dev/null @@ -1,27 +0,0 @@ -part of flutter_parse_sdk; - -/// Handles exception instead of throwing an exception -ParseResponse buildParseResponseWithException(Exception exception) { - if (exception is DioError) { - Map errorResponse = {}; - try { - errorResponse = json.decode(exception.response?.data?.toString() ?? '{}'); - } on FormatException catch (_) {} - - final errorMessage = - errorResponse['error']?.toString() ?? exception.response?.statusMessage; - - final errorCode = - int.tryParse(errorResponse['code']) ?? exception.response?.statusCode; - - return ParseResponse( - error: ParseError( - message: errorMessage ?? exception.toString(), - exception: exception, - code: errorCode ?? ParseError.otherCause, - )); - } - - return ParseResponse( - error: ParseError(message: exception.toString(), exception: exception)); -} diff --git a/packages/dart/lib/src/objects/response/parse_response_builder.dart b/packages/dart/lib/src/objects/response/parse_response_builder.dart deleted file mode 100644 index 706cd1d28..000000000 --- a/packages/dart/lib/src/objects/response/parse_response_builder.dart +++ /dev/null @@ -1,164 +0,0 @@ -part of flutter_parse_sdk; - -/// Handles all the ParseObject responses -/// -/// There are 4 probable outcomes from a Parse API call, -/// 1. Fail - [ParseResponse()] will be returned with further details -/// 2. Success but no results. [ParseResponse()] is returned. -/// 3. Success with simple OK. -/// 4. Success with results. Again [ParseResponse()] is returned -class _ParseResponseBuilder { - ParseResponse handleResponse( - dynamic object, ParseNetworkResponse apiResponse, ParseApiRQ type) { - final ParseResponse parseResponse = ParseResponse(); - final bool returnAsResult = shouldReturnAsABaseResult(type); - parseResponse.statusCode = apiResponse.statusCode; - - if (isUnsuccessfulResponse(apiResponse)) { - return buildErrorResponse(parseResponse, apiResponse); - } else if (isHealthCheck(apiResponse)) { - parseResponse.success = true; - return parseResponse; - } else if (isSuccessButNoResults(apiResponse)) { - return buildSuccessResponseWithNoResults( - parseResponse, 1, 'Successful request, but no results found'); - } else if (returnAsResult) { - return _handleSuccessWithoutParseObject( - parseResponse, object, apiResponse.data); - } else { - return _handleSuccess(parseResponse, object, apiResponse.data, type); - } - } - - /// Handles successful response without creating a ParseObject - ParseResponse _handleSuccessWithoutParseObject( - ParseResponse response, dynamic object, String responseBody) { - response.success = true; - - if (responseBody == 'OK') { - response.result = responseBody; - return response; - } - - final Map decodedJson = json.decode(responseBody); - - if (decodedJson.containsKey('params')) { - response.result = decodedJson['params']; - } else if (decodedJson.containsKey('result')) { - response.result = decodedJson['result']; - } else { - response.result = decodedJson; - } - - return response; - } - - /// Handles successful response with results - ParseResponse _handleSuccess( - ParseResponse response, - dynamic object, - String responseBody, - ParseApiRQ type, - ) { - response.success = true; - - final dynamic result = json.decode(responseBody); - - if (type == ParseApiRQ.batch) { - final List? list = result; - - if (object is List && object.length == list!.length) { - response.count = object.length; - response.results = []; - - for (int i = 0; i < object.length; i++) { - final Map objectResult = list[i]; - - if (objectResult.containsKey('success')) { - final T? item = _handleSingleResult( - object[i], - objectResult['success'], - false, - ); - - response.results!.add(item); - } else { - final ParseError error = ParseError( - code: objectResult[keyError][keyCode], - message: objectResult[keyError][keyError].toString(), - ); - - response.results!.add(error); - } - } - } - } else if (result is Map) { - final Map map = result; - if (object is Parse) { - response.result = map; - } else if (map.length == 1 && map.containsKey('results')) { - final List results = map['results']; - if (results[0] is String) { - response.results = results; - response.result = results; - response.count = results.length; - } else { - final List items = _handleMultipleResults(object, results); - response.results = items; - response.result = items; - response.count = items.length; - } - } else if (map.length == 2 && map.containsKey('count')) { - final List results = [map['count']]; - response.results = results; - response.result = results; - response.count = map['count']; - } else { - final T? item = _handleSingleResult(object, map, false); - response.count = 1; - response.result = item; - response.results = [item]; - } - } - - return response; - } - - /// Handles a response with a multiple result object - List _handleMultipleResults(T object, List data) { - final List resultsList = []; - for (dynamic value in data) { - resultsList.add(_handleSingleResult(object, value, true) as T); - } - return resultsList; - } - - /// Handles a response with a single result object - T? _handleSingleResult( - T object, Map map, bool createNewObject) { - if (createNewObject && object is ParseCloneable) { - return object.clone(map); - } else if (object is ParseObject) { - // Merge unsaved changes and response. - final Map unsaved = {}; - unsaved.addAll(object._unsavedChanges); - unsaved.forEach((String k, dynamic v) { - if (map[k] != null && map[k] != v) { - // Changes after save & before response. Keep it. - map.remove(k); - } - }); - return object - ..fromJson(map) - .._unsavedChanges.clear() - .._unsavedChanges.addAll(unsaved) - .._notifyChildrenAboutSave(); - } else { - return null; - } - } - - bool isHealthCheck(ParseNetworkResponse apiResponse) { - return ['{"status":"ok"}', 'OK'].contains(apiResponse.data); - } -} diff --git a/packages/dart/lib/src/objects/response/parse_response_utils.dart b/packages/dart/lib/src/objects/response/parse_response_utils.dart deleted file mode 100644 index f125c321a..000000000 --- a/packages/dart/lib/src/objects/response/parse_response_utils.dart +++ /dev/null @@ -1,66 +0,0 @@ -part of flutter_parse_sdk; - -/// Handles an API response and logs data if [bool] debug is enabled -@protected -ParseResponse handleResponse(dynamic object, ParseNetworkResponse response, - ParseApiRQ type, bool debug, String className) { - final ParseResponse parseResponse = - _ParseResponseBuilder().handleResponse(object, response, type); - - if (debug) { - logAPIResponse(className, type.toString(), parseResponse); - } - - return parseResponse; -} - -/// Handles an API response and logs data if [bool] debug is enabled -@protected -ParseResponse handleException( - Exception exception, ParseApiRQ type, bool debug, String className) { - final ParseResponse parseResponse = - buildParseResponseWithException(exception); - - if (debug) { - logAPIResponse(className, type.toString(), parseResponse); - } - - return parseResponse; -} - -bool shouldReturnAsABaseResult(ParseApiRQ type) { - if (type == ParseApiRQ.healthCheck || - type == ParseApiRQ.execute || - type == ParseApiRQ.add || - type == ParseApiRQ.addAll || - type == ParseApiRQ.addUnique || - type == ParseApiRQ.remove || - type == ParseApiRQ.removeAll || - type == ParseApiRQ.increment || - type == ParseApiRQ.decrement || - type == ParseApiRQ.getConfigs || - type == ParseApiRQ.addConfig) { - return true; - } else { - return false; - } -} - -bool isUnsuccessfulResponse(ParseNetworkResponse apiResponse) => - apiResponse.statusCode != 200 && apiResponse.statusCode != 201; - -bool isSuccessButNoResults(ParseNetworkResponse apiResponse) { - final dynamic decodedResponse = jsonDecode(apiResponse.data); - List? results; - if (decodedResponse is Map) { - results = decodedResponse['results']; - } else if (decodedResponse is List) { - results = decodedResponse; - } - - if (results == null) { - return false; - } - - return results.isEmpty; -} diff --git a/packages/dart/lib/src/objects/response/parse_success_no_results.dart b/packages/dart/lib/src/objects/response/parse_success_no_results.dart deleted file mode 100644 index 24271d265..000000000 --- a/packages/dart/lib/src/objects/response/parse_success_no_results.dart +++ /dev/null @@ -1,10 +0,0 @@ -part of flutter_parse_sdk; - -/// Handles successful responses with no results -ParseResponse buildSuccessResponseWithNoResults( - ParseResponse response, int code, String value) { - response.success = true; - response.statusCode = 200; - response.error = ParseError(code: code, message: value); - return response; -} diff --git a/packages/dart/lib/src/storage/core_store.dart b/packages/dart/lib/src/storage/core_store.dart deleted file mode 100644 index 5b06c2d2f..000000000 --- a/packages/dart/lib/src/storage/core_store.dart +++ /dev/null @@ -1,31 +0,0 @@ -part of flutter_parse_sdk; - -abstract class CoreStore { - Future containsKey(String key); - - Future get(String key); - - Future getBool(String key); - - Future getInt(String key); - - Future getDouble(String key); - - Future getString(String key); - - Future?> getStringList(String key); - - Future setBool(String key, bool value); - - Future setInt(String key, int value); - - Future setDouble(String key, double value); - - Future setString(String key, String value); - - Future setStringList(String key, List values); - - Future remove(String key); - - Future clear(); -} diff --git a/packages/dart/lib/src/storage/core_store_memory.dart b/packages/dart/lib/src/storage/core_store_memory.dart deleted file mode 100644 index b35c10322..000000000 --- a/packages/dart/lib/src/storage/core_store_memory.dart +++ /dev/null @@ -1,75 +0,0 @@ -part of flutter_parse_sdk; - -class CoreStoreMemoryImp implements CoreStore { - static Map _data = {}; - - @override - Future clear() async { - _data = {}; - } - - @override - Future containsKey(String key) async { - return _data.containsKey(key); - } - - @override - Future get(String key) async { - return _data[key]; - } - - @override - Future getBool(String key) async { - return _data[key]; - } - - @override - Future getDouble(String key) async { - return _data[key]; - } - - @override - Future getInt(String key) async { - return _data[key]; - } - - @override - Future getString(String key) async { - return _data[key]; - } - - @override - Future?> getStringList(String key) async { - return _data[key]; - } - - @override - Future remove(String key) async { - return _data.remove(key); - } - - @override - Future setBool(String key, bool value) async { - _data[key] = value; - } - - @override - Future setDouble(String key, double value) async { - _data[key] = value; - } - - @override - Future setInt(String key, int value) async { - _data[key] = value; - } - - @override - Future setString(String key, String value) async { - _data[key] = value; - } - - @override - Future setStringList(String key, List values) async { - _data[key] = values; - } -} diff --git a/packages/dart/lib/src/storage/core_store_sem_impl.dart b/packages/dart/lib/src/storage/core_store_sem_impl.dart deleted file mode 100644 index 9fc826c8d..000000000 --- a/packages/dart/lib/src/storage/core_store_sem_impl.dart +++ /dev/null @@ -1,119 +0,0 @@ -part of flutter_parse_sdk; - -// ignore_for_file: deprecated_member_use -class CoreStoreSembastImp implements CoreStore { - CoreStoreSembastImp._internal(this._database, this._store); - - static CoreStoreSembastImp? _instance; - - static Future getInstance(String dbPath, - {DatabaseFactory? factory, String? password}) async { - password ??= 'flutter_sdk'; - if (_instance == null) { - factory ??= !parseIsWeb ? databaseFactoryIo : databaseFactoryWeb; - assert(() { - if (parseIsWeb) { - print( - '***********************************************************************************************************'); - print( - 'Warning: CoreStoreSembastImp of the Parse_Server_SDK does not encrypt the database on WEB.'); - print( - '***********************************************************************************************************'); - } - if (password == 'flutter_sdk') { - print( - '***********************************************************************************************************'); - print( - 'Warning: CoreStoreSembastImp uses the default password. Specify a custom password for increased security.'); - print( - '***********************************************************************************************************'); - } - return true; - }()); - final Database db = await factory.openDatabase(dbPath, - codec: !parseIsWeb ? getXXTeaSembastCodec(password: password) : null); - _instance = - CoreStoreSembastImp._internal(db, StoreRef.main()); - } - - return _instance!; - } - - final Database _database; - final StoreRef _store; - - @override - Future clear() { - return _store.drop(_database) as Future; - } - - @override - Future containsKey(String key) { - return _store.record(key).exists(_database); - } - - @override - Future get(String key) { - return _store.record(key).get(_database); - } - - @override - Future getBool(String key) async { - final bool? storedItem = await get(key); - return storedItem; - } - - @override - Future getDouble(String key) async { - final double? storedItem = await get(key); - return storedItem; - } - - @override - Future getInt(String key) async { - final int? storedItem = await get(key); - return storedItem; - } - - @override - Future getString(String key) async { - final String? storedItem = await get(key); - return storedItem; - } - - @override - Future?> getStringList(String key) async { - final List? storedItem = await get(key); - return storedItem; - } - - @override - Future remove(String key) { - return _store.record(key).delete(_database); - } - - @override - Future setBool(String key, bool value) { - return _store.record(key).put(_database, value); - } - - @override - Future setDouble(String key, double value) { - return _store.record(key).put(_database, value); - } - - @override - Future setInt(String key, int value) { - return _store.record(key).put(_database, value); - } - - @override - Future setString(String key, String value) { - return _store.record(key).put(_database, value); - } - - @override - Future setStringList(String key, List values) { - return _store.record(key).put(_database, values); - } -} diff --git a/packages/dart/lib/src/storage/xxtea_codec.dart b/packages/dart/lib/src/storage/xxtea_codec.dart deleted file mode 100644 index 11753cf01..000000000 --- a/packages/dart/lib/src/storage/xxtea_codec.dart +++ /dev/null @@ -1,60 +0,0 @@ -part of flutter_parse_sdk; - -class _XXTeaEncoder extends Converter, String> { - _XXTeaEncoder(this.key); - - final String key; - - @override - String convert(Map input) => - xxtea.encryptToString(json.encode(input), key)!; -} - -class _XXTeaDecoder extends Converter> { - _XXTeaDecoder(this.key); - - final String key; - - @override - Map convert(String input) { - final dynamic result = json.decode(xxtea.decryptToString(input, key)!); - if (result is Map) { - return result.cast(); - } - throw FormatException('invalid input $input'); - } -} - -/// Simple encryption codec using xxtea -/// It requires a password to encrypt/decrypt the data -class _XXTeaCodec extends Codec, String> { - /// A non null [password] to use for the encryption/decryption - _XXTeaCodec(String password) { - _encoder = _XXTeaEncoder(password); - _decoder = _XXTeaDecoder(password); - } - - late _XXTeaEncoder _encoder; - late _XXTeaDecoder _decoder; - - @override - Converter> get decoder => _decoder; - - @override - Converter, String> get encoder => _encoder; -} - -/// Create a codec to use when opening an encrypted sembast database -/// -/// The usage is then -/// -/// ```dart -/// // Initialize the encryption codec with a user password -/// var codec = getXXTeaSembastCodec(password: '[your_user_password]'); -/// // Open the database with the codec -/// Database db = await factory.openDatabase(dbPath, codec: codec); -/// -/// // ...your database is ready to use as encrypted -/// ``` -SembastCodec getXXTeaSembastCodec({required String password}) => - SembastCodec(signature: 'xxtea', codec: _XXTeaCodec(password)); diff --git a/packages/dart/lib/src/utils/parse_date_format.dart b/packages/dart/lib/src/utils/parse_date_format.dart deleted file mode 100644 index 427829357..000000000 --- a/packages/dart/lib/src/utils/parse_date_format.dart +++ /dev/null @@ -1,66 +0,0 @@ -part of flutter_parse_sdk; - -final _ParseDateFormat _parseDateFormat = _ParseDateFormat._internal(); - -/// This is the currently used date format. It is precise to the millisecond. -class _ParseDateFormat { - _ParseDateFormat._internal(); - - /// Deserialize an ISO-8601 full-precision extended format representation of date string into [DateTime]. - DateTime? parse(String strDate) { - try { - return DateTime.parse(strDate); - } on FormatException { - return null; - } - } - - /// Serialize [DateTime] into an ISO-8601 full-precision extended format representation. - String format(DateTime datetime) { - if (!datetime.isUtc) { - datetime = datetime.toUtc(); - } - - final String y = _fourDigits(datetime.year); - final String m = _twoDigits(datetime.month); - final String d = _twoDigits(datetime.day); - final String h = _twoDigits(datetime.hour); - final String min = _twoDigits(datetime.minute); - final String sec = _twoDigits(datetime.second); - final String ms = _threeDigits(datetime.millisecond); - - return '$y-$m-${d}T$h:$min:$sec.${ms}Z'; - } - - static String _fourDigits(int n) { - final int absN = n.abs(); - final String sign = n < 0 ? '-' : ''; - if (absN >= 1000) { - return '$n'; - } - if (absN >= 100) { - return '${sign}0$absN'; - } - if (absN >= 10) { - return '${sign}00$absN'; - } - return '${sign}000$absN'; - } - - static String _threeDigits(int n) { - if (n >= 100) { - return '$n'; - } - if (n >= 10) { - return '0$n'; - } - return '00$n'; - } - - static String _twoDigits(int n) { - if (n >= 10) { - return '$n'; - } - return '0$n'; - } -} diff --git a/packages/dart/lib/src/utils/parse_decoder.dart b/packages/dart/lib/src/utils/parse_decoder.dart deleted file mode 100644 index 252793ee3..000000000 --- a/packages/dart/lib/src/utils/parse_decoder.dart +++ /dev/null @@ -1,102 +0,0 @@ -part of flutter_parse_sdk; - -List _convertJSONArrayToList(List array) { - return array.map(parseDecode).toList(); -} - -Map _convertJSONObjectToMap(Map object) { - final Map map = {}; - object.forEach((String key, dynamic value) { - map.putIfAbsent(key, () => parseDecode(value)); - }); - return map; -} - -/// Decode any type value -dynamic parseDecode(dynamic value) { - if (value is List) { - return _convertJSONArrayToList(value); - } - - if (value is bool) { - return value; - } - - if (value is int) { - return value.toInt(); - } - - if (value is double) { - return value.toDouble(); - } - - if (value is num) { - return value; - } - - if (value is! Map) { - return value; - } - - final Map map = value as Map; - - if (!map.containsKey('__type') && !map.containsKey('className')) { - return _convertJSONObjectToMap(map); - } - - /// Decoding from Api Response - if (map.containsKey('__type')) { - switch (map['__type']) { - case 'Date': - final String iso = map['iso']; - return _parseDateFormat.parse(iso); - case 'Bytes': - final String val = map['base64']; - return base64.decode(val); - case 'Pointer': - case 'Object': - final String className = map['className']; - return ParseCoreData.instance.createObject(className).fromJson(map); - case 'File': - return ParseCoreData.instance - .createFile(url: map['url'], name: map['name']) - .fromJson(map); - case 'GeoPoint': - final num latitude = map['latitude'] ?? 0.0; - final num longitude = map['longitude'] ?? 0.0; - return ParseGeoPoint( - latitude: latitude.toDouble(), longitude: longitude.toDouble()); - case 'Relation': - return ParseRelation.fromJson(map); - } - } - - /// Decoding from locally cached JSON - if (map.containsKey('className')) { - switch (map['className']) { - case 'GeoPoint': - final num latitude = map['latitude'] ?? 0.0; - final num longitude = map['longitude'] ?? 0.0; - return ParseGeoPoint( - latitude: latitude.toDouble(), - longitude: longitude.toDouble(), - ); - - case 'ParseArray': - return _ParseArray.fromFullJson(map); - - case 'ParseNumber': - return _ParseNumber.fromFullJson(map); - - case 'ParseRelation': - return _ParseRelation.fromFullJson(map); - - default: - return ParseCoreData.instance - .createObject(map['className']) - .fromJson(map); - } - } - - return null; -} diff --git a/packages/dart/lib/src/utils/parse_encoder.dart b/packages/dart/lib/src/utils/parse_encoder.dart deleted file mode 100644 index d712acb83..000000000 --- a/packages/dart/lib/src/utils/parse_encoder.dart +++ /dev/null @@ -1,89 +0,0 @@ -part of flutter_parse_sdk; - -/// Custom encoder for DateTime -dynamic dateTimeEncoder(dynamic item) { - if (item is DateTime) { - return _parseDateFormat.format(item); - } - return item; -} - -/// Custom json encoder for types related to parse -dynamic parseEncode(dynamic value, {bool full = false}) { - if (value is Uint8List) { - return _encodeUint8List(value); - } - - if (value is DateTime) { - return _encodeDate(value); - } - - if (value is Iterable) { - return value.map((dynamic value) { - return parseEncode(value, full: full); - }).toList(); - } - - if (value is _ParseArray) { - return value.toJson(full: full); - } - - if (value is _ParseNumber) { - return value.toJson(full: full); - } - - if (value is _ParseOperation) { - return value.toJson(full: full); - } - - if (value is Map) { - value.forEach((dynamic k, dynamic v) { - value[k] = parseEncode(v, full: full); - }); - } - - if (value is ParseGeoPoint) { - return value.toJson(full: full); - } - - if (value is ParseFileBase) { - return value.toJson(full: full); - } - - if (value is ParseRelation) { - return value.toJson(full: full); - } - - if (value is ParseObject) { - if (full) { - return value.toJson(full: full); - } else { - return value.toPointer(); - } - } - - if (value is ParseACL) { - return value.toJson(); - } - - return value; -} - -Map _encodeUint8List(Uint8List value) { - return {'__type': 'Bytes', 'base64': base64.encode(value)}; -} - -Map _encodeDate(DateTime date) { - return { - '__type': 'Date', - 'iso': _parseDateFormat.format(date) - }; -} - -Map encodeObject(String className, String objectId) { - return { - '__type': 'Pointer', - keyVarClassName: className, - keyVarObjectId: objectId - }; -} diff --git a/packages/dart/lib/src/utils/parse_live_list.dart b/packages/dart/lib/src/utils/parse_live_list.dart deleted file mode 100644 index 99df16cc2..000000000 --- a/packages/dart/lib/src/utils/parse_live_list.dart +++ /dev/null @@ -1,791 +0,0 @@ -part of flutter_parse_sdk; - -// ignore_for_file: invalid_use_of_protected_member -class ParseLiveList { - ParseLiveList._(this._query, this._listeningIncludes, this._lazyLoading, - {List? preloadedColumns}) - : _preloadedColumns = preloadedColumns ?? const [] { - _debug = isDebugEnabled(); - } - - static Future> create( - QueryBuilder query, { - bool? listenOnAllSubItems, - List? listeningIncludes, - bool lazyLoading = true, - List? preloadedColumns, - }) { - final ParseLiveList parseLiveList = ParseLiveList._( - query, - listenOnAllSubItems == true - ? _toIncludeMap( - query.limiters['include']?.toString().split(',') ?? []) - : _toIncludeMap(listeningIncludes ?? []), - lazyLoading, - preloadedColumns: preloadedColumns ?? const [], - ); - - return parseLiveList._init().then((_) { - return parseLiveList; - }); - } - - final QueryBuilder _query; - //The included Items, where LiveList should look for updates. - final Map _listeningIncludes; - final bool _lazyLoading; - final List _preloadedColumns; - - List> _list = >[]; - late StreamController> _eventStreamController; - int _nextID = 0; - late bool _debug; - - int get nextID => _nextID++; - - /// is object1 listed after object2? - bool? after(T object1, T object2) { - List fields = []; - - if (_query.limiters.containsKey('order')) { - fields = _query.limiters['order'].toString().split(','); - } - fields.add(keyVarCreatedAt); - for (String key in fields) { - bool reverse = false; - if (key.startsWith('-')) { - reverse = true; - key = key.substring(1); - } - final dynamic val1 = object1.get(key); - final dynamic val2 = object2.get(key); - - if (val1 == null && val2 == null) { - break; - } - if (val1 == null) { - return reverse; - } - if (val2 == null) { - return !reverse; - } - - if (val1 is num && val2 is num) { - if (val1 < val2) { - return reverse; - } - if (val1 > val2) { - return !reverse; - } - } else if (val1 is String && val2 is String) { - if (val1.toString().compareTo(val2) < 0) { - return reverse; - } - if (val1.toString().compareTo(val2) > 0) { - return !reverse; - } - } else if (val1 is DateTime && val2 is DateTime) { - if (val1.isAfter(val2)) { - return !reverse; - } - if (val1.isBefore(val2)) { - return reverse; - } - } - } - return null; - } - - int get size { - return _list.length; - } - - List get includes => - _query.limiters['include']?.toString().split(',') ?? []; - - Map get _includePaths { - return _toIncludeMap(includes); - } - - static Map _toIncludeMap(List includes) { - final Map includesMap = {}; - - for (String includeString in includes) { - final List pathParts = includeString.split('.'); - Map root = includesMap; - for (String pathPart in pathParts) { - root.putIfAbsent(pathPart, () => {}); - root = root[pathPart]; - } - } - - return includesMap; - } - - Stream> get stream => _eventStreamController.stream; - Subscription? _liveQuerySubscription; - StreamSubscription? _liveQueryClientEventSubscription; - final Future _updateQueue = Future.value(); - - Future _runQuery() async { - final QueryBuilder query = QueryBuilder.copy(_query); - if (_debug) { - print('ParseLiveList: lazyLoading is ${_lazyLoading ? 'on' : 'off'}'); - } - if (_lazyLoading) { - final List keys = _preloadedColumns.toList(); - if (_lazyLoading && query.limiters.containsKey('order')) { - keys.addAll( - query.limiters['order'].toString().split(',').map((String string) { - if (string.startsWith('-')) { - return string.substring(1); - } - return string; - }), - ); - } - if (keys.isNotEmpty) { - query.keysToReturn(keys); - } - } - return await query.query(); - } - - Future _init() async { - _eventStreamController = StreamController>(); - - final ParseResponse parseResponse = await _runQuery(); - if (parseResponse.success) { - _list = parseResponse.results - ?.map>((dynamic element) => - ParseLiveListElement(element, - updatedSubItems: _listeningIncludes, - loaded: !_lazyLoading)) - .toList() ?? - >[]; - } - - LiveQuery() - .client - .subscribe(QueryBuilder.copy(_query), - copyObject: _query.object.clone(_query.object.toJson())) - .then((Subscription subscription) { - _liveQuerySubscription = subscription; - - //This should synchronize the events. Not sure if it is necessary, but it should help preventing unexpected results. - subscription.on(LiveQueryEvent.create, - (T object) => _updateQueue.whenComplete(() => _objectAdded(object))); - subscription.on( - LiveQueryEvent.update, - (T object) => - _updateQueue.whenComplete(() => _objectUpdated(object))); - subscription.on(LiveQueryEvent.enter, - (T object) => _updateQueue.whenComplete(() => _objectAdded(object))); - subscription.on( - LiveQueryEvent.leave, - (T object) => - _updateQueue.whenComplete(() => _objectDeleted(object))); - subscription.on( - LiveQueryEvent.delete, - (T object) => - _updateQueue.whenComplete(() => _objectDeleted(object))); -// subscription.on(LiveQueryEvent.create, _objectAdded); -// subscription.on(LiveQueryEvent.update, _objectUpdated); -// subscription.on(LiveQueryEvent.enter, _objectAdded); -// subscription.on(LiveQueryEvent.leave, _objectDeleted); -// subscription.on(LiveQueryEvent.delete, _objectDeleted); - }); - - _liveQueryClientEventSubscription = LiveQuery() - .client - .getClientEventStream - .listen((LiveQueryClientEvent event) async { - if (event == LiveQueryClientEvent.connected) { - _updateQueue.whenComplete(() async { - List> tasks = >[]; - final ParseResponse parseResponse = await _runQuery(); - if (parseResponse.success) { - final List newList = parseResponse.results as List? ?? []; - - //update List - for (int i = 0; i < _list.length; i++) { - final ParseObject currentObject = _list[i].object; - final String? currentObjectId = currentObject.objectId; - - bool stillInList = false; - - for (int j = 0; j < newList.length; j++) { - if (newList[j].get(keyVarObjectId) == currentObjectId) { - stillInList = true; - if (newList[j] - .get(keyVarUpdatedAt)! - .isAfter(currentObject.get(keyVarUpdatedAt)!)) { - final QueryBuilder queryBuilder = - QueryBuilder.copy(_query) - ..whereEqualTo(keyVarObjectId, currentObjectId); - tasks.add(queryBuilder - .query() - .then((ParseResponse result) async { - List? results = result.results; - if (result.success && results != null) { - await _objectUpdated(results.first); - } - })); - } - newList.removeAt(j); - j--; - break; - } - } - if (!stillInList) { - _objectDeleted(currentObject as T); - i--; - } - } - - for (int i = 0; i < newList.length; i++) { - tasks.add(_objectAdded(newList[i], loaded: false)); - } - } - await Future.wait(tasks); - tasks = >[]; - for (ParseLiveListElement element in _list) { - tasks.add(element.reconnected()); - } - await Future.wait(tasks); - }); - } - }); - } - - static Future _loadIncludes(ParseObject? object, - {ParseObject? oldObject, Map? paths}) async { - if (object == null || paths == null || paths.isEmpty) { - return; - } - - final List> loadingNodes = >[]; - - for (String key in paths.keys) { - if (object.containsKey(key)) { - ParseObject? includedObject = object.get(key); - if (includedObject != null) { - //If the object is not fetched - if (!includedObject.containsKey(keyVarUpdatedAt)) { - //See if oldObject contains key - ParseObject? keyInOld = oldObject?.get(key); - if (keyInOld != null) { - //If the object is not fetched || the ids don't match / the pointer changed - if (!keyInOld.containsKey(keyVarUpdatedAt) || - includedObject.objectId != keyInOld.objectId) { - //fetch from web including sub objects - //same as down there - final QueryBuilder queryBuilder = QueryBuilder< - ParseObject>(ParseObject(includedObject.parseClassName)) - ..whereEqualTo(keyVarObjectId, includedObject.objectId) - ..includeObject(_toIncludeStringList(paths[key])); - loadingNodes.add(queryBuilder - .query() - .then((ParseResponse parseResponse) { - List? results = parseResponse.results; - if (parseResponse.success && - results != null && - results.length == 1) { - object[key] = results[0]; - } - })); - continue; - } else { - includedObject = keyInOld; - object[key] = includedObject; - //recursion - loadingNodes - .add(_loadIncludes(includedObject, paths: paths[key])); - continue; - } - } else { - //fetch from web including sub objects - //same as up there - final QueryBuilder queryBuilder = QueryBuilder< - ParseObject>(ParseObject(includedObject.parseClassName)) - ..whereEqualTo(keyVarObjectId, includedObject.objectId) - ..includeObject(_toIncludeStringList(paths[key])); - loadingNodes.add(queryBuilder - .query() - .then((ParseResponse parseResponse) { - List? results = parseResponse.results; - if (parseResponse.success && - results != null && - results.length == 1) { - object[key] = results[0]; - } - })); - continue; - } - } - } else { - //recursion - loadingNodes.add(_loadIncludes(includedObject, - oldObject: oldObject?.get(key), paths: paths[key])); - continue; - } - } else { - //All fine for this key - continue; - } - } - await Future.wait(loadingNodes); - } - - static List _toIncludeStringList(Map includes) { - final List includeList = []; - for (String key in includes.keys) { - includeList.add(key); - // ignore: avoid_as - if ((includes[key] as Map).isNotEmpty) { - includeList.addAll( - _toIncludeStringList(includes[key]).map((String e) => '$key.$e')); - } - } - return includeList; - } - - Future _objectAdded(T object, - {bool loaded = true, bool fetchedIncludes = false}) async { - //This line seems unnecessary, but without this, weird things happen. - //(Hide first element, hide second, view first, view second => second is displayed twice) - object = object.clone(object.toJson(full: true)); - - if (!fetchedIncludes) { - await _loadIncludes(object, paths: _includePaths); - } - for (int i = 0; i < _list.length; i++) { - if (after(object, _list[i].object) != true) { - _list.insert( - i, - ParseLiveListElement(object, - loaded: loaded, updatedSubItems: _listeningIncludes)); - _eventStreamController.sink.add(ParseLiveListAddEvent( - i, object.clone(object.toJson(full: true)))); - return; - } - } - _list.add(ParseLiveListElement(object, - loaded: loaded, updatedSubItems: _listeningIncludes)); - _eventStreamController.sink.add(ParseLiveListAddEvent( - _list.length - 1, object.clone(object.toJson(full: true)))); - } - - Future _objectUpdated(T object) async { - for (int i = 0; i < _list.length; i++) { - if (_list[i].object.get(keyVarObjectId) == - object.get(keyVarObjectId)) { - await _loadIncludes(object, - oldObject: _list[i].object, paths: _includePaths); - if (after(_list[i].object, object) == null) { - _list[i].object = object.clone(object.toJson(full: true)); - _eventStreamController.sink.add(ParseLiveListUpdateEvent( - i, object.clone(object.toJson(full: true)))); - } else { - _list.removeAt(i).dispose(); - _eventStreamController.sink.add(ParseLiveListDeleteEvent( - i, object.clone(object.toJson(full: true)))); - await _objectAdded(object.clone(object.toJson(full: true)), - fetchedIncludes: true); - } - break; - } - } - } - - Future _objectDeleted(T object) async { - for (int i = 0; i < _list.length; i++) { - if (_list[i].object.get(keyVarObjectId) == - object.get(keyVarObjectId)) { - await _loadIncludes(object, - oldObject: _list[i].object, paths: _includePaths); - _list.removeAt(i).dispose(); - _eventStreamController.sink.add(ParseLiveListDeleteEvent( - i, object.clone(object.toJson(full: true)))); - break; - } - } - } - - Stream getAt(final int index) async* { - if (index < _list.length) { - if (!_list[index].loaded) { - final QueryBuilder queryBuilder = QueryBuilder.copy(_query) - ..whereEqualTo( - keyVarObjectId, _list[index].object.get(keyVarObjectId)) - ..setLimit(1); - final ParseResponse response = await queryBuilder.query(); - if (_list.isEmpty) { - yield* _createStreamError( - ParseError(message: 'ParseLiveList: _list is empty')); - return; - } - if (response.success) { - _list[index].object = response.results?.first; - } else { - ParseError? error = response.error; - if (error != null) yield* _createStreamError(error); - return; - } - } -// just for testing -// await Future.delayed(const Duration(seconds: 2)); - yield _list[index].object; - yield* _list[index].stream; - } - } - - String idOf(int index) { - if (index < _list.length) { - return _list[index].object.objectId ?? 'NotFound'; - } - return 'NotFound'; - } - - String getIdentifier(int index) { - if (index < _list.length) { - return idOf(index) + - _list[index].object.get(keyVarUpdatedAt).toString(); - } - return 'NotFound'; - } - - T? getLoadedAt(int index) { - if (index < _list.length && _list[index].loaded) { - return _list[index].object; - } - return null; - } - - T? getPreLoadedAt(int index) { - if (index < _list.length) { - return _list[index].object; - } - return null; - } - - void dispose() { - Subscription? liveQuerySubscription = _liveQuerySubscription; - if (liveQuerySubscription != null) { - LiveQuery().client.unSubscribe(liveQuerySubscription); - _liveQuerySubscription = null; - } - StreamSubscription? liveQueryClientEventSubscription = - _liveQueryClientEventSubscription; - if (liveQueryClientEventSubscription != null) { - liveQueryClientEventSubscription.cancel(); - _liveQueryClientEventSubscription = null; - } - while (_list.isNotEmpty) { - _list.removeLast().dispose(); - } - } -} - -class ParseLiveElement extends ParseLiveListElement { - ParseLiveElement(T object, {bool loaded = false, List? includeObject}) - : super(object, - loaded: loaded, - updatedSubItems: - ParseLiveList._toIncludeMap(includeObject ?? [])) { - _includes = ParseLiveList._toIncludeMap(includeObject ?? []); - queryBuilder = QueryBuilder(object.clone({})) - ..whereEqualTo(keyVarObjectId, object.objectId); - if (includeObject != null) { - queryBuilder.includeObject(includeObject); - } - _init(object, loaded: loaded, includeObject: includeObject); - } - - Subscription? _subscription; - Map? _includes; - late QueryBuilder queryBuilder; - - Future _init(T object, - {bool loaded = false, List? includeObject}) async { - if (!loaded) { - final ParseResponse parseResponse = await queryBuilder.query(); - if (parseResponse.success) { - super.object = parseResponse.result.first; - } - } - - Subscription subscription = await LiveQuery().client.subscribe( - QueryBuilder.copy(queryBuilder), - copyObject: object.clone({})); - _subscription = subscription; - - subscription.on(LiveQueryEvent.update, (T newObject) async { - await ParseLiveList._loadIncludes(newObject, - oldObject: super.object, paths: _includes); - super.object = newObject; - }); - - LiveQuery() - .client - .getClientEventStream - .listen((LiveQueryClientEvent event) { - _subscriptionQueue.whenComplete(() async { - // ignore: missing_enum_constant_in_switch - switch (event) { - case LiveQueryClientEvent.connected: - final ParseResponse parseResponse = await queryBuilder.query(); - if (parseResponse.success) { - super.object = parseResponse.result.first; - } - break; - } - }); - }); - } - - @override - void dispose() { - final Subscription? subscription = _subscription; - if (subscription != null) { - LiveQuery().client.unSubscribe(subscription); - _subscription = null; - } - super.dispose(); - } -} - -class ParseLiveListElement { - ParseLiveListElement(this._object, - {bool loaded = false, Map? updatedSubItems}) - : _loaded = loaded { - _updatedSubItems = - _toSubscriptionMap(updatedSubItems ?? {}); - if (_updatedSubItems.isNotEmpty) { - _liveQuery = LiveQuery(); - _subscribe(); - } - } - - final StreamController _streamController = StreamController.broadcast(); - T _object; - bool _loaded = false; - late Map _updatedSubItems; - LiveQuery? _liveQuery; - final Future _subscriptionQueue = Future.value(); - - Stream get stream => _streamController.stream; - - T get object => _object.clone(_object.toJson(full: true)); - - Map _toSubscriptionMap(Map map) { - final Map result = {}; - for (String key in map.keys) { - result.putIfAbsent(PathKey(key), () => _toSubscriptionMap(map[key])); - } - return result; - } - - Map _toKeyMap(Map map) { - final Map result = {}; - for (PathKey key in map.keys) { - result.putIfAbsent(key.key, () => _toKeyMap(map[key])); - } - return result; - } - - void _subscribe() { - _subscriptionQueue.whenComplete(() async { - final T object = _object; - if (_updatedSubItems.isNotEmpty) { - final List> tasks = >[]; - for (PathKey key in _updatedSubItems.keys) { - tasks.add(_subscribeSubItem(object, key, - object.get(key.key), _updatedSubItems[key])); - } - await Future.wait(tasks); - } - }); - } - - void _unsubscribe(Map subscriptions) { - for (PathKey key in subscriptions.keys) { - final Subscription? subscription = key.subscription; - LiveQuery? liveQuery = _liveQuery; - if (liveQuery != null && subscription != null) { - liveQuery.client.unSubscribe(subscription); - key.subscription = null; - } - _unsubscribe(subscriptions[key]); - } - } - - Future _subscribeSubItem(ParseObject parentObject, PathKey currentKey, - ParseObject? subObject, Map path) async { - LiveQuery? liveQuery = _liveQuery; - if (liveQuery != null && subObject != null) { - final List> tasks = >[]; - for (PathKey key in path.keys) { - tasks.add(_subscribeSubItem( - subObject, key, subObject.get(key.key), path[key])); - } - final QueryBuilder queryBuilder = - QueryBuilder(subObject) - ..whereEqualTo(keyVarObjectId, subObject.objectId); - - tasks.add(liveQuery.client - .subscribe(queryBuilder) - .then((Subscription subscription) { - currentKey.subscription = subscription; - subscription.on(LiveQueryEvent.update, (ParseObject newObject) async { - _subscriptionQueue.whenComplete(() async { - await ParseLiveList._loadIncludes(newObject, - oldObject: subObject, paths: _toKeyMap(path)); - // ignore: deprecated_member_use_from_same_package - parentObject[currentKey.key] = newObject; - if (!_streamController.isClosed) { - _streamController.add(object); - //Resubscribe subitems - // TODO(any): only resubscribe on changed pointers - _unsubscribe(path); - for (PathKey key in path.keys) { - tasks.add(_subscribeSubItem(newObject, key, - newObject.get(key.key), path[key])); - } - } - await Future.wait(tasks); - }); - }); - })); - await Future.wait(tasks); - } - } - - set object(T value) { - _loaded = true; - _object = value; - _unsubscribe(_updatedSubItems); - _subscribe(); - _streamController.add(object); - } - - bool get loaded => _loaded; - - void dispose() { - _unsubscribe(_updatedSubItems); - _streamController.close(); - } - - Future reconnected() async { - if (loaded) { - _subscriptionQueue.whenComplete(() async { - await _updateSubItems(_object, _updatedSubItems); -// _streamController.add(_object?.clone(_object.toJson(full: true))); - }); - } - } - - List _getIncludeList(Map path) { - final List includes = []; - for (PathKey key in path.keys) { - includes.add(key.key); - includes.addAll( - _getIncludeList(path[key]).map((String e) => '${key.key}.$e')); - } - return includes; - } - - Future _updateSubItems( - ParseObject root, Map path) async { - final List> tasks = >[]; - for (PathKey key in path.keys) { - ParseObject? subObject = root.get(key.key); - if (subObject != null) { - if (subObject.containsKey(keyVarUpdatedAt) == true) { - final QueryBuilder queryBuilder = - QueryBuilder(subObject) - ..keysToReturn([keyVarUpdatedAt]) - ..whereEqualTo(keyVarObjectId, subObject.objectId); - final ParseResponse parseResponse = await queryBuilder.query(); - final List? results = parseResponse.results; - if (parseResponse.success && - results != null && - results.first.updatedAt != subObject.updatedAt) { - queryBuilder.limiters.remove('keys'); - queryBuilder.includeObject(_getIncludeList(path[key])); - final ParseResponse parseResponse = await queryBuilder.query(); - if (parseResponse.success) { - subObject = parseResponse.result.first; -// root.getObjectData()[key.key] = subObject; - Subscription? subscription = key.subscription; - if (subscription != null && - subscription.eventCallbacks.containsKey('update') == true) { - Function? eventCallback = subscription.eventCallbacks['update']; - if (eventCallback != null) { - eventCallback(subObject); - } - } -// key.subscription.eventCallbacks["update"](subObject); - break; - } - } - } - tasks.add(_updateSubItems(subObject, path[key])); - } - } - await Future.wait(tasks); - } -} - -class PathKey { - PathKey(this.key, {this.subscription}); - - final String key; - Subscription? subscription; - @override - String toString() { - return 'PathKey(key: $key, subscription: ${subscription?.requestId})'; - } -} - -abstract class ParseLiveListEvent { - ParseLiveListEvent(this._index, this._object); - - final int _index; - final T _object; - - int get index => _index; - - T get object => _object; -} - -class ParseLiveListAddEvent - extends ParseLiveListEvent { - ParseLiveListAddEvent(int index, T object) : super(index, object); -} - -class ParseLiveListUpdateEvent - extends ParseLiveListEvent { - ParseLiveListUpdateEvent(int index, T object) : super(index, object); -} - -class ParseLiveListDeleteEvent - extends ParseLiveListEvent { - ParseLiveListDeleteEvent(int index, T object) : super(index, object); -} - -class ParseLiveListElementSnapshot { - ParseLiveListElementSnapshot( - {this.loadedData, this.error, this.preLoadedData}); - - final T? loadedData; - final T? preLoadedData; - - final ParseError? error; - - bool get hasData => loadedData != null; - - bool get hasPreLoadedData => preLoadedData != null; - - bool get failed => error != null; -} diff --git a/packages/dart/lib/src/utils/parse_logger.dart b/packages/dart/lib/src/utils/parse_logger.dart deleted file mode 100644 index 0e3f507f5..000000000 --- a/packages/dart/lib/src/utils/parse_logger.dart +++ /dev/null @@ -1,44 +0,0 @@ -part of flutter_parse_sdk; - -void logAPIResponse( - String className, String type, ParseResponse parseResponse) { - const String spacer = ' \n'; - String responseString = ''; - - responseString += '╭-- Parse Response'; - responseString += '\nClass: $className'; - responseString += '\nFunction: $type'; - - if (parseResponse.success) { - responseString += '\nStatus Code: ${parseResponse.statusCode}'; - if (parseResponse.result != null) { - responseString += '\nPayload: ${parseResponse.result.toString()}'; - } else { - responseString += '\nReponse: OK'; - } - } else if (!parseResponse.success) { - responseString += '\nStatus Code: ${parseResponse.error!.code}'; - responseString += '\nType: ${parseResponse.error!.type}'; - - final String errorOrException = - parseResponse.error!.exception != null ? 'Exception' : 'Error'; - - responseString += '\n$errorOrException: ${parseResponse.error!.message}'; - } - - responseString += '\n╰-- \n'; - responseString += spacer; - print(responseString); -} - -void logRequest( - String? appName, String className, String type, String uri, String body) { - String requestString = ' \n'; - final String name = appName != null ? '$appName ' : ''; - requestString += '----\n${name}API Request ($className : $type) :'; - requestString += '\nUri: $uri'; - requestString += '\nBody: $body'; - - requestString += '\n----\n'; - print(requestString); -} diff --git a/packages/dart/lib/src/utils/parse_login_helpers.dart b/packages/dart/lib/src/utils/parse_login_helpers.dart deleted file mode 100644 index 88f03a54a..000000000 --- a/packages/dart/lib/src/utils/parse_login_helpers.dart +++ /dev/null @@ -1,21 +0,0 @@ -part of flutter_parse_sdk; - -Map facebook(String token, String id, DateTime expires) { - return { - 'access_token': token, - 'id': id, - 'expiration_date': expires.toString() - }; -} - -Map google(String token, String id, String idToken) { - return { - 'access_token': token, - 'id': id, - 'id_token': idToken - }; -} - -Map apple(String token, String id) { - return {'token': token, 'id': id}; -} diff --git a/packages/dart/lib/src/utils/parse_utils.dart b/packages/dart/lib/src/utils/parse_utils.dart deleted file mode 100644 index 03bb37781..000000000 --- a/packages/dart/lib/src/utils/parse_utils.dart +++ /dev/null @@ -1,129 +0,0 @@ -part of flutter_parse_sdk; - -/// Checks whether debug is enabled -/// -/// Debug can be set in 2 places, one global param in the Parse.initialize, and -/// then can be overwritten class by class -bool isDebugEnabled({bool? objectLevelDebug}) { - return objectLevelDebug ?? ParseCoreData().debug; -} - -/// Convert list of strings to a string with commas -String concatenateArray(List list) { - String output = ''; - - for (final String item in list) { - if (item == list.first) { - output += item; - } else { - output += ',$item'; - } - } - - return output; -} - -/// Converts the object to the correct value for JSON, -/// -/// Strings are wrapped with "" but integers and others are not -dynamic convertValueToCorrectType(dynamic value) { - /*if (value is String && !value.contains('__type')) { - return '\"$value\"'; - }*/ - - if (value is DateTime || value is ParseObject) { - return parseEncode(value); - } else { - return value; - } -} - -/// Sanitises a url -Uri getSanitisedUri(ParseClient client, String pathToAppend, - {Map? queryParams, String? query}) { - final Uri tempUri = Uri.parse(ParseCoreData().serverUrl); - - final Uri url = Uri( - scheme: tempUri.scheme, - host: tempUri.host, - port: tempUri.port, - path: '${tempUri.path}$pathToAppend', - queryParameters: queryParams, - query: query); - - return url; -} - -/// Sanitises a url -Uri getCustomUri(ParseClient client, String path, - {Map? queryParams, String? query}) { - final Uri tempUri = Uri.parse(ParseCoreData().serverUrl); - - final Uri url = Uri( - scheme: tempUri.scheme, - host: tempUri.host, - port: tempUri.port, - path: path, - queryParameters: queryParams, - query: query); - - return url; -} - -/// Removes unncessary / -String removeTrailingSlash(String serverUrl) { - if (serverUrl.isNotEmpty && - serverUrl.substring(serverUrl.length - 1) == '/') { - return serverUrl.substring(0, serverUrl.length - 1); - } else { - return serverUrl; - } -} - -Future batchRequest( - List requests, List objects, - {ParseClient? client, bool? debug}) async { - debug = isDebugEnabled(objectLevelDebug: debug); - client = client ?? - ParseCoreData().clientCreator( - sendSessionId: ParseCoreData().autoSendSessionId, - securityContext: ParseCoreData().securityContext); - try { - final Uri url = getSanitisedUri(client, '/batch'); - final String body = json.encode({'requests': requests}); - final ParseNetworkResponse result = - await client.post(url.toString(), data: body); - - return handleResponse( - objects, result, ParseApiRQ.batch, debug, 'parse_utils'); - } on Exception catch (e) { - return handleException(e, ParseApiRQ.batch, debug, 'parse_utils'); - } -} - -Stream _createStreamError(Object error) async* { - throw error; -} - -List removeDuplicateParseObjectByObjectId(Iterable iterable) { - final list = iterable.toList(); - - final foldedGroupedByObjectId = list - .whereType() - .where((e) => e.objectId != null) - .groupFoldBy( - (e) => e.objectId!, - (previous, element) => element, - ); - - list.removeWhere( - (e) { - return e is ParseObject && - foldedGroupedByObjectId.keys.contains(e.objectId); - }, - ); - - list.addAll(foldedGroupedByObjectId.values); - - return list; -} diff --git a/packages/dart/lib/src/utils/valuable.dart b/packages/dart/lib/src/utils/valuable.dart deleted file mode 100644 index 8c1c79e9a..000000000 --- a/packages/dart/lib/src/utils/valuable.dart +++ /dev/null @@ -1,15 +0,0 @@ -part of flutter_parse_sdk; - -/// A unified interface used to expose the internal state of a private class. -/// -/// Use this interface to expose internal state to end users. -/// For example, [_ParseArray] implements this interface to expose -/// its [estimatedArray] property to end-users. -/// -/// Note that any state exposed through this interface will be directly -/// accessible to end users. To prevent unintended manipulation, return copies -/// of internal state rather than references. -abstract class _Valuable { - /// provide access to an internal value of a class - T getValue(); -} diff --git a/packages/dart/pubspec.yaml b/packages/dart/pubspec.yaml deleted file mode 100644 index 1102443e7..000000000 --- a/packages/dart/pubspec.yaml +++ /dev/null @@ -1,38 +0,0 @@ -name: parse_server_sdk -description: The Dart SDK to connect to Parse Server. Build your apps faster with Parse Platform, the complete application stack. -version: 5.1.1 -homepage: https://github.com/parse-community/Parse-SDK-Flutter - -environment: - sdk: ">=2.18.0 <4.0.0" - -dependencies: - # Networking - dio: ^5.0.1 - http: ^0.13.5 - web_socket_channel: ^2.3.0 - - #Database - sembast: ^3.4.0+6 - sembast_web: ^2.1.0+4 - xxtea: ^2.1.0 - - # Utils - uuid: ^3.0.7 - meta: ^1.8.0 - path: ^1.8.2 - mime_type: ^1.0.0 - timezone: ^0.9.1 - universal_io: ^2.2.0 - collection: ^1.16.0 - -dev_dependencies: - lints: ^2.0.1 - # Testing - build_runner: ^2.3.3 - mockito: ^5.3.2 - test: ^1.23.1 - -screenshots: - - description: Parse Platform logo. - path: screenshots/logo.png \ No newline at end of file diff --git a/packages/dart/screenshots/logo.png b/packages/dart/screenshots/logo.png deleted file mode 100644 index 16dad8c70..000000000 Binary files a/packages/dart/screenshots/logo.png and /dev/null differ diff --git a/packages/dart/test/parse_client_configuration_test.dart b/packages/dart/test/parse_client_configuration_test.dart deleted file mode 100644 index 8c1c57624..000000000 --- a/packages/dart/test/parse_client_configuration_test.dart +++ /dev/null @@ -1,34 +0,0 @@ -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -void main() { - test('testBuilder', () async { - // arrange - await Parse().initialize( - 'appId', - 'serverUrl', - clientKey: 'clientKey', - liveQueryUrl: 'liveQueryUrl', - appName: 'appName', - appPackageName: 'somePackageName', - appVersion: 'someAppVersion', - masterKey: 'masterKey', - sessionId: 'sessionId', - fileDirectory: 'someDirectory', - debug: true, - ); - - // assert - expect(ParseCoreData().applicationId, 'appId'); - expect(ParseCoreData().serverUrl, 'serverUrl'); - expect(ParseCoreData().clientKey, 'clientKey'); - expect(ParseCoreData().liveQueryURL, 'liveQueryUrl'); - expect(ParseCoreData().appName, 'appName'); - expect(ParseCoreData().appPackageName, 'somePackageName'); - expect(ParseCoreData().appVersion, 'someAppVersion'); - expect(ParseCoreData().masterKey, 'masterKey'); - expect(ParseCoreData().sessionId, 'sessionId'); - expect(ParseCoreData().debug, true); - expect(ParseCoreData().fileDirectory, 'someDirectory'); - }); -} diff --git a/packages/dart/test/parse_installation_test.dart b/packages/dart/test/parse_installation_test.dart deleted file mode 100644 index a4b637b24..000000000 --- a/packages/dart/test/parse_installation_test.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -void main() { - test('should return true for exist TimeZone.', () async { - // arrange - await Parse().initialize( - 'appId', - 'https://example.com/', - debug: true, - // to prevent automatic detection - fileDirectory: 'someDirectory', - // to prevent automatic detection - appName: 'appName', - // to prevent automatic detection - appPackageName: 'somePackageName', - // to prevent automatic detection - appVersion: 'someAppVersion', - ); - - // act - final ParseInstallation installation = - await ParseInstallation.currentInstallation(); - - dynamic actualHasTimeZoneResult = installation.containsKey(keyTimeZone); - - // assert - expect(actualHasTimeZoneResult, true); - }); -} diff --git a/packages/dart/test/parse_query_test.mocks.dart b/packages/dart/test/parse_query_test.mocks.dart deleted file mode 100644 index 46bb50cf4..000000000 --- a/packages/dart/test/parse_query_test.mocks.dart +++ /dev/null @@ -1,106 +0,0 @@ -// Mocks generated by Mockito 5.0.5 from annotations -// in parse_server_sdk/test/parse_query_test.dart. -// Do not manually edit this file. - -import 'dart:async' as i3; - -import 'package:mockito/mockito.dart' as i1; -import 'package:parse_server_sdk/parse_server_sdk.dart' as i2; - -// ignore_for_file: comment_references -// ignore_for_file: unnecessary_parenthesis - -class _FakeParseCoreData extends i1.Fake implements i2.ParseCoreData {} - -class _FakeParseNetworkResponse extends i1.Fake - implements i2.ParseNetworkResponse {} - -class _FakeParseNetworkByteResponse extends i1.Fake - implements i2.ParseNetworkByteResponse {} - -/// A class which mocks [ParseClient]. -/// -/// See the documentation for Mockito's code generation for more information. -class MockParseClient extends i1.Mock implements i2.ParseClient { - MockParseClient() { - i1.throwOnMissingStub(this); - } - - @override - i2.ParseCoreData get data => (super.noSuchMethod(Invocation.getter(#data), - returnValue: _FakeParseCoreData()) as i2.ParseCoreData); - - @override - i3.Future get(String? path, - {i2.ParseNetworkOptions? options, - i2.ProgressCallback? onReceiveProgress}) => - (super.noSuchMethod( - Invocation.method(#get, [path], - {#options: options, #onReceiveProgress: onReceiveProgress}), - returnValue: Future.value( - _FakeParseNetworkResponse())) - as i3.Future); - - @override - i3.Future put(String? path, - {String? data, i2.ParseNetworkOptions? options}) => - (super.noSuchMethod( - Invocation.method(#put, [path], {#data: data, #options: options}), - returnValue: Future.value( - _FakeParseNetworkResponse())) - as i3.Future); - - @override - i3.Future post(String? path, - {String? data, i2.ParseNetworkOptions? options}) => - (super.noSuchMethod( - Invocation.method(#post, [path], {#data: data, #options: options}), - returnValue: Future.value( - _FakeParseNetworkResponse())) as i3 - .Future); - - @override - i3.Future postBytes(String? path, - {i3.Stream>? data, - i2.ParseNetworkOptions? options, - i2.ProgressCallback? onSendProgress, - dynamic cancelToken}) => - (super.noSuchMethod( - Invocation.method(#postBytes, [ - path - ], { - #data: data, - #options: options, - #onSendProgress: onSendProgress, - #cancelToken: cancelToken - }), - returnValue: Future.value( - _FakeParseNetworkResponse())) - as i3.Future); - - @override - i3.Future delete(String? path, - {i2.ParseNetworkOptions? options}) => - (super.noSuchMethod( - Invocation.method(#delete, [path], {#options: options}), - returnValue: Future.value( - _FakeParseNetworkResponse())) - as i3.Future); - - @override - i3.Future getBytes(String? path, - {i2.ParseNetworkOptions? options, - i2.ProgressCallback? onReceiveProgress, - dynamic cancelToken}) => - (super.noSuchMethod( - Invocation.method(#getBytes, [ - path - ], { - #options: options, - #onReceiveProgress: onReceiveProgress, - #cancelToken: cancelToken - }), - returnValue: Future.value( - _FakeParseNetworkByteResponse())) - as i3.Future); -} diff --git a/packages/dart/test/src/network/parse_query_test.dart b/packages/dart/test/src/network/parse_query_test.dart deleted file mode 100644 index ea7b7b125..000000000 --- a/packages/dart/test/src/network/parse_query_test.dart +++ /dev/null @@ -1,469 +0,0 @@ -import 'dart:convert'; -import 'package:mockito/annotations.dart'; -import 'package:mockito/mockito.dart'; -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -import '../../parse_query_test.mocks.dart'; -import '../../test_utils.dart'; - -@GenerateMocks([ParseClient]) -void main() { - setUpAll(() async { - await initializeParse(); - }); - - group('queryBuilder', () { - late MockParseClient client; - - setUp(() { - client = MockParseClient(); - }); - - test('whereRelatedTo', () async { - // arrange - final QueryBuilder queryBuilder = - QueryBuilder(ParseObject('_User', client: client)); - queryBuilder.whereRelatedTo('likes', 'Post', '8TOXdXf3tz'); - - var desiredOutput = { - "results": [ - { - "objectId": "eT9muOxBTJ", - "username": "test", - "createdAt": "2021-04-23T13:46:06.092Z", - "updatedAt": "2021-04-23T13:46:23.586Z", - "ACL": { - "*": {"read": true}, - "eT9muOxBTJ": {"read": true, "write": true} - }, - } - ] - }; - - when(client.get( - any, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).thenAnswer((_) async => ParseNetworkResponse( - statusCode: 200, data: jsonEncode(desiredOutput))); - - // act - ParseResponse response = await queryBuilder.query(); - - ParseObject parseObject = response.results?.first; - - final Uri result = Uri.parse(verify(client.get( - captureAny, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).captured.single); - - var queryDesiredOutput = { - "\$relatedTo": { - "object": { - "__type": "Pointer", - "className": "Post", - "objectId": "8TOXdXf3tz", - }, - "key": "likes" - }, - }; - final Uri expectedQuery = - Uri(query: 'where=${jsonEncode(queryDesiredOutput)}'); - - // assert - expect(response.results?.first, isA()); - - expect(parseObject.get(keyVarUsername), "test"); - expect(parseObject.objectId, "eT9muOxBTJ"); - expect(parseObject.createdAt, DateTime.parse("2021-04-23T13:46:06.092Z")); - expect(parseObject.updatedAt, DateTime.parse("2021-04-23T13:46:23.586Z")); - - expect(result.path, '/classes/_User'); - - expect(result.query, expectedQuery.query); - }); - - test('QueryBuilder.or', () async { - // arrange - ParseObject user = ParseObject("_User", client: client); - var firstName = QueryBuilder(user) - ..regEx('firstName', "Liam"); - - var lastName = QueryBuilder(user) - ..regEx('lastName', "Johnson"); - - QueryBuilder mainQuery = QueryBuilder.or( - user, - [firstName, lastName], - ); - - var desiredOutput = { - "results": [ - { - "className": "_User", - "objectId": "fqx5BECOME", - "createdAt": "2022-10-25T06:04:47.138Z", - "updatedAt": "2022-10-25T06:05:22.328Z", - "firstName": "Liam1", - "lastName": "Johnson1", - }, - { - "className": "_User", - "objectId": "hAtRRYGrUO", - "createdAt": "2022-01-24T15:53:48.396Z", - "updatedAt": "2022-01-25T05:52:01.701Z", - "firstName": "Liam2", - "lastName": "Johnson2", - } - ] - }; - - when(client.get( - any, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).thenAnswer((_) async => ParseNetworkResponse( - statusCode: 200, data: jsonEncode(desiredOutput))); - - // act - var response = await mainQuery.query(); - - ParseObject parseObject = response.results?.first; - - final Uri result = Uri.parse(verify(client.get( - captureAny, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).captured.single); - - var queryDesiredOutput = { - "\$or": [ - { - "firstName": {"\$regex": "Liam"} - }, - { - "lastName": {"\$regex": "Johnson"}, - } - ], - }; - final Uri expectedQuery = - Uri(query: 'where=${jsonEncode(queryDesiredOutput)}'); - - // assert - expect(response.results?.first, isA()); - - expect(parseObject.get("firstName"), "Liam1"); - expect(parseObject.objectId, "fqx5BECOME"); - expect(parseObject.createdAt, DateTime.parse("2022-10-25T06:04:47.138Z")); - expect(parseObject.updatedAt, DateTime.parse("2022-10-25T06:05:22.328Z")); - - expect(result.path, '/classes/_User'); - - expect(result.query, expectedQuery.query); - }); - - test('QueryBuilder.and', () async { - // arrange - ParseObject user = ParseObject("_User", client: client); - var firstName = QueryBuilder(user) - ..regEx('firstName', "jak"); - - var lastName = QueryBuilder(user)..regEx('lastName', "jaki"); - - QueryBuilder mainQuery = QueryBuilder.and( - user, - [firstName, lastName], - ); - - var desiredOutput = { - "results": [ - { - "className": "_User", - "objectId": "fqx5BECOME", - "createdAt": "2022-10-25T06:04:47.138Z", - "updatedAt": "2022-10-25T06:05:22.328Z", - "firstName": "jak1", - "lastName": "jaki1", - }, - { - "className": "_User", - "objectId": "hAtRRYGrUO", - "createdAt": "2022-01-24T15:53:48.396Z", - "updatedAt": "2022-01-25T05:52:01.701Z", - "firstName": "jak2", - "lastName": "jaki2", - }, - ] - }; - - when(client.get( - any, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).thenAnswer((_) async => ParseNetworkResponse( - statusCode: 200, data: jsonEncode(desiredOutput))); - - // act - var response = await mainQuery.query(); - - ParseObject parseObject = response.results?.first; - - final Uri result = Uri.parse(verify(client.get( - captureAny, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).captured.single); - - var queryDesiredOutput = { - "\$and": [ - { - "firstName": {"\$regex": "jak"} - }, - { - "lastName": {"\$regex": "jaki"}, - } - ], - }; - final Uri expectedQuery = - Uri(query: 'where=${jsonEncode(queryDesiredOutput)}'); - - // assert - expect(response.results?.first, isA()); - - expect(parseObject.get("firstName"), "jak1"); - expect(parseObject.objectId, "fqx5BECOME"); - expect(parseObject.createdAt, DateTime.parse("2022-10-25T06:04:47.138Z")); - expect(parseObject.updatedAt, DateTime.parse("2022-10-25T06:05:22.328Z")); - - expect(result.path, '/classes/_User'); - - expect(result.query, expectedQuery.query); - }); - - test('QueryBuilder.nor', () async { - // arrange - ParseObject user = ParseObject("_User", client: client); - var firstName = QueryBuilder(user) - ..regEx('firstName', "Oliver"); - - var lastName = QueryBuilder(user) - ..regEx('lastName', "Smith"); - - QueryBuilder mainQuery = QueryBuilder.nor( - user, - [firstName, lastName], - ); - - var desiredOutput = { - "results": [ - { - "className": "_User", - "objectId": "fqx5BECOME", - "createdAt": "2022-10-25T06:04:47.138Z", - "updatedAt": "2022-10-25T06:05:22.328Z", - "firstName": "Oliver1", - "lastName": "Smith1", - }, - { - "className": "_User", - "objectId": "hAtRRYGrUO", - "createdAt": "2022-01-24T15:53:48.396Z", - "updatedAt": "2022-01-25T05:52:01.701Z", - "firstName": "Oliver2", - "lastName": "Smith2", - }, - ] - }; - - when(client.get( - any, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).thenAnswer((_) async => ParseNetworkResponse( - statusCode: 200, data: jsonEncode(desiredOutput))); - - // act - var response = await mainQuery.query(); - - ParseObject parseObject = response.results?.first; - - final Uri result = Uri.parse(verify(client.get( - captureAny, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).captured.single); - - var queryDesiredOutput = { - "\$nor": [ - { - "firstName": {"\$regex": "Oliver"} - }, - { - "lastName": {"\$regex": "Smith"}, - } - ], - }; - final Uri expectedQuery = - Uri(query: 'where=${jsonEncode(queryDesiredOutput)}'); - - // assert - expect(response.results?.first, isA()); - - expect(parseObject.get("firstName"), "Oliver1"); - expect(parseObject.objectId, "fqx5BECOME"); - expect(parseObject.createdAt, DateTime.parse("2022-10-25T06:04:47.138Z")); - expect(parseObject.updatedAt, DateTime.parse("2022-10-25T06:05:22.328Z")); - - expect(result.path, '/classes/_User'); - - expect(result.query, expectedQuery.query); - }); - - test('wherePolygonContains', () async { - // arrange - final QueryBuilder queryBuilder = - QueryBuilder(ParseObject('TEST_SCHEMA', client: client)); - double latitude = 84.17724609375; - double longitude = -53.69670647530323; - ParseGeoPoint point = - ParseGeoPoint(latitude: latitude, longitude: longitude); - queryBuilder.wherePolygonContains("geometry", point); - - var desiredOutput = { - "results": [ - { - "objectId": "eT9muOxBTK", - "createdAt": "2022-07-25T13:46:06.092Z", - "updatedAt": "2022-07-25T13:46:23.586Z", - "geometry": { - "type": "Polygon", - "coordinates": [ - [ - [84.17724609375, -53.69670647530323], - [83.1884765625, -54.61025498157913], - [84.814453125, -55.14120964449505], - [85.67138671875, -54.40614309031968], - [84.17724609375, -53.69670647530323] - ] - ] - } - } - ] - }; - - when(client.get( - any, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).thenAnswer((_) async => ParseNetworkResponse( - statusCode: 200, data: jsonEncode(desiredOutput))); - - // act - ParseResponse response = await queryBuilder.query(); - ParseObject parseObject = response.results?.first; - - final Uri result = Uri.parse(verify(client.get( - captureAny, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).captured.single); - - var queryDesiredOutput = { - "geometry": { - "\$geoIntersects": { - "\$point": { - "__type": "GeoPoint", - "latitude": latitude, - "longitude": longitude - } - } - } - }; - final Uri expectedQuery = - Uri(query: 'where=${jsonEncode(queryDesiredOutput)}'); - - // assert - expect(response.results?.first, isA()); - expect(parseObject.objectId, "eT9muOxBTK"); - expect(parseObject.containsKey("geometry"), true); - expect(result.path, '/classes/TEST_SCHEMA'); - expect(result.query, expectedQuery.query); - }); - - test( - 'The resulting query should include "redirectClassNameForKey" as a query parameter', - () { - // arrange - final queryBuilder = QueryBuilder.name('Diet_Plans'); - - // act - queryBuilder.setRedirectClassNameForKey('Plan'); - - // assert - final query = queryBuilder.buildQuery(); - - expect(query, equals('where={}&redirectClassNameForKey=Plan')); - }); - - test('whereMatchesQuery', () async { - // arrange - ParseObject object2 = ParseObject("object2"); - final query2 = QueryBuilder(object2) - ..includeObject(["avatar"]) - ..whereEqualTo("firstName", "Oliver1"); - - ParseObject object1 = ParseObject("object1"); - final query1 = QueryBuilder(object1) - ..includeObject(["user"]) - ..whereEqualTo("id", "1122") - ..whereMatchesQuery("object2", query2); - - ParseObject objectMain = ParseObject("objectMain", client: client); - final mainQuery = QueryBuilder(objectMain) - ..includeObject(["img"]) - ..whereMatchesQuery("object1", query1); - - var desiredOutput = { - "results": [ - { - "className": "_User", - "objectId": "fqx5BECOME", - "createdAt": "2022-10-25T06:04:47.138Z", - "updatedAt": "2022-10-25T06:05:22.328Z", - "firstName": "Oliver1", - "lastName": "Smith1", - }, - { - "className": "_User", - "objectId": "hAtRRYGrUO", - "createdAt": "2022-01-24T15:53:48.396Z", - "updatedAt": "2022-01-25T05:52:01.701Z", - "firstName": "Oliver2", - "lastName": "Smith2", - }, - ] - }; - - when(client.get( - any, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).thenAnswer((_) async => ParseNetworkResponse( - statusCode: 200, data: jsonEncode(desiredOutput))); - - // act - await mainQuery.query(); - - final Uri result = Uri.parse(verify(client.get( - captureAny, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).captured.single); - - // assert - expect(result.query.contains("%22object2%22,%22include%22"), true); - }); - }); -} diff --git a/packages/dart/test/src/objects/parse_base_test.dart b/packages/dart/test/src/objects/parse_base_test.dart deleted file mode 100644 index 82ba945a3..000000000 --- a/packages/dart/test/src/objects/parse_base_test.dart +++ /dev/null @@ -1,170 +0,0 @@ -import 'package:collection/collection.dart'; -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -import '../../parse_query_test.mocks.dart'; -import '../../test_utils.dart'; - -main() { - setUpAll(() async { - await initializeParse(); - }); - - group('Parse_Base', () { - late MockParseClient client; - - late ParseObject dietPlansObject; - - setUp(() { - client = MockParseClient(); - - dietPlansObject = ParseObject("Diet_Plans", client: client); - }); - - group('isDirty', () { - test('should return true when calling isDirty on modified object', () { - // array - dietPlansObject.setAddUnique('arrayKey', 1); - final isDirtyArray = dietPlansObject.isDirty(key: 'arrayKey'); - expect(isDirtyArray, isTrue); - dietPlansObject.unset('arrayKey', offlineOnly: true); - - // number - dietPlansObject.setIncrement('myNumberKey', 2); - final isDirtyNumber = dietPlansObject.isDirty(key: 'myNumberKey'); - expect(isDirtyNumber, isTrue); - dietPlansObject.unset('myNumberKey', offlineOnly: true); - - // relation - dietPlansObject.removeRelation('relationKey', [ParseObject('class')]); - final isDirtyRelation = dietPlansObject.isDirty(key: 'relationKey'); - expect(isDirtyRelation, isTrue); - dietPlansObject.unset('relationKey', offlineOnly: true); - - // string - dietPlansObject.set('stringKey', 'some String'); - final isDirtyString = dietPlansObject.isDirty(key: 'stringKey'); - expect(isDirtyString, isTrue); - dietPlansObject.unset('stringKey', offlineOnly: true); - - // pointer - dietPlansObject.set( - 'pointerKey', - ParseObject('className')..set('someKey', 1), - ); - final isDirtyPointer = dietPlansObject.isDirty(key: 'pointerKey'); - expect(isDirtyPointer, isTrue); - dietPlansObject.unset('pointerKey', offlineOnly: true); - }); - - test('should return true when modifying a child(nested) ParseObject', () { - // arrange - dietPlansObject.fromJson({ - keyVarObjectId: "dDSAGER1", - keyVarCreatedAt: "2023-02-26T00:20:37.187Z", - keyVarUpdatedAt: "2023-02-26T00:20:37.187Z", - "somePointer": { - "__type": "Object", - "className": "Plan", - "name": "plan1" - }, - }); - - // act - - // modifying nested child - dietPlansObject.get('somePointer').set('name', 'plan222'); - - final isDirtyDeepChildrenCheck = dietPlansObject.isDirty(); - - // assert - expect(isDirtyDeepChildrenCheck, isTrue); - }); - }); - - test( - 'should return true for containsValue() if the object contains the value', - () { - // arrange - dietPlansObject.set('someKey', 1); - - // act - final containsValue = dietPlansObject.containsValue(1); - - // assert - expect(containsValue, isTrue); - }); - - test( - 'should return true for containsKey() if the object contains the passed key', - () { - // arrange - dietPlansObject.set('someKey', 1); - - // act - final containsKey = dietPlansObject.containsKey('someKey'); - - // assert - expect(containsKey, isTrue); - }); - - test('test the [] operator', () { - // arrange - dietPlansObject['someKey'] = 1; - - // act - final value = dietPlansObject['someKey']; - - // assert - expect(value, equals(1)); - }); - - test('setACL() should set the ACL for the parse object', () { - // arrange - final acl = ParseACL(); - - // act - dietPlansObject.setACL(acl); - - // assert - expect(dietPlansObject.getACL(), equals(acl)); - }); - - test('fromJsonForManualObject() should put all the values in unsaved state', - () { - // arrange - final createdAt = DateTime.now(); - final updatedAt = DateTime.now(); - final manualJsonObject = { - keyVarCreatedAt: createdAt, - keyVarUpdatedAt: updatedAt, - "array": [1, 2, 3], - 'number': 2, - }; - - // act - dietPlansObject.fromJsonForManualObject(manualJsonObject); - - // assert - expect(dietPlansObject.isDirty(key: 'array'), isTrue); - expect(dietPlansObject.isDirty(key: 'number'), isTrue); - - expect(dietPlansObject.createdAt, equals(createdAt)); - expect(dietPlansObject.updatedAt, equals(updatedAt)); - - final valueForAPiRequest = dietPlansObject.toJson(forApiRQ: true); - final expectedValueForAPiRequest = { - "array": [1, 2, 3], - "number": 2 - }; - - expect( - DeepCollectionEquality().equals( - valueForAPiRequest, - expectedValueForAPiRequest, - ), - isTrue, - ); - }); - }); -} diff --git a/packages/dart/test/src/objects/parse_object/parse_object_array_test.dart b/packages/dart/test/src/objects/parse_object/parse_object_array_test.dart deleted file mode 100644 index 07f636d80..000000000 --- a/packages/dart/test/src/objects/parse_object/parse_object_array_test.dart +++ /dev/null @@ -1,775 +0,0 @@ -import 'dart:convert'; - -import 'package:collection/collection.dart'; -import 'package:mockito/mockito.dart'; -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -import '../../../parse_query_test.mocks.dart'; -import '../../../test_utils.dart'; - -void main() { - setUpAll(() async { - await initializeParse(); - }); - - group( - 'Array', - () { - late MockParseClient client; - - late ParseObject dietPlansObject; - - const keyArray = 'array'; - - setUp(() { - client = MockParseClient(); - - dietPlansObject = ParseObject("Diet_Plans", client: client); - }); - - test( - 'adding values using setAdd() and then calling get(keyArray) ' - 'should return Instance of Iterable that contains all the added values ', - () { - // act - dietPlansObject.setAdd(keyArray, 1); - dietPlansObject.setAdd(keyArray, 2); - dietPlansObject.setAdd(keyArray, 1); - - // assert - final array = dietPlansObject.get(keyArray); - - expect(array, isA()); - - expect( - DeepCollectionEquality.unordered().equals( - array, - [1, 2, 1], - ), - isTrue, - ); - }); - - test( - 'setAdd() operation should not be mergeable with any other' - 'operation other than setAddAll()', () { - testUnmergeableOperationShouldThrow( - parseObject: dietPlansObject, - testingOn: dietPlansObject.setAdd, - excludeMergeableOperations: [dietPlansObject.setAddAll], - ); - }); - - test( - 'adding values using setAddAll() and then calling get(keyArray) ' - 'should return Instance of Iterable that contains all the added values', - () { - // act - dietPlansObject.setAddAll(keyArray, [1, 2, 1]); - - // assert - final array = dietPlansObject.get(keyArray); - - expect(array, isA()); - - expect( - DeepCollectionEquality.unordered().equals( - array, - [1, 2, 1], - ), - isTrue, - ); - }); - - test( - 'setAddAll() operation should not be mergeable with any other' - 'operation other than setAdd()', () { - testUnmergeableOperationShouldThrow( - parseObject: dietPlansObject, - testingOn: dietPlansObject.setAddAll, - excludeMergeableOperations: [dietPlansObject.setAdd], - ); - }); - - test( - 'adding values using setAddUnique() and then calling get(keyArray) ' - 'should return Instance of Iterable that contains all the added values' - ' with out any duplication in the values', () { - // act - dietPlansObject.setAddUnique(keyArray, 1); - dietPlansObject.setAddUnique(keyArray, 2); - dietPlansObject.setAddUnique(keyArray, 1); - dietPlansObject.setAddUnique(keyArray, 3); - dietPlansObject.setAddUnique(keyArray, 1); - dietPlansObject.setAddUnique(keyArray, 4); - - // assert - final array = dietPlansObject.get(keyArray); - - expect(array, isA()); - - expect( - DeepCollectionEquality.unordered().equals( - array, - [1, 2, 3, 4], - ), - isTrue, - ); - }); - - test( - 'setAddUnique() operation should not be mergeable with any other' - 'operation other than setAddAllUnique()', () { - testUnmergeableOperationShouldThrow( - parseObject: dietPlansObject, - testingOn: dietPlansObject.setAddUnique, - excludeMergeableOperations: [dietPlansObject.setAddAllUnique], - ); - }); - - test( - 'adding values using setAddAllUnique() and then calling get(keyArray) ' - 'should return Instance of Iterable that contains all the added values' - ' with out any duplication in the values', () { - // act - dietPlansObject.setAddAllUnique(keyArray, [1, 2, 1, 3, 1, 4, 1]); - - // assert - final array = dietPlansObject.get(keyArray); - - expect(array, isA()); - - expect( - DeepCollectionEquality.unordered().equals( - array, - [1, 2, 3, 4], - ), - isTrue, - ); - }); - - test( - 'setAddAllUnique() operation should not be mergeable with any other' - 'operation other than setAddUnique()', () { - testUnmergeableOperationShouldThrow( - parseObject: dietPlansObject, - testingOn: dietPlansObject.setAddAllUnique, - excludeMergeableOperations: [dietPlansObject.setAddUnique], - ); - }); - - test( - 'removing values using setRemove() and then calling get(keyArray) ' - 'should return Instance of Iterable that NOT contains the removed values', - () { - // arrange - const resultFromServer = { - "objectId": "O6BHlwV48Z", - "createdAt": "2023-02-26T13:23:03.073Z", - "updatedAt": "2023-03-01T03:38:16.390Z", - keyArray: [1, 2, 3, 4], - }; - - dietPlansObject = ParseObject('Diet_Plans') - ..fromJson( - resultFromServer, - ); - - // act - dietPlansObject.setRemove(keyArray, 4); - - // assert - final array = dietPlansObject.get(keyArray); - - expect(array, isA()); - - expect( - DeepCollectionEquality.unordered().equals( - array, - [1, 2, 3], - ), - isTrue, - ); - }); - - test( - 'removing values using setRemoveAll() and then calling get(keyArray) ' - 'should return Instance of Iterable that NOT contains the removed values', - () { - // arrange - const resultFromServer = { - "objectId": "O6BHlwV48Z", - "createdAt": "2023-02-26T13:23:03.073Z", - "updatedAt": "2023-03-01T03:38:16.390Z", - keyArray: [1, 2, 3, 4], - }; - - dietPlansObject = ParseObject('Diet_Plans') - ..fromJson( - resultFromServer, - ); - - // act - dietPlansObject.setRemoveAll(keyArray, [3, 4]); - - // assert - final array = dietPlansObject.get(keyArray); - - expect(array, isA()); - - expect( - DeepCollectionEquality.unordered().equals( - array, - [1, 2], - ), - isTrue, - ); - }); - - test( - 'the array should not been affected by removing non existent ' - 'values using setRemove()', () { - // arrange - const resultFromServer = { - "objectId": "O6BHlwV48Z", - "createdAt": "2023-02-26T13:23:03.073Z", - "updatedAt": "2023-03-01T03:38:16.390Z", - keyArray: [1, 2, 3, 4], - }; - - dietPlansObject = ParseObject('Diet_Plans') - ..fromJson( - resultFromServer, - ); - - // act - dietPlansObject.setRemove(keyArray, 15); - dietPlansObject.setRemove(keyArray, 16); - - // assert - final array = dietPlansObject.get(keyArray); - - expect(array, isA()); - - expect( - DeepCollectionEquality.unordered().equals( - array, - [1, 2, 3, 4], - ), - isTrue, - ); - }); - - test( - 'the array should not been affected by removing non existent ' - 'values using setRemoveAll()', () { - // arrange - const resultFromServer = { - "objectId": "O6BHlwV48Z", - "createdAt": "2023-02-26T13:23:03.073Z", - "updatedAt": "2023-03-01T03:38:16.390Z", - keyArray: [1, 2, 3, 4], - }; - - dietPlansObject = ParseObject('Diet_Plans') - ..fromJson( - resultFromServer, - ); - - // act - dietPlansObject.setRemoveAll(keyArray, [15, 16]); - - // assert - final array = dietPlansObject.get(keyArray); - - expect(array, isA()); - - expect( - DeepCollectionEquality.unordered().equals( - array, - [1, 2, 3, 4], - ), - isTrue, - ); - }); - - test( - 'adding to an array and then removing from it should result in error ' - 'the user can not add and remove in the same time', () { - // act - dietPlansObject.setAdd(keyArray, 1); - dietPlansObject.setAdd(keyArray, 2); - - // assert - expect( - () => dietPlansObject.setRemove(keyArray, 2), - throwsA(isA()), - ); - - final array = dietPlansObject.get(keyArray); - - expect(array, isA()); - - expect( - DeepCollectionEquality.unordered().equals( - array, - [1, 2], - ), - isTrue, - ); - }); - - test( - 'removing from an array and then adding to it should result in error ' - 'the user can not remove and add in the same time', () { - // arrange - const resultFromServer = { - "objectId": "O6BHlwV48Z", - "createdAt": "2023-02-26T13:23:03.073Z", - "updatedAt": "2023-03-01T03:38:16.390Z", - keyArray: [1, 2, 3, 4], - }; - - dietPlansObject = ParseObject('Diet_Plans') - ..fromJson( - resultFromServer, - ); - - // act - dietPlansObject.setRemove(keyArray, 4); - dietPlansObject.setRemove(keyArray, 3); - - // assert - expect( - () => dietPlansObject.setAdd(keyArray, 5), - throwsA(isA()), - ); - - final array = dietPlansObject.get(keyArray); - - expect(array, isA()); - - expect( - DeepCollectionEquality.unordered().equals( - array, - [1, 2], - ), - isTrue, - ); - }); - - test( - 'setRemove() operation should not be mergeable with any other' - 'operation other than setRemoveAll()', () { - testUnmergeableOperationShouldThrow( - parseObject: dietPlansObject, - testingOn: dietPlansObject.setRemove, - excludeMergeableOperations: [dietPlansObject.setRemoveAll], - ); - }); - - test( - 'setRemoveAll() operation should not be mergeable with any other' - 'operation other than setRemove()', () { - testUnmergeableOperationShouldThrow( - parseObject: dietPlansObject, - testingOn: dietPlansObject.setRemoveAll, - excludeMergeableOperations: [dietPlansObject.setRemove], - ); - }); - - test( - 'Array should be in setMode when using "set" to add an array to the parse object ' - 'and any operation on the array should not create any conflict with the previous operation', - () { - // arrange - void operations() { - // act - dietPlansObject.set(keyArray, [1, 2]); - dietPlansObject.setAdd(keyArray, 3); - dietPlansObject.setAddUnique(keyArray, 3); - dietPlansObject.setAddUnique(keyArray, 4); - dietPlansObject.setRemove(keyArray, 1); - } - - // assert - expect(() => operations(), returnsNormally); - }); - - test( - 'The array internal state should be identical before and after ' - 'storing it in data store', () async { - // arrange - dietPlansObject.objectId = "someId"; - - dietPlansObject.set(keyArray, [1, 2]); - dietPlansObject.setAdd(keyArray, 3); - dietPlansObject.setAddUnique(keyArray, 3); - dietPlansObject.setAddUnique(keyArray, 4); - dietPlansObject.setRemove(keyArray, 1); - - final listBeforePin = dietPlansObject.get(keyArray); - final toJsonBeforePin = dietPlansObject.toJson(forApiRQ: true); - - // act - await dietPlansObject.pin(); - - final objectFromPin = await dietPlansObject.fromPin('someId'); - - // assert - final listAfterPin = objectFromPin.get(keyArray); - final toJsonAfterPin = objectFromPin.toJson(forApiRQ: true); - - expect( - DeepCollectionEquality().equals(listBeforePin, listAfterPin), - isTrue, - ); - - expect( - DeepCollectionEquality().equals(toJsonBeforePin, toJsonAfterPin), - isTrue, - ); - }); - - test( - 'The saved modified array internal state should be identical ' - 'before and after storing it in data store', () async { - // arrange - dietPlansObject.fromJson({ - keyArray: [1, 2], - "objectId": "someId" - }); // assume this coming from the server - - dietPlansObject.setAddUnique(keyArray, 3); - - final listBeforePin = dietPlansObject.get(keyArray); - final toJsonBeforePin = dietPlansObject.toJson(forApiRQ: true); - - // act - await dietPlansObject.pin(); - - final objectFromPin = await dietPlansObject.fromPin('someId'); - - // assert - final listAfterPin = objectFromPin.get(keyArray); - final toJsonAfterPin = objectFromPin.toJson(forApiRQ: true); - - expect( - DeepCollectionEquality().equals(listBeforePin, listAfterPin), - isTrue, - ); - - expect( - DeepCollectionEquality().equals(toJsonBeforePin, toJsonAfterPin), - isTrue, - ); - }); - - test( - 'The saved array should not be in setMode. i.e. any conflicting operation' - ' should not be allowed and throw an exception', () { - // arrange - dietPlansObject.fromJson({ - keyArray: [1, 2], - "objectId": "someId" - }); // assume this coming from the server - - // act - dietPlansObject.setAdd(keyArray, 3); - - // assert - op() => dietPlansObject.setRemove(keyArray, 3); - - expect(() => op(), throwsA(isA())); - }); - - test( - 'After the save() function runs successfully for an API request, ' - 'the ParseArray internal value for API request should be empty', - () async { - // arrange - const resultFromServer = { - keyVarObjectId: "DLde4rYA8C", - keyVarCreatedAt: "2023-02-26T00:20:37.187Z" - }; - - when(client.post( - any, - options: anyNamed("options"), - data: anyNamed('data'), - )).thenAnswer( - (_) async { - await Future.delayed(Duration(milliseconds: 500)); - return ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServer), - ); - }, - ); - - dietPlansObject.setAddAll(keyArray, [1, 2, 3]); - - final valueForApiReqBeforeSave = dietPlansObject.toJson(forApiRQ: true); - - final listValueBeforeSave = dietPlansObject.get(keyArray); - - // act - await dietPlansObject.save(); - - // assert - final valueForApiReqAfterSave = dietPlansObject.toJson(forApiRQ: true); - final listValueAfterSave = dietPlansObject.get(keyArray); - - final expectedValueForApiReqBeforeSave = { - keyArray: { - "__op": "Add", - "objects": [1, 2, 3] - } - }; - - expect( - DeepCollectionEquality().equals( - valueForApiReqBeforeSave, - expectedValueForApiReqBeforeSave, - ), - isTrue, - ); - - expect( - DeepCollectionEquality().equals( - listValueBeforeSave, - listValueAfterSave, - ), - isTrue, - ); - - expect(valueForApiReqAfterSave.isEmpty, isTrue); - }); - - test( - 'If an Add operation is performed during the save() function, the result' - ' of the operation should be present in the internal state of the ' - 'ParseArray as a value that has not been saved. The data that has ' - 'been saved should be moved to the saved state', - () async { - // arrange - const resultFromServer = { - keyVarObjectId: "DLde4rYA8C", - keyVarCreatedAt: "2023-02-26T00:20:37.187Z" - }; - - when(client.post( - any, - options: anyNamed("options"), - data: anyNamed('data'), - )).thenAnswer( - (_) async { - await Future.delayed(Duration(milliseconds: 100)); - return ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServer), - ); - }, - ); - - dietPlansObject.setAdd(keyArray, 1); - dietPlansObject.setAdd(keyArray, 2); - - final listBeforeSave = dietPlansObject.get(keyArray); - final valueForApiReqBeforeSave = - dietPlansObject.toJson(forApiRQ: true); - - // act - dietPlansObject.save(); - - // async gap, this could be anything in the app like a click of a button - await Future.delayed(Duration.zero); - - // Then suddenly the user added a value to the list - dietPlansObject.setAdd(keyArray, 3); - dietPlansObject.setAdd(keyArray, 4); - - // Await the save function to be done - await Future.delayed(Duration(milliseconds: 150)); - - // assert - expect( - DeepCollectionEquality().equals(listBeforeSave, [1, 2]), - isTrue, - ); - - final listAfterSave = dietPlansObject.get(keyArray); - expect( - DeepCollectionEquality().equals(listAfterSave, [1, 2, 3, 4]), - isTrue, - ); - - const expectedValueForApiReqBeforeSave = { - keyArray: { - "__op": "Add", - "objects": [1, 2] - } - }; - expect( - DeepCollectionEquality().equals( - valueForApiReqBeforeSave, - expectedValueForApiReqBeforeSave, - ), - isTrue, - ); - - final valueForApiReqAfterSave = - dietPlansObject.toJson(forApiRQ: true); - const expectedValueForApiReqAfterSave = { - keyArray: { - "__op": "Add", - "objects": [3, 4] - } - }; - expect( - DeepCollectionEquality().equals( - valueForApiReqAfterSave, - expectedValueForApiReqAfterSave, - ), - isTrue, - ); - }, - ); - - test( - 'If an Remove operation is performed during the save() function, the result' - ' of the operation should be present in the internal state of the ' - 'ParseArray as a value that has not been saved. The data that has ' - 'been saved should be moved to the saved state', - () async { - // arrange - const resultFromServer = { - keyVarObjectId: "DLde4rYA8C", - keyVarCreatedAt: "2023-02-26T00:20:37.187Z" - }; - - when(client.post( - any, - options: anyNamed("options"), - data: anyNamed('data'), - )).thenAnswer( - (_) async { - await Future.delayed(Duration(milliseconds: 100)); - return ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServer), - ); - }, - ); - - dietPlansObject.fromJson({ - keyArray: [1, 2, 3, 4] - }); - - final listBeforeSave = dietPlansObject.get(keyArray); - final valueForApiReqBeforeSave = - dietPlansObject.toJson(forApiRQ: true); - - // act - dietPlansObject.save(); - - // async gap, this could be anything in the app like a click of a button - await Future.delayed(Duration.zero); - - // Then suddenly the user remove a value from the list - dietPlansObject.setRemoveAll(keyArray, [3, 4]); - - // Await the save function to be done - await Future.delayed(Duration(milliseconds: 150)); - - // assert - expect(listBeforeSave, orderedEquals([1, 2, 3, 4])); - - final listAfterSave = dietPlansObject.get(keyArray); - expect( - listAfterSave, - orderedEquals([1, 2]), - ); - - expect( - valueForApiReqBeforeSave.isEmpty, - isTrue, - ); - - final valueForApiReqAfterSave = - dietPlansObject.toJson(forApiRQ: true); - const expectedValueForApiReqAfterSave = { - keyArray: { - "__op": "Remove", - "objects": [3, 4] - } - }; - expect( - DeepCollectionEquality().equals( - valueForApiReqAfterSave, - expectedValueForApiReqAfterSave, - ), - isTrue, - ); - }, - ); - - test( - 'When calling clearUnsavedChanges() the array should be reverted back' - ' to its original state before any modifications were made', () { - // arrange - dietPlansObject.fromJson({ - keyArray: [1, 2], - "objectId": "someId" - }); // assume this coming from the server - - dietPlansObject.setAdd(keyArray, 3); - - // act - dietPlansObject.clearUnsavedChanges(); - - // assert - final listValue = dietPlansObject.get(keyArray); - - expect(listValue, orderedEquals([1, 2])); - }); - - test( - 'The list value and the value for api request should be identical ' - 'before and after the save() failed to save the object', () async { - // arrange - - when(client.post( - any, - options: anyNamed("options"), - data: anyNamed("data"), - )).thenThrow(Exception('error')); - - dietPlansObject.setAddAll(keyArray, [1, 2]); - - final valueForApiReqBeforeErrorSave = - dietPlansObject.toJson(forApiRQ: true); - - // act - await dietPlansObject.save(); - - // assert - final listValue = dietPlansObject.get(keyArray); - - expect(listValue, orderedEquals([1, 2])); - - final valueForApiReqAfterErrorSave = - dietPlansObject.toJson(forApiRQ: true); - - expect( - DeepCollectionEquality().equals( - valueForApiReqAfterErrorSave, - valueForApiReqBeforeErrorSave, - ), - isTrue, - ); - }); - }, - ); -} diff --git a/packages/dart/test/src/objects/parse_object/parse_object_create_test.dart b/packages/dart/test/src/objects/parse_object/parse_object_create_test.dart deleted file mode 100644 index ee4c205bd..000000000 --- a/packages/dart/test/src/objects/parse_object/parse_object_create_test.dart +++ /dev/null @@ -1,159 +0,0 @@ -import 'dart:convert'; - -import 'package:mockito/mockito.dart'; -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -import '../../../parse_query_test.mocks.dart'; -import '../../../test_utils.dart'; - -void main() { - setUpAll(() async { - await initializeParse(); - }); - - group('create()', () { - late MockParseClient client; - - late ParseObject dietPlansObject; - - late String postPath; - - setUp(() { - client = MockParseClient(); - - final user = ParseObject(keyClassUser)..objectId = "ELR124r8C"; - dietPlansObject = ParseObject("Diet_Plans", client: client); - dietPlansObject - ..set('Name', 'value') - ..set('Fat', 15) - ..set('user', user) - ..set("location", ParseGeoPoint(latitude: 10, longitude: 10)); - - postPath = Uri.parse( - '$serverUrl$keyEndPointClasses${dietPlansObject.parseClassName}', - ).toString(); - }); - - test( - 'create() should create new object on the server, return the created ' - 'object in ParseResponse results and update the calling object ' - 'with the new data (objectId,createdAt). i.e: mutate the object state', - () async { - // arrange - - const resultFromServer = { - keyVarObjectId: "DLde4rYA8C", - keyVarCreatedAt: "2023-02-26T00:20:37.187Z" - }; - final postData = jsonEncode(dietPlansObject.toJson(forApiRQ: true)); - - when(client.post( - postPath, - options: anyNamed("options"), - data: postData, - )).thenAnswer( - (_) async => ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServer), - ), - ); - - // act - ParseResponse response = await dietPlansObject.create(); - - // assert - final resultList = response.results; - - expect(resultList, isNotNull); - - expect(resultList, isA>()); - - expect(resultList!.first, isNotNull); - - expect(resultList.first, isA()); - - final parseObject = (resultList.first as ParseObject); - - expect( - parseObject.createdAt!.toIso8601String(), - equals(resultFromServer[keyVarCreatedAt]), - ); - - expect( - dietPlansObject.createdAt!.toIso8601String(), - equals(resultFromServer[keyVarCreatedAt]), - ); - - expect( - parseObject.objectId, - equals(resultFromServer[keyVarObjectId]), - ); - - expect( - dietPlansObject.objectId, - equals(resultFromServer[keyVarObjectId]), - ); - - // the calling object (dietPlansObject) will be identical to the object - // in the ParseResponse results - expect( - identical(dietPlansObject, parseObject), - isTrue, - ); - - verify(client.post( - postPath, - options: anyNamed("options"), - data: postData, - )).called(1); - - verifyNoMoreInteractions(client); - }); - - test('create() should return error', () async { - // arrange - - final postData = jsonEncode(dietPlansObject.toJson(forApiRQ: true)); - final errorData = jsonEncode({keyCode: -1, keyError: "someError"}); - - when(client.post( - postPath, - options: anyNamed("options"), - data: postData, - )).thenAnswer( - (_) async => ParseNetworkResponse(data: errorData, statusCode: -1), - ); - - // act - ParseResponse response = await dietPlansObject.create(); - - // assert - expect(response.success, isFalse); - - expect(response.result, isNull); - - expect(response.count, isZero); - - expect(response.results, isNull); - - expect(response.error, isNotNull); - - expect(response.error!.message, equals('someError')); - - expect(response.error!.code, equals(ParseError.otherCause)); - - expect(dietPlansObject.objectId, isNull); - - expect(dietPlansObject.createdAt, isNull); - - verify(client.post( - postPath, - options: anyNamed("options"), - data: postData, - )).called(1); - - verifyNoMoreInteractions(client); - }); - }); -} diff --git a/packages/dart/test/src/objects/parse_object/parse_object_delete_test.dart b/packages/dart/test/src/objects/parse_object/parse_object_delete_test.dart deleted file mode 100644 index 397ab9ef5..000000000 --- a/packages/dart/test/src/objects/parse_object/parse_object_delete_test.dart +++ /dev/null @@ -1,230 +0,0 @@ -import 'dart:convert'; - -import 'package:mockito/mockito.dart'; -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -import '../../../parse_query_test.mocks.dart'; -import '../../../test_utils.dart'; - -void main() { - setUpAll(() async { - await initializeParse(); - }); - - group('delete()', () { - late MockParseClient client; - - late ParseObject dietPlansObject; - - setUp(() { - client = MockParseClient(); - - dietPlansObject = ParseObject("Diet_Plans", client: client); - }); - - test( - 'delete() should delete object form the server and all the object ' - 'data/state should be the same after the deletion', () async { - // arrange - dietPlansObject.objectId = "cmWCmCAyQQ"; - - dietPlansObject.set('Fat', 15); - - final dietPlansObjectDataBeforeDeletion = dietPlansObject.toJson(); - - final deletePath = Uri.parse( - '$serverUrl$keyEndPointClasses${dietPlansObject.parseClassName}/${dietPlansObject.objectId}', - ).toString(); - - final resultFromServer = {}; - - when(client.delete( - deletePath, - )).thenAnswer( - (_) async => ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServer), - ), - ); - - // act - final response = await dietPlansObject.delete(); - - // assert - - expect(response.success, isTrue); - - expect(response.count, equals(1)); - - expect(response.error, isNull); - - expect(response.results, isNotNull); - - expect(response.results, isA>()); - - expect(response.results!.isNotEmpty, isTrue); - - final objectFromResponse = response.results!.first; - - expect(objectFromResponse, isA()); - - expect(identical(objectFromResponse, dietPlansObject), isTrue); - - final dietPlansObjectDataAfterDeletion = - (objectFromResponse as ParseObject).toJson(); - - expect( - jsonEncode(dietPlansObjectDataAfterDeletion), - equals(jsonEncode(dietPlansObjectDataBeforeDeletion)), - ); - - verify(client.delete( - deletePath, - )).called(1); - - verifyNoMoreInteractions(client); - }); - - test('delete() should return error', () async { - // arrange - dietPlansObject.objectId = "cmWCmCAyQQ"; - - dietPlansObject.set('Fat', 15); - - final dietPlansObjectDataBeforeDeletion = - dietPlansObject.toJson(full: true); - - final deletePath = Uri.parse( - '$serverUrl$keyEndPointClasses${dietPlansObject.parseClassName}/${dietPlansObject.objectId}', - ).toString(); - - final error = Exception('error'); - - when(client.delete( - deletePath, - )).thenThrow(error); - - // act - final response = await dietPlansObject.delete(); - - // assert - expect(response.success, isFalse); - - expect(response.result, isNull); - - expect(response.count, isZero); - - expect(response.results, isNull); - - expect(response.error, isNotNull); - - expect(response.error!.exception, equals(error)); - - expect(response.error!.code, equals(ParseError.otherCause)); - - final dietPlansObjectDataAfterDeletion = - dietPlansObject.toJson(full: true); - - expect( - jsonEncode(dietPlansObjectDataAfterDeletion), - equals(jsonEncode(dietPlansObjectDataBeforeDeletion)), - ); - - verify(client.delete( - deletePath, - )).called(1); - - verifyNoMoreInteractions(client); - }); - - test( - 'delete(id: id) should delete object form the server and all the object ' - 'data/state should be the same after the deletion using id parameter', - () async { - // arrange - const id = "cmWCmCAyQQ"; - - dietPlansObject.set('Fat', 15); - - final dietPlansObjectDataBeforeDeletion = dietPlansObject.toJson(); - - final deletePath = Uri.parse( - '$serverUrl$keyEndPointClasses${dietPlansObject.parseClassName}/$id', - ).toString(); - - final resultFromServer = {}; - - when(client.delete( - deletePath, - )).thenAnswer( - (_) async => ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServer), - ), - ); - - // act - final response = await dietPlansObject.delete(id: id); - - // assert - - expect(response.success, isTrue); - - expect(response.count, equals(1)); - - expect(response.error, isNull); - - expect(response.results, isNotNull); - - expect(response.results, isA>()); - - expect(response.results!.isNotEmpty, isTrue); - - final objectFromResponse = response.results!.first; - - expect(objectFromResponse, isA()); - - expect(identical(objectFromResponse, dietPlansObject), isTrue); - - final dietPlansObjectDataAfterDeletion = - (objectFromResponse as ParseObject).toJson(); - - expect( - jsonEncode(dietPlansObjectDataAfterDeletion), - equals(jsonEncode(dietPlansObjectDataBeforeDeletion)), - ); - - verify(client.delete( - deletePath, - )).called(1); - - verifyNoMoreInteractions(client); - }); - - test( - 'delete() should throw Exception if both objectId and id parameter ' - 'is null or empty', () async { - // arrange - dietPlansObject.objectId = null; - String? id; - - // assert - expect( - () async => await dietPlansObject.delete(id: id), - throwsA(isA()), - reason: 'both objectId and id are null', - ); - - dietPlansObject.objectId = ''; - id = ''; - expect( - () async => await dietPlansObject.delete(id: id), - throwsA(isA()), - reason: 'both objectId and id are empty', - ); - - verifyZeroInteractions(client); - }); - }); -} diff --git a/packages/dart/test/src/objects/parse_object/parse_object_distinct_test.dart b/packages/dart/test/src/objects/parse_object/parse_object_distinct_test.dart deleted file mode 100644 index d61384cdd..000000000 --- a/packages/dart/test/src/objects/parse_object/parse_object_distinct_test.dart +++ /dev/null @@ -1,167 +0,0 @@ -import 'dart:convert'; - -import 'package:mockito/mockito.dart'; -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -import '../../../parse_query_test.mocks.dart'; -import '../../../test_utils.dart'; - -void main() { - setUpAll(() async { - await initializeParse(); - }); - - group('distinct()', () { - late MockParseClient client; - - late ParseObject dietPlansObject; - - const keyName = 'Name'; - late String stringDistinctQuery = 'distinct=$keyName'; - - // https://example.com/aggregate/Diet_Plans?distinct=Name - late String getPath; - - setUp(() { - client = MockParseClient(); - - dietPlansObject = ParseObject("Diet_Plans", client: client); - - final getURI = Uri.parse( - '$serverUrl$keyEndPointAggregate${dietPlansObject.parseClassName}', - ); - getPath = getURI.replace(query: stringDistinctQuery).toString(); - }); - - test( - 'distinct() should return the expected result from server with ' - 'distinct aggregate on a column', () async { - // arrange - const resultFromServer = { - "results": [ - { - "objectId": "lHJEkg7kxm", - "Name": "Textbook", - "Description": - "For an active lifestyle and a straight forward macro plan, we suggest this plan.", - "Fat": 25, - "Carbs": 50, - "Protein": 25, - "Status": false, - "user": { - "__type": "Pointer", - "className": "_User", - "objectId": "cmWCmCAyQQ" - }, - "createdAt": "2023-02-24T15:39:44.800Z", - "updatedAt": "2023-02-24T22:28:17.867Z", - "location": {"__type": "GeoPoint", "latitude": 50, "longitude": 0}, - "anArray": ["3", "4"] - }, - { - "objectId": "15NCdmBFBw", - "Name": "Zone Diet", - "Description": - "Popular with CrossFit users. Zone Diet targets similar macros.", - "Fat": 30, - "Carbs": 40, - "Protein": 30, - "Status": true, - "user": { - "__type": "Pointer", - "className": "_User", - "objectId": "cmWCmCAyQQ" - }, - "createdAt": "2023-02-24T15:44:17.781Z", - "updatedAt": "2023-02-24T22:28:45.446Z", - "location": {"__type": "GeoPoint", "latitude": 10, "longitude": 20}, - "anArray": ["1", "2"], - "afile": { - "__type": "File", - "name": "33b6acb416c0mmer-wallpapers.png", - "url": "https://parsefiles.back4app.com/gyBkQBRSapgwfxB/cers.png" - } - } - ] - }; - - final resultList = resultFromServer["results"]!; - final firstObject = ParseObject('Diet_Plans').fromJson(resultList[0]); - final secondObject = ParseObject('Diet_Plans').fromJson(resultList[1]); - - when(client.get( - getPath, - )).thenAnswer( - (_) async => ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServer), - ), - ); - - // act - final response = await dietPlansObject.distinct(stringDistinctQuery); - - // assert - - expect(response.count, equals(2)); - - expect(response.success, isTrue); - - expect(response.results, isNotNull); - - expect(response.results, isA>()); - - final responseResults = List.from(response.results!); - - expect( - jsonEncode(responseResults[0].toJson()), - equals(jsonEncode(firstObject.toJson())), - ); - - expect( - jsonEncode(responseResults[1].toJson()), - equals(jsonEncode(secondObject.toJson())), - ); - - verify(client.get( - getPath, - )).called(1); - - verifyNoMoreInteractions(client); - }); - - test('distinct() should return error', () async { - // arrange - final error = Exception('error'); - - when(client.get( - getPath, - )).thenThrow(error); - - // act - final response = await dietPlansObject.distinct(stringDistinctQuery); - - // assert - expect(response.success, isFalse); - - expect(response.result, isNull); - - expect(response.count, isZero); - - expect(response.results, isNull); - - expect(response.error, isNotNull); - - expect(response.error!.exception, equals(error)); - - expect(response.error!.code, equals(ParseError.otherCause)); - - verify(client.get( - getPath, - )).called(1); - - verifyNoMoreInteractions(client); - }); - }); -} diff --git a/packages/dart/test/src/objects/parse_object/parse_object_fetch_test.dart b/packages/dart/test/src/objects/parse_object/parse_object_fetch_test.dart deleted file mode 100644 index bd3863b1d..000000000 --- a/packages/dart/test/src/objects/parse_object/parse_object_fetch_test.dart +++ /dev/null @@ -1,174 +0,0 @@ -import 'dart:convert'; - -import 'package:mockito/mockito.dart'; -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -import '../../../parse_query_test.mocks.dart'; -import '../../../test_utils.dart'; - -void main() { - setUpAll(() async { - await initializeParse(); - }); - - group('fetch()', () { - late MockParseClient client; - - late ParseObject dietPlansObject; - - setUp(() { - client = MockParseClient(); - - dietPlansObject = ParseObject("Diet_Plans", client: client); - }); - - test( - 'fetch() should return fresh data from the server about an object using its ID', - () async { - // arrange - dietPlansObject.objectId = "Mn1iJTkWTE"; - - final getPath = Uri.parse( - '$serverUrl$keyEndPointClasses${dietPlansObject.parseClassName}/${dietPlansObject.objectId}', - ).replace(query: 'include=afile,owner').toString(); - - const resultsFromServer = { - "results": [ - { - "objectId": "Mn1iJTkWTE", - "Name": "A string", - "Description": "A string", - "Carbs": 1, - "Fat": 1, - "Status": true, - "Protein": 1, - "co_owner": { - "__type": "Pointer", - "className": "_User", - "objectId": "cmWCmCAyQQ" - }, - "owner": { - "objectId": "eTSwGnAOAq", - "username": "n@g.com", - "createdAt": "2023-03-01T03:37:41.011Z", - "updatedAt": "2023-03-01T03:37:41.011Z", - "ACL": { - "*": {"read": true}, - "eTSwGnAOAq": {"read": true, "write": true} - }, - "__type": "Object", - "className": "_User" - }, - "location": { - "__type": "GeoPoint", - "latitude": 40, - "longitude": -30 - }, - "anArray": [1, "a string"], - "afile": { - "__type": "File", - "name": "resume.txt", - "url": "https://exampe.com/gyBUISapgwfxB/resume.txt" - }, - "createdAt": "2023-03-05T00:25:31.466Z", - "updatedAt": "2023-03-05T00:25:31.466Z", - "users": {"__type": "Relation", "className": "_User"} - }, - ] - }; - - final expectedParseObject = ParseObject('Diet_Plans') - ..fromJson(resultsFromServer['results']!.first); - - when(client.get( - getPath, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).thenAnswer( - (_) async => ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultsFromServer), - ), - ); - - // act - ParseObject parseObject = await dietPlansObject.fetch( - include: ['afile', 'owner'], - ); - - // assert - - expect( - jsonEncode(parseObject.toJson(full: true)), - equals(jsonEncode(expectedParseObject.toJson(full: true))), - ); - - verify(client.get( - getPath, - )).called(1); - - verifyNoMoreInteractions(client); - }); - - test( - 'fetch() should return the same calling object in case of an error and ' - 'the object data should remain the same', () async { - // arrange - dietPlansObject.objectId = "Mn1iJTkWTE"; - - const keyFat = 'keyFat'; - const keyFatValue = 15; - - dietPlansObject.set(keyFat, keyFatValue); - - final getPath = Uri.parse( - '$serverUrl$keyEndPointClasses${dietPlansObject.parseClassName}/${dietPlansObject.objectId}', - ).toString(); - - final error = Exception('error'); - - when(client.get( - getPath, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).thenThrow(error); - - // act - ParseObject parseObject = await dietPlansObject.fetch(); - - // assert - expect(identical(parseObject, dietPlansObject), isTrue); - - expect(dietPlansObject.get(keyFat), equals(keyFatValue)); - - verify(client.get( - getPath, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).called(1); - - verifyNoMoreInteractions(client); - }); - - test('fetch() should throw exception if the objectId is null or empty ', - () async { - // arrange - dietPlansObject.objectId = null; - - expect( - () async => await dietPlansObject.fetch(), - throwsA(isA()), - reason: 'the objectId is null', - ); - - dietPlansObject.objectId = ''; - - expect( - () async => await dietPlansObject.fetch(), - throwsA(isA()), - reason: 'the objectId is empty', - ); - }); - }); -} diff --git a/packages/dart/test/src/objects/parse_object/parse_object_get_all_test.dart b/packages/dart/test/src/objects/parse_object/parse_object_get_all_test.dart deleted file mode 100644 index a43747d5b..000000000 --- a/packages/dart/test/src/objects/parse_object/parse_object_get_all_test.dart +++ /dev/null @@ -1,156 +0,0 @@ -import 'dart:convert'; - -import 'package:mockito/mockito.dart'; -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -import '../../../parse_query_test.mocks.dart'; -import '../../../test_utils.dart'; - -void main() { - setUpAll(() async { - await initializeParse(); - }); - - group('getAll()', () { - late MockParseClient client; - - late ParseObject dietPlansObject; - - late String getPath; - - setUp(() { - client = MockParseClient(); - - dietPlansObject = ParseObject("Diet_Plans", client: client); - - getPath = Uri.parse( - '$serverUrl$keyEndPointClasses${dietPlansObject.parseClassName}', - ).toString(); - }); - - test('getAll() should return all objects', () async { - // arrange - - const desiredOutput = { - "results": [ - { - "objectId": "lHJEkg7kxm", - "Name": "Textbook", - "Description": - "For an active lifestyle and a straight forward macro plan, we suggest this plan.", - "Fat": 25, - "Carbs": 50, - "Protein": 25, - "Status": false, - "user": { - "__type": "Pointer", - "className": "_User", - "objectId": "cmWCmCAyQQ" - }, - "createdAt": "2023-02-24T15:39:44.800Z", - "updatedAt": "2023-02-24T22:28:17.867Z", - "location": {"__type": "GeoPoint", "latitude": 50, "longitude": 0}, - "anArray": ["3", "4"] - }, - { - "objectId": "15NCdmBFBw", - "Name": "Zone Diet", - "Description": - "Popular with CrossFit users. Zone Diet targets similar macros.", - "Fat": 30, - "Carbs": 40, - "Protein": 30, - "Status": true, - "user": { - "__type": "Pointer", - "className": "_User", - "objectId": "cmWCmCAyQQ" - }, - "createdAt": "2023-02-24T15:44:17.781Z", - "updatedAt": "2023-02-24T22:28:45.446Z", - "location": {"__type": "GeoPoint", "latitude": 10, "longitude": 20}, - "anArray": ["1", "2"], - "afile": { - "__type": "File", - "name": "33b6acb416c0mmer-wallpapers.png", - "url": "https://parsefiles.back4app.com/gyBkQBRSapgwfxB/cers.png" - } - } - ] - }; - - when(client.get( - getPath, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).thenAnswer((_) async => ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(desiredOutput), - )); - - // act - ParseResponse response = await dietPlansObject.getAll(); - - // assert - List listParseObject = List.from( - response.results!, - ); - - expect(response.results?.first, isA()); - - expect(response.count, equals(2)); - - expect( - listParseObject.length, - equals(desiredOutput["results"]!.length), - ); - - verify(client.get( - getPath, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).called(1); - - verifyNoMoreInteractions(client); - }); - - test('getAll() should return error', () async { - // arrange - - final error = Exception('error'); - - when(client.get( - getPath, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).thenThrow(error); - - // act - ParseResponse response = await dietPlansObject.getAll(); - - // assert - expect(response.success, isFalse); - - expect(response.result, isNull); - - expect(response.count, isZero); - - expect(response.results, isNull); - - expect(response.error, isNotNull); - - expect(response.error!.exception, equals(error)); - - expect(response.error!.code, equals(-1)); - - verify(client.get( - getPath, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).called(1); - - verifyNoMoreInteractions(client); - }); - }); -} diff --git a/packages/dart/test/src/objects/parse_object/parse_object_get_object_test.dart b/packages/dart/test/src/objects/parse_object/parse_object_get_object_test.dart deleted file mode 100644 index 73c6adf24..000000000 --- a/packages/dart/test/src/objects/parse_object/parse_object_get_object_test.dart +++ /dev/null @@ -1,170 +0,0 @@ -import 'dart:convert'; - -import 'package:mockito/mockito.dart'; -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -import '../../../parse_query_test.mocks.dart'; -import '../../../test_utils.dart'; - -void main() { - setUpAll(() async { - await initializeParse(); - }); - - group('getObject()', () { - late MockParseClient client; - - late ParseObject dietPlansObject; - - late String getPath; - - const objectId = "Mn1iJTkWTE"; - - setUp(() { - client = MockParseClient(); - - dietPlansObject = ParseObject("Diet_Plans", client: client); - - dietPlansObject.objectId = objectId; - - getPath = Uri.parse( - '$serverUrl$keyEndPointClasses${dietPlansObject.parseClassName}/${dietPlansObject.objectId}', - ).replace(query: 'include=afile,owner').toString(); - }); - - test('getObject() should get a object form the server using its objectId', - () async { - // arrange - const resultsFromServer = { - "results": [ - { - "objectId": "Mn1iJTkWTE", - "Name": "A string", - "Description": "A string", - "Carbs": 1, - "Fat": 1, - "Status": true, - "Protein": 1, - "co_owner": { - "__type": "Pointer", - "className": "_User", - "objectId": "cmWCmCAyQQ" - }, - "owner": { - "objectId": "eTSwGnAOAq", - "username": "n@g.com", - "createdAt": "2023-03-01T03:37:41.011Z", - "updatedAt": "2023-03-01T03:37:41.011Z", - "ACL": { - "*": {"read": true}, - "eTSwGnAOAq": {"read": true, "write": true} - }, - "__type": "Object", - "className": "_User" - }, - "location": { - "__type": "GeoPoint", - "latitude": 40, - "longitude": -30 - }, - "anArray": [1, "a string"], - "afile": { - "__type": "File", - "name": "resume.txt", - "url": "https://exampe.com/gyBUISapgwfxB/resume.txt" - }, - "createdAt": "2023-03-05T00:25:31.466Z", - "updatedAt": "2023-03-05T00:25:31.466Z", - "users": {"__type": "Relation", "className": "_User"} - }, - ] - }; - - final expectedParseObject = ParseObject('Diet_Plans') - ..fromJson(resultsFromServer['results']!.first); - - when(client.get( - getPath, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).thenAnswer( - (_) async => ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultsFromServer), - ), - ); - - // act - final response = await dietPlansObject.getObject( - objectId, - include: ['afile', 'owner'], - ); - - // assert - expect(response.count, equals(1)); - - expect(response.success, isTrue); - - expect(response.results, isNotNull); - - expect(response.results, isA>()); - - final responseResults = List.from(response.results!); - - final parseObjectFromServer = responseResults.first; - - expect( - jsonEncode(parseObjectFromServer.toJson(full: true)), - equals(jsonEncode(expectedParseObject.toJson(full: true))), - ); - - verify(client.get( - getPath, - )).called(1); - - verifyNoMoreInteractions(client); - }); - - test('getObject() should return error', () async { - // arrange - - final error = Exception('error'); - - when(client.get( - getPath, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).thenThrow(error); - - // act - final response = await dietPlansObject.getObject( - objectId, - include: ['afile', 'owner'], - ); - - // assert - expect(response.success, isFalse); - - expect(response.result, isNull); - - expect(response.count, isZero); - - expect(response.results, isNull); - - expect(response.error, isNotNull); - - expect(response.error!.exception, equals(error)); - - expect(response.error!.code, equals(ParseError.otherCause)); - - verify(client.get( - getPath, - options: anyNamed("options"), - onReceiveProgress: anyNamed("onReceiveProgress"), - )).called(1); - - verifyNoMoreInteractions(client); - }); - }); -} diff --git a/packages/dart/test/src/objects/parse_object/parse_object_increment_decrement_test.dart b/packages/dart/test/src/objects/parse_object/parse_object_increment_decrement_test.dart deleted file mode 100644 index eb7c5dcf6..000000000 --- a/packages/dart/test/src/objects/parse_object/parse_object_increment_decrement_test.dart +++ /dev/null @@ -1,428 +0,0 @@ -import 'dart:convert'; - -import 'package:collection/collection.dart'; -import 'package:mockito/mockito.dart'; -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -import '../../../parse_query_test.mocks.dart'; -import '../../../test_utils.dart'; - -void main() { - setUpAll(() async { - await initializeParse(); - }); - - group('Increment/Decrement', () { - late MockParseClient client; - - late ParseObject dietPlansObject; - - const keyFat = 'fat'; - - setUp(() async { - client = MockParseClient(); - - dietPlansObject = ParseObject("Diet_Plans", client: client); - }); - - test( - 'Incrementing values using setIncrement() and then calling get(key) ' - 'should return Instance of num that hold the result of incrementing ' - 'the value by the amount parameter', () { - // arrange - dietPlansObject.set(keyFat, 0); - - // act - dietPlansObject.setIncrement(keyFat, 1); - dietPlansObject.setIncrement(keyFat, 2.5); - - // assert - final fatValue = dietPlansObject.get(keyFat); - - expect(fatValue, isA()); - - expect(fatValue, equals(3.5)); - }); - - test( - 'Incrementing not existing values should be handled by assuming' - 'that the default value is 0 and operate on it', () { - // act - dietPlansObject.setIncrement(keyFat, 1); - dietPlansObject.setIncrement(keyFat, 2.5); - - // assert - final fatValue = dietPlansObject.get(keyFat); - - expect(fatValue, isA()); - - expect(fatValue, equals(3.5)); - }); - - test( - 'Incrementing should work with already present values decoded from API', - () { - // arrange - const resultFromServer = { - "objectId": "O6BHlwV48Z", - "createdAt": "2023-02-26T13:23:03.073Z", - "updatedAt": "2023-03-01T03:38:16.390Z", - keyFat: 2.5, - }; - - dietPlansObject = ParseObject('Diet_Plans')..fromJson(resultFromServer); - - // act - dietPlansObject.setIncrement(keyFat, 2.5); - - // assert - final fatValue = dietPlansObject.get(keyFat); - - expect(fatValue, isA()); - - expect(fatValue, equals(5)); - }); - test( - 'setIncrement() should account for pervasively set value', - () { - // arrange - dietPlansObject.set(keyFat, 5); - - // act - dietPlansObject.setIncrement(keyFat, 2.5); - - // assert - final fatValue = dietPlansObject.get(keyFat); - - expect(fatValue, isA()); - - expect(fatValue, equals(7.5)); - }, - ); - - test( - 'setIncrement() operation should not be mergeable with any other' - 'operation other than setDecrement()', () { - testUnmergeableOperationShouldThrow( - parseObject: dietPlansObject, - testingOn: dietPlansObject.setIncrement, - excludeMergeableOperations: [dietPlansObject.setDecrement], - ); - }); - - test( - 'the amount that should be added to a value for the API should be incremental' - ' and independent from the estimated value (the increment operation result)', - () { - // arrange - dietPlansObject.fromJson({keyFat: 10}); - - // act - dietPlansObject.setIncrement(keyFat, 2.5); - dietPlansObject.setIncrement(keyFat, 2.5); - - // assert - expect( - dietPlansObject.toJson(forApiRQ: true)[keyFat]['amount'], - equals(5.0), - ); - - expect( - dietPlansObject.get(keyFat), - equals(15.0), - ); - }, - ); - - test( - 'Decrementing values using setDecrement() and then calling get(key) ' - 'should return Instance of num that hold the result of decrementing ' - 'the value by the amount parameter', () { - // arrange - dietPlansObject.set(keyFat, 0); - - // act - dietPlansObject.setDecrement(keyFat, 1); - dietPlansObject.setDecrement(keyFat, 2.5); - - // assert - final fatValue = dietPlansObject.get(keyFat); - - expect(fatValue, isA()); - - expect(fatValue, equals(-3.5)); - }); - - test( - 'Decrementing not existing values should be handled by assuming' - 'that the default value is 0 and operate on it', () { - // act - dietPlansObject.setDecrement(keyFat, 1); - dietPlansObject.setDecrement(keyFat, 2.5); - - // assert - final fatValue = dietPlansObject.get(keyFat); - - expect(fatValue, isA()); - - expect(fatValue, equals(-3.5)); - }); - - test( - 'Decrementing should work with already present values decoded from API', - () { - // arrange - const resultFromServer = { - "objectId": "O6BHlwV48Z", - "createdAt": "2023-02-26T13:23:03.073Z", - "updatedAt": "2023-03-01T03:38:16.390Z", - keyFat: 3.5, - }; - - dietPlansObject = ParseObject('Diet_Plans')..fromJson(resultFromServer); - - // act - dietPlansObject.setDecrement(keyFat, 2.5); - - // assert - final fatValue = dietPlansObject.get(keyFat); - - expect(fatValue, isA()); - - expect(fatValue, equals(1)); - }); - - test( - 'setDecrement() should account for pervasively set value', - () { - // arrange - dietPlansObject.set(keyFat, 5); - - // act - dietPlansObject.setDecrement(keyFat, 3); - - // assert - final fatValue = dietPlansObject.get(keyFat); - - expect(fatValue, isA()); - - expect(fatValue, equals(2)); - }, - ); - - test( - 'the amount that should be subtracted from a value for the API should be incremental' - ' and independent from the estimated value (the decrement operation result)', - () { - // arrange - dietPlansObject.fromJson({keyFat: 10}); - - // act - dietPlansObject.setDecrement(keyFat, 2.5); - dietPlansObject.setDecrement(keyFat, 2.5); - - // assert - expect( - dietPlansObject.toJson(forApiRQ: true)[keyFat]['amount'], - equals(-5.0), - ); - - expect( - dietPlansObject.get(keyFat), - equals(5.0), - ); - }, - ); - - test( - 'mixing and matching Decrements and Increments should not cause ' - 'any issue', () { - // act - dietPlansObject.setDecrement(keyFat, 2.5); - - dietPlansObject.setIncrement(keyFat, 5); - - dietPlansObject.setDecrement(keyFat, 3); - - dietPlansObject.setIncrement(keyFat, 1.5); - - // assert - final fatValue = dietPlansObject.get(keyFat); - - expect(fatValue, isA()); - - expect(fatValue, equals(1)); - }); - - test( - 'setDecrement() operation should not be mergeable with any other' - 'operation other than setIncrement()', () { - testUnmergeableOperationShouldThrow( - parseObject: dietPlansObject, - testingOn: dietPlansObject.setDecrement, - excludeMergeableOperations: [dietPlansObject.setIncrement], - ); - }); - - test( - 'When calling clearUnsavedChanges() the number should be reverted back' - ' to its original state before any modifications were made', () { - // arrange - dietPlansObject.fromJson({ - 'myNumber': 5, - "objectId": "someId" - }); // assume this coming from the server - - dietPlansObject.setIncrement('myNumber', 5); - - // act - dietPlansObject.clearUnsavedChanges(); - - // assert - final number = dietPlansObject.get('myNumber'); - - expect(number, equals(5)); - }); - - test( - 'The number internal state should be identical ' - 'before and after storing it in data store', () async { - // arrange - dietPlansObject.fromJson({ - 'myNumber': 5, - "objectId": "someId" - }); // assume this coming from the server - - dietPlansObject.setIncrement('myNumber', 5); - - final numberBeforePin = dietPlansObject.get('myNumber'); - final toJsonBeforePin = dietPlansObject.toJson(forApiRQ: true); - - // act - await dietPlansObject.pin(); - - final objectFromPin = await dietPlansObject.fromPin('someId'); - - // assert - final numberAfterPin = objectFromPin.get('myNumber'); - final toJsonAfterPin = objectFromPin.toJson(forApiRQ: true); - - expect(numberBeforePin, equals(numberAfterPin)); - - expect( - DeepCollectionEquality().equals(toJsonBeforePin, toJsonAfterPin), - isTrue, - ); - }); - - test( - 'If an Increment/Decrement operation is performed during the save() ' - 'function, the result of the operation should be present in the internal ' - 'state of the ParseNumber as a value that has not been saved. The data ' - 'that has been saved should be moved to the saved state', - () async { - // arrange - const resultFromServer = { - keyVarObjectId: "DLde4rYA8C", - keyVarCreatedAt: "2023-02-26T00:20:37.187Z" - }; - - when(client.post( - any, - options: anyNamed("options"), - data: anyNamed('data'), - )).thenAnswer( - (_) async { - await Future.delayed(Duration(milliseconds: 100)); - return ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServer), - ); - }, - ); - - dietPlansObject.setIncrement('myNumber', 1); - - final numberBeforeSave = dietPlansObject.get('myNumber'); - final valueForApiReqBeforeSave = dietPlansObject.toJson(forApiRQ: true); - - // act - dietPlansObject.save(); - - // async gap, this could be anything in the app like a click of a button - await Future.delayed(Duration.zero); - - // Then suddenly the user increment the value - dietPlansObject.setIncrement('myNumber', 3); - - // Await the save function to be done - await Future.delayed(Duration(milliseconds: 150)); - - // assert - expect(numberBeforeSave, equals(1)); - - final numberAfterSave = dietPlansObject.get('myNumber'); - expect(numberAfterSave, equals(4)); - - const expectedValueForApiReqBeforeSave = { - "myNumber": {"__op": "Increment", "amount": 1} - }; - expect( - DeepCollectionEquality().equals( - valueForApiReqBeforeSave, - expectedValueForApiReqBeforeSave, - ), - isTrue, - ); - - final valueForApiReqAfterSave = dietPlansObject.toJson(forApiRQ: true); - const expectedValueForApiReqAfterSave = { - "myNumber": {"__op": "Increment", "amount": 3} - }; - expect( - DeepCollectionEquality().equals( - valueForApiReqAfterSave, - expectedValueForApiReqAfterSave, - ), - isTrue, - ); - }, - ); - - test( - 'The number value and the number value for api request should be identical ' - 'before and after the save() failed to save the object', () { - // arrange - - when(client.post( - any, - options: anyNamed("options"), - data: anyNamed("data"), - )).thenThrow(Exception('error')); - - dietPlansObject.setIncrement('myNumber', 1); - - final valueForApiReqBeforeErrorSave = - dietPlansObject.toJson(forApiRQ: true); - - // act - dietPlansObject.save(); - - // assert - final numberValue = dietPlansObject.get('myNumber'); - - expect(numberValue, equals(1)); - - final valueForApiReqAfterErrorSave = - dietPlansObject.toJson(forApiRQ: true); - expect( - DeepCollectionEquality().equals( - valueForApiReqAfterErrorSave, - valueForApiReqBeforeErrorSave, - ), - isTrue, - ); - }); - }); -} diff --git a/packages/dart/test/src/objects/parse_object/parse_object_query_test.dart b/packages/dart/test/src/objects/parse_object/parse_object_query_test.dart deleted file mode 100644 index 0f067abe3..000000000 --- a/packages/dart/test/src/objects/parse_object/parse_object_query_test.dart +++ /dev/null @@ -1,172 +0,0 @@ -import 'dart:convert'; - -import 'package:mockito/mockito.dart'; -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -import '../../../parse_query_test.mocks.dart'; -import '../../../test_utils.dart'; - -void main() { - setUpAll(() async { - await initializeParse(); - }); - - group('query()', () { - late MockParseClient client; - - late ParseObject dietPlansObject; - - const keyFat = 'fat'; - - //where={"fat": 15} - late String stringQuery; - - //https://example.com/classes/Diet_Plans?where=%7B%22fat%22:%2015%7D - late String getPath; - - setUp(() { - client = MockParseClient(); - - dietPlansObject = ParseObject("Diet_Plans", client: client); - - final query = QueryBuilder(dietPlansObject)..whereEqualTo(keyFat, 15); - stringQuery = query.buildQuery(); - - final getURI = Uri.parse( - '$serverUrl$keyEndPointClasses${dietPlansObject.parseClassName}', - ); - getPath = getURI.replace(query: 'where={"fat": 15}').toString(); - }); - - test('query() should return the expected result from server', () async { - // arrange - const resultFromServer = { - "results": [ - { - "objectId": "lHJEkg7kxm", - "Name": "Textbook", - "Description": - "For an active lifestyle and a straight forward macro plan, we suggest this plan.", - "Fat": 25, - "Carbs": 50, - "Protein": 25, - "Status": false, - "user": { - "__type": "Pointer", - "className": "_User", - "objectId": "cmWCmCAyQQ" - }, - "createdAt": "2023-02-24T15:39:44.800Z", - "updatedAt": "2023-02-24T22:28:17.867Z", - "location": {"__type": "GeoPoint", "latitude": 50, "longitude": 0}, - "anArray": ["3", "4"] - }, - { - "objectId": "15NCdmBFBw", - "Name": "Zone Diet", - "Description": - "Popular with CrossFit users. Zone Diet targets similar macros.", - "Fat": 30, - "Carbs": 40, - "Protein": 30, - "Status": true, - "user": { - "__type": "Pointer", - "className": "_User", - "objectId": "cmWCmCAyQQ" - }, - "createdAt": "2023-02-24T15:44:17.781Z", - "updatedAt": "2023-02-24T22:28:45.446Z", - "location": {"__type": "GeoPoint", "latitude": 10, "longitude": 20}, - "anArray": ["1", "2"], - "afile": { - "__type": "File", - "name": "33b6acb416c0mmer-wallpapers.png", - "url": "https://parsefiles.back4app.com/gyBkQBRSapgwfxB/cers.png" - } - } - ] - }; - - final resultList = resultFromServer["results"]!; - final firstObject = ParseObject('Diet_Plans').fromJson(resultList[0]); - final secondObject = ParseObject('Diet_Plans').fromJson(resultList[1]); - - when(client.get( - getPath, - )).thenAnswer( - (_) async => ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServer), - ), - ); - - // act - final response = await dietPlansObject.query(stringQuery); - - // assert - - expect(response.count, equals(2)); - - expect(response.success, isTrue); - - expect(response.results, isNotNull); - - expect(response.error, isNull); - - expect(response.results, isA>()); - - final responseResults = List.from(response.results!); - - expect( - jsonEncode(responseResults[0].toJson()), - equals(jsonEncode(firstObject.toJson())), - ); - - expect( - jsonEncode(responseResults[1].toJson()), - equals(jsonEncode(secondObject.toJson())), - ); - - verify(client.get( - getPath, - )).called(1); - - verifyNoMoreInteractions(client); - }); - - test('query() should return error', () async { - // arrange - final error = Exception('error'); - - when(client.get( - getPath, - )).thenThrow(error); - - // act - final response = await dietPlansObject.query(stringQuery); - - // assert - expect(response.success, isFalse); - - expect(response.result, isNull); - - expect(response.count, isZero); - - expect(response.results, isNull); - - expect(response.error, isNotNull); - - expect(response.error!.exception, equals(error)); - - expect(response.error!.code, equals(ParseError.otherCause)); - - verify(client.get( - getPath, - )).called(1); - - verifyNoMoreInteractions(client); - }); - }); -} diff --git a/packages/dart/test/src/objects/parse_object/parse_object_relation_test.dart b/packages/dart/test/src/objects/parse_object/parse_object_relation_test.dart deleted file mode 100644 index 773cd58c8..000000000 --- a/packages/dart/test/src/objects/parse_object/parse_object_relation_test.dart +++ /dev/null @@ -1,637 +0,0 @@ -import 'dart:convert'; - -import 'package:collection/collection.dart'; -import 'package:mockito/mockito.dart'; -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -import '../../../parse_query_test.mocks.dart'; -import '../../../test_utils.dart'; - -void main() { - group('Relation', () { - setUpAll(() async { - await initializeParse(); - }); - - late ParseObject dietPlansObject; - late MockParseClient client; - - late ParseUser user1; - late ParseUser user2; - - setUp(() { - client = MockParseClient(); - - user1 = ParseUser.forQuery()..objectId = 'user1'; - user2 = ParseUser.forQuery()..objectId = 'user2'; - - dietPlansObject = ParseObject('Diet_Plans', client: client); - }); - - test('addRelation(): the relation should hold two objects ', () { - // act - dietPlansObject.addRelation('usersRelation', [user1, user2]); - - // assert - final toJsonAfterAddRelation = dietPlansObject.toJson(forApiRQ: true); - - const expectedToJson = { - "usersRelation": { - "__op": "AddRelation", - "objects": [ - {"__type": "Pointer", "className": "_User", "objectId": "user1"}, - { - "__type": "Pointer", - "className": "_User", - "objectId": "user2", - } - ] - } - }; - - expect( - DeepCollectionEquality().equals( - expectedToJson, - toJsonAfterAddRelation, - ), - isTrue, - ); - }); - - test( - 'calling getRelation after adding Relation should return ParseRelation', - () { - // arrange - dietPlansObject.addRelation('usersRelation', [user1, user2]); - - // assert - expect( - () => dietPlansObject.getRelation('usersRelation'), - returnsNormally, - ); - }, - ); - - test( - 'calling getRelation after removing Relation should return ParseRelation', - () { - // arrange - dietPlansObject.removeRelation('usersRelation', [user1, user2]); - - // assert - expect( - () => dietPlansObject.getRelation('usersRelation'), - returnsNormally, - ); - }, - ); - - test('addRelation() operation should not be mergeable with any other', () { - testUnmergeableOperationShouldThrow( - parseObject: dietPlansObject, - testingOn: dietPlansObject.addRelation, - ); - }); - - test('removeRelation() operation should not be mergeable with any other', - () { - testUnmergeableOperationShouldThrow( - parseObject: dietPlansObject, - testingOn: dietPlansObject.removeRelation, - ); - }); - - test('getParent() should rerun the parent of the relation', () { - // arrange - final relation = dietPlansObject.getRelation('someRelationKey'); - - // act - final parent = relation.getParent(); - - // assert - expect(parent, dietPlansObject); - }); - - test('getKey() should rerun the relation key', () { - // arrange - final relation = dietPlansObject.getRelation('someRelationKey'); - - // act - final relationKey = relation.getKey(); - - // assert - expect(relationKey, equals('someRelationKey')); - }); - - test( - 'getTargetClass() should rerun null if the relation target class not known yet', - () { - // arrange - final relation = dietPlansObject.getRelation('someRelationKey'); - - // act - final targetClass = relation.targetClass; - - // assert - expect(targetClass, isNull); - }); - - test( - 'getTargetClass() should rerun the target class for the relation if ' - 'the user adds an object from the relation', () { - // arrange - final relation = dietPlansObject.getRelation('someRelationKey'); - - // act - relation.add(ParseObject('someClassNameAsTargetClass')); - final targetClass = relation.targetClass; - - // assert - expect(targetClass, equals('someClassNameAsTargetClass')); - }); - - test( - 'getTargetClass() should rerun the target class for the relation if ' - 'the user removes an object from the relation', () { - // arrange - final relation = dietPlansObject.getRelation('someRelationKey'); - - // act - relation.remove(ParseObject('someClassNameAsTargetClass')); - final targetClass = relation.targetClass; - - // assert - expect(targetClass, equals('someClassNameAsTargetClass')); - }); - - test( - 'getTargetClass() should return the target class for a relation when' - ' the object is received from the server', () { - // arrange - dietPlansObject.fromJson({ - "someRelationKey": { - "__type": "Relation", - "className": "someClassNameAsTargetClass" - } - }); // assume this from the server - - final relation = dietPlansObject.getRelation('someRelationKey'); - - // act - final targetClass = relation.targetClass; - - // assert - expect(targetClass, equals('someClassNameAsTargetClass')); - }); - - test('getQuery() should throw exception if the parent objectId is null ', - () { - // arrange - final relation = dietPlansObject.getRelation('someRelationKey'); - - // assert - expect(() => relation.getQuery(), throwsA(isA())); - }); - - test( - 'getQuery() should return QueryBuilder utilizing the ' - 'redirectClassNameForKey feature if the target class is null ', () { - // arrange - dietPlansObject.objectId = "someParentID"; - final relation = dietPlansObject.getRelation('someRelationKey'); - - // act - final query = relation.getQuery(); - - // assert - String expectedQuery = - r'where={"$relatedTo":{"object":{"__type":"Pointer","className":' - r'"Diet_Plans","objectId":"someParentID"},"key":"someRelationKey"}}' - r'&redirectClassNameForKey=someRelationKey'; - - expect(query.buildQuery(), equals(expectedQuery)); - }); - - test('getQuery() should return QueryBuilder with relatedTo constraint', () { - // arrange - dietPlansObject.objectId = "someParentID"; - final relation = dietPlansObject.getRelation('someRelationKey'); - relation.setTargetClass = 'someTargetClass'; - - // act - final query = relation.getQuery(); - - // assert - String expectedQuery = - r'where={"$relatedTo":{"object":{"__type":"Pointer","className":' - r'"Diet_Plans","objectId":"someParentID"},"key":"someRelationKey"}}'; - - expect(query.buildQuery(), equals(expectedQuery)); - }); - - test( - 'should throw an exception when trying to modify the target class if it is not null', - () { - // arrange - final relation = dietPlansObject.getRelation('someRelationKey'); - relation.add(ParseObject('someClassNameAsTargetClass')); - - // assert - expect( - () => relation.setTargetClass = "someOtherTargetClass", - throwsA(isA()), - ); - }); - - test( - 'When calling clearUnsavedChanges() the Relation should be reverted back' - ' to its original state before any modifications were made', () { - // arrange - - dietPlansObject.addRelation('someRelationKey', [user1, user1]); - - // act - dietPlansObject.clearUnsavedChanges(); - - // assert - final valueForApiReqAfterClearUnSaved = - dietPlansObject.toJson(forApiRQ: true); - - expect(valueForApiReqAfterClearUnSaved.isEmpty, isTrue); - - final relationValueForApiReq = - dietPlansObject.getRelation('someRelationKey').toJson(); - expect(relationValueForApiReq.isEmpty, isTrue); - }); - - test( - 'The Relation value and the value for api request should be identical ' - 'before and after the save() failed to save the object', () async { - // arrange - when(client.post( - any, - options: anyNamed("options"), - data: anyNamed("data"), - )).thenThrow(Exception('error')); - - dietPlansObject.addRelation('someRelationKey', [user1, user1]); - - final valueForApiReqBeforeErrorSave = - dietPlansObject.toJson(forApiRQ: true); - - final relationInternalStateBeforeErrorSave = - dietPlansObject.getRelation('someRelationKey').toJson(full: true); - - // act - await dietPlansObject.save(); - - // assert - final valueForApiReqAfterErrorSave = - dietPlansObject.toJson(forApiRQ: true); - expect( - DeepCollectionEquality().equals( - valueForApiReqAfterErrorSave, - valueForApiReqBeforeErrorSave, - ), - isTrue, - ); - - final relationInternalStateAfterErrorSave = - dietPlansObject.getRelation('someRelationKey').toJson(full: true); - - expect( - DeepCollectionEquality().equals( - relationInternalStateBeforeErrorSave, - relationInternalStateAfterErrorSave, - ), - isTrue, - ); - }); - - test( - 'After the save() function runs successfully for an API request, ' - 'the ParseRelation internal value for API request should be empty', - () async { - // arrange - - // batch arrange - const resultFromServerForBatch = [ - { - "success": { - keyVarObjectId: 'YAfSAWwXbL', - keyVarCreatedAt: "2023-03-10T12:23:45.678Z", - } - } - ]; - - final batchData = jsonEncode( - { - "requests": [ - { - 'method': 'PUT', - 'path': - '$keyEndPointClasses${user1.parseClassName}/${user1.objectId}', - 'body': user1.toJson(forApiRQ: true), - } - ] - }, - ); - - final batchPath = Uri.parse('$serverUrl/batch').toString(); - - when(client.post( - batchPath, - options: anyNamed("options"), - data: batchData, - )).thenAnswer( - (_) async { - return ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServerForBatch), - ); - }, - ); - - // post arrange - const resultFromServer = { - keyVarObjectId: "DLde4rYA8C", - keyVarCreatedAt: "2023-02-26T00:20:37.187Z" - }; - - final postPath = Uri.parse( - '$serverUrl$keyEndPointClasses${dietPlansObject.parseClassName}', - ).toString(); - - when(client.post( - postPath, - options: anyNamed("options"), - data: anyNamed("data"), - )).thenAnswer( - (_) async => ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServer), - ), - ); - - dietPlansObject.addRelation('someRelationKey', [user1]); - - // act - await dietPlansObject.save(); - - // assert - final relationValueForApiReq = - dietPlansObject.getRelation('someRelationKey').toJson(); - expect(relationValueForApiReq.isEmpty, isTrue); - }); - - test( - 'If a Relation operation is performed during the save() function, the result' - ' of the operation should be present in the internal state of the ' - 'ParseRelation as a value that has not been saved. The data that has ' - 'been saved should not be in value for API request', () async { - // arrange - - // batch arrange - const resultFromServerForBatch = [ - { - "success": { - keyVarUpdatedAt: "2023-03-10T12:23:45.678Z", - } - } - ]; - - final batchData = jsonEncode( - { - "requests": [ - { - 'method': 'PUT', - 'path': - '$keyEndPointClasses${user1.parseClassName}/${user1.objectId}', - 'body': user1.toJson(forApiRQ: true), - } - ] - }, - ); - - final batchPath = Uri.parse('$serverUrl/batch').toString(); - - when(client.post( - batchPath, - options: anyNamed("options"), - data: batchData, - )).thenAnswer( - (_) async { - return ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServerForBatch), - ); - }, - ); - - // post arrange - const resultFromServer = { - keyVarObjectId: "DLde4rYA8C", - keyVarCreatedAt: "2023-02-26T00:20:37.187Z" - }; - - final postPath = Uri.parse( - '$serverUrl$keyEndPointClasses${dietPlansObject.parseClassName}', - ).toString(); - - when(client.post( - postPath, - options: anyNamed("options"), - data: anyNamed("data"), - )).thenAnswer( - (_) async { - await Future.delayed(Duration(milliseconds: 100)); - return ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServer), - ); - }, - ); - - dietPlansObject.addRelation('someRelationKey', [user1]); - - // act - dietPlansObject.save(); - - // async gap, this could be anything in the app like a click of a button - await Future.delayed(Duration.zero); - - // Then suddenly the user adds a object to the relation - dietPlansObject.addRelation('someRelationKey', [user2]); - - // Await the save function to be done - await Future.delayed(Duration(milliseconds: 150)); - - // assert - final relationValueForApiReq = - dietPlansObject.getRelation('someRelationKey').toJson(); - - final expectedValueAfterSave = { - '__op': 'AddRelation', - 'objects': parseEncode([user2]) - }; - - expect( - DeepCollectionEquality().equals( - relationValueForApiReq, - expectedValueAfterSave, - ), - isTrue, - ); - }); - - test( - 'ParseRelation value for api request should be identical ' - 'before and after the save() failed to save the object', () async { - // arrange - - // batch arrange - const resultFromServerForBatch = [ - { - "success": { - keyVarUpdatedAt: "2023-03-10T12:23:45.678Z", - } - } - ]; - - final batchData = jsonEncode( - { - "requests": [ - { - 'method': 'PUT', - 'path': - '$keyEndPointClasses${user1.parseClassName}/${user1.objectId}', - 'body': user1.toJson(forApiRQ: true), - } - ] - }, - ); - - final batchPath = Uri.parse('$serverUrl/batch').toString(); - - when(client.post( - batchPath, - options: anyNamed("options"), - data: batchData, - )).thenAnswer( - (_) async { - return ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServerForBatch), - ); - }, - ); - - // post arrange - final postPath = Uri.parse( - '$serverUrl$keyEndPointClasses${dietPlansObject.parseClassName}', - ).toString(); - - when(client.post( - postPath, - options: anyNamed("options"), - data: anyNamed("data"), - )).thenThrow(Exception('error')); - - dietPlansObject.addRelation('someRelationKey', [user1]); - - final relationValueForApiReqBeforeErrorSave = - dietPlansObject.getRelation('someRelationKey').toJson(); - - // act - await dietPlansObject.save(); - - // assert - final relationValueForApiReqAfterErrorSave = - dietPlansObject.getRelation('someRelationKey').toJson(); - - expect( - DeepCollectionEquality().equals( - relationValueForApiReqBeforeErrorSave, - relationValueForApiReqAfterErrorSave, - ), - isTrue); - }); - - test( - 'The Relation internal state should be identical before and after ' - 'storing it in data store', () async { - // arrange - dietPlansObject.objectId = "someId"; - - final ParseRelation relation = - dietPlansObject.getRelation('someRelationKey'); - relation.remove(ParseObject('someClassName')); - - final toJsonBeforePin = relation.toJson(full: true); - - // act - await dietPlansObject.pin(); - - final ParseObject objectFromPin = await dietPlansObject.fromPin('someId'); - - // assert - final toJsonAfterPin = - objectFromPin.getRelation('someRelationKey').toJson(full: true); - - expect( - DeepCollectionEquality().equals(toJsonBeforePin, toJsonAfterPin), - isTrue, - ); - }); - - test( - 'should throw an exception if the user adds/removes a parse object' - ' with different target class', () { - // arrange - final ParseRelation relation = - dietPlansObject.getRelation('someRelationKey'); - - relation.remove(ParseObject('someClassName')..objectId = "123"); - relation.remove(ParseObject('someClassName')..objectId = '456'); - - // act - // assert - expect( - () => relation.remove(ParseObject('otherClassName')), - throwsA(isA()), - ); - }); - - test( - 'If the value for API request is empty in ParseRelation then the' - ' ParseRelation should not be part of the end map for' - ' API request of an object', () { - // arrange - - // this will create and store an empty relation if no relation associated - // with this key - dietPlansObject.getRelation('someRelationKey'); - - // act - - final valueFroApiRequest = dietPlansObject.toJson(forApiRQ: true); - - // assert - expect(valueFroApiRequest.isEmpty, isTrue); - }); - - test( - 'Should throw exception when getRelation() called on key' - ' holds value other than Relation or null', () { - // arrange - dietPlansObject.set('someRelationKey', 'some String'); - - // act - getRelation() => dietPlansObject.getRelation('someRelationKey'); - - // assert - expect(() => getRelation(), throwsA(isA())); - }); - }); -} diff --git a/packages/dart/test/src/objects/parse_object/parse_object_save_test.dart b/packages/dart/test/src/objects/parse_object/parse_object_save_test.dart deleted file mode 100644 index 9738d143f..000000000 --- a/packages/dart/test/src/objects/parse_object/parse_object_save_test.dart +++ /dev/null @@ -1,488 +0,0 @@ -import 'dart:convert'; - -import 'package:mockito/mockito.dart'; -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -import '../../../parse_query_test.mocks.dart'; -import '../../../test_utils.dart'; - -void main() { - setUpAll(() async { - await initializeParse(); - }); - - group('save()', () { - late MockParseClient client; - - late ParseObject dietPlansObject; - - setUp(() { - client = MockParseClient(); - - dietPlansObject = ParseObject("Diet_Plans", client: client); - }); - - test( - 'save should store an object online. but store its children objects first ' - 'then store the parent object. the children should be stored using batch request ' - 'and the parent using normal request ', () async { - // arrange - final planObject = ParseObject('Plans')..set('PlanName', 'plan name'); - - dietPlansObject.set('Plan', planObject); - - dietPlansObject.set('Fat', 15); - - // batch arrange - const planObjectIdFromServer = "YAfSAWwXbL"; - const planCreatedAtFromServer = "2023-03-10T12:23:45.678Z"; - - const resultFromServerForBatch = [ - { - "success": { - keyVarCreatedAt: planCreatedAtFromServer, - keyVarObjectId: planObjectIdFromServer - } - } - ]; - - // parse server batch syntax - // see https://docs.parseplatform.org/rest/guide/#batch-operations - final batchData = jsonEncode( - { - "requests": [ - // object to be saved in batch - { - 'method': 'POST', - 'path': '$keyEndPointClasses${planObject.parseClassName}', - 'body': planObject.toJson(forApiRQ: true), - } - ] - }, - ); - - final batchPath = Uri.parse('$serverUrl/batch').toString(); - - when(client.post( - batchPath, - options: anyNamed("options"), - data: batchData, - )).thenAnswer( - (_) async => ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServerForBatch), - ), - ); - - // post arrange - - final postPath = Uri.parse( - '$serverUrl$keyEndPointClasses${dietPlansObject.parseClassName}', - ).toString(); - - const dietPlansObjectIdFromServer = "BBERrYA8C"; - const dietPlansCreatedAtFromServer = "2023-02-26T00:20:37.187Z"; - - const resultFromServer = { - keyVarObjectId: dietPlansObjectIdFromServer, - keyVarCreatedAt: dietPlansCreatedAtFromServer, - }; - - when(client.post( - postPath, - options: anyNamed("options"), - data: anyNamed("data"), - )).thenAnswer( - (_) async => ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServer), - ), - ); - - // act - final response = await dietPlansObject.save(); - - // assert - expect(response.success, isTrue); - - expect(response.error, isNull); - - expect(response.count, equals(1)); - - final resultList = response.results; - - expect(resultList, isNotNull); - - expect(resultList!.length, equals(1)); - - expect(resultList, isA>()); - - final savedDietPlansObject = (resultList.first as ParseObject); - - // the calling object (dietPlansObject) will be identical to the object - // in the ParseResponse results - expect( - identical(dietPlansObject, savedDietPlansObject), - isTrue, - ); - - expect(dietPlansObject.objectId, equals(dietPlansObjectIdFromServer)); - - expect(planObject.objectId, equals(planObjectIdFromServer)); - - expect( - dietPlansObject.createdAt!.toIso8601String(), - equals(dietPlansCreatedAtFromServer), - ); - - expect( - planObject.createdAt!.toIso8601String(), - equals(planCreatedAtFromServer), - ); - - verify(client.post( - batchPath, - options: anyNamed("options"), - data: batchData, - )).called(1); - - verify(client.post( - postPath, - options: anyNamed("options"), - data: anyNamed('data'), - )).called(1); - - verifyNoMoreInteractions(client); - }); - - test( - 'should return unsuccessful response if there is a unbreakable ' - 'cycle between two or more unsaved objects', () async { - // arrange - final planObject = ParseObject('Plans'); - - // create a cycle of unsaved objects depends on each other - planObject.set('dietPlan', dietPlansObject); - dietPlansObject.set('Plan', planObject); - - // act - // TODO: should this throw an error about an unbreakable cycle between two or more unsaved objects? - final response = await dietPlansObject.save(); - - // assert - expect(response.success, isFalse); - - verifyZeroInteractions(client); - }); - - test( - 'save should updated an object online and store and updated any object ' - 'added via relation', () async { - // arrange - dietPlansObject.objectId = "NNAfSGGHHbL"; - - final planObjectToCreate = ParseObject('Plans') - ..set('PlanName', 'plan 1'); - - final planObjectToUpdate = ParseObject('Plans') - ..objectId = "EEWAfSdXbL" - ..set('PlanName', 'plan 2'); - - dietPlansObject.addRelation( - 'relatedPlans', - [planObjectToCreate, planObjectToUpdate], - ); - - dietPlansObject.set('Fat', 15); - - // batch arrange - const planToCreateObjectIdFromServer = "YAfSAWwXbL"; - const planToCreateCreatedAtFromServer = "2023-03-10T12:23:45.678Z"; - - const planToUpdateUpdatedAtFromServer = "2023-03-11T13:25:27.865Z"; - - const resultFromServerForBatch = [ - { - "success": { - keyVarCreatedAt: planToCreateCreatedAtFromServer, - keyVarObjectId: planToCreateObjectIdFromServer - } - }, - { - "success": { - keyVarUpdatedAt: planToUpdateUpdatedAtFromServer, - } - } - ]; - - final batchData = jsonEncode( - { - "requests": [ - { - 'method': 'POST', - 'path': '$keyEndPointClasses${planObjectToCreate.parseClassName}', - 'body': planObjectToCreate.toJson(forApiRQ: true), - }, - { - 'method': 'PUT', - 'path': - '$keyEndPointClasses${planObjectToUpdate.parseClassName}/${planObjectToUpdate.objectId}', - 'body': planObjectToUpdate.toJson(forApiRQ: true), - } - ] - }, - ); - - final batchPath = Uri.parse('$serverUrl/batch').toString(); - - when(client.post( - batchPath, - options: anyNamed("options"), - data: batchData, - )).thenAnswer( - (_) async => ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServerForBatch), - ), - ); - print(batchData); - - // PUT arrange - final putPath = Uri.parse( - '$serverUrl$keyEndPointClasses${dietPlansObject.parseClassName}/${dietPlansObject.objectId}', - ).toString(); - - const dietPlansUpdatedAtFromServer = "2023-02-26T00:20:37.187Z"; - const resultFromServer = { - keyVarUpdatedAt: dietPlansUpdatedAtFromServer, - }; - - when(client.put( - putPath, - data: anyNamed("data"), - options: anyNamed("options"), - )).thenAnswer( - (_) async => ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServer), - ), - ); - - // act - final response = await dietPlansObject.save(); - - // assert - expect(response.success, isTrue); - - expect(response.error, isNull); - - expect(response.count, equals(1)); - - final resultList = response.results; - - expect(resultList, isNotNull); - - expect(resultList!.length, equals(1)); - - expect(resultList, isA>()); - - final savedDietPlansObject = (resultList.first as ParseObject); - - // the calling object (dietPlansObject) will be identical to the object - // in the ParseResponse results - expect( - identical(dietPlansObject, savedDietPlansObject), - isTrue, - ); - - expect( - dietPlansObject.updatedAt!.toIso8601String(), - equals(dietPlansUpdatedAtFromServer), - ); - - expect( - planObjectToCreate.createdAt!.toIso8601String(), - equals(planToCreateCreatedAtFromServer), - ); - - expect( - planObjectToCreate.objectId, - equals(planToCreateObjectIdFromServer), - ); - - expect( - planObjectToUpdate.updatedAt!.toIso8601String(), - equals(planToUpdateUpdatedAtFromServer), - ); - - verify(client.post( - batchPath, - options: anyNamed("options"), - data: batchData, - )).called(1); - - verify(client.put( - putPath, - options: anyNamed("options"), - data: anyNamed('data'), - )).called(1); - - verifyNoMoreInteractions(client); - }); - - test( - 'should not save the calling object in case of any subObject(included) ' - 'fail while trying to saving it, and the save() should return the response ' - 'from the saving object batch', - () async { - // arrange - final planObject1 = ParseObject('Plans')..set('PlanName', 'plan 1'); - final planObject2 = ParseObject('Plans')..set('PlanName', 'plan 2'); - - dietPlansObject.set('Plan1', planObject1); - dietPlansObject.set('Plan2', planObject2); - - dietPlansObject.set('Fat', 15); - - // batch arrange - - const resultFromServerForBatch = [ - { - "success": { - keyVarObjectId: "YAfSAWwXbL", - keyVarCreatedAt: "2023-03-10T12:23:45.678Z", - } - }, - { - "error": { - "code": ParseError.internalServerError, - "error": "internal server error", - } - } - ]; - - final batchData = jsonEncode( - { - "requests": [ - { - 'method': 'POST', - 'path': '$keyEndPointClasses${planObject1.parseClassName}', - 'body': planObject1.toJson(forApiRQ: true), - }, - { - 'method': 'POST', - 'path': '$keyEndPointClasses${planObject2.parseClassName}', - 'body': planObject2.toJson(forApiRQ: true), - } - ] - }, - ); - - final batchPath = Uri.parse('$serverUrl/batch').toString(); - - when(client.post( - batchPath, - options: anyNamed("options"), - data: batchData, - )).thenAnswer( - (_) async => ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServerForBatch), - ), - ); - - // post arrange - - final postPath = Uri.parse( - '$serverUrl$keyEndPointClasses${dietPlansObject.parseClassName}', - ).toString(); - - // act - - // this response is from saving the children and not from saving the - // actual object (dietPlansObject) duo to error while saving one of - // the children, so the response form the batch function will be returned - final response = await dietPlansObject.save(); - - // assert - expect(response.success, isFalse); - - // the error will be the results list - expect(response.error, isNull); - - expect(response.count, equals(2)); - - final resultList = response.results; - - expect(resultList, isNotNull); - - expect( - resultList!.length, - equals(2), - reason: - 'should be the same number of children sent suing batch request', - ); - - expect(resultList, isA>()); - - final firstResponse = resultList[0]; - - expect(firstResponse, isA()); - - expect(identical(firstResponse, planObject1), isTrue); - - var objectCreatedResponseFromServer = - resultFromServerForBatch[0]['success']!; - - expect( - planObject1.objectId, - equals(objectCreatedResponseFromServer[keyVarObjectId]), - ); - - expect( - planObject1.createdAt!.toIso8601String(), - equals(objectCreatedResponseFromServer[keyVarCreatedAt]), - ); - - final secondResponse = resultList[1]; - var errorResponseFromServer = resultFromServerForBatch[1]['error']!; - - expect(secondResponse, isA()); - - // to promote the secondResponse var to ParseError - (secondResponse as ParseError); - - expect( - secondResponse.code, - equals(errorResponseFromServer['code']), - ); - - expect( - secondResponse.message, - equals(errorResponseFromServer['error']), - ); - - expect( - dietPlansObject.objectId, - isNull, - reason: 'dietPlansObject should not be saved', - ); - - verify(client.post( - batchPath, - options: anyNamed("options"), - data: batchData, - )).called(1); - - verifyNever(client.post( - postPath, - options: anyNamed("options"), - data: anyNamed('data'), - )); - - verifyNoMoreInteractions(client); - }, - ); - }); -} diff --git a/packages/dart/test/src/objects/parse_object/parse_object_test.dart b/packages/dart/test/src/objects/parse_object/parse_object_test.dart deleted file mode 100644 index 02fbf8f63..000000000 --- a/packages/dart/test/src/objects/parse_object/parse_object_test.dart +++ /dev/null @@ -1,24 +0,0 @@ -import 'package:mockito/annotations.dart'; -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -import '../../../test_utils.dart'; - -@GenerateMocks([ParseClient]) -void main() { - test( - 'The parseClassName property in the ParseObject class should be equal ' - 'to the name passed via the constructor', () async { - // arrange - - await initializeParse(); - - const className = 'Diet_Plans'; - - // act - final dietPlansObject = ParseObject(className); - - // assert - expect(dietPlansObject.parseClassName, equals(className)); - }); -} diff --git a/packages/dart/test/src/objects/parse_object/parse_object_unset_test.dart b/packages/dart/test/src/objects/parse_object/parse_object_unset_test.dart deleted file mode 100644 index 0e893707b..000000000 --- a/packages/dart/test/src/objects/parse_object/parse_object_unset_test.dart +++ /dev/null @@ -1,198 +0,0 @@ -import 'dart:convert'; - -import 'package:mockito/mockito.dart'; -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -import '../../../parse_query_test.mocks.dart'; -import '../../../test_utils.dart'; - -void main() { - setUpAll(() async { - await initializeParse(); - }); - - group('unset()', () { - late MockParseClient client; - - late ParseObject dietPlansObject; - const keyFat = 'fat'; - - setUp(() { - client = MockParseClient(); - - dietPlansObject = ParseObject("Diet_Plans", client: client); - }); - - test('unset() should unset a value from ParseObject locally', () async { - // arrange - dietPlansObject.set(keyFat, 2); - - // act - final ParseResponse parseResponse = - await dietPlansObject.unset(keyFat, offlineOnly: true); - - // assert - expect(parseResponse.success, isTrue); - - expect(dietPlansObject.get(keyFat), isNull); - - verifyZeroInteractions(client); - }); - - test('unset() should unset a value from ParseObject locally on online', - () async { - // arrange - - dietPlansObject.set(keyFat, 2); - dietPlansObject.objectId = "O6BHlwV48Z"; - - final putPath = Uri.parse( - '$serverUrl$keyEndPointClasses${dietPlansObject.parseClassName}/${dietPlansObject.objectId}', - ).toString(); - - const String putData = '{"$keyFat":{"__op":"Delete"}}'; - const resultFromServer = { - keyVarUpdatedAt: "2023-03-04T03:34:35.076Z", - }; - - when(client.put( - putPath, - options: anyNamed("options"), - data: putData, - )).thenAnswer( - (_) async => ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServer), - ), - ); - - // act - final ParseResponse parseResponse = - await dietPlansObject.unset(keyFat, offlineOnly: false); - - // assert - expect(parseResponse.success, isTrue); - - expect(dietPlansObject.get(keyFat), isNull); - - verify(client.put( - putPath, - options: anyNamed("options"), - data: putData, - )).called(1); - - verifyNoMoreInteractions(client); - }); - - test( - 'If objectId is null, unset() should unset a value from ParseObject ' - 'locally and not make any call to the server and return unsuccessful Response', - () async { - // arrange - dietPlansObject.set(keyFat, 2); - - // act - final parseResponse = - await dietPlansObject.unset(keyFat, offlineOnly: false); - - // assert - expect(parseResponse.success, isFalse); - - expect(parseResponse.result, isNull); - - expect(parseResponse.count, isZero); - - expect(parseResponse.statusCode, ParseError.otherCause); - - expect(dietPlansObject.get(keyFat), isNull); - - verifyZeroInteractions(client); - }); - - test( - 'unset() should keep the the key and its value if the request was unsuccessful', - () async { - // arrange - - dietPlansObject.objectId = "O6BHlwV48Z"; - dietPlansObject.set(keyFat, 2); - - final errorData = jsonEncode({keyCode: -1, keyError: "someError"}); - - when(client.put( - any, - options: anyNamed("options"), - data: anyNamed("data"), - )).thenAnswer( - (_) async => ParseNetworkResponse( - statusCode: -1, - data: errorData, - ), - ); - - // act - final parseResponse = - await dietPlansObject.unset(keyFat, offlineOnly: false); - - // assert - expect(parseResponse.success, isFalse); - - expect(parseResponse.error, isNotNull); - - expect(parseResponse.error!.message, equals('someError')); - - expect(parseResponse.error!.code, equals(-1)); - - expect(dietPlansObject.get(keyFat), equals(2)); - - verify(client.put( - any, - options: anyNamed("options"), - data: anyNamed("data"), - )).called(1); - - verifyNoMoreInteractions(client); - }); - - test( - 'unset() should keep the the key and its value if the request throws an exception', - () async { - // arrange - - dietPlansObject.objectId = "O6BHlwV48Z"; - dietPlansObject.set(keyFat, 2); - - final error = Exception('error'); - - when(client.put( - any, - options: anyNamed("options"), - data: anyNamed("data"), - )).thenThrow(error); - - // act - final parseResponse = - await dietPlansObject.unset(keyFat, offlineOnly: false); - - // assert - expect(parseResponse.success, isFalse); - - expect(parseResponse.error, isNotNull); - - expect(parseResponse.error!.exception, equals(error)); - - expect(parseResponse.error!.code, equals(-1)); - - expect(dietPlansObject.get(keyFat), equals(2)); - - verify(client.put( - any, - options: anyNamed("options"), - data: anyNamed("data"), - )).called(1); - - verifyNoMoreInteractions(client); - }); - }); -} diff --git a/packages/dart/test/src/objects/parse_object/parse_object_update_test.dart b/packages/dart/test/src/objects/parse_object/parse_object_update_test.dart deleted file mode 100644 index ca8e9085e..000000000 --- a/packages/dart/test/src/objects/parse_object/parse_object_update_test.dart +++ /dev/null @@ -1,221 +0,0 @@ -import 'dart:convert'; - -import 'package:mockito/mockito.dart'; -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -import '../../../parse_query_test.mocks.dart'; -import '../../../test_utils.dart'; - -void main() { - setUpAll(() async { - await initializeParse(); - }); - - group('update()', () { - late MockParseClient client; - - late ParseObject dietPlansObject; - - const keyName = 'Name'; - const keyFat = 'Fat'; - - final newNameValue = 'new Name'; - final newFatValue = 56; - - late String putPath; - - setUp(() { - client = MockParseClient(); - - dietPlansObject = ParseObject("Diet_Plans", client: client); - dietPlansObject - ..objectId = "DLde4rYA8C" - ..set(keyName, newNameValue) - ..set(keyFat, newFatValue); - - putPath = Uri.parse( - '$serverUrl$keyEndPointClasses${dietPlansObject.parseClassName}/${dietPlansObject.objectId}', - ).toString(); - }); - test( - 'update() should update an object on the server, return the updated ' - 'object in ParseResponse results and update the calling object ' - 'with the new data (updatedAt).' - 'i.e: mutate the object state to reflect the new update', () async { - // arrange - - const resultFromServer = { - keyVarUpdatedAt: "2023-02-26T13:25:27.865Z", - }; - - final putData = jsonEncode(dietPlansObject.toJson(forApiRQ: true)); - - when(client.put( - putPath, - options: anyNamed("options"), - data: putData, - )).thenAnswer( - (_) async => ParseNetworkResponse( - statusCode: 200, - data: jsonEncode(resultFromServer), - ), - ); - - // act - ParseResponse response = await dietPlansObject.update(); - - // assert - final resultList = response.results; - - expect(resultList, isNotNull); - expect(resultList!.first, isNotNull); - expect(resultList.first, isA()); - - final parseObjectFromRes = (resultList.first as ParseObject); - - expect( - parseObjectFromRes.updatedAt!.toIso8601String(), - equals(resultFromServer[keyVarUpdatedAt]), - ); - expect( - dietPlansObject.updatedAt!.toIso8601String(), - equals(resultFromServer[keyVarUpdatedAt]), - ); - - expect( - parseObjectFromRes.get(keyName), - equals(newNameValue), - ); - expect( - parseObjectFromRes.get(keyFat), - equals(newFatValue), - ); - - // the calling object (dietPlansObject) will be identical to the object - // in the ParseResponse results - expect( - identical(dietPlansObject, parseObjectFromRes), - isTrue, - ); - - verify(client.put( - putPath, - options: anyNamed("options"), - data: putData, - )).called(1); - - verifyNoMoreInteractions(client); - }); - - test( - 'update() should return error and the updated values should remain the same', - () async { - // arrange - - final putData = jsonEncode(dietPlansObject.toJson(forApiRQ: true)); - final error = Exception('error'); - - when(client.put( - putPath, - options: anyNamed("options"), - data: putData, - )).thenThrow(error); - - // act - ParseResponse response = await dietPlansObject.update(); - - // assert - expect(response.success, isFalse); - - expect(response.result, isNull); - - expect(response.count, isZero); - - expect(response.results, isNull); - - expect(response.error, isNotNull); - - expect(response.error!.exception, equals(error)); - - expect(response.error!.code, equals(ParseError.otherCause)); - - // even if the update failed, the updated values should remain the same - expect(dietPlansObject.get(keyName), equals(newNameValue)); - expect(dietPlansObject.get(keyFat), equals(newFatValue)); - - verify(client.put( - putPath, - options: anyNamed("options"), - data: putData, - )).called(1); - - verifyNoMoreInteractions(client); - }); - - test( - 'update() should return error form the server and the' - ' updated values should remain the same', () async { - // arrange - - final putData = jsonEncode(dietPlansObject.toJson(forApiRQ: true)); - final errorData = jsonEncode({keyCode: -1, keyError: "someError"}); - - when(client.put( - putPath, - options: anyNamed("options"), - data: putData, - )).thenAnswer( - (_) async => ParseNetworkResponse(data: errorData, statusCode: -1), - ); - - // act - ParseResponse response = await dietPlansObject.update(); - - // assert - expect(response.success, isFalse); - - expect(response.result, isNull); - - expect(response.count, isZero); - - expect(response.results, isNull); - - expect(response.error, isNotNull); - - expect(response.error!.message, equals('someError')); - - expect(response.error!.code, equals(ParseError.otherCause)); - - // even if the update failed, the updated values should remain the same - expect(dietPlansObject.get(keyName), equals(newNameValue)); - expect(dietPlansObject.get(keyFat), equals(newFatValue)); - - verify(client.put( - putPath, - options: anyNamed("options"), - data: putData, - )).called(1); - - verifyNoMoreInteractions(client); - }); - - test('should throw AssertionError if objectId is null', () { - dietPlansObject.objectId = null; - - expect( - () async => await dietPlansObject.update(), - throwsA(isA()), - ); - }); - - test('should throw AssertionError if objectId is empty', () { - dietPlansObject.objectId = ''; - - expect( - () async => await dietPlansObject.update(), - throwsA(isA()), - ); - }); - }); -} diff --git a/packages/dart/test/src/objects/response/parse_response_utils_test.dart b/packages/dart/test/src/objects/response/parse_response_utils_test.dart deleted file mode 100644 index 759ca6826..000000000 --- a/packages/dart/test/src/objects/response/parse_response_utils_test.dart +++ /dev/null @@ -1,164 +0,0 @@ -import 'dart:convert'; - -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -import '../../../test_utils.dart'; - -void main() { - setUpAll(() async { - await initializeParse(); - }); - - group('handleResponse()', () { - group('when batch', () { - test( - 'should return a ParseResponse holds a list of created/updated ParseObjects', - () { - // arrange - final object1 = ParseObject("object1"); - - final object2 = ParseObject("object2")..objectId = "GYfSRRRXbL"; - - final objectsToBatch = [object1, object2]; - - const object1ResultFromServerObjectId = "YAfSAWwXbL"; - const object1ResultFromServerCreatedAt = "2023-03-19T00:20:37.187Z"; - - const object2ResultFromServerUpdatedAt = "2023-03-19T00:20:37.187Z"; - - final resultFromServerForBatch = json.encode( - [ - { - "success": { - keyVarObjectId: object1ResultFromServerObjectId, - keyVarCreatedAt: object1ResultFromServerCreatedAt, - } - }, - { - "success": { - keyVarUpdatedAt: object2ResultFromServerUpdatedAt, - } - } - ], - ); - - final result = ParseNetworkResponse( - data: resultFromServerForBatch, - statusCode: 200, - ); - - // act - final response = handleResponse( - objectsToBatch, - result, - ParseApiRQ.batch, - true, - 'test_batch', - ); - - // assert - expect(response.success, isTrue); - - expect(response.count, equals(2)); - - expect(response.error, isNull); - - final resultsObjectsList = List.from(response.results!); - - expect(resultsObjectsList.length, equals(2)); - - final firstObject = resultsObjectsList[0]; - final secondObject = resultsObjectsList[1]; - - expect(firstObject.objectId, equals(object1ResultFromServerObjectId)); - - expect( - firstObject.createdAt!.toIso8601String(), - equals(object1ResultFromServerCreatedAt), - ); - - expect( - secondObject.updatedAt!.toIso8601String(), - equals(object2ResultFromServerUpdatedAt), - ); - }); - - test( - 'should return a ParseResponse holds a list of ParseObject and ParseError', - () { - // arrange - final object1 = ParseObject("object1"); - final object2 = ParseObject("object2"); - - final objectsToBatch = [object1, object2]; - - const object1ResultFromServerObjectId = "YAfSAWwXbL"; - const object1ResultFromServerCreatedAt = "2023-03-19T00:20:37.187Z"; - - final resultFromServerForBatch = json.encode( - [ - { - "success": { - keyVarObjectId: object1ResultFromServerObjectId, - keyVarCreatedAt: object1ResultFromServerCreatedAt, - } - }, - // error while saving the second object - { - "error": { - "code": ParseError.internalServerError, - "error": "internal server error", - } - } - ], - ); - - final result = ParseNetworkResponse( - data: resultFromServerForBatch, - statusCode: 200, - ); - - // act - final response = handleResponse( - objectsToBatch, - result, - ParseApiRQ.batch, - true, - 'test_batch', - ); - - // assert - expect(response.success, isTrue); - - expect(response.count, equals(2)); - - expect(response.error, isNull); - - expect(response.results, isNotNull); - - final resultsList = response.results!; - - expect(resultsList.length, equals(2)); - - final ParseObject firstObject = resultsList[0]; - - final ParseError secondObjectError = resultsList[1]; - - expect(firstObject.objectId, equals(object1ResultFromServerObjectId)); - - expect( - firstObject.createdAt!.toIso8601String(), - equals(object1ResultFromServerCreatedAt), - ); - - expect( - secondObjectError.code, - equals(ParseError.internalServerError), - ); - - expect(object2.objectId, isNull); - }); - }); - }); -} diff --git a/packages/dart/test/src/utils/parse_encoder_test.dart b/packages/dart/test/src/utils/parse_encoder_test.dart deleted file mode 100644 index afc442d48..000000000 --- a/packages/dart/test/src/utils/parse_encoder_test.dart +++ /dev/null @@ -1,105 +0,0 @@ -import 'dart:convert'; - -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -import '../../test_utils.dart'; - -void main() { - setUpAll(() async { - await initializeParse(); - }); - - group('full encode', () { - test('should return the expected json encode ', () async { - // arrange - final dietPlansObject = ParseObject("Diet_Plans"); - final plan = ParseObject("plan")..set('somePlanKey', 'some value'); - dietPlansObject.set('pointer_val', plan); - dietPlansObject.set('int_val', 2); - dietPlansObject.set('string_val', 'some String'); - dietPlansObject.set('double_val', 2.5); - dietPlansObject.setIncrement('int_val', 2); - dietPlansObject.setDecrement('double_val', 2); - dietPlansObject.set('array_1_val', [1, 2, 3]); - dietPlansObject.set('array_2_val', [1, 2, 3]); - dietPlansObject.set('array_3_val', [1, 2, 3]); - dietPlansObject.setAdd('array_1_val', 3); - dietPlansObject.setAddUnique('array_2_val', 3); - dietPlansObject.setAddUnique('array_2_val', 4); - dietPlansObject.setRemove('array_3_val', 3); - final relation = dietPlansObject.getRelation('relation_val'); - relation.add(ParseObject('object_in_relation2')..objectId = 'GDIJPWW'); - - // act - final encodeResult = parseEncode(dietPlansObject, full: true); - - // assert - - const expectedValue = { - "className": "Diet_Plans", - "pointer_val": {"className": "plan", "somePlanKey": "some value"}, - "int_val": { - "className": "ParseNumber", - "estimateNumber": 4, - "savedNumber": 0.0, - "setMode": true, - "lastPreformedOperation": { - "__op": "Increment", - "amount": 4.0, - "estimatedValue": 4 - } - }, - "string_val": "some String", - "double_val": { - "className": "ParseNumber", - "estimateNumber": 0.5, - "savedNumber": 0.0, - "setMode": true, - "lastPreformedOperation": { - "__op": "Increment", - "amount": 0.5, - "estimatedValue": 0.5 - } - }, - "array_1_val": { - "className": "ParseArray", - "estimatedArray": [1, 2, 3, 3], - "savedArray": [], - "lastPreformedOperation": null - }, - "array_2_val": { - "className": "ParseArray", - "estimatedArray": [1, 2, 3, 4], - "savedArray": [], - "lastPreformedOperation": null - }, - "array_3_val": { - "className": "ParseArray", - "estimatedArray": [1, 2], - "savedArray": [], - "lastPreformedOperation": null - }, - "relation_val": { - "className": "ParseRelation", - "targetClass": "object_in_relation2", - "key": "relation_val", - "objects": [ - {"className": "object_in_relation2", "objectId": "GDIJPWW"} - ], - "lastPreformedOperation": { - "__op": "AddRelation", - "objects": [ - {"className": "object_in_relation2", "objectId": "GDIJPWW"} - ], - "valueForAPIRequest": [ - {"className": "object_in_relation2", "objectId": "GDIJPWW"} - ] - } - } - }; - - expect(jsonEncode(encodeResult), equals(jsonEncode(expectedValue))); - }); - }); -} diff --git a/packages/dart/test/test_utils.dart b/packages/dart/test/test_utils.dart deleted file mode 100644 index 2f138551a..000000000 --- a/packages/dart/test/test_utils.dart +++ /dev/null @@ -1,127 +0,0 @@ -import 'package:parse_server_sdk/parse_server_sdk.dart'; -import 'package:test/test.dart'; - -const serverUrl = 'https://example.com/'; - -Future initializeParse() async { - await Parse().initialize( - 'appId', - serverUrl, - debug: true, - // to prevent automatic detection - fileDirectory: 'someDirectory', - // to prevent automatic detection - appName: 'appName', - // to prevent automatic detection - appPackageName: 'somePackageName', - // to prevent automatic detection - appVersion: 'someAppVersion', - ); -} - -/// If an unmergeable operation [testingOn] is attempted after an operation, -/// it should result in an exception being thrown. in context of the same key. -/// -/// So for example you can call setAdd after setAddAll on the same key, because -/// the values can be merged together. but calling setAdd after setIncrement -/// will throw an error because you can not increment a value and then add a -/// value to it like a list, it is not a list in the first place to be able -/// to add to it. -/// -/// -/// if a certain operation cannot be merged or combined with other operations -/// in a particular context, then an exception should be thrown to alert -/// the developer that the operation cannot be performed. -/// -/// List of available operations: -/// * setAdd -/// * setAddUnique -/// * setAddAll -/// * setAddAllUnique -/// * setRemove -/// * setRemoveAll -/// * setIncrement -/// * setDecrement -/// * addRelation -/// * removeRelation -/// -/// e.g. -/// ```dart -/// testUnmergeableOperationShouldThrow( -/// parseObject: dietPlansObject, -/// testingOn: dietPlansObject.setDecrement, -/// excludeMergeableOperations: [dietPlansObject.setIncrement], -/// ); -/// ``` -void testUnmergeableOperationShouldThrow({ - required ParseObject parseObject, - required Function testingOn, - List excludeMergeableOperations = const [], -}) { - String testingOnKey = 'key'; - - final Map operationsFuncRefWithArgs = { - parseObject.setAdd: [ - testingOnKey, - 1, - ], - parseObject.setAddUnique: [ - testingOnKey, - 1, - ], - parseObject.setAddAll: [ - testingOnKey, - [1, 2], - ], - parseObject.setAddAllUnique: [ - testingOnKey, - [1, 2], - ], - parseObject.setRemove: [ - testingOnKey, - 1, - ], - parseObject.setRemoveAll: [ - testingOnKey, - [1, 2] - ], - parseObject.setIncrement: [ - testingOnKey, - 1, - ], - parseObject.setDecrement: [ - testingOnKey, - 1, - ], - parseObject.addRelation: [ - testingOnKey, - [ParseObject('class')] - ], - parseObject.removeRelation: [ - testingOnKey, - [ParseObject('class')] - ], - }; - - final testingOnValue = operationsFuncRefWithArgs.remove(testingOn); - - for (final functionExclude in excludeMergeableOperations) { - operationsFuncRefWithArgs.remove(functionExclude); - } - - for (final operation in operationsFuncRefWithArgs.entries) { - parseObject.unset(testingOnKey, offlineOnly: true); - - final functionRef = operation.key; - final positionalArguments = operation.value; - - Function.apply(functionRef, positionalArguments); - - expect( - () => Function.apply(testingOn, testingOnValue), - throwsA(isA()), - reason: 'Calling {{${functionRef.toString()}}} ' - 'then {{${testingOn.toString()}}} should throw ParseOperationException', - ); - } -} diff --git a/packages/flutter/CHANGELOG.md b/packages/flutter/CHANGELOG.md deleted file mode 100644 index 28a8d9114..000000000 --- a/packages/flutter/CHANGELOG.md +++ /dev/null @@ -1,106 +0,0 @@ -## [5.1.0](https://github.com/parse-community/Parse-SDK-Flutter/compare/flutter-5.0.1...flutter-5.1.0) (2023-05-22) - -### Features - -* Add support for push notifications via `ParsePush`, `ParseNotification` ([#914](https://github.com/parse-community/Parse-SDK-Flutter/pull/914)) - -## [5.0.1](https://github.com/parse-community/Parse-SDK-Flutter/compare/flutter-5.0.0...flutter-5.0.1) (2023-05-20) - -### Bug Fixes - -* Attributes `reverse`, `padding`, `physics`, `controller`, `scrollDirection`, `shrinkWrap` not implemented in `ParseLiveGridWidget` ([#761](https://github.com/parse-community/Parse-SDK-Flutter/pull/761)) - -## [5.0.0](https://github.com/parse-community/Parse-SDK-Flutter/compare/flutter-4.0.0...flutter-5.0.0) (2023-05-14) - -### BREAKING CHANGES - -* The minimum required Dart SDK version is 2.18.0. ([#867](https://github.com/parse-community/Parse-SDK-Flutter/pull/867)) -* Upgrades the dependency `parse_server_sdk` to `5.x.x`. ([#868](https://github.com/parse-community/Parse-SDK-Flutter/pull/868)) -* The deprecated parameter `vsync` from `AnimatedSize` is removed. ([#864](https://github.com/parse-community/Parse-SDK-Flutter/pull/864)) - -### Features - -* Upgrade `parse_server_sdk` to `5.x.x` ([#868](https://github.com/parse-community/Parse-SDK-Flutter/pull/868)) - -### Bug Fixes - -* Incorrect Dart and Flutter SDKs compatibility range ([#867](https://github.com/parse-community/Parse-SDK-Flutter/pull/867)) -* Remove deprecated parameter `vsync` from `AnimatedSize` ([#864](https://github.com/parse-community/Parse-SDK-Flutter/pull/864)) - -## [4.0.0](https://github.com/parse-community/Parse-SDK-Flutter/compare/flutter-3.1.4...flutter-4.0.0) (2023-03-19) - -### BREAKING CHANGES - -* The source file name of the Flutter package has changed; to import the Flutter package use `parse_server_sdk_flutter.dart` instead of `parse_server_sdk.dart` ([#846](https://github.com/parse-community/Parse-SDK-Flutter/pull/846)) -* Dependencies are upgraded to `parse_server_sdk` 4.x, `dio` 5.x, `connectivity_plus` 3.x and `package_info_plus` 3.x ([#844](https://github.com/parse-community/Parse-SDK-Flutter/pull/844)) - -### Features - -* Rename Flutter package source file to `parse_server_sdk_flutter.dart` ([#846](https://github.com/parse-community/Parse-SDK-Flutter/pull/846)) -* Upgrade various dependencies and fix warnings in Flutter package ([#844](https://github.com/parse-community/Parse-SDK-Flutter/pull/844)) - -## [3.1.4](https://github.com/parse-community/Parse-SDK-Flutter/compare/flutter-3.1.3...flutter-3.1.4) (2023-03-01) - -### Bug Fixes - -* Parse SDK internal database file `parse.db` is accessible for app user on iOS and may be accidentally deleted ([#826](https://github.com/parse-community/Parse-SDK-Flutter/pull/826)) - -## [3.1.3](https://github.com/parse-community/Parse-SDK-Flutter/compare/flutter-3.1.2...flutter-3.1.3) (2022-07-09) - -### Bug Fixes - -* old version of `connectivity_plus package` ([#717](https://github.com/parse-community/Parse-SDK-Flutter/issues/717)) -* dependency `package_info_plus` does not work in web ([#714](https://github.com/parse-community/Parse-SDK-Flutter/issues/714)) -* missing plugin exception, no implementation found for method `getAll` ([#712](https://github.com/parse-community/Parse-SDK-Flutter/issues/712)) - -## [3.1.2](https://github.com/parse-community/Parse-SDK-Flutter/compare/flutter-3.1.1...flutter-3.1.2) (2022-05-30) - -### Refactors - -* fix analyzer code style warnings ([#733](https://github.com/parse-community/Parse-SDK-Flutter/issues/733)) - -## [3.1.1](https://github.com/parse-community/Parse-SDK-Flutter/compare/V3.1.0...flutter-3.1.1) (2022-05-29) - -### Bug Fixes - -* update example app to use Android embedding v2 ([#722](https://github.com/parse-community/Parse-SDK-Flutter/issues/722)) ([e092189](https://github.com/parse-community/Parse-SDK-Flutter/commit/e092189cb666c25b3e2c9dbbf95316e9cfa88e72)) - -# [3.1.0](https://github.com/parse-community/Parse-SDK-Flutter/compare/V3.0.0...V3.1.0) (2021-06-28) - -### Bug Fixes - -* General improvements -* Updated dependencies - -# [3.0.0](https://github.com/parse-community/Parse-SDK-Flutter/compare/2.1.0...V3.0.0) (2021-04-14) - -### Bug Fixes - -* Stable null safety release - -# [2.1.0](https://github.com/parse-community/Parse-SDK-Flutter/compare/2.0.1...2.1.0) (2021-02-18) - -### BREAKING CHANGES - -* Changed to HTTP method POST for login -* Change in progress callback for file upload - -### Features - -* Option to use `ParseHTTPClient` (default) or `ParseDioClient` (slow on Flutter Web) -* Added method excludeKeys to exclude specific fields from the returned query - -### Bug Fixes - -* General improvements -* Updated dependencies - -## [2.0.1](https://github.com/parse-community/Parse-SDK-Flutter/compare/2.0.0...2.0.1) (2020-10-24) - -### Bug Fixes - -* Fixed network exceptions ([#482](https://github.com/parse-community/Parse-SDK-Flutter/pull/482)) - -## [2.0.0](https://github.com/parse-community/Parse-SDK-Flutter/compare/1.0.28...2.0.0) (2020-10-13) - -First official release. From this release onwards the previous repository has been separated into a pure dart (parse_server_sdk) and a flutter package (parse_server_sdk_flutter). This was done in order to provide a dart package for the parse-server, while keeping maintenance simple. You can find both packages in the package directory. diff --git a/packages/flutter/LICENSE b/packages/flutter/LICENSE deleted file mode 100644 index 0e303d0f1..000000000 --- a/packages/flutter/LICENSE +++ /dev/null @@ -1,176 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/packages/flutter/NOTICE b/packages/flutter/NOTICE deleted file mode 100644 index 20a8bb606..000000000 --- a/packages/flutter/NOTICE +++ /dev/null @@ -1,10 +0,0 @@ -Parse Flutter SDK - -Copyright 2021-present Parse Platform - -This product includes software developed at Parse Platform. -www.parseplatform.org - ---- - -As of October 19, 2021, the original author Phill Wiggins has transferred this code to the Parse Platform organization. \ No newline at end of file diff --git a/packages/flutter/PUSH.md b/packages/flutter/PUSH.md deleted file mode 100644 index 52870fd24..000000000 --- a/packages/flutter/PUSH.md +++ /dev/null @@ -1,76 +0,0 @@ -# Push Notifications - -Push notifications are a great way to keep your users engaged and informed about your app. You can reach your user base quickly and effectively. This guide will help you through the setup process and the general usage of Parse Platform to send push notifications. - -To configure push notifications in Parse Server, check out the [push notification guide](https://docs.parseplatform.org/parse-server/guide/#push-notifications). - -## Installation - -1. Install [Firebase Core](https://firebase.flutter.dev/docs/overview) and [Cloud Messaging](https://firebase.flutter.dev/docs/messaging/overview). For more details review the [Firebase Core Manual](https://firebase.flutter.dev/docs/manual-installation/). - -2. Add the following code after `Parse().initialize(...);`: - - ```dart - ParsePush.instance.initialize(FirebaseMessaging.instance); - FirebaseMessaging.onMessage.listen((message) => ParsePush.instance.onMessage(message)); - ``` - -3. For you app to process push notification while in the background, add the following code: - - ```dart - FirebaseMessaging.onBackgroundMessage(onBackgroundMessage); - ``` - - ```dart - Future onBackgroundMessage(RemoteMessage message) async => ParsePush.instance.onMessage(message); - ``` - -## Implementation Example - -The following is a code example for a simple implementation of push notifications: - -```dart -Future main() async { - WidgetsFlutterBinding.ensureInitialized(); - - // Initialize Firebase Core - await Firebase.initializeApp( - options: DefaultFirebaseOptions.currentPlatform, - ); - - // Initialize Parse - await Parse().initialize("applicationId", "serverUrl", - clientKey: "clientKey", debug: true); - - // Initialize Parse push notifications - ParsePush.instance.initialize(FirebaseMessaging.instance); - FirebaseMessaging.onMessage - .listen((message) => ParsePush.instance.onMessage(message)); - - // Process push notifications while app is in the background - FirebaseMessaging.onBackgroundMessage(onBackgroundMessage); - - runApp(const MyApp()); -} - -Future onBackgroundMessage(RemoteMessage message) async => - ParsePush.instance.onMessage(message); - -class MyApp extends StatelessWidget { - const MyApp({super.key}); - - // This widget is the root of your application. - @override - Widget build(BuildContext context) { - return MaterialApp( - title: 'Flutter Demo', - theme: ThemeData( - colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), - useMaterial3: true, - ), - home: const MyHomePage(title: 'Flutter Demo Home Page'), - ); - } -} -... -``` diff --git a/packages/flutter/README.md b/packages/flutter/README.md deleted file mode 100644 index 85396946c..000000000 --- a/packages/flutter/README.md +++ /dev/null @@ -1,1024 +0,0 @@ -![parse-repository-header-sdk-flutter](https://user-images.githubusercontent.com/5673677/166121333-2a144ce3-95bc-45d6-8840-d5b2885f2046.png) - ---- - -This library gives you access to the powerful Parse Server backend from your Flutter app. For more information on Parse Platform and its features, visit [parseplatform.org](https://parseplatform.org). - ---- - -- [Compatibility](#compatibility) -- [Example Apps](#example-apps) -- [Getting Started](#getting-started) - - [Web support](#web-support) - - [Desktop Support (macOS)](#desktop-support-macos) - - [Network client](#network-client) -- [Objects](#objects) -- [Custom Objects](#custom-objects) -- [Add new values to objects](#add-new-values-to-objects) -- [Save objects using pins](#save-objects-using-pins) -- [Storage](#storage) -- [Increment Counter Values](#increment-counter-values) -- [Array Operator](#array-operator) -- [Queries](#queries) - - [Alternative Query Methods](#alternative-query-methods) -- [Complex Queries](#complex-queries) -- [Relational queries](#relational-queries) -- [Counting Objects](#counting-objects) -- [Live Queries](#live-queries) -- [ParseLiveList](#parselivelist) - - [General Use](#general-use) - - [Include Sub-Objects](#include-sub-objects) - - [Lazy Loading](#lazy-loading) -- [Users](#users) -- [Facebook, OAuth and 3rd Party Login/User](#facebook-oauth-and-3rd-party-loginuser) -- [Security for Objects - ParseACL](#security-for-objects---parseacl) -- [Config](#config) -- [Cloud Functions](#cloud-functions) -- [Relation](#relation) -- [File](#file) -- [Other Features](#other-features) - ---- - -## Compatibility - -The Parse Flutter SDK is continuously tested with the most recent release of the Flutter framework to ensure compatibility. To give developers time to upgrade their app to the newest Flutter framework, previous Flutter framework releases are supported for at least 1 year after their [release date](https://docs.flutter.dev/release/archive?tab=linux). The Parse Flutter SDK depends on the Parse Dart SDK which may require a higher Dart framework version than the Flutter framework version, in which case the Flutter framework version cannot be supported even though its release date may have been less than a year ago. - -| Version | End of Support | Compatible | -|--------------|----------------|----------------------------------------------| -| Flutter 3.10 | May 2024 | ❌ No | -| Flutter 3.7 | Apr 2024 | ✅ Yes | -| Flutter 3.3 | Jan 2024 | ✅ Yes | -| Flutter 3.0 | Jul 2023 | ❌ No (Parse Flutter SDK requires Flutter >=3.3.0) | - -## Example Apps - -Example Flutter apps can be found in the GitHub repository's [example](https://github.com/parse-community/Parse-SDK-Flutter/tree/master/examples) directory. - -## Getting Started - -To install add the dependency to your [pubspec.yaml](https://pub.dev/packages/parse_server_sdk_flutter/install) file. - -Once you have the library added to your project, upon first call to your app (Similar to what your application class would be) add the following... - -```dart -await Parse().initialize( - keyApplicationId, - keyParseServerUrl); -``` - -If you want to use secure storage or use the Flutter web/desktop SDK, please change to the below instance of CoreStorage as it has no dependencies on Flutter. - -**The `CoreStoreSembastImp` does not encrypt the data on web!** (Web is not safe anyway. Encrypt fields manually as needed.) -```dart - -await Parse().initialize( - keyParseApplicationId, - keyParseServerUrl, - coreStore: await CoreStoreSembastImp.getInstance()); -``` -It's possible to add other parameters to work with your instance of Parse Server:- - -```dart - await Parse().initialize( - keyApplicationId, - keyParseServerUrl, - clientKey: keyParseClientKey, // Required for some setups - debug: true, // When enabled, prints logs to console - liveQueryUrl: keyLiveQueryUrl, // Required if using LiveQuery - autoSendSessionId: true, // Required for authentication and ACL - securityContext: securityContext, // Again, required for some setups - coreStore: await CoreStoreSharedPrefsImp.getInstance()); // Local data storage method. Will use SharedPreferences instead of Sembast as an internal DB -``` - -⚠️ Please note that the master key should only be used in safe environments and never on client side ‼️ - -#### Web support -Due to Cross-origin resource sharing (CORS) restrictions, this requires adding `X-Parse-Installation-Id` as an allowed header to parse-server. -When running directly via docker, set the env var `PARSE_SERVER_ALLOW_HEADERS=X-Parse-Installation-Id`. -When running via express, set [ParseServerOptions](https://parseplatform.org/parse-server/api/master/ParseServerOptions.html) `allowHeaders: ['X-Parse-Installation-Id']`. - -#### Desktop Support (macOS) -The security entitlements posed by the macOS framework require that your app is granted permission to open outgoing network connections, so that the Parse Flutter SDK can communicate with Parse Server. To grant this permission, add the following lines: -``` -com.apple.security.network.client - -``` -to the following files: -``` -/macOS/Runner/Release.entitlements -/macOS/Runner/DebugProfile.entitlements -``` -to help the Parse SDK for Flutter communicate with the Web to access the server and send/retrive data. - -#### Network client -By default, this SDK uses the `ParseHTTPClient`. -Another option is use `ParseDioClient`. This client supports the most features (for example a progress callback at the file upload), but a benchmark has shown, that dio is slower than http on web. - -If you want to use the `ParseDioClient`, which uses the dio network library, -you can provide a custom `ParseClientCreator` at the initialization of the SDK. -```dart -await Parse().initialize( - //... - clientCreator: ({bool? sendSessionId, SecurityContext? securityContext}) => ParseDioClient(sendSessionId: sendSessionId, securityContext: securityContext), -); -``` - -## Objects -You can create custom objects by calling: -```dart -var dietPlan = ParseObject('DietPlan') - ..set('Name', 'Ketogenic') - ..set('Fat', 65); -await dietPlan.save(); -``` -Or update existing object by its objectId by calling: -```dart -var dietPlan = ParseObject('DietPlan') - ..objectId = 'R5EonpUDWy' - ..set('Fat', 70); -await dietPlan.save(); -``` -Verify that the object has been successfully saved using -```dart -var response = await dietPlan.save(); -if (response.success) { - dietPlan = response.results.first; -} -``` -Types supported: - * String - * Double - * Int - * Boolean - * DateTime - * File - * Geopoint - * ParseObject/ParseUser (Pointer) - * Map - * List (all types supported) - -You then have the ability to do the following with that object: -The features available are:- - * Get - * GetAll - * Create - * Save - * Query - By object Id - * Delete - * Complex queries as shown above - * Pin - * Plenty more - * Counters - * Array Operators - -## Custom Objects -You can create your own `ParseObjects` or convert your existing objects into Parse Objects by doing the following: - -```dart -class DietPlan extends ParseObject implements ParseCloneable { - - DietPlan() : super(_keyTableName); - DietPlan.clone(): this(); - - /// Looks strangely hacky but due to Flutter not using reflection, we have to - /// mimic a clone - @override clone(Map map) => DietPlan.clone()..fromJson(map); - - static const String _keyTableName = 'Diet_Plans'; - static const String keyName = 'Name'; - - String get name => get(keyName); - set name(String name) => set(keyName, name); -} - -``` - -When receiving an `ParseObject` from the SDK, you can often provide an instance of your custom object as an copy object. -To always use your custom object class, you can register your subclass at the initialization of the SDK. -```dart -Parse().initialize( - ..., - registeredSubClassMap: { - 'Diet_Plans': () => DietPlan(), - }, - parseUserConstructor: (username, password, emailAddress, {client, debug, sessionToken}) => CustomParseUser(username, password, emailAddress), -); -``` -Additionally you can register `SubClasses` after the initialization of the SDK. -```dart -ParseCoreData().registerSubClass('Diet_Plans', () => DietPlan()); -ParseCoreData().registerUserSubClass((username, password, emailAddress, {client, debug, sessionToken}) => CustomParseUser(username, password, emailAddress)); -``` -Providing a `ParseObject` as described above should still work, even if you have registered a different `SubClass`. - -For custom file classes have a lock at [here](#File). - -## Add new values to objects -To add a variable to an object call and retrieve it, call - -```dart -dietPlan.set('RandomInt', 8); -var randomInt = dietPlan.get('RandomInt'); -``` - -## Save objects using pins -You can now save an object by calling `.pin()` on an instance of an object - -```dart -dietPlan.pin(); -``` - -and to retrieve it - -```dart -var dietPlan = DietPlan().fromPin('OBJECT ID OF OBJECT'); -``` - -## Storage -We now have 2 types of storage, secure and unsecure. We currently rely on 2 third party options: - -- SharedPreferences -- Sembast -Sembast offers secured storage, whilst SharePreferences wraps NSUserDefaults (on iOS) and SharedPreferences (on Android). - -The storage method is defined in the parameter __coreStore__ in Parse().initialize - -Check sample code for options - -## Increment Counter Values - -Retrieve it, call - -```dart -var response = await dietPlan.increment("count", 1); - -``` -or using with save function - -```dart -dietPlan.setIncrement('count', 1); -dietPlan.setDecrement('count', 1); -var response = dietPlan.save() - -``` - -## Array Operator - -Retrieve it, call - -```dart -var response = await dietPlan.add("listKeywords", ["a", "a","d"]); - -var response = await dietPlan.addUnique("listKeywords", ["a", "a","d"]); - -var response = await dietPlan.remove("listKeywords", ["a"]); - -``` -or using with save function - -```dart -dietPlan.setAdd('listKeywords', ['a','a','d']); -dietPlan.setAddUnique('listKeywords', ['a','a','d']); -dietPlan.setRemove('listKeywords', ['a']); -var response = dietPlan.save() -``` - -## Queries -Once you have setup the project and initialised the instance, you can then retreive data from your server by calling: -```dart -var apiResponse = await ParseObject('ParseTableName').getAll(); - -if (apiResponse.success){ - for (var testObject in apiResponse.result) { - print(ApplicationConstants.APP_NAME + ": " + testObject.toString()); - } -} -``` -Or you can get an object by its objectId: - -```dart -var dietPlan = await DietPlan().getObject('R5EonpUDWy'); - -if (dietPlan.success) { - print(ApplicationConstants.keyAppName + ": " + (dietPlan.result as DietPlan).toString()); -} else { - print(ApplicationConstants.keyAppName + ": " + dietPlan.exception.message); -} -``` -To query for user objects, you could use the function ```ParseUser.forQuery()``` like this: -```dart -var queryBuilder = QueryBuilder(ParseUser.forQuery()) - ..whereEqualTo('activated', true); - -var response = await queryBuilder.query(); - -if (response.success) { - print(response.results); -} else { - print(response.exception.message); -} -``` - -### Alternative Query Methods - -The standard query method `query()` returns a `ParseResponse` that contains the result or the error. As an alternative, you can also use `Future> find()` for receiving options. -This method returns an `Future` that either resolves in an error (equivalent of the error in the `ParseResponse`) or an `List` containing the queried objects. One difference, you should be aware of, is the fact, that `Future> find()` will return an empty list instead of the 'No results' error you receive in case no object matches you query. - -Choosing between `query()` and `find()` comes down to personal preference. Both methods can be used for querying a `ParseQuery`, just the output method differs. - -Similar to `find()` the `QueryBuilder` also has a function called `Future first()`. Just like `find()` `first()` is just a convenience method that makes querying the first object satisfying the query simpler. `first()` returns an `Future`, that resoles in an error or the first object matching the query. In case no object satisfies the query, the result will be `null`. - -## Complex Queries - -You can create complex queries to really put your database to the test: - -```dart -var queryBuilder = QueryBuilder(DietPlan()) - ..startsWith(DietPlan.keyName, "Keto") - ..greaterThan(DietPlan.keyFat, 64) - ..lessThan(DietPlan.keyFat, 66) - ..equals(DietPlan.keyCarbs, 5); - -var response = await queryBuilder.query(); - -if (response.success) { - print(ApplicationConstants.keyAppName + ": " + ((response.results as List).first as DietPlan).toString()); -} else { - print(ApplicationConstants.keyAppName + ": " + response.exception.message); -} -``` - -if you want to find objects that match one of several queries, you can use __QueryBuilder.or__ method to construct a query that is an OR of the queries passed in. For instance if you want to find players who either have a lot of wins or a few wins, you can do: -```dart -ParseObject playerObject = ParseObject("Player"); - -QueryBuilder lotsOfWins = - QueryBuilder(playerObject)) - ..whereGreaterThan('wins', 50); - -QueryBuilder fewWins = - QueryBuilder(playerObject) - ..whereLessThan('wins', 5); - -QueryBuilder mainQuery = QueryBuilder.or( - playerObject, - [lotsOfWins, fewWins], - ); - -var apiResponse = await mainQuery.query(); -``` - -To find objects that match several queries use __QueryBuilder.and__. To find objects that do not match any given query use __QueryBuilder.nor__. - -The features available are:- - * Equals - * Contains - * LessThan - * LessThanOrEqualTo - * GreaterThan - * GreaterThanOrEqualTo - * NotEqualTo - * StartsWith - * EndsWith - * Exists - * Near - * WithinMiles - * WithinKilometers - * WithinRadians - * WithinGeoBox - * WithinPolygon - * MatchesQuery - * DoesNotMatchQuery - * MatchesKeyInQuery - * DoesNotMatchKeyInQuery - * Regex - * Order - * Limit - * Skip - * Ascending - * Descending - * Plenty more! - -## Relational queries -If you want to retrieve objects where a field contains an object that matches another query, you can use the -__whereMatchesQuery__ condition. -For example, imagine you have Post class and a Comment class, where each Comment has a pointer to its parent Post. -You can find comments on posts with images by doing: - -```dart -QueryBuilder queryPost = - QueryBuilder(ParseObject('Post')) - ..whereValueExists('image', true); - -QueryBuilder queryComment = - QueryBuilder(ParseObject('Comment')) - ..whereMatchesQuery('post', queryPost); - -var apiResponse = await queryComment.query(); -``` - -If you want to retrieve objects where a field contains an object that does not match another query, you can use the -__whereDoesNotMatchQuery__ condition. -Imagine you have Post class and a Comment class, where each Comment has a pointer to its parent Post. -You can find comments on posts without images by doing: - -```dart -QueryBuilder queryPost = - QueryBuilder(ParseObject('Post')) - ..whereValueExists('image', true); - -QueryBuilder queryComment = - QueryBuilder(ParseObject('Comment')) - ..whereDoesNotMatchQuery('post', queryPost); - -var apiResponse = await queryComment.query(); -``` - -You can use the __whereMatchesKeyInQuery__ method to get objects where a key matches the value of a key in a set of objects resulting from another query. For example, if you have a class containing sports teams and you store a user’s hometown in the user class, you can issue one query to find the list of users whose hometown teams have winning records. The query would look like:: - -```dart -QueryBuilder teamQuery = - QueryBuilder(ParseObject('Team')) - ..whereGreaterThan('winPct', 0.5); - -QueryBuilder userQuery = - QueryBuilderParseUser.forQuery()) - ..whereMatchesKeyInQuery('hometown', 'city', teamQuery); - -var apiResponse = await userQuery.query(); -``` - -Conversely, to get objects where a key does not match the value of a key in a set of objects resulting from another query, use __whereDoesNotMatchKeyInQuery__. For example, to find users whose hometown teams have losing records: - -```dart -QueryBuilder teamQuery = - QueryBuilder(ParseObject('Team')) - ..whereGreaterThan('winPct', 0.5); - -QueryBuilder losingUserQuery = - QueryBuilderParseUser.forQuery()) - ..whereDoesNotMatchKeyInQuery('hometown', 'city', teamQuery); - -var apiResponse = await losingUserQuery.query(); -``` - -To filter rows based on objectId’s from pointers in a second table, you can use dot notation: -```dart -QueryBuilder rolesOfTypeX = - QueryBuilder(ParseObject('Role')) - ..whereEqualTo('type', 'x'); - -QueryBuilder groupsWithRoleX = - QueryBuilder(ParseObject('Group'))) - ..whereMatchesKeyInQuery('objectId', 'belongsTo.objectId', rolesOfTypeX); - -var apiResponse = await groupsWithRoleX.query(); -``` - -## Counting Objects -If you only care about the number of games played by a particular player: - -```dart -QueryBuilder queryPlayers = - QueryBuilder(ParseObject('GameScore')) - ..whereEqualTo('playerName', 'Jonathan Walsh'); -var apiResponse = await queryPlayers.count(); -if (apiResponse.success && apiResponse.result != null) { - int countGames = apiResponse.count; -} -``` - -## Live Queries -This tool allows you to subscribe to a QueryBuilder you are interested in. Once subscribed, the server will notify clients -whenever a ParseObject that matches the QueryBuilder is created or updated, in real-time. - -Parse LiveQuery contains two parts, the LiveQuery server and the LiveQuery clients. In order to use live queries, you need -to set up both of them. - -The Parse Server configuration guide on the server is found here https://docs.parseplatform.org/parse-server/guide/#live-queries and is not part of this documentation. - -Initialize the Parse Live Query by entering the parameter liveQueryUrl in Parse().initialize: -```dart -Parse().initialize( - keyApplicationId, - keyParseServerUrl, - clientKey: keyParseClientKey, - debug: true, - liveQueryUrl: keyLiveQueryUrl, - autoSendSessionId: true); -``` - -Declare LiveQuery: -```dart -final LiveQuery liveQuery = LiveQuery(); -``` - -Set the QueryBuilder that will be monitored by LiveQuery: -```dart -QueryBuilder query = - QueryBuilder(ParseObject('TestAPI')) - ..whereEqualTo('intNumber', 1); -``` -__Create a subscription__ -You’ll get the LiveQuery events through this subscription. -The first time you call subscribe, we’ll try to open the WebSocket connection to the LiveQuery server for you. - -```dart -Subscription subscription = await liveQuery.client.subscribe(query); -``` - -__Event Handling__ -We define several types of events you’ll get through a subscription object: - -__Create event__ -When a new ParseObject is created and it fulfills the QueryBuilder you subscribe, you’ll get this event. -The object is the ParseObject which was created. -```dart -subscription.on(LiveQueryEvent.create, (value) { - print('*** CREATE ***: ${DateTime.now().toString()}\n $value '); - print((value as ParseObject).objectId); - print((value as ParseObject).updatedAt); - print((value as ParseObject).createdAt); - print((value as ParseObject).get('objectId')); - print((value as ParseObject).get('updatedAt')); - print((value as ParseObject).get('createdAt')); -}); -``` - -__Update event__ -When an existing ParseObject which fulfills the QueryBuilder you subscribe is updated (The ParseObject fulfills the -QueryBuilder before and after changes), you’ll get this event. -The object is the ParseObject which was updated. Its content is the latest value of the ParseObject. -```dart -subscription.on(LiveQueryEvent.update, (value) { - print('*** UPDATE ***: ${DateTime.now().toString()}\n $value '); - print((value as ParseObject).objectId); - print((value as ParseObject).updatedAt); - print((value as ParseObject).createdAt); - print((value as ParseObject).get('objectId')); - print((value as ParseObject).get('updatedAt')); - print((value as ParseObject).get('createdAt')); -}); -``` - -__Enter event__ -When an existing ParseObject’s old value does not fulfill the QueryBuilder but its new value fulfills the QueryBuilder, -you’ll get this event. The object is the ParseObject which enters the QueryBuilder. -Its content is the latest value of the ParseObject. -```dart -subscription.on(LiveQueryEvent.enter, (value) { - print('*** ENTER ***: ${DateTime.now().toString()}\n $value '); - print((value as ParseObject).objectId); - print((value as ParseObject).updatedAt); - print((value as ParseObject).createdAt); - print((value as ParseObject).get('objectId')); - print((value as ParseObject).get('updatedAt')); - print((value as ParseObject).get('createdAt')); -}); -``` - -__Leave event__ -When an existing ParseObject’s old value fulfills the QueryBuilder but its new value doesn’t fulfill the QueryBuilder, -you’ll get this event. The object is the ParseObject which leaves the QueryBuilder. -Its content is the latest value of the ParseObject. -```dart -subscription.on(LiveQueryEvent.leave, (value) { - print('*** LEAVE ***: ${DateTime.now().toString()}\n $value '); - print((value as ParseObject).objectId); - print((value as ParseObject).updatedAt); - print((value as ParseObject).createdAt); - print((value as ParseObject).get('objectId')); - print((value as ParseObject).get('updatedAt')); - print((value as ParseObject).get('createdAt')); -}); -``` - -__Delete event__ -When an existing ParseObject which fulfills the QueryBuilder is deleted, you’ll get this event. -The object is the ParseObject which is deleted -```dart -subscription.on(LiveQueryEvent.delete, (value) { - print('*** DELETE ***: ${DateTime.now().toString()}\n $value '); - print((value as ParseObject).objectId); - print((value as ParseObject).updatedAt); - print((value as ParseObject).createdAt); - print((value as ParseObject).get('objectId')); - print((value as ParseObject).get('updatedAt')); - print((value as ParseObject).get('createdAt')); -}); -``` - -__Unsubscribe__ -If you would like to stop receiving events from a QueryBuilder, you can just unsubscribe the subscription. -After that, you won’t get any events from the subscription object and will close the WebSocket connection to the -LiveQuery server. - -```dart -liveQuery.client.unSubscribe(subscription); -``` - -__Disconnection__ -In case the client's connection to the server breaks, -LiveQuery will automatically try to reconnect. -LiveQuery will wait at increasing intervals between reconnection attempts. -By default, these intervals are set to `[0, 500, 1000, 2000, 5000, 10000]` for mobile and `[0, 500, 1000, 2000, 5000]` for web. -You can change these by providing a custom list using the `liveListRetryIntervals` parameter at `Parse.initialize()` ("-1" means "do not try to reconnect"). - -## ParseLiveList -ParseLiveList makes implementing a dynamic List as simple as possible. - -#### General Use -It ships with the ParseLiveList class itself, this class manages all elements of the list, sorts them, -keeps itself up to date and Notifies you on changes. - -ParseLiveListWidget is a widget that handles all the communication with the ParseLiveList for you. -Using ParseLiveListWidget you can create a dynamic List by just providing a QueryBuilder. - -```dart -ParseLiveListWidget( - query: query, - ); -``` -To customize the List Elements, you can provide a childBuilder. -```dart -ParseLiveListWidget( - query: query, - reverse: false, - childBuilder: - (BuildContext context, ParseLiveListElementSnapshot snapshot) { - if (snapshot.failed) { - return const Text('something went wrong!'); - } else if (snapshot.hasData) { - return ListTile( - title: Text( - snapshot.loadedData.get("text"), - ), - ); - } else { - return const ListTile( - leading: CircularProgressIndicator(), - ); - } - }, -); -``` -Similar to the standard ListView, you can provide arguments like reverse or shrinkWrap. -By providing the listLoadingElement, you can show the user something while the list is loading. -```dart -ParseLiveListWidget( - query: query, - childBuilder: childBuilder, - listLoadingElement: Center( - child: CircularProgressIndicator(), - ), -); -``` -By providing the duration argument, you can change the animation speed. -```dart -ParseLiveListWidget( - query: query, - childBuilder: childBuilder, - duration: Duration(seconds: 1), -); -``` -### Include Sub-Objects - -By default, ParseLiveQuery will provide you with all the objects you included in your Query like this: -```dart -queryBuilder.includeObject(/*List of all the included sub-objects*/); -``` -ParseLiveList will not listen for updates on this objects by default. -To activate listening for updates on all included objects, add `listenOnAllSubItems: true` to your ParseLiveListWidgets constructor. -If you want ParseLiveList to listen for updates on only some sub-objects, use `listeningIncludes: const [/*all the included sub-objects*/]` instead. -Just as QueryBuilder, ParseLiveList supports nested sub-objects too. - -### Lazy Loading - -By default, ParseLiveList lazy loads the content. -You can avoid that by setting `lazyLoading: false`. -In case you want to use lazyLoading but you need some columns to be preloaded, you can provide a list of `preloadedColumns`. -Preloading fields of a pointer is supported by using the dot-notation. -You can access the preloaded data is stored in the `preLoadedData` field of the `ParseLiveListElementSnapshot`. -```dart -ParseLiveListWidget( - query: query, - lazyLoading: true, - preloadedColumns: ["test1", "sender.username"], - childBuilder: - (BuildContext context, ParseLiveListElementSnapshot snapshot) { - if (snapshot.failed) { - return const Text('something went wrong!'); - } else if (snapshot.hasData) { - return ListTile( - title: Text( - snapshot.loadedData.get("text"), - ), - ); - } else { - return ListTile( - title: Text( - "loading comment from: ${snapshot.preLoadedData?.get("sender")?.get("username")}", - ), - ); - } - }, -); -``` - -**NOTE:** To use this features you have to enable [Live Queries](#live-queries) first. - -## Users -You can create and control users just as normal using this SDK. - -To register a user, first create one : -```dart -var user = ParseUser().create("TestFlutter", "TestPassword123", "TestFlutterSDK@gmail.com"); -``` -Then have the user sign up: - -```dart -var response = await user.signUp(); -if (response.success) user = response.result; -``` -You can also login with the user: -```dart -var response = await user.login(); -if (response.success) user = response.result; -``` -You can also logout with the user: -```dart -var response = await user.logout(); -if (response.success) { - print('User logout'); -} -``` -Also, once logged in you can manage sessions tokens. This feature can be called after Parse().init() on startup to check for a logged in user. -```dart -user = ParseUser.currentUser(); -``` - -To add additional columns to the user: -```dart -var user = ParseUser("TestFlutter", "TestPassword123", "TestFlutterSDK@gmail.com") - ..set("userLocation", "FlutterLand"); -``` - -Other user features are:- - * Request Password Reset - * Verification Email Request - * Get all users - * Save - * Destroy user - * Queries - - ## Facebook, OAuth and 3rd Party Login/User - - Usually, each provider will provide their own library for logins, but the loginWith method on ParseUser accepts a name of provider, then a Map with the authentication details required. - For Facebook and the example below, we used the library provided at https://pub.dev/packages/flutter_facebook_login - - ``` - Future goToFacebookLogin() async { - final FacebookLogin facebookLogin = FacebookLogin(); - final FacebookLoginResult result = await facebookLogin.logInWithReadPermissions(['email']); - - switch (result.status) { - case FacebookLoginStatus.loggedIn: - final ParseResponse response = await ParseUser.loginWith( - 'facebook', - facebook(result.accessToken.token, - result.accessToken.userId, - result.accessToken.expires)); - - if (response.success) { - // User is logged in, test with ParseUser.currentUser() - } - break; - case FacebookLoginStatus.cancelledByUser: - // User cancelled - break; - case FacebookLoginStatus.error: - // Error - break; - } - } -``` - -For Google and the example below, we used the library provided at https://pub.dev/packages/google_sign_in - -``` -class OAuthLogin { - final GoogleSignIn _googleSignIn = GoogleSignIn( scopes: ['email', 'https://www.googleapis.com/auth/contacts.readonly'] ); - - signInGoogle() async { - GoogleSignInAccount account = await _googleSignIn.signIn(); - GoogleSignInAuthentication authentication = await account.authentication; - await ParseUser.loginWith( - 'google', - google(authentication.accessToken!, _googleSignIn.currentUser!.id, - authentication.idToken!)); - } -} -``` - -## Security for Objects - ParseACL -For any object, you can specify which users are allowed to read the object, and which users are allowed to modify an object. -To support this type of security, each object has an access control list, implemented by the __ParseACL__ class. - -If ParseACL is not specified (with the exception of the ParseUser class) all objects are set to Public for read and write. -The simplest way to use a ParseACL is to specify that an object may only be read or written by a single user. -To create such an object, there must first be a logged in ParseUser. Then, new ParseACL(user) generates a ParseACL that -limits access to that user. An object’s ACL is updated when the object is saved, like any other property. - -```dart -ParseUser user = await ParseUser.currentUser() as ParseUser; -ParseACL parseACL = ParseACL(owner: user); - -ParseObject parseObject = ParseObject("TestAPI"); -... -parseObject.setACL(parseACL); -var apiResponse = await parseObject.save(); -``` -Permissions can also be granted on a per-user basis. You can add permissions individually to a ParseACL using -__setReadAccess__ and __setWriteAccess__ -```dart -ParseUser user = await ParseUser.currentUser() as ParseUser; -ParseACL parseACL = ParseACL(); -//grant total access to current user -parseACL.setReadAccess(userId: user.objectId, allowed: true); -parseACL.setWriteAccess(userId: user.objectId, allowed: true); -//grant read access to userId: 'TjRuDjuSAO' -parseACL.setReadAccess(userId: 'TjRuDjuSAO', allowed: true); -parseACL.setWriteAccess(userId: 'TjRuDjuSAO', allowed: false); - -ParseObject parseObject = ParseObject("TestAPI"); -... -parseObject.setACL(parseACL); -var apiResponse = await parseObject.save(); -``` -You can also grant permissions to all users at once using setPublicReadAccess and setPublicWriteAccess. -```dart -ParseACL parseACL = ParseACL(); -parseACL.setPublicReadAccess(allowed: true); -parseACL.setPublicWriteAccess(allowed: true); - -ParseObject parseObject = ParseObject("TestAPI"); -... -parseObject.setACL(parseACL); -var apiResponse = await parseObject.save(); -``` -Operations that are forbidden, such as deleting an object that you do not have write access to, result in a -ParseError with code 101: 'ObjectNotFound'. -For security purposes, this prevents clients from distinguishing which object ids exist but are secured, versus which -object ids do not exist at all. - -You can retrieve the ACL list of an object using: -```dart -ParseACL parseACL = parseObject.getACL(); -``` - -To set the ACL to `ParseRole` use: - -```dart -parseACL.setReadAccess(userId: "role:ROLE_NAME", allowed: true); -parseACL.setWriteAccess(userId: "role:ROLE_NAME", allowed: true); -``` - -## Config -The SDK supports Parse Config. A map of all configs can be grabbed from the server by calling : -```dart -var response = await ParseConfig().getConfigs(); -``` - -and to add a config: -```dart -ParseConfig().addConfig('TestConfig', 'testing'); -``` - -## Cloud Functions -The SDK supports call Cloud Functions. - -Executes a cloud function that returns a ParseObject type -```dart -final ParseCloudFunction function = ParseCloudFunction('hello'); -final ParseResponse result = - await function.executeObjectFunction(); -if (result.success) { - if (result.result is ParseObject) { - final ParseObject parseObject = result.result; - print(parseObject.className); - } -} -``` - -Executes a cloud function with parameters -```dart -final ParseCloudFunction function = ParseCloudFunction('hello'); -final Map params = {'plan': 'paid'}; -function.execute(parameters: params); -``` - -## Relation - -The SDK supports Relation. - -To add relation to object: - -```dart -dietPlan.addRelation('fruits', [ParseObject("Fruits")..set("objectId", "XGadzYxnac")]); -``` - -To remove relation to object: - -```dart -dietPlan.removeRelation('fruits', [ParseObject("Fruits")..set("objectId", "XGadzYxnac")]); -``` - -To Retrive a relation instance for user, call: -```dart -final relation = dietPlan.getRelation('fruits'); -``` - -and then you can add a relation to the passed in object: -``` -relation.add(dietPlan); -final result = await user.save(); -``` - -To retrieve objects that are members of Relation field of a parent object: -```dart -QueryBuilder query = - QueryBuilder(ParseObject('Fruits')) - ..whereRelatedTo('fruits', 'DietPlan', DietPlan.objectId); -``` - -## File -There are three different file classes in this SDK: -- `ParseFileBase` is and abstract class and is the foundation of every file class that can be handled by this SDK. -- `ParseFile` (former the only file class in the SDK) extends ParseFileBase and is by default used as the file class on every platform but web. -This class uses a `File` from `dart:io` for storing the raw file. -- `ParseWebFile` is the equivalent to ParseFile used at Flutter Web. -This class uses an `Uint8List` for storing the raw file. - -These classes are used by default to represent files, but you can also build your own class extending ParseFileBase and provide a custom `ParseFileConstructor` similar to the `SubClasses`. - -Have a look at the example application for a small (non web) example. - -When uploading or downloading a file, you can use the `progressCallback`-parameter to track the progress of the http request. - -```dart -//A short example for showing an image from a ParseFileBase -Widget buildImage(ParseFileBase image){ - return FutureBuilder( - future: image.download(), - builder: (BuildContext context, - AsyncSnapshot snapshot) { - if (snapshot.hasData) { - if (kIsWeb) { - return Image.memory((snapshot.data as ParseWebFile).file); - } else { - return Image.file((snapshot.data as ParseFile).file); - } - } else { - return CircularProgressIndicator(); - } - }, - ); -} -``` -```dart -//A short example for storing a selected picture -//libraries: image_picker (https://pub.dev/packages/image_picker), image_picker_for_web (https://pub.dev/packages/image_picker_for_web) -PickedFile pickedFile = await ImagePicker().getImage(source: ImageSource.gallery); -ParseFileBase parseFile; -if (kIsWeb) { - //Seems weird, but this lets you get the data from the selected file as an Uint8List very easily. - ParseWebFile file = ParseWebFile(null, name: null, url: pickedFile.path); - await file.download(); - parseFile = ParseWebFile(file.file, name: file.name); -} else { - parseFile = ParseFile(File(pickedFile.path)); -} -someParseObject.set("image", parseFile); -//This saves the ParseObject as well as all of its children, and the ParseFileBase is such a child. -await someParseObject.save(); -``` - -## Other Features - -Main: -* Installation (View the example application) -* GeoPoints (View the example application) -* Persistent storage -* Debug Mode - Logging API calls -* Manage Session ID's tokens - -User: -* Queries -* Anonymous (View the example application) -* 3rd Party Authentication - -Objects: -* Create new object -* Extend Parse Object and create local objects that can be saved and retrieved -* Queries diff --git a/packages/flutter/analysis_options.yaml b/packages/flutter/analysis_options.yaml deleted file mode 100644 index a51fa3b93..000000000 --- a/packages/flutter/analysis_options.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# This file configures the analyzer, which statically analyzes Dart code to -# check for errors, warnings, and lints. -# -# The issues identified by the analyzer are surfaced in the UI of Dart-enabled -# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be -# invoked from the command line by running `flutter analyze`. - -# The following line activates a set of recommended lints for Flutter apps, -# packages, and plugins designed to encourage good coding practices. -include: package:flutter_lints/flutter.yaml - -linter: - # The lint rules applied to this project can be customized in the - # section below to disable rules from the `package:flutter_lints/flutter.yaml` - # included above or to enable additional rules. A list of all available lints - # and their documentation is published at - # https://dart-lang.github.io/linter/lints/index.html. - # - # Instead of disabling a lint rule for the entire project in the - # section below, it can also be suppressed for a single line of code - # or a specific dart file by using the `// ignore: name_of_lint` and - # `// ignore_for_file: name_of_lint` syntax on the line or in the file - # producing the lint. - rules: - avoid_print: false # Uncomment to disable the `avoid_print` rule - # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule -# Additional information about this file can be found at -# https://dart.dev/guides/language/analysis-options diff --git a/packages/flutter/example/.gitignore b/packages/flutter/example/.gitignore deleted file mode 100644 index 24476c5d1..000000000 --- a/packages/flutter/example/.gitignore +++ /dev/null @@ -1,44 +0,0 @@ -# Miscellaneous -*.class -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ -migrate_working_dir/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# The .vscode folder contains launch configuration and tasks you configure in -# VS Code which you may wish to be included in version control, so this line -# is commented out by default. -#.vscode/ - -# Flutter/Dart/Pub related -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release diff --git a/packages/flutter/example/.metadata b/packages/flutter/example/.metadata deleted file mode 100644 index e94891d5f..000000000 --- a/packages/flutter/example/.metadata +++ /dev/null @@ -1,45 +0,0 @@ -# This file tracks properties of this Flutter project. -# Used by Flutter tool to assess capabilities and perform upgrades etc. -# -# This file should be version controlled. - -version: - revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 - channel: stable - -project_type: app - -# Tracks metadata for the flutter migrate command -migration: - platforms: - - platform: root - create_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 - base_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 - - platform: android - create_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 - base_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 - - platform: ios - create_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 - base_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 - - platform: linux - create_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 - base_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 - - platform: macos - create_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 - base_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 - - platform: web - create_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 - base_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 - - platform: windows - create_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 - base_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 - - # User provided section - - # List of Local paths (relative to this file) that should be - # ignored by the migrate tool. - # - # Files that are not part of the templates will be ignored by default. - unmanaged_files: - - 'lib/main.dart' - - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/packages/flutter/example/README.md b/packages/flutter/example/README.md deleted file mode 100644 index 82d261971..000000000 --- a/packages/flutter/example/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Flutter Plug-in Example - -Demonstrates how to use the flutter_plugin plugin. - -## Getting Started - -This project is a starting point for a Flutter application. - -A few resources to get you started if this is your first Flutter project: - -- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) - -For help getting started with Flutter development, view the [online documentation](https://docs.flutter.dev/), which offers tutorials, samples, guidance on mobile development, and a full API reference. diff --git a/packages/flutter/example/analysis_options.yaml b/packages/flutter/example/analysis_options.yaml deleted file mode 100644 index 61b6c4de1..000000000 --- a/packages/flutter/example/analysis_options.yaml +++ /dev/null @@ -1,29 +0,0 @@ -# This file configures the analyzer, which statically analyzes Dart code to -# check for errors, warnings, and lints. -# -# The issues identified by the analyzer are surfaced in the UI of Dart-enabled -# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be -# invoked from the command line by running `flutter analyze`. - -# The following line activates a set of recommended lints for Flutter apps, -# packages, and plugins designed to encourage good coding practices. -include: package:flutter_lints/flutter.yaml - -linter: - # The lint rules applied to this project can be customized in the - # section below to disable rules from the `package:flutter_lints/flutter.yaml` - # included above or to enable additional rules. A list of all available lints - # and their documentation is published at - # https://dart-lang.github.io/linter/lints/index.html. - # - # Instead of disabling a lint rule for the entire project in the - # section below, it can also be suppressed for a single line of code - # or a specific dart file by using the `// ignore: name_of_lint` and - # `// ignore_for_file: name_of_lint` syntax on the line or in the file - # producing the lint. - rules: - # avoid_print: false # Uncomment to disable the `avoid_print` rule - # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule - -# Additional information about this file can be found at -# https://dart.dev/guides/language/analysis-options diff --git a/packages/flutter/example/android/.gitignore b/packages/flutter/example/android/.gitignore deleted file mode 100644 index 6f568019d..000000000 --- a/packages/flutter/example/android/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -gradle-wrapper.jar -/.gradle -/captures/ -/gradlew -/gradlew.bat -/local.properties -GeneratedPluginRegistrant.java - -# Remember to never publicly share your keystore. -# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app -key.properties -**/*.keystore -**/*.jks diff --git a/packages/flutter/example/android/app/build.gradle b/packages/flutter/example/android/app/build.gradle deleted file mode 100644 index 88e42a5bc..000000000 --- a/packages/flutter/example/android/app/build.gradle +++ /dev/null @@ -1,72 +0,0 @@ -def localProperties = new Properties() -def localPropertiesFile = rootProject.file('local.properties') -if (localPropertiesFile.exists()) { - localPropertiesFile.withReader('UTF-8') { reader -> - localProperties.load(reader) - } -} - -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -if (flutterVersionCode == null) { - flutterVersionCode = '1' -} - -def flutterVersionName = localProperties.getProperty('flutter.versionName') -if (flutterVersionName == null) { - flutterVersionName = '1.0' -} - -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - -android { - namespace "com.example.flutter_plugin_example" - compileSdkVersion flutter.compileSdkVersion - ndkVersion flutter.ndkVersion - - compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 - } - - kotlinOptions { - jvmTarget = '1.8' - } - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } - - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.example.flutter_plugin_example" - // You can update the following values to match your application needs. - // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. - minSdkVersion flutter.minSdkVersion - targetSdkVersion flutter.targetSdkVersion - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName - } - - buildTypes { - release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug - } - } -} - -flutter { - source '../..' -} - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} diff --git a/packages/flutter/example/android/app/src/debug/AndroidManifest.xml b/packages/flutter/example/android/app/src/debug/AndroidManifest.xml deleted file mode 100644 index 399f6981d..000000000 --- a/packages/flutter/example/android/app/src/debug/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/packages/flutter/example/android/app/src/main/AndroidManifest.xml b/packages/flutter/example/android/app/src/main/AndroidManifest.xml deleted file mode 100644 index 3aedae896..000000000 --- a/packages/flutter/example/android/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - diff --git a/packages/flutter/example/android/app/src/main/kotlin/com/example/flutter_plugin_example/MainActivity.kt b/packages/flutter/example/android/app/src/main/kotlin/com/example/flutter_plugin_example/MainActivity.kt deleted file mode 100644 index c47817771..000000000 --- a/packages/flutter/example/android/app/src/main/kotlin/com/example/flutter_plugin_example/MainActivity.kt +++ /dev/null @@ -1,6 +0,0 @@ -package com.example.flutter_plugin_example - -import io.flutter.embedding.android.FlutterActivity - -class MainActivity: FlutterActivity() { -} diff --git a/packages/flutter/example/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/flutter/example/android/app/src/main/res/drawable-v21/launch_background.xml deleted file mode 100644 index f74085f3f..000000000 --- a/packages/flutter/example/android/app/src/main/res/drawable-v21/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/packages/flutter/example/android/app/src/main/res/drawable/launch_background.xml b/packages/flutter/example/android/app/src/main/res/drawable/launch_background.xml deleted file mode 100644 index 304732f88..000000000 --- a/packages/flutter/example/android/app/src/main/res/drawable/launch_background.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - diff --git a/packages/flutter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/flutter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index db77bb4b7..000000000 Binary files a/packages/flutter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/packages/flutter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/flutter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index 17987b79b..000000000 Binary files a/packages/flutter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/packages/flutter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/flutter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index 09d439148..000000000 Binary files a/packages/flutter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/packages/flutter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/flutter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index d5f1c8d34..000000000 Binary files a/packages/flutter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/packages/flutter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/flutter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 4d6372eeb..000000000 Binary files a/packages/flutter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/packages/flutter/example/android/app/src/main/res/values-night/styles.xml b/packages/flutter/example/android/app/src/main/res/values-night/styles.xml deleted file mode 100644 index 06952be74..000000000 --- a/packages/flutter/example/android/app/src/main/res/values-night/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/packages/flutter/example/android/app/src/main/res/values/styles.xml b/packages/flutter/example/android/app/src/main/res/values/styles.xml deleted file mode 100644 index cb1ef8805..000000000 --- a/packages/flutter/example/android/app/src/main/res/values/styles.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - diff --git a/packages/flutter/example/android/app/src/profile/AndroidManifest.xml b/packages/flutter/example/android/app/src/profile/AndroidManifest.xml deleted file mode 100644 index 399f6981d..000000000 --- a/packages/flutter/example/android/app/src/profile/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/packages/flutter/example/android/build.gradle b/packages/flutter/example/android/build.gradle deleted file mode 100644 index f7eb7f63c..000000000 --- a/packages/flutter/example/android/build.gradle +++ /dev/null @@ -1,31 +0,0 @@ -buildscript { - ext.kotlin_version = '1.7.10' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath 'com.android.tools.build:gradle:7.3.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - -allprojects { - repositories { - google() - mavenCentral() - } -} - -rootProject.buildDir = '../build' -subprojects { - project.buildDir = "${rootProject.buildDir}/${project.name}" -} -subprojects { - project.evaluationDependsOn(':app') -} - -tasks.register("clean", Delete) { - delete rootProject.buildDir -} diff --git a/packages/flutter/example/android/gradle.properties b/packages/flutter/example/android/gradle.properties deleted file mode 100644 index 94adc3a3f..000000000 --- a/packages/flutter/example/android/gradle.properties +++ /dev/null @@ -1,3 +0,0 @@ -org.gradle.jvmargs=-Xmx1536M -android.useAndroidX=true -android.enableJetifier=true diff --git a/packages/flutter/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/flutter/example/android/gradle/wrapper/gradle-wrapper.properties deleted file mode 100644 index 3c472b99c..000000000 --- a/packages/flutter/example/android/gradle/wrapper/gradle-wrapper.properties +++ /dev/null @@ -1,5 +0,0 @@ -distributionBase=GRADLE_USER_HOME -distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip diff --git a/packages/flutter/example/android/settings.gradle b/packages/flutter/example/android/settings.gradle deleted file mode 100644 index 44e62bcf0..000000000 --- a/packages/flutter/example/android/settings.gradle +++ /dev/null @@ -1,11 +0,0 @@ -include ':app' - -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() - -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } - -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/packages/flutter/example/assets/parse.png b/packages/flutter/example/assets/parse.png deleted file mode 100644 index fc7e48dd6..000000000 Binary files a/packages/flutter/example/assets/parse.png and /dev/null differ diff --git a/packages/flutter/example/fonts/Roboto/LICENSE.txt b/packages/flutter/example/fonts/Roboto/LICENSE.txt deleted file mode 100644 index d64569567..000000000 --- a/packages/flutter/example/fonts/Roboto/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/packages/flutter/example/fonts/Roboto/Roboto-Black.ttf b/packages/flutter/example/fonts/Roboto/Roboto-Black.ttf deleted file mode 100644 index 689fe5cb3..000000000 Binary files a/packages/flutter/example/fonts/Roboto/Roboto-Black.ttf and /dev/null differ diff --git a/packages/flutter/example/fonts/Roboto/Roboto-Bold.ttf b/packages/flutter/example/fonts/Roboto/Roboto-Bold.ttf deleted file mode 100644 index d3f01ad24..000000000 Binary files a/packages/flutter/example/fonts/Roboto/Roboto-Bold.ttf and /dev/null differ diff --git a/packages/flutter/example/fonts/Roboto/Roboto-Light.ttf b/packages/flutter/example/fonts/Roboto/Roboto-Light.ttf deleted file mode 100644 index 219063a57..000000000 Binary files a/packages/flutter/example/fonts/Roboto/Roboto-Light.ttf and /dev/null differ diff --git a/packages/flutter/example/fonts/Roboto/Roboto-Medium.ttf b/packages/flutter/example/fonts/Roboto/Roboto-Medium.ttf deleted file mode 100644 index 1a7f3b0bb..000000000 Binary files a/packages/flutter/example/fonts/Roboto/Roboto-Medium.ttf and /dev/null differ diff --git a/packages/flutter/example/fonts/Roboto/Roboto-Regular.ttf b/packages/flutter/example/fonts/Roboto/Roboto-Regular.ttf deleted file mode 100644 index 2c97eeadf..000000000 Binary files a/packages/flutter/example/fonts/Roboto/Roboto-Regular.ttf and /dev/null differ diff --git a/packages/flutter/example/fonts/Roboto/Roboto-Thin.ttf b/packages/flutter/example/fonts/Roboto/Roboto-Thin.ttf deleted file mode 100644 index b74a4fd1a..000000000 Binary files a/packages/flutter/example/fonts/Roboto/Roboto-Thin.ttf and /dev/null differ diff --git a/packages/flutter/example/ios/.gitignore b/packages/flutter/example/ios/.gitignore deleted file mode 100644 index 7a7f9873a..000000000 --- a/packages/flutter/example/ios/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -**/dgph -*.mode1v3 -*.mode2v3 -*.moved-aside -*.pbxuser -*.perspectivev3 -**/*sync/ -.sconsign.dblite -.tags* -**/.vagrant/ -**/DerivedData/ -Icon? -**/Pods/ -**/.symlinks/ -profile -xcuserdata -**/.generated/ -Flutter/App.framework -Flutter/Flutter.framework -Flutter/Flutter.podspec -Flutter/Generated.xcconfig -Flutter/ephemeral/ -Flutter/app.flx -Flutter/app.zip -Flutter/flutter_assets/ -Flutter/flutter_export_environment.sh -ServiceDefinitions.json -Runner/GeneratedPluginRegistrant.* - -# Exceptions to above rules. -!default.mode1v3 -!default.mode2v3 -!default.pbxuser -!default.perspectivev3 diff --git a/packages/flutter/example/ios/Flutter/AppFrameworkInfo.plist b/packages/flutter/example/ios/Flutter/AppFrameworkInfo.plist deleted file mode 100644 index 9625e105d..000000000 --- a/packages/flutter/example/ios/Flutter/AppFrameworkInfo.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - App - CFBundleIdentifier - io.flutter.flutter.app - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - App - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - MinimumOSVersion - 11.0 - - diff --git a/packages/flutter/example/ios/Flutter/Debug.xcconfig b/packages/flutter/example/ios/Flutter/Debug.xcconfig deleted file mode 100644 index ec97fc6f3..000000000 --- a/packages/flutter/example/ios/Flutter/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" -#include "Generated.xcconfig" diff --git a/packages/flutter/example/ios/Flutter/Release.xcconfig b/packages/flutter/example/ios/Flutter/Release.xcconfig deleted file mode 100644 index c4855bfe2..000000000 --- a/packages/flutter/example/ios/Flutter/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "Generated.xcconfig" diff --git a/packages/flutter/example/ios/Podfile b/packages/flutter/example/ios/Podfile deleted file mode 100644 index fdcc671eb..000000000 --- a/packages/flutter/example/ios/Podfile +++ /dev/null @@ -1,44 +0,0 @@ -# Uncomment this line to define a global platform for your project -# platform :ios, '11.0' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_ios_podfile_setup - -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerTests' do - inherit! :search_paths - end -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_ios_build_settings(target) - end -end diff --git a/packages/flutter/example/ios/Runner.xcodeproj/project.pbxproj b/packages/flutter/example/ios/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index 289e76a88..000000000 --- a/packages/flutter/example/ios/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,613 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - objects = { - -/* Begin PBXBuildFile section */ - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 97C146E61CF9000F007C117D /* Project object */; - proxyType = 1; - remoteGlobalIDString = 97C146ED1CF9000F007C117D; - remoteInfo = Runner; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 9705A1C41CF9048500538489 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; - 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; - 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; - 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 97C146EB1CF9000F007C117D /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 9740EEB11CF90186004384FC /* Flutter */ = { - isa = PBXGroup; - children = ( - 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 9740EEB31CF90195004384FC /* Generated.xcconfig */, - ); - name = Flutter; - sourceTree = ""; - }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { - isa = PBXGroup; - children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, - ); - path = RunnerTests; - sourceTree = ""; - }; - 97C146E51CF9000F007C117D = { - isa = PBXGroup; - children = ( - 9740EEB11CF90186004384FC /* Flutter */, - 97C146F01CF9000F007C117D /* Runner */, - 97C146EF1CF9000F007C117D /* Products */, - 331C8082294A63A400263BE5 /* RunnerTests */, - ); - sourceTree = ""; - }; - 97C146EF1CF9000F007C117D /* Products */ = { - isa = PBXGroup; - children = ( - 97C146EE1CF9000F007C117D /* Runner.app */, - 331C8081294A63A400263BE5 /* RunnerTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 97C146F01CF9000F007C117D /* Runner */ = { - isa = PBXGroup; - children = ( - 97C146FA1CF9000F007C117D /* Main.storyboard */, - 97C146FD1CF9000F007C117D /* Assets.xcassets */, - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, - 97C147021CF9000F007C117D /* Info.plist */, - 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, - 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, - 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, - 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, - ); - path = Runner; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 331C8080294A63A400263BE5 /* RunnerTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; - buildPhases = ( - 331C807D294A63A400263BE5 /* Sources */, - 331C807E294A63A400263BE5 /* Frameworks */, - 331C807F294A63A400263BE5 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 331C8086294A63A400263BE5 /* PBXTargetDependency */, - ); - name = RunnerTests; - productName = RunnerTests; - productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 97C146ED1CF9000F007C117D /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - 9740EEB61CF901F6004384FC /* Run Script */, - 97C146EA1CF9000F007C117D /* Sources */, - 97C146EB1CF9000F007C117D /* Frameworks */, - 97C146EC1CF9000F007C117D /* Resources */, - 9705A1C41CF9048500538489 /* Embed Frameworks */, - 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Runner; - productName = Runner; - productReference = 97C146EE1CF9000F007C117D /* Runner.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 97C146E61CF9000F007C117D /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 1300; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 331C8080294A63A400263BE5 = { - CreatedOnToolsVersion = 14.0; - TestTargetID = 97C146ED1CF9000F007C117D; - }; - 97C146ED1CF9000F007C117D = { - CreatedOnToolsVersion = 7.3.1; - LastSwiftMigration = 1100; - }; - }; - }; - buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 97C146E51CF9000F007C117D; - productRefGroup = 97C146EF1CF9000F007C117D /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 97C146ED1CF9000F007C117D /* Runner */, - 331C8080294A63A400263BE5 /* RunnerTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 331C807F294A63A400263BE5 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 97C146EC1CF9000F007C117D /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, - 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, - 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, - 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", - ); - name = "Thin Binary"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; - }; - 9740EEB61CF901F6004384FC /* Run Script */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Run Script"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 331C807D294A63A400263BE5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 97C146EA1CF9000F007C117D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, - 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 97C146ED1CF9000F007C117D /* Runner */; - targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 97C146FA1CF9000F007C117D /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C146FB1CF9000F007C117D /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 97C147001CF9000F007C117D /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 249021D3217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Profile; - }; - 249021D4217E4FDB00AE95B9 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterPluginExample; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Profile; - }; - 331C8088294A63A400263BE5 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = AE0B7B92F70575B8D7E0D07E /* Pods-RunnerTests.debug.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterPluginExample.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; - }; - name = Debug; - }; - 331C8089294A63A400263BE5 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 89B67EB44CE7B6631473024E /* Pods-RunnerTests.release.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterPluginExample.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; - }; - name = Release; - }; - 331C808A294A63A400263BE5 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 640959BDD8F10B91D80A66BE /* Pods-RunnerTests.profile.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterPluginExample.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; - }; - name = Profile; - }; - 97C147031CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 97C147041CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 97C147061CF9000F007C117D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterPluginExample; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Debug; - }; - 97C147071CF9000F007C117D /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - ENABLE_BITCODE = NO; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterPluginExample; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; - SWIFT_VERSION = 5.0; - VERSIONING_SYSTEM = "apple-generic"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 331C8088294A63A400263BE5 /* Debug */, - 331C8089294A63A400263BE5 /* Release */, - 331C808A294A63A400263BE5 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147031CF9000F007C117D /* Debug */, - 97C147041CF9000F007C117D /* Release */, - 249021D3217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 97C147061CF9000F007C117D /* Debug */, - 97C147071CF9000F007C117D /* Release */, - 249021D4217E4FDB00AE95B9 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 97C146E61CF9000F007C117D /* Project object */; -} diff --git a/packages/flutter/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/flutter/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a62..000000000 --- a/packages/flutter/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/packages/flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/packages/flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/packages/flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c5e..000000000 --- a/packages/flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/packages/flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index e42adcb34..000000000 --- a/packages/flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/flutter/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/flutter/example/ios/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 1d526a16e..000000000 --- a/packages/flutter/example/ios/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/packages/flutter/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/flutter/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/packages/flutter/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/packages/flutter/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/flutter/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index f9b0d7c5e..000000000 --- a/packages/flutter/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PreviewsEnabled - - - diff --git a/packages/flutter/example/ios/Runner/AppDelegate.swift b/packages/flutter/example/ios/Runner/AppDelegate.swift deleted file mode 100644 index 70693e4a8..000000000 --- a/packages/flutter/example/ios/Runner/AppDelegate.swift +++ /dev/null @@ -1,13 +0,0 @@ -import UIKit -import Flutter - -@UIApplicationMain -@objc class AppDelegate: FlutterAppDelegate { - override func application( - _ application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? - ) -> Bool { - GeneratedPluginRegistrant.register(with: self) - return super.application(application, didFinishLaunchingWithOptions: launchOptions) - } -} diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index d36b1fab2..000000000 --- a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,122 +0,0 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-App-20x20@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-App-29x29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-App-40x40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-App-60x60@3x.png", - "scale" : "3x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@1x.png", - "scale" : "1x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-App-20x20@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@1x.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-App-29x29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@1x.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-App-40x40@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@1x.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-App-76x76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "Icon-App-83.5x83.5@2x.png", - "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-App-1024x1024@1x.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png deleted file mode 100644 index dc9ada472..000000000 Binary files a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and /dev/null differ diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png deleted file mode 100644 index 7353c41ec..000000000 Binary files a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and /dev/null differ diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png deleted file mode 100644 index 797d452e4..000000000 Binary files a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and /dev/null differ diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png deleted file mode 100644 index 6ed2d933e..000000000 Binary files a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and /dev/null differ diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png deleted file mode 100644 index 4cd7b0099..000000000 Binary files a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and /dev/null differ diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png deleted file mode 100644 index fe730945a..000000000 Binary files a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and /dev/null differ diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png deleted file mode 100644 index 321773cd8..000000000 Binary files a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and /dev/null differ diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png deleted file mode 100644 index 797d452e4..000000000 Binary files a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and /dev/null differ diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png deleted file mode 100644 index 502f463a9..000000000 Binary files a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and /dev/null differ diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png deleted file mode 100644 index 0ec303439..000000000 Binary files a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and /dev/null differ diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png deleted file mode 100644 index 0ec303439..000000000 Binary files a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and /dev/null differ diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png deleted file mode 100644 index e9f5fea27..000000000 Binary files a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and /dev/null differ diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png deleted file mode 100644 index 84ac32ae7..000000000 Binary files a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and /dev/null differ diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png deleted file mode 100644 index 8953cba09..000000000 Binary files a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and /dev/null differ diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png deleted file mode 100644 index 0467bf12a..000000000 Binary files a/packages/flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and /dev/null differ diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json deleted file mode 100644 index 0bedcf2fd..000000000 --- a/packages/flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "LaunchImage.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "LaunchImage@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "LaunchImage@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png deleted file mode 100644 index 9da19eaca..000000000 Binary files a/packages/flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png and /dev/null differ diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png deleted file mode 100644 index 9da19eaca..000000000 Binary files a/packages/flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png and /dev/null differ diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png deleted file mode 100644 index 9da19eaca..000000000 Binary files a/packages/flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png and /dev/null differ diff --git a/packages/flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md deleted file mode 100644 index 89c2725b7..000000000 --- a/packages/flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Launch Screen Assets - -You can customize the launch screen with your own desired assets by replacing the image files in this directory. - -You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/packages/flutter/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/flutter/example/ios/Runner/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index f2e259c7c..000000000 --- a/packages/flutter/example/ios/Runner/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/flutter/example/ios/Runner/Base.lproj/Main.storyboard b/packages/flutter/example/ios/Runner/Base.lproj/Main.storyboard deleted file mode 100644 index f3c28516f..000000000 --- a/packages/flutter/example/ios/Runner/Base.lproj/Main.storyboard +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/flutter/example/ios/Runner/Info.plist b/packages/flutter/example/ios/Runner/Info.plist deleted file mode 100644 index 997b5e2e3..000000000 --- a/packages/flutter/example/ios/Runner/Info.plist +++ /dev/null @@ -1,51 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Flutter Plugin Example - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - flutter_plugin_example - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleSignature - ???? - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UIViewControllerBasedStatusBarAppearance - - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - - - diff --git a/packages/flutter/example/ios/Runner/Runner-Bridging-Header.h b/packages/flutter/example/ios/Runner/Runner-Bridging-Header.h deleted file mode 100644 index 308a2a560..000000000 --- a/packages/flutter/example/ios/Runner/Runner-Bridging-Header.h +++ /dev/null @@ -1 +0,0 @@ -#import "GeneratedPluginRegistrant.h" diff --git a/packages/flutter/example/ios/RunnerTests/RunnerTests.swift b/packages/flutter/example/ios/RunnerTests/RunnerTests.swift deleted file mode 100644 index 86a7c3b1b..000000000 --- a/packages/flutter/example/ios/RunnerTests/RunnerTests.swift +++ /dev/null @@ -1,12 +0,0 @@ -import Flutter -import UIKit -import XCTest - -class RunnerTests: XCTestCase { - - func testExample() { - // If you add code to the Runner application, consider adding tests here. - // See https://developer.apple.com/documentation/xctest for more information about using XCTest. - } - -} diff --git a/packages/flutter/example/lib/data/base/api_error.dart b/packages/flutter/example/lib/data/base/api_error.dart deleted file mode 100644 index 1c8576856..000000000 --- a/packages/flutter/example/lib/data/base/api_error.dart +++ /dev/null @@ -1,8 +0,0 @@ -class ApiError { - ApiError(this.code, this.message, this.exception, this.type); - - final int code; - final String message; - final Exception? exception; - final String? type; -} diff --git a/packages/flutter/example/lib/data/base/api_response.dart b/packages/flutter/example/lib/data/base/api_response.dart deleted file mode 100644 index 1ddb1fd8e..000000000 --- a/packages/flutter/example/lib/data/base/api_response.dart +++ /dev/null @@ -1,30 +0,0 @@ -import 'package:parse_server_sdk_flutter/parse_server_sdk_flutter.dart'; - -import 'api_error.dart'; - -class ApiResponse { - ApiResponse(this.success, this.statusCode, this.results, this.error) - : count = results?.length ?? 0, - result = null; - - final bool success; - final int statusCode; - final List? results; - final dynamic result; - int count; - final ApiError? error; -} - -ApiResponse getApiResponse(ParseResponse? response) { - return ApiResponse(response?.success ?? false, response?.statusCode ?? 0, - response?.results, getApiError(response?.error)); -} - -ApiError? getApiError(ParseError? response) { - if (response == null) { - return null; - } - - return ApiError( - response.code, response.message, response.exception, response.type); -} diff --git a/packages/flutter/example/lib/data/model/day.dart b/packages/flutter/example/lib/data/model/day.dart deleted file mode 100644 index 34dd28704..000000000 --- a/packages/flutter/example/lib/data/model/day.dart +++ /dev/null @@ -1,39 +0,0 @@ -import 'dart:core'; - -import 'package:flutter_plugin_example/data/model/user.dart'; -import 'package:parse_server_sdk_flutter/parse_server_sdk_flutter.dart'; - -class Day extends ParseObject implements ParseCloneable { - Day() : super(_keyTableName); - - Day.clone() : this(); - - @override - Day clone(Map map) => Day.clone()..fromJson(map); - - @override - Day fromJson(Map objectData) { - super.fromJson(objectData); - if (objectData.containsKey(keyOwner)) { - owner = User.clone().fromJson(objectData[keyOwner]); - } - return this; - } - - static const String _keyTableName = 'FoodDiary_Day'; - static const String keyDate = 'Date'; - static const String keyOwner = 'Owner'; - static const String keyStatus = 'Status'; - - DateTime? get date => get(keyDate); - - set date(DateTime? date) => set(keyDate, date!); - - User? get owner => get(keyOwner); - - set owner(User? owner) => set(keyOwner, owner!); - - int get status => get(keyStatus) ?? 0; - - set status(int status) => set(keyStatus, status); -} diff --git a/packages/flutter/example/lib/data/model/diet_plan.dart b/packages/flutter/example/lib/data/model/diet_plan.dart deleted file mode 100644 index 35d1fddae..000000000 --- a/packages/flutter/example/lib/data/model/diet_plan.dart +++ /dev/null @@ -1,38 +0,0 @@ -import 'dart:core'; - -import 'package:parse_server_sdk_flutter/parse_server_sdk_flutter.dart'; - -const String keyDietPlan = 'Diet_Plans'; -const String keyName = 'Name'; -const String keyDescription = 'Description'; -const String keyProtein = 'Protein'; -const String keyCarbs = 'Carbs'; -const String keyFat = 'Fat'; -const String keyStatus = 'Status'; - -class DietPlan extends ParseObject implements ParseCloneable { - DietPlan() : super(keyDietPlan); - DietPlan.clone() : this(); - - @override - DietPlan clone(Map map) => DietPlan.clone()..fromJson(map); - - String get name => get(keyName) ?? ""; - set name(String name) => set(keyName, name); - - String get description => get(keyDescription) ?? ""; - set description(String description) => set(keyDescription, name); - - num get protein => get(keyProtein) ?? 0; - set protein(num protein) => super.set(keyProtein, protein); - - num get carbs => get(keyCarbs) ?? 0; - set carbs(num carbs) => set(keyCarbs, carbs); - - num get fat => get(keyFat) ?? 0; - set fat(num fat) => set(keyFat, fat); - - bool get status => get(keyStatus) ?? false; - - set status(bool status) => set(keyStatus, status); -} diff --git a/packages/flutter/example/lib/data/model/user.dart b/packages/flutter/example/lib/data/model/user.dart deleted file mode 100644 index 7787fc3b5..000000000 --- a/packages/flutter/example/lib/data/model/user.dart +++ /dev/null @@ -1,43 +0,0 @@ -import 'dart:core'; - -import 'package:parse_server_sdk_flutter/parse_server_sdk_flutter.dart'; - -class User extends ParseUser implements ParseCloneable { - User(String? username, String? password, String? emailAddress) - : super(username, password, emailAddress); - - User.clone() : this(null, null, null); - - @override - User clone(Map map) => User.clone()..fromJson(map); - - static const String keyDob = 'DOB'; - static const String keyGender = 'Gender'; - static const String keyHeight = 'Height'; - static const String keyFirebaseID = 'FirebaseID'; - static const String keyName = 'Name'; - static const String keyDisplayPicture = 'DisplayPicture'; - static const String keyProUser = 'ProUser'; - - DateTime? get dob => get(keyDob); - set dob(DateTime? dob) => set(keyDob, dob!); - - num get gender => get(keyGender) ?? 0; - set gender(num gender) => set(keyGender, gender); - - num get height => get(keyHeight) ?? 0; - set height(num height) => set(keyHeight, height); - - String get firebaseId => get(keyHeight) ?? ""; - set firebaseId(String firebaseId) => set(keyHeight, firebaseId); - - String get name => get(keyName) ?? ""; - set name(String name) => set(keyName, name); - - String get displayPicture => get(keyDisplayPicture) ?? ""; - set displayPicture(String displayPicture) => - set(keyDisplayPicture, displayPicture); - - bool get proUser => get(keyProUser) ?? false; - set proUser(bool proUser) => set(keyProUser, proUser); -} diff --git a/packages/flutter/example/lib/data/repositories/diet_plan/contract_provider_diet_plan.dart b/packages/flutter/example/lib/data/repositories/diet_plan/contract_provider_diet_plan.dart deleted file mode 100644 index 9124b9ba0..000000000 --- a/packages/flutter/example/lib/data/repositories/diet_plan/contract_provider_diet_plan.dart +++ /dev/null @@ -1,20 +0,0 @@ -import 'package:flutter_plugin_example/data/base/api_response.dart'; -import 'package:flutter_plugin_example/data/model/diet_plan.dart'; - -abstract class DietPlanProviderContract { - Future add(DietPlan item); - - Future addAll(List? items); - - Future update(DietPlan item); - - Future updateAll(List? items); - - Future remove(DietPlan item); - - Future getById(String id); - - Future getAll(); - - Future getNewerThan(DateTime date); -} diff --git a/packages/flutter/example/lib/data/repositories/diet_plan/provider_api_diet_plan.dart b/packages/flutter/example/lib/data/repositories/diet_plan/provider_api_diet_plan.dart deleted file mode 100644 index f1f9397d6..000000000 --- a/packages/flutter/example/lib/data/repositories/diet_plan/provider_api_diet_plan.dart +++ /dev/null @@ -1,74 +0,0 @@ -import 'package:flutter_plugin_example/data/base/api_response.dart'; -import 'package:flutter_plugin_example/data/model/diet_plan.dart'; -import 'package:flutter_plugin_example/data/repositories/diet_plan/contract_provider_diet_plan.dart'; -import 'package:parse_server_sdk_flutter/parse_server_sdk_flutter.dart'; - -class DietPlanProviderApi implements DietPlanProviderContract { - DietPlanProviderApi(); - - @override - Future add(DietPlan item) async { - return getApiResponse(await item.save()); - } - - @override - Future addAll(List? items) async { - final List responses = []; - - for (final DietPlan item in items!) { - final ApiResponse response = await add(item); - - if (!response.success) { - return response; - } - - response.results?.forEach(responses.add); - } - - return ApiResponse(true, 200, responses, null); - } - - @override - Future getAll() async { - return getApiResponse(await DietPlan().getAll()); - } - - @override - Future getById(String id) async { - return getApiResponse(await DietPlan().getObject(id)); - } - - @override - Future getNewerThan(DateTime date) async { - final QueryBuilder query = QueryBuilder(DietPlan()) - ..whereGreaterThan(keyVarCreatedAt, date); - return getApiResponse(await query.query()); - } - - @override - Future remove(DietPlan item) async { - return getApiResponse(await item.delete()); - } - - @override - Future update(DietPlan item) async { - return getApiResponse(await item.save()); - } - - @override - Future updateAll(List? items) async { - final List responses = []; - - for (final DietPlan item in items!) { - final ApiResponse response = await update(item); - - if (!response.success) { - return response; - } - - response.results?.forEach(responses.add); - } - - return ApiResponse(true, 200, responses, null); - } -} diff --git a/packages/flutter/example/lib/data/repositories/diet_plan/provider_db_diet_plan.dart b/packages/flutter/example/lib/data/repositories/diet_plan/provider_db_diet_plan.dart deleted file mode 100644 index 943540239..000000000 --- a/packages/flutter/example/lib/data/repositories/diet_plan/provider_db_diet_plan.dart +++ /dev/null @@ -1,179 +0,0 @@ -import 'dart:convert' as json; - -import 'package:flutter_plugin_example/data/base/api_error.dart'; -import 'package:flutter_plugin_example/data/base/api_response.dart'; -import 'package:flutter_plugin_example/data/model/diet_plan.dart'; -import 'package:flutter_plugin_example/data/repositories/diet_plan/contract_provider_diet_plan.dart'; -import 'package:parse_server_sdk_flutter/parse_server_sdk_flutter.dart'; -import 'package:sembast/sembast.dart'; - -class DietPlanProviderDB implements DietPlanProviderContract { - DietPlanProviderDB(this._db, this._store); - - final StoreRef> _store; - final Database _db; - - @override - Future add(DietPlan item) async { - final Map values = convertItemToStorageMap(item); - await _store.record(item.objectId ?? "").put(_db, values); - final Map? recordFromDB = - await _store.record(item.objectId ?? "").get(_db); - - return ApiResponse( - true, 200, [convertRecordToItem(values: recordFromDB)], null); - } - - @override - Future addAll(List? items) async { - final List itemsInDb = []; - - for (final DietPlan item in items!) { - final ApiResponse response = await add(item); - if (response.success) { - final DietPlan itemInDB = response.result; - itemsInDb.add(itemInDB); - } - } - - if (itemsInDb.isEmpty) { - return errorResponse; - } else { - return ApiResponse(true, 200, itemsInDb, null); - } - } - - @override - Future getAll() async { - final List foodItems = []; - - final List sortOrders = []; - sortOrders.add(SortOrder(keyName)); - final Finder finder = Finder(sortOrders: sortOrders); - final List>> records = - await _store.find(_db, finder: finder); - - if (records.isNotEmpty) { - for (final RecordSnapshot> record - in records) { - final DietPlan? userFood = convertRecordToItem(record: record); - if (userFood != null) { - foodItems.add(userFood); - } - } - } else { - return errorResponse; - } - - return ApiResponse(true, 200, foodItems, null); - } - - @override - Future getById(String id) async { - final Finder finder = Finder(filter: Filter.equals('objectId', id)); - - final RecordSnapshot>? record = - await _store.findFirst(_db, finder: finder); - if (record != null) { - final DietPlan? userFood = convertRecordToItem(record: record); - return ApiResponse(true, 200, [userFood], null); - } else { - return errorResponse; - } - } - - @override - Future getNewerThan(DateTime date) async { - final List foodItems = []; - - final Finder finder = Finder( - filter: - Filter.greaterThan(keyVarUpdatedAt, date.millisecondsSinceEpoch)); - - final List>> records = - await _store.find(_db, finder: finder); - - for (final RecordSnapshot> record in records) { - final DietPlan? convertedDietPlan = convertRecordToItem(record: record); - if (convertedDietPlan != null) { - foodItems.add(convertedDietPlan); - } - } - - if (records.isNotEmpty) { - return errorResponse; - } - - return ApiResponse(true, 200, foodItems, null); - } - - @override - Future remove(DietPlan item) async { - final Finder finder = - Finder(filter: Filter.equals('objectId', item.objectId)); - _store.delete(_db, finder: finder); - return ApiResponse(true, 200, null, null); - } - - @override - Future updateAll(List? items) async { - final List updatedItems = []; - - for (final DietPlan item in items!) { - final ApiResponse response = await update(item); - if (response.success) { - final DietPlan responseItem = response.result; - updatedItems.add(responseItem); - } - } - - if (updatedItems.isNotEmpty) { - return errorResponse; - } - - return ApiResponse(true, 200, updatedItems, null); - } - - @override - Future update(DietPlan item) async { - final Map values = convertItemToStorageMap(item); - final Finder finder = - Finder(filter: Filter.equals('objectId', item.objectId)); - final int returnedCount = await _store.update(_db, values, finder: finder); - - if (returnedCount == 0) { - return add(item); - } - - return ApiResponse(true, 200, [item], null); - } - - Map convertItemToStorageMap(DietPlan item) { - final Map values = {}; - // ignore: invalid_use_of_protected_member - values['value'] = json.jsonEncode(item.toJson(full: true)); - values[keyVarObjectId] = item.objectId; - final updatedAt = item.updatedAt; - if (updatedAt != null) { - values[keyVarUpdatedAt] = updatedAt.millisecondsSinceEpoch; - } - - return values; - } - - DietPlan? convertRecordToItem( - {RecordSnapshot>? record, - Map? values}) { - try { - values ??= record?.value; - final DietPlan item = - DietPlan.clone().fromJson(json.jsonDecode(values?['value'])); - return item; - } catch (e) { - return null; - } - } - - static ApiError error = ApiError(1, 'No records found', null, ''); - ApiResponse errorResponse = ApiResponse(false, 1, null, error); -} diff --git a/packages/flutter/example/lib/data/repositories/diet_plan/repository_diet_plan.dart b/packages/flutter/example/lib/data/repositories/diet_plan/repository_diet_plan.dart deleted file mode 100644 index 01172d8a6..000000000 --- a/packages/flutter/example/lib/data/repositories/diet_plan/repository_diet_plan.dart +++ /dev/null @@ -1,165 +0,0 @@ -import 'package:flutter_plugin_example/data/base/api_response.dart'; -import 'package:flutter_plugin_example/data/model/diet_plan.dart'; -import 'package:flutter_plugin_example/data/repositories/diet_plan/contract_provider_diet_plan.dart'; -import 'package:flutter_plugin_example/data/repositories/diet_plan/provider_api_diet_plan.dart'; -import 'package:flutter_plugin_example/data/repositories/diet_plan/provider_db_diet_plan.dart'; -import 'package:flutter_plugin_example/domain/utils/collection_utils.dart'; -import 'package:sembast/sembast.dart'; - -class DietPlanRepository implements DietPlanProviderContract { - static DietPlanRepository init(Database? dbConnection, - {DietPlanProviderContract? mockDBProvider, - DietPlanProviderContract? mockAPIProvider}) { - final DietPlanRepository repository = DietPlanRepository(); - - if (mockDBProvider != null) { - repository.db = mockDBProvider; - } else { - final StoreRef> store = - stringMapStoreFactory.store('repository_diet'); - repository.db = DietPlanProviderDB(dbConnection!, store); - } - - if (mockAPIProvider != null) { - repository.api = mockAPIProvider; - } else { - repository.api = DietPlanProviderApi(); - } - - return repository; - } - - late DietPlanProviderContract api; - late DietPlanProviderContract db; - - @override - Future add(DietPlan item, - {bool apiOnly = false, bool dbOnly = false}) async { - if (apiOnly) { - return await api.add(item); - } - if (dbOnly) { - return await db.add(item); - } - - final ApiResponse response = await api.add(item); - if (response.success) { - await db.add(item); - } - - return response; - } - - @override - Future addAll(List? items, - {bool apiOnly = false, bool dbOnly = false}) async { - if (apiOnly) { - return await api.addAll(items); - } - if (dbOnly) { - return await db.addAll(items); - } - - final ApiResponse response = await api.addAll(items); - - if (response.success && isValidList(response.results)) { - await db.addAll(response.results); - } - - return response; - } - - @override - Future getAll({bool fromApi = false}) { - if (fromApi) { - return api.getAll(); - } - - return db.getAll(); - } - - @override - Future getById(String id, - {bool fromApi = false, bool fromDb = false}) async { - if (fromApi) { - return api.getAll(); - } - if (fromDb) { - return db.getAll(); - } - - ApiResponse response = await db.getById(id); - if (response.result == null) { - response = await api.getById(id); - } - - return response; - } - - @override - Future getNewerThan(DateTime date, - {bool fromApi = false, bool fromDb = false}) async { - if (fromApi) { - return await api.getNewerThan(date); - } - if (fromDb) { - return await db.getNewerThan(date); - } - - final ApiResponse response = await api.getNewerThan(date); - - if (response.success && isValidList(response.results)) { - await db.updateAll(response.results); - } - - return response; - } - - @override - Future remove(DietPlan item, - {bool apiOnly = false, bool dbOnly = false}) async { - if (apiOnly) { - return await api.remove(item); - } - if (dbOnly) { - return await db.remove(item); - } - - ApiResponse response = await api.remove(item); - response = await db.remove(item); - return response; - } - - @override - Future update(DietPlan item, - {bool apiOnly = false, bool dbOnly = false}) async { - if (apiOnly) { - return await api.update(item); - } - if (dbOnly) { - return await db.update(item); - } - - ApiResponse response = await api.update(item); - response = await db.update(item); - return response; - } - - @override - Future updateAll(List? items, - {bool apiOnly = false, bool dbOnly = false}) async { - if (apiOnly) { - await api.updateAll(items); - } - if (dbOnly) { - await db.updateAll(items); - } - - ApiResponse response = await api.updateAll(items); - if (response.success && isValidList(response.results)) { - response = await db.updateAll(response.results); - } - - return response; - } -} diff --git a/packages/flutter/example/lib/data/repositories/user/contract_provider_user.dart b/packages/flutter/example/lib/data/repositories/user/contract_provider_user.dart deleted file mode 100644 index 08d6b7065..000000000 --- a/packages/flutter/example/lib/data/repositories/user/contract_provider_user.dart +++ /dev/null @@ -1,17 +0,0 @@ -import 'package:flutter_plugin_example/data/base/api_response.dart'; -import 'package:flutter_plugin_example/data/model/user.dart'; - -abstract class UserProviderContract { - Future createUser( - String username, String password, String emailAddress); - Future? currentUser(); - Future? signUp(User user); - Future? login(User user); - void logout(User user); - Future? getCurrentUserFromServer(); - Future? requestPasswordReset(User user); - Future? verificationEmailRequest(User user); - Future save(User user); - Future destroy(User user); - Future? allUsers(); -} diff --git a/packages/flutter/example/lib/data/repositories/user/provider_api_user.dart b/packages/flutter/example/lib/data/repositories/user/provider_api_user.dart deleted file mode 100644 index b32942d36..000000000 --- a/packages/flutter/example/lib/data/repositories/user/provider_api_user.dart +++ /dev/null @@ -1,63 +0,0 @@ -import 'package:flutter_plugin_example/data/base/api_response.dart'; -import 'package:flutter_plugin_example/data/model/user.dart'; -import 'package:parse_server_sdk_flutter/parse_server_sdk_flutter.dart'; - -import 'contract_provider_user.dart'; - -class UserProviderApi implements UserProviderContract { - @override - Future createUser( - String username, String password, String emailAddress) { - return Future.value(User(username, password, emailAddress)); - } - - @override - Future? currentUser() { - return ParseUser.currentUser() as Future; - } - - @override - Future getCurrentUserFromServer() async { - final ParseUser user = await ParseUser.currentUser(); - return getApiResponse(await ParseUser.getCurrentUserFromServer( - user.get(keyHeaderSessionToken)!)); - } - - @override - Future destroy(User user) async { - return getApiResponse(await user.destroy()); - } - - @override - Future login(User user) async { - return getApiResponse(await user.login()); - } - - @override - Future requestPasswordReset(User user) async { - return getApiResponse(await user.requestPasswordReset()); - } - - @override - Future save(User user) async { - return getApiResponse(await user.save()); - } - - @override - Future signUp(User user) async { - return getApiResponse(await user.signUp()); - } - - @override - Future verificationEmailRequest(User user) async { - return getApiResponse(await user.verificationEmailRequest()); - } - - @override - Future allUsers() async { - return getApiResponse(await ParseUser.all()); - } - - @override - void logout(User user) => user.logout(); -} diff --git a/packages/flutter/example/lib/data/repositories/user/provider_db_user.dart b/packages/flutter/example/lib/data/repositories/user/provider_db_user.dart deleted file mode 100644 index ca9076449..000000000 --- a/packages/flutter/example/lib/data/repositories/user/provider_db_user.dart +++ /dev/null @@ -1,108 +0,0 @@ -import 'dart:convert' as json; - -import 'package:flutter_plugin_example/data/base/api_error.dart'; -import 'package:flutter_plugin_example/data/base/api_response.dart'; -import 'package:flutter_plugin_example/data/model/user.dart'; -import 'package:parse_server_sdk_flutter/parse_server_sdk_flutter.dart'; -import 'package:sembast/sembast.dart'; - -import 'contract_provider_user.dart'; - -class UserProviderDB implements UserProviderContract { - UserProviderDB(this._db, this._store); - - final StoreRef> _store; - final Database _db; - - @override - Future createUser( - String username, String password, String emailAddress) async { - final User user = User(username, password, emailAddress); - final Map values = convertItemToStorageMap(user); - await _store.record(user.objectId ?? "").put(_db, values); - final Map? recordFromDB = - await _store.record(user.objectId ?? "").get(_db); - return convertRecordToItem(record: recordFromDB)!; - } - - @override - Future? currentUser() { - return null; - } - - @override - Future getCurrentUserFromServer() async { - return null; - } - - @override - Future destroy(User user) async { - final Finder finder = - Finder(filter: Filter.equals('objectId', user.objectId)); - await _store.delete(_db, finder: finder); - return ApiResponse(true, 200, null, null); - } - - @override - Future login(User user) async { - return null; - } - - @override - Future requestPasswordReset(User user) async { - return null; - } - - @override - Future save(User user) async { - final Map values = convertItemToStorageMap(user); - await _store.record(user.objectId ?? "").put(_db, values); - final Map? recordFromDB = - await _store.record(user.objectId ?? "").get(_db); - return ApiResponse( - true, 200, [convertRecordToItem(record: recordFromDB)], null); - } - - @override - Future? signUp(User user) { - return null; - } - - @override - Future verificationEmailRequest(User user) async { - return null; - } - - @override - Future allUsers() async { - return null; - } - - @override - void logout(User user) {} - - Map convertItemToStorageMap(User item) { - final Map values = {}; - // ignore: invalid_use_of_protected_member - values['value'] = json.jsonEncode(item.toJson(full: true)); - values[keyVarObjectId] = item.objectId; - item.updatedAt != null - ? values[keyVarUpdatedAt] = item.updatedAt?.millisecondsSinceEpoch - : values[keyVarCreatedAt] = DateTime.now().millisecondsSinceEpoch; - return values; - } - - User? convertRecordToItem({dynamic record, Map? values}) { - try { - values ??= record.value; - final User item = - User.clone().fromJson(json.jsonDecode(values?['value'])); - return item; - } catch (e) { - return null; - } - } - - static ApiError error = ApiError(1, 'No records found', null, ''); - ApiResponse errorResponse = ApiResponse(false, 1, null, error); -} diff --git a/packages/flutter/example/lib/data/repositories/user/repository_user.dart b/packages/flutter/example/lib/data/repositories/user/repository_user.dart deleted file mode 100644 index 117221ba9..000000000 --- a/packages/flutter/example/lib/data/repositories/user/repository_user.dart +++ /dev/null @@ -1,87 +0,0 @@ -import 'package:flutter_plugin_example/data/base/api_response.dart'; -import 'package:flutter_plugin_example/data/model/user.dart'; -import 'package:sembast/sembast.dart'; - -import 'contract_provider_user.dart'; -import 'provider_api_user.dart'; -import 'provider_db_user.dart'; - -class UserRepository implements UserProviderContract { - static UserRepository init(Database dbConnection, - {UserProviderContract? mockDBProvider, - UserProviderContract? mockAPIProvider}) { - final UserRepository repository = UserRepository(); - - if (mockDBProvider != null) { - repository.db = mockDBProvider; - } else { - final StoreRef> store = - stringMapStoreFactory.store('repository_user'); - repository.db = UserProviderDB(dbConnection, store); - } - - if (mockAPIProvider != null) { - repository.api = mockAPIProvider; - } else { - repository.api = UserProviderApi(); - } - - return repository; - } - - late UserProviderContract api; - late UserProviderContract db; - - @override - Future createUser( - String username, String password, String emailAddress) async { - api.createUser(username, password, emailAddress); - - final User user = await api.createUser(username, password, emailAddress); - await db.createUser(username, password, emailAddress); - - return user; - } - - @override - Future destroy(User user) async { - ApiResponse response = await api.destroy(user); - response = await db.destroy(user); - return response; - } - - @override - Future? allUsers() => api.allUsers(); - - @override - Future? getCurrentUserFromServer() => - api.getCurrentUserFromServer(); - - @override - Future? login(User user) => api.login(user); - - @override - void logout(User user) => api.logout(user); - - @override - Future? requestPasswordReset(User user) => - api.requestPasswordReset(user); - - @override - Future save(User user) async { - ApiResponse response = await api.save(user); - response = await db.save(user); - return response; - } - - @override - Future? signUp(User user) => api.signUp(user); - - @override - Future? verificationEmailRequest(User user) => api.signUp(user); - - @override - Future? currentUser() { - return db.currentUser(); - } -} diff --git a/packages/flutter/example/lib/domain/constants/application_constants.dart b/packages/flutter/example/lib/domain/constants/application_constants.dart deleted file mode 100644 index 73292218e..000000000 --- a/packages/flutter/example/lib/domain/constants/application_constants.dart +++ /dev/null @@ -1,6 +0,0 @@ -const String keyApplicationName = ''; -const String keyParseApplicationId = ''; -const String keyParseClientKey = ''; -const String keyParseServerUrl = ''; -const String keyParseLiveServerUrl = ''; -const bool keyDebug = true; diff --git a/packages/flutter/example/lib/domain/utils/collection_utils.dart b/packages/flutter/example/lib/domain/utils/collection_utils.dart deleted file mode 100644 index 0a2b8fcb9..000000000 --- a/packages/flutter/example/lib/domain/utils/collection_utils.dart +++ /dev/null @@ -1,5 +0,0 @@ -bool isValidList(List? list) => - (list != null && list.isNotEmpty) ? true : false; - -bool isValidMap(Map? map) => - (map != null && map.isNotEmpty) ? true : false; diff --git a/packages/flutter/example/lib/domain/utils/db_utils.dart b/packages/flutter/example/lib/domain/utils/db_utils.dart deleted file mode 100644 index 95d34a3b2..000000000 --- a/packages/flutter/example/lib/domain/utils/db_utils.dart +++ /dev/null @@ -1,11 +0,0 @@ -import 'package:path/path.dart' as path; -import 'package:path_provider/path_provider.dart'; -import 'package:sembast/sembast.dart'; -import 'package:sembast/sembast_io.dart'; - -Future getDB() async { - final String dbDirectory = (await getApplicationDocumentsDirectory()).path; - final String dbPath = path.join(dbDirectory, 'no_sql'); - final DatabaseFactory dbFactory = databaseFactoryIo; - return await dbFactory.openDatabase(dbPath); -} diff --git a/packages/flutter/example/lib/live_list/main.dart b/packages/flutter/example/lib/live_list/main.dart deleted file mode 100644 index 2efa1aaa4..000000000 --- a/packages/flutter/example/lib/live_list/main.dart +++ /dev/null @@ -1,202 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:parse_server_sdk_flutter/parse_server_sdk_flutter.dart'; - -import '../domain/constants/application_constants.dart'; - -void main() => runApp(const MyApp()); - -class MyApp extends StatefulWidget { - const MyApp({Key? key}) : super(key: key); - - @override - State createState() => _MyAppState(); -} - -class _MyAppState extends State { - bool? initFailed; - - late QueryBuilder _queryBuilder; - - @override - void initState() { - super.initState(); - initData().then((bool success) { - setState(() { - initFailed = !success; - if (success) { - _queryBuilder = QueryBuilder(ParseObject('Test')) - ..orderByAscending('order') - ..whereNotEqualTo('show', false); - } - }); - }).catchError((dynamic _) { - setState(() { - initFailed = true; - }); - }); - } - - @override - Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - appBar: AppBar( - title: const Text('LiveList example app'), - ), - body: initFailed == false - ? buildBody(context) - : Container( - height: double.infinity, - alignment: Alignment.center, - child: initFailed == null - ? _buildLoading() - : const Text('Connecting to the server failed!'), - ), - ), - ); - } - - Column _buildLoading() { - // ignore: prefer_const_constructors - return Column( - mainAxisAlignment: MainAxisAlignment.center, - children: const [ - CircularProgressIndicator(), - Text('Connecting to the server...'), - ], - ); - } - - Future initData() async { - await Parse().initialize(keyParseApplicationId, keyParseServerUrl, - clientKey: keyParseClientKey, - debug: keyDebug, - liveQueryUrl: keyParseLiveServerUrl); - - return (await Parse().healthCheck()).success; - } - - Widget buildBody(BuildContext context) { - final GlobalKey<_ObjectFormState> objectFormKey = - GlobalKey<_ObjectFormState>(); - return Column( - children: [ - Expanded( - child: ParseLiveListWidget( - query: _queryBuilder, - duration: const Duration(seconds: 1), - childBuilder: (BuildContext context, - ParseLiveListElementSnapshot snapshot) { - if (snapshot.failed) { - return const Text('something went wrong!'); - } else if (snapshot.hasData) { - return ListTile( - title: Row( - children: [ - Flexible( - flex: 1, - child: Text(snapshot.loadedData! - .get('order') - .toString()), - ), - Flexible( - flex: 10, - child: Container( - alignment: Alignment.center, - child: Text( - snapshot.loadedData!.get('text')!, - ), - ), - ), - ], - ), - onLongPress: () { - objectFormKey.currentState! - .setObject(snapshot.loadedData); - }, - ); - } else { - return const ListTile( - leading: CircularProgressIndicator(), - ); - } - }), - ), - Container( - color: Colors.black12, - child: ObjectForm( - key: objectFormKey, - ), - ) - ], - ); - } -} - -class ObjectForm extends StatefulWidget { - const ObjectForm({Key? key}) : super(key: key); - - @override - State createState() => _ObjectFormState(); -} - -class _ObjectFormState extends State { - ParseObject? _currentObject; - final GlobalKey _formKey = GlobalKey(); - - void setObject(ParseObject? object) { - setState(() { - _currentObject = object; - }); - } - - @override - Widget build(BuildContext context) { - return _currentObject == null - ? Container() - : Form( - key: _formKey, - child: ListTile( - key: UniqueKey(), - title: Row( - children: [ - Flexible( - flex: 1, - child: TextFormField( - initialValue: - _currentObject!.get('order').toString(), - keyboardType: TextInputType.number, - onSaved: (String? value) { - _currentObject!.set('order', int.parse(value!)); - }, - ), - ), - Flexible( - flex: 10, - child: TextFormField( - initialValue: _currentObject!.get('text'), - onSaved: (String? value) { - _currentObject!.set('text', value); - }, - ), - ) - ], - ), - trailing: IconButton( - icon: const Icon(Icons.save), - onPressed: () { - setState(() { - _formKey.currentState!.save(); - final ParseObject? object = _currentObject; - //Delay to highlight the animation. - Future.delayed(const Duration(seconds: 1)) - .then((_) { - object!.save(); - }); - _currentObject = null; - }); - }), - ), - ); - } -} diff --git a/packages/flutter/example/lib/main.dart b/packages/flutter/example/lib/main.dart deleted file mode 100644 index f9a70a049..000000000 --- a/packages/flutter/example/lib/main.dart +++ /dev/null @@ -1,392 +0,0 @@ -// ignore_for_file: avoid_print - -import 'dart:convert'; -import 'dart:io'; - -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_plugin_example/data/base/api_response.dart'; -import 'package:flutter_plugin_example/data/model/diet_plan.dart'; -import 'package:flutter_plugin_example/data/model/user.dart'; -import 'package:flutter_plugin_example/data/repositories/diet_plan/repository_diet_plan.dart'; -import 'package:flutter_plugin_example/data/repositories/user/repository_user.dart'; -import 'package:flutter_plugin_example/domain/constants/application_constants.dart'; -import 'package:flutter_plugin_example/domain/utils/db_utils.dart'; -import 'package:flutter_plugin_example/pages/decision_page.dart'; -import 'package:parse_server_sdk_flutter/parse_server_sdk_flutter.dart'; - -void main() { - _setTargetPlatformForDesktop(); - - runApp(const MyApp()); -} - -void _setTargetPlatformForDesktop() { - TargetPlatform? targetPlatform; - - if (Platform.isMacOS) { - targetPlatform = TargetPlatform.iOS; - } else if (Platform.isLinux || Platform.isWindows) { - targetPlatform = TargetPlatform.android; - } - if (targetPlatform != null) { - debugDefaultTargetPlatformOverride = targetPlatform; - } -} - -class MyApp extends StatefulWidget { - const MyApp({Key? key}) : super(key: key); - - @override - State createState() => _MyAppState(); -} - -class _MyAppState extends State { - DietPlanRepository? dietPlanRepo; - UserRepository? userRepo; - - String text = ''; - - @override - void initState() { - super.initState(); - initData(); - } - - @override - Widget build(BuildContext context) { - return MaterialApp( - home: Scaffold( - appBar: AppBar( - title: const Text('Plugin example app'), - ), - body: const Center( - child: DecisionPage(), - //child: HomePage(), - ), - ), - ); - } - - Future initData() async { - // Initialize repository - await initRepository(); - - // Initialize parse - await Parse().initialize(keyParseApplicationId, keyParseServerUrl, - clientKey: keyParseClientKey, debug: true); - - //parse serve with secure store and desktop support - - // Parse().initialize(keyParseApplicationId, keyParseServerUrl, - // clientKey: keyParseClientKey, - // debug: true); - - // Check server is healthy and live - Debug is on in this instance so check logs for result - final ParseResponse response = await Parse().healthCheck(); - - if (response.success) { - await runTestQueries(); - text += 'runTestQueries\n'; - print(text); - } else { - text += 'Server health check failed'; - print(text); - } - } - - Future runTestQueries() async { - // Basic repository example - //await repositoryAddUser(); - // await repositoryAddItems(); - await repositoryGetAllItems(); - - //Basic usage - //await createItem(); - //await getAllItems(); - //await getAllItemsByName(); - //await getSingleItem(); - //await getConfigs(); - //await query(); - //await initUser(); - //await initInstallation(); - //await function(); - //await functionWithParameters(); - //await test(); - } - - Future initInstallation() async { - final ParseInstallation installation = - await ParseInstallation.currentInstallation(); - final ParseResponse response = await installation.create(); - print(response); - } - - Future test() async { - User user = User('test_user', 'test_password', 'test@gmail.com'); - final ParseResponse signUpResponse = await user.signUp(); - - if (signUpResponse.success) { - user = signUpResponse.result; - } else { - final ParseResponse loginResponse = await user.login(); - - if (loginResponse.success) { - user = loginResponse.result; - } - } - - final QueryBuilder query = QueryBuilder(DietPlan()) - ..whereEqualTo(keyProtein, 30); - final ParseResponse item = await query.query(); - print(item.toString()); - } - - Future createItem() async { - final ParseObject newObject = ParseObject('TestObjectForApi'); - newObject.set('name', 'testItem'); - newObject.set('age', 26); - - final ParseResponse apiResponse = await newObject.create(); - - if (apiResponse.success && apiResponse.count > 0) { - print('$keyAppName: ${apiResponse.result}'); - } - } - - Future getAllItemsByName() async { - final ParseResponse apiResponse = - await ParseObject('TestObjectForApi').getAll(); - - if (apiResponse.success && apiResponse.count > 0) { - for (final ParseObject testObject in apiResponse.results!) { - print('$keyAppName: $testObject'); - } - } - } - - Future getAllItems() async { - final ParseResponse apiResponse = await DietPlan().getAll(); - - if (apiResponse.success && apiResponse.count > 0) { - for (final DietPlan plan in apiResponse.results!) { - print('$keyAppName: ${plan.name}'); - } - } else { - print('$keyAppName: ${apiResponse.error?.message}'); - } - } - - Future getSingleItem() async { - final ParseResponse apiResponse = await DietPlan().getObject('B0xtU0Ekqi'); - - if (apiResponse.success && apiResponse.count > 0) { - final DietPlan dietPlan = apiResponse.result; - - // Shows example of storing values in their proper type and retrieving them - dietPlan.set('RandomInt', 8); - final int? randomInt = dietPlan.get('RandomInt'); - - if (randomInt is int) { - print('Saving generic value worked!'); - } - - // Shows example of pinning an item - await dietPlan.pin(); - - // shows example of retrieving a pin - final DietPlan? newDietPlanFromPin = - await DietPlan().fromPin('R5EonpUDWy'); - if (newDietPlanFromPin != null) { - print('Retreiving from pin worked!'); - } - } else { - print('$keyAppName: ${apiResponse.error?.message}'); - } - } - - Future query() async { - final QueryBuilder queryBuilder = - QueryBuilder(ParseObject('TestObjectForApi')) - ..whereLessThan(keyVarCreatedAt, DateTime.now()); - - final ParseResponse apiResponse = await queryBuilder.query(); - - if (apiResponse.success && apiResponse.count > 0) { - final List listFromApi = apiResponse.result; - final ParseObject parseObject = listFromApi.first; - print('Result: ${parseObject.toString()}'); - } else { - print('Result: ${apiResponse.error?.message}'); - } - } - - Future initUser() async { - // All return type ParseUser except all - ParseUser user = - ParseUser('RE9fU360lishjFKC5dLZS4Zwm', 'password', 'test@facebook.com'); - - /// Sign-up - /*ParseResponse response = await user.signUp(); - if (response.success) { - user = response.result; - }*/ - - final ParseUser user1 = await ParseUser.currentUser(); - user1.authData; - - /// Login - ParseResponse? response = await user.login(); - if (response.success) { - user = response.result; - } - - /// Reset password - response = await user.requestPasswordReset(); - if (response.success) { - user = response.result; - } - - /// Verify email - response = await user.verificationEmailRequest(); - if (response.success) { - user = response.result; - } - - // Best practice for starting the app. This will check for a valid user from a previous session from a local storage - user = await ParseUser.currentUser(); - - /// Update current user from server - Best done to verify user is still a valid user - response = await ParseUser.getCurrentUserFromServer( - user.get(keyHeaderSessionToken)!); - if (response?.success ?? false) { - user = response?.result; - } - - /// log user out - response = await user.logout(); - if (response.success) { - user = response.result; - } - - user = await ParseUser.currentUser(); - - user = - ParseUser('TestFlutter', 'TestPassword123', 'phill.wiggins@gmail.com'); - response = await user.login(); - if (response.success) { - user = response.result; - } - - response = await user.save(); - if (response.success) { - user = response.result; - } - - // Returns type ParseResponse as its a query, not a single result - response = await ParseUser.all(); - if (response.success) { - // We have a list of all users (LIMIT SET VIA SDK) - print(response.results); - } - - final QueryBuilder queryBuilder = - QueryBuilder(ParseUser.forQuery()) - ..whereStartsWith(ParseUser.keyUsername, 'phillw'); - - final ParseResponse apiResponse = await queryBuilder.query(); - if (apiResponse.success && apiResponse.count > 0) { - final List users = response.result; - for (final ParseUser user in users) { - print('$keyAppName: $user'); - } - } - } - - Future function() async { - final ParseCloudFunction function = ParseCloudFunction('hello'); - final ParseResponse result = - await function.executeObjectFunction(); - if (result.success) { - if (result.result is ParseObject) { - final ParseObject parseObject = result.result; - print(parseObject.parseClassName); - } - } - } - - Future functionWithParameters() async { - final ParseCloudFunction function = ParseCloudFunction('hello'); - final Map params = {'plan': 'paid'}; - function.execute(parameters: params); - } - - Future getConfigs() async { - final ParseConfig config = ParseConfig(); - final ParseResponse addResponse = - await config.addConfig('TestConfig', 'testing'); - - if (addResponse.success) { - print('Added a config'); - } - - final ParseResponse getResponse = await config.getConfigs(); - - if (getResponse.success) { - print('We have our configs.'); - } - } - - Future repositoryAddUser() async { - final User user = User('test_username', 'password', 'test@gmail.com'); - - final ApiResponse response = await userRepo!.save(user); - - if (!response.success) { - await userRepo!.login(user); - } - - final User currentUser = - await ParseUser.currentUser(customUserObject: User.clone()); - print(currentUser); - } - - Future repositoryAddItems() async { - final List dietPlans = []; - - final List json = const JsonDecoder().convert(dietPlansToAdd); - for (final Map element in json) { - final DietPlan dietPlan = DietPlan(); - element.forEach( - (String k, dynamic v) => dietPlan.set(k, parseDecode(v))); - dietPlans.add(dietPlan); - } - - await initRepository(); - final ApiResponse response = await dietPlanRepo!.addAll(dietPlans); - if (response.success) { - print(response.result); - } - } - - Future repositoryGetAllItems() async { - final ApiResponse response = await dietPlanRepo!.getAll(); - if (response.success) { - print(response.result); - } - } - - Future initRepository() async { - dietPlanRepo ??= DietPlanRepository.init(await getDB()); - userRepo ??= UserRepository.init(await getDB()); - } -} - -const String dietPlansToAdd = - '[{"className":"Diet_Plans","Name":"Textbook","Description":"For an active lifestyle and a straight forward macro plan, we suggest this plan.","Fat":25,"Carbs":50,"Protein":25,"Status":false},' - '{"className":"Diet_Plans","Name":"Body Builder","Description":"Default Body Builders Diet","Fat":20,"Carbs":40,"Protein":40,"Status":false},' - '{"className":"Diet_Plans","Name":"Zone Diet","Description":"Popular with CrossFit users. Zone Diet targets similar macros.","Fat":30,"Carbs":40,"Protein":30,"Status":false},' - '{"className":"Diet_Plans","Name":"Low Fat","Description":"Low fat diet.","Fat":15,"Carbs":60,"Protein":25,"Status":false},' - '{"className":"Diet_Plans","Name":"Low Carb","Description":"Low Carb diet, main focus on quality fats and protein.","Fat":35,"Carbs":25,"Protein":40,"Status":false},' - '{"className":"Diet_Plans","Name":"Paleo","Description":"Paleo diet.","Fat":60,"Carbs":25,"Protein":10,"Status":false},' - '{"className":"Diet_Plans","Name":"Ketogenic","Description":"High quality fats, low carbs.","Fat":65,"Carbs":5,"Protein":30,"Status":false}]'; diff --git a/packages/flutter/example/lib/pages/decision_page.dart b/packages/flutter/example/lib/pages/decision_page.dart deleted file mode 100644 index 262c333ad..000000000 --- a/packages/flutter/example/lib/pages/decision_page.dart +++ /dev/null @@ -1,97 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_plugin_example/data/repositories/diet_plan/provider_api_diet_plan.dart'; -import 'package:flutter_plugin_example/domain/constants/application_constants.dart'; -import 'package:parse_server_sdk_flutter/parse_server_sdk_flutter.dart'; - -import 'home_page.dart'; -import 'login_page.dart'; - -class DecisionPage extends StatefulWidget { - const DecisionPage({Key? key}) : super(key: key); - - @override - State createState() => _DecisionPageState(); -} - -class _DecisionPageState extends State { - String _parseServerState = 'Checking Parse Server...'; - - @override - void initState() { - super.initState(); - WidgetsBinding.instance.addPostFrameCallback((_) { - _initParse(); - }); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - _showLogo(), - const SizedBox( - height: 20, - ), - Center( - child: Text(_parseServerState), - ), - ], - ), - ), - ); - } - - Widget _showLogo() { - return Hero( - tag: 'hero', - child: Padding( - padding: const EdgeInsets.fromLTRB(0.0, 70.0, 0.0, 0.0), - child: CircleAvatar( - backgroundColor: Colors.transparent, - radius: 48.0, - child: Image.asset('assets/parse.png'), - ), - ), - ); - } - - Future _initParse() async { - try { - await Parse().initialize(keyParseApplicationId, keyParseServerUrl, - clientKey: keyParseClientKey, debug: true); - final ParseResponse response = await Parse().healthCheck(); - if (response.success) { - ParseUser? user = await ParseUser.currentUser(); - if (user != null) { - _redirectToPage(context as dynamic, HomePage(DietPlanProviderApi())); - } else { - _redirectToPage(context as dynamic, const LoginPage()); - } - } else { - setState(() { - _parseServerState = - 'Parse Server Not avaiable\n due to ${response.error.toString()}'; - }); - } - } catch (e) { - setState(() { - _parseServerState = e.toString(); - }); - } - } - - Future _redirectToPage(dynamic context, Widget page) async { - final MaterialPageRoute newRoute = - MaterialPageRoute(builder: (BuildContext context) => page); - - final bool? nav = await Navigator.of(context) - .pushAndRemoveUntil(newRoute, ModalRoute.withName('/')); - if (nav == true) { - _initParse(); - } - } -} diff --git a/packages/flutter/example/lib/pages/home_page.dart b/packages/flutter/example/lib/pages/home_page.dart deleted file mode 100644 index 6c5349e64..000000000 --- a/packages/flutter/example/lib/pages/home_page.dart +++ /dev/null @@ -1,136 +0,0 @@ -import 'dart:convert'; -import 'dart:math'; - -import 'package:flutter/material.dart'; -import 'package:flutter_plugin_example/data/base/api_response.dart'; -import 'package:flutter_plugin_example/data/model/diet_plan.dart'; -import 'package:flutter_plugin_example/data/repositories/diet_plan/contract_provider_diet_plan.dart'; -import 'package:parse_server_sdk_flutter/parse_server_sdk_flutter.dart'; - -class HomePage extends StatefulWidget { - const HomePage(this._dietPlanProvider, {Key? key}) : super(key: key); - - final DietPlanProviderContract _dietPlanProvider; - - @override - State createState() => _HomePageState(); -} - -class _HomePageState extends State { - List randomDietPlans = []; - - @override - void initState() { - super.initState(); - final List json = const JsonDecoder().convert(dietPlansToAdd); - for (final Map element in json) { - final DietPlan dietPlan = DietPlan(); - element.forEach( - (String k, dynamic v) => dietPlan.set(k, parseDecode(v))); - randomDietPlans.add(dietPlan); - } - } - - @override - Widget build(BuildContext context) { - return WillPopScope( - onWillPop: () async => false, - child: Scaffold( - appBar: AppBar( - automaticallyImplyLeading: false, - title: const Text('Parse Server demo'), - actions: [ - TextButton( - child: const Text('Logout', - style: TextStyle(fontSize: 17.0, color: Colors.white)), - onPressed: () async { - final ParseUser user = await ParseUser.currentUser(); - user.logout(deleteLocalUserData: true); - Navigator.pop(context as dynamic, true); - }) - ], - ), - body: _showDietList(), - floatingActionButton: FloatingActionButton( - onPressed: () async { - final DietPlan dietPlan = - randomDietPlans[Random().nextInt(randomDietPlans.length - 1)]; - final ParseUser user = await ParseUser.currentUser(); - dietPlan.set('user', user); - await widget._dietPlanProvider.add(dietPlan); - setState(() {}); - }, - tooltip: 'Add Diet Plans', - child: const Icon(Icons.add), - )), - ); - } - - Widget _showDietList() { - return FutureBuilder( - future: widget._dietPlanProvider.getAll(), - builder: (BuildContext context, AsyncSnapshot snapshot) { - if (snapshot.hasData) { - if (snapshot.data!.success) { - if (snapshot.data?.results == null || - snapshot.data!.results!.isEmpty) { - return const Center( - child: Text('No Data'), - ); - } - } - return ListView.builder( - shrinkWrap: true, - itemCount: snapshot.data!.results!.length, - itemBuilder: (BuildContext context, int index) { - final DietPlan dietPlan = snapshot.data!.results![index]; - final String? id = dietPlan.objectId; - final String name = dietPlan.name; - final String description = dietPlan.description; - final bool status = dietPlan.status; - return Dismissible( - key: Key(id!), - background: Container(color: Colors.red), - onDismissed: (DismissDirection direction) async { - widget._dietPlanProvider.remove(dietPlan); - }, - child: ListTile( - title: Text( - name, - style: const TextStyle(fontSize: 20.0), - ), - subtitle: Text(description), - trailing: IconButton( - icon: status - ? const Icon( - Icons.done_outline, - color: Colors.green, - size: 20.0, - ) - : const Icon(Icons.done, - color: Colors.grey, size: 20.0), - onPressed: () async { - dietPlan.status = !dietPlan.status; - await dietPlan.save(); - setState(() {}); - }), - ), - ); - }); - } else { - return const Center( - child: Text('No Data'), - ); - } - }); - } - - String dietPlansToAdd = - '[{"className":"Diet_Plans","Name":"Textbook","Description":"For an active lifestyle and a straight forward macro plan, we suggest this plan.","Fat":25,"Carbs":50,"Protein":25,"Status":false},' - '{"className":"Diet_Plans","Name":"Body Builder","Description":"Default Body Builders Diet","Fat":20,"Carbs":40,"Protein":40,"Status":true},' - '{"className":"Diet_Plans","Name":"Zone Diet","Description":"Popular with CrossFit users. Zone Diet targets similar macros.","Fat":30,"Carbs":40,"Protein":30,"Status":true},' - '{"className":"Diet_Plans","Name":"Low Fat","Description":"Low fat diet.","Fat":15,"Carbs":60,"Protein":25,"Status":false},' - '{"className":"Diet_Plans","Name":"Low Carb","Description":"Low Carb diet, main focus on quality fats and protein.","Fat":35,"Carbs":25,"Protein":40,"Status":true},' - '{"className":"Diet_Plans","Name":"Paleo","Description":"Paleo diet.","Fat":60,"Carbs":25,"Protein":10,"Status":false},' - '{"className":"Diet_Plans","Name":"Ketogenic","Description":"High quality fats, low carbs.","Fat":65,"Carbs":5,"Protein":30,"Status":true}]'; -} diff --git a/packages/flutter/example/lib/pages/login_page.dart b/packages/flutter/example/lib/pages/login_page.dart deleted file mode 100644 index d7f7819a7..000000000 --- a/packages/flutter/example/lib/pages/login_page.dart +++ /dev/null @@ -1,253 +0,0 @@ -// ignore_for_file: avoid_print - -import 'package:flutter/material.dart'; -import 'package:flutter_plugin_example/data/model/user.dart'; -import 'package:parse_server_sdk_flutter/parse_server_sdk_flutter.dart'; - -enum FormMode { login, signUp } - -class LoginPage extends StatefulWidget { - const LoginPage({Key? key}) : super(key: key); - - @override - State createState() => _LoginPageState(); -} - -class _LoginPageState extends State { - final GlobalKey _formKey = GlobalKey(); - - String _email = ""; - String _password = ""; - String? _errorMessage = ""; - - // Initial form is login form - FormMode _formMode = FormMode.login; - bool _isLoading = false; - - // Check if form is valid before perform login or signup - bool _validateAndSave() { - final FormState form = _formKey.currentState!; - if (form.validate()) { - form.save(); - return true; - } - return false; - } - - // Perform login or signup - Future _validateAndSubmit() async { - setState(() { - _errorMessage = ''; - _isLoading = true; - }); - if (_validateAndSave()) { - final User user = User(_email, _password, _email); - - ParseResponse response; - try { - if (_formMode == FormMode.login) { - response = await user.login(); - print('Signed in'); - } else { - response = await user.signUp(); - print('Signed up user:'); - } - setState(() { - _isLoading = false; - }); - if (response.success) { - if (_formMode == FormMode.login) { - Navigator.pop(context as dynamic, true); - } - } else { - setState(() { - _isLoading = false; - _errorMessage = response.error.toString(); - }); - } - } catch (e) { - print('Error: $e'); - setState(() { - _isLoading = false; - _errorMessage = e.toString(); - }); - } - } - } - - @override - void initState() { - _errorMessage = ''; - _isLoading = false; - super.initState(); - } - - void _changeFormToSignUp() { - _formKey.currentState?.reset(); - _errorMessage = ''; - setState(() { - _formMode = FormMode.signUp; - }); - } - - void _changeFormToLogin() { - _formKey.currentState?.reset(); - _errorMessage = ''; - setState(() { - _formMode = FormMode.login; - }); - } - - @override - Widget build(BuildContext context) { - return WillPopScope( - onWillPop: () async => false, - child: Scaffold( - appBar: AppBar( - automaticallyImplyLeading: false, - title: const Text('Parse Server demo'), - ), - body: Stack( - children: [ - _showBody(), - _showCircularProgress(), - ], - )), - ); - } - - Widget _showCircularProgress() { - if (_isLoading) { - return const Center(child: CircularProgressIndicator()); - } - return const SizedBox( - height: 0.0, - width: 0.0, - ); - } - - Widget _showBody() { - return Container( - padding: const EdgeInsets.all(16.0), - child: Form( - key: _formKey, - child: ListView( - shrinkWrap: true, - children: [ - _showLogo(), - _showEmailInput(), - _showPasswordInput(), - _showPrimaryButton(), - _showSecondaryButton(), - _showErrorMessage(), - ], - ), - )); - } - - Widget _showErrorMessage() { - if (_errorMessage!.isNotEmpty && _errorMessage != null) { - return Text( - _errorMessage!, - style: const TextStyle( - fontSize: 13.0, - color: Colors.red, - height: 1.0, - fontWeight: FontWeight.w300), - ); - } else { - return Container( - height: 0.0, - ); - } - } - - Widget _showLogo() { - return Hero( - tag: 'hero', - child: Padding( - padding: const EdgeInsets.fromLTRB(0.0, 70.0, 0.0, 0.0), - child: CircleAvatar( - backgroundColor: Colors.transparent, - radius: 48.0, - child: Image.asset('assets/parse.png'), - ), - ), - ); - } - - Widget _showEmailInput() { - return Padding( - padding: const EdgeInsets.fromLTRB(0.0, 100.0, 0.0, 0.0), - child: TextFormField( - maxLines: 1, - keyboardType: TextInputType.emailAddress, - autofocus: false, - decoration: const InputDecoration( - hintText: 'Email', - icon: Icon( - Icons.mail, - color: Colors.grey, - )), - validator: (String? value) => - value!.isEmpty ? 'Email can\'t be empty' : null, - onSaved: (String? value) => _email = value!, - ), - ); - } - - Widget _showPasswordInput() { - return Padding( - padding: const EdgeInsets.fromLTRB(0.0, 15.0, 0.0, 0.0), - child: TextFormField( - maxLines: 1, - obscureText: true, - autofocus: false, - decoration: const InputDecoration( - hintText: 'Password', - icon: Icon( - Icons.lock, - color: Colors.grey, - )), - validator: (String? value) => - value!.isEmpty ? 'Password can\'t be empty' : null, - onSaved: (String? value) => _password = value!, - ), - ); - } - - Widget _showSecondaryButton() { - return TextButton( - onPressed: _formMode == FormMode.login - ? _changeFormToSignUp - : _changeFormToLogin, - child: _formMode == FormMode.login - ? const Text('Create an account', - style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.w300)) - : const Text('Have an account? Sign in', - style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.w300)), - ); - } - - Widget _showPrimaryButton() { - return Padding( - padding: const EdgeInsets.fromLTRB(0.0, 45.0, 0.0, 0.0), - child: SizedBox( - height: 40.0, - child: ElevatedButton( - style: ElevatedButton.styleFrom( - backgroundColor: Colors.blue, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(30.0)), - elevation: 5.0, - ), - onPressed: _validateAndSubmit, - child: _formMode == FormMode.login - ? const Text('Login', - style: TextStyle(fontSize: 20.0, color: Colors.white)) - : const Text('Create account', - style: TextStyle(fontSize: 20.0, color: Colors.white)), - ), - )); - } -} diff --git a/packages/flutter/example/linux/.gitignore b/packages/flutter/example/linux/.gitignore deleted file mode 100644 index d3896c984..000000000 --- a/packages/flutter/example/linux/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/packages/flutter/example/linux/CMakeLists.txt b/packages/flutter/example/linux/CMakeLists.txt deleted file mode 100644 index 0938dabe6..000000000 --- a/packages/flutter/example/linux/CMakeLists.txt +++ /dev/null @@ -1,139 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.10) -project(runner LANGUAGES CXX) - -# The name of the executable created for the application. Change this to change -# the on-disk name of your application. -set(BINARY_NAME "flutter_plugin_example") -# The unique GTK application identifier for this application. See: -# https://wiki.gnome.org/HowDoI/ChooseApplicationID -set(APPLICATION_ID "com.example.flutter_plugin_example") - -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(SET CMP0063 NEW) - -# Load bundled libraries from the lib/ directory relative to the binary. -set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") - -# Root filesystem for cross-building. -if(FLUTTER_TARGET_PLATFORM_SYSROOT) - set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) - set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) - set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) - set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -endif() - -# Define build configuration options. -if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") -endif() - -# Compilation settings that should be applied to most targets. -# -# Be cautious about adding new options here, as plugins use this function by -# default. In most cases, you should add new options to specific targets instead -# of modifying this function. -function(APPLY_STANDARD_SETTINGS TARGET) - target_compile_features(${TARGET} PUBLIC cxx_std_14) - target_compile_options(${TARGET} PRIVATE -Wall -Werror) - target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") - target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") -endfunction() - -# Flutter library and tool build rules. -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) - -add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") - -# Define the application target. To change its name, change BINARY_NAME above, -# not the value here, or `flutter run` will no longer work. -# -# Any new source files that you add to the application should be added here. -add_executable(${BINARY_NAME} - "main.cc" - "my_application.cc" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" -) - -# Apply the standard set of build settings. This can be removed for applications -# that need different build settings. -apply_standard_settings(${BINARY_NAME}) - -# Add dependency libraries. Add any application-specific dependencies here. -target_link_libraries(${BINARY_NAME} PRIVATE flutter) -target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) - -# Run the Flutter tool portions of the build. This must not be removed. -add_dependencies(${BINARY_NAME} flutter_assemble) - -# Only the install-generated bundle's copy of the executable will launch -# correctly, since the resources must in the right relative locations. To avoid -# people trying to run the unbundled copy, put it in a subdirectory instead of -# the default top-level location. -set_target_properties(${BINARY_NAME} - PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" -) - - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# By default, "installing" just makes a relocatable bundle in the build -# directory. -set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -# Start with a clean build bundle directory every time. -install(CODE " - file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") - " COMPONENT Runtime) - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) - install(FILES "${bundled_library}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endforeach(bundled_library) - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") - install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() diff --git a/packages/flutter/example/linux/flutter/CMakeLists.txt b/packages/flutter/example/linux/flutter/CMakeLists.txt deleted file mode 100644 index d5bd01648..000000000 --- a/packages/flutter/example/linux/flutter/CMakeLists.txt +++ /dev/null @@ -1,88 +0,0 @@ -# This file controls Flutter-level build steps. It should not be edited. -cmake_minimum_required(VERSION 3.10) - -set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. - -# Serves the same purpose as list(TRANSFORM ... PREPEND ...), -# which isn't available in 3.10. -function(list_prepend LIST_NAME PREFIX) - set(NEW_LIST "") - foreach(element ${${LIST_NAME}}) - list(APPEND NEW_LIST "${PREFIX}${element}") - endforeach(element) - set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) -endfunction() - -# === Flutter Library === -# System-level dependencies. -find_package(PkgConfig REQUIRED) -pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) -pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) -pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) - -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "fl_basic_message_channel.h" - "fl_binary_codec.h" - "fl_binary_messenger.h" - "fl_dart_project.h" - "fl_engine.h" - "fl_json_message_codec.h" - "fl_json_method_codec.h" - "fl_message_codec.h" - "fl_method_call.h" - "fl_method_channel.h" - "fl_method_codec.h" - "fl_method_response.h" - "fl_plugin_registrar.h" - "fl_plugin_registry.h" - "fl_standard_message_codec.h" - "fl_standard_method_codec.h" - "fl_string_codec.h" - "fl_value.h" - "fl_view.h" - "flutter_linux.h" -) -list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") -target_link_libraries(flutter INTERFACE - PkgConfig::GTK - PkgConfig::GLIB - PkgConfig::GIO -) -add_dependencies(flutter flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CMAKE_CURRENT_BINARY_DIR}/_phony_ - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" - ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} -) diff --git a/packages/flutter/example/linux/flutter/generated_plugin_registrant.cc b/packages/flutter/example/linux/flutter/generated_plugin_registrant.cc deleted file mode 100644 index e71a16d23..000000000 --- a/packages/flutter/example/linux/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,11 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - - -void fl_register_plugins(FlPluginRegistry* registry) { -} diff --git a/packages/flutter/example/linux/flutter/generated_plugin_registrant.h b/packages/flutter/example/linux/flutter/generated_plugin_registrant.h deleted file mode 100644 index e0f0a47bc..000000000 --- a/packages/flutter/example/linux/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void fl_register_plugins(FlPluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/packages/flutter/example/linux/flutter/generated_plugins.cmake b/packages/flutter/example/linux/flutter/generated_plugins.cmake deleted file mode 100644 index 2e1de87a7..000000000 --- a/packages/flutter/example/linux/flutter/generated_plugins.cmake +++ /dev/null @@ -1,23 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST -) - -list(APPEND FLUTTER_FFI_PLUGIN_LIST -) - -set(PLUGIN_BUNDLED_LIBRARIES) - -foreach(plugin ${FLUTTER_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) - target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) - list(APPEND PLUGIN_BUNDLED_LIBRARIES $) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) -endforeach(plugin) - -foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) -endforeach(ffi_plugin) diff --git a/packages/flutter/example/linux/main.cc b/packages/flutter/example/linux/main.cc deleted file mode 100644 index e7c5c5437..000000000 --- a/packages/flutter/example/linux/main.cc +++ /dev/null @@ -1,6 +0,0 @@ -#include "my_application.h" - -int main(int argc, char** argv) { - g_autoptr(MyApplication) app = my_application_new(); - return g_application_run(G_APPLICATION(app), argc, argv); -} diff --git a/packages/flutter/example/linux/my_application.cc b/packages/flutter/example/linux/my_application.cc deleted file mode 100644 index 1bf3a4917..000000000 --- a/packages/flutter/example/linux/my_application.cc +++ /dev/null @@ -1,104 +0,0 @@ -#include "my_application.h" - -#include -#ifdef GDK_WINDOWING_X11 -#include -#endif - -#include "flutter/generated_plugin_registrant.h" - -struct _MyApplication { - GtkApplication parent_instance; - char** dart_entrypoint_arguments; -}; - -G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) - -// Implements GApplication::activate. -static void my_application_activate(GApplication* application) { - MyApplication* self = MY_APPLICATION(application); - GtkWindow* window = - GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); - - // Use a header bar when running in GNOME as this is the common style used - // by applications and is the setup most users will be using (e.g. Ubuntu - // desktop). - // If running on X and not using GNOME then just use a traditional title bar - // in case the window manager does more exotic layout, e.g. tiling. - // If running on Wayland assume the header bar will work (may need changing - // if future cases occur). - gboolean use_header_bar = TRUE; -#ifdef GDK_WINDOWING_X11 - GdkScreen* screen = gtk_window_get_screen(window); - if (GDK_IS_X11_SCREEN(screen)) { - const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); - if (g_strcmp0(wm_name, "GNOME Shell") != 0) { - use_header_bar = FALSE; - } - } -#endif - if (use_header_bar) { - GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); - gtk_widget_show(GTK_WIDGET(header_bar)); - gtk_header_bar_set_title(header_bar, "flutter_plugin_example"); - gtk_header_bar_set_show_close_button(header_bar, TRUE); - gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); - } else { - gtk_window_set_title(window, "flutter_plugin_example"); - } - - gtk_window_set_default_size(window, 1280, 720); - gtk_widget_show(GTK_WIDGET(window)); - - g_autoptr(FlDartProject) project = fl_dart_project_new(); - fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments); - - FlView* view = fl_view_new(project); - gtk_widget_show(GTK_WIDGET(view)); - gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); - - fl_register_plugins(FL_PLUGIN_REGISTRY(view)); - - gtk_widget_grab_focus(GTK_WIDGET(view)); -} - -// Implements GApplication::local_command_line. -static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) { - MyApplication* self = MY_APPLICATION(application); - // Strip out the first argument as it is the binary name. - self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); - - g_autoptr(GError) error = nullptr; - if (!g_application_register(application, nullptr, &error)) { - g_warning("Failed to register: %s", error->message); - *exit_status = 1; - return TRUE; - } - - g_application_activate(application); - *exit_status = 0; - - return TRUE; -} - -// Implements GObject::dispose. -static void my_application_dispose(GObject* object) { - MyApplication* self = MY_APPLICATION(object); - g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); - G_OBJECT_CLASS(my_application_parent_class)->dispose(object); -} - -static void my_application_class_init(MyApplicationClass* klass) { - G_APPLICATION_CLASS(klass)->activate = my_application_activate; - G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line; - G_OBJECT_CLASS(klass)->dispose = my_application_dispose; -} - -static void my_application_init(MyApplication* self) {} - -MyApplication* my_application_new() { - return MY_APPLICATION(g_object_new(my_application_get_type(), - "application-id", APPLICATION_ID, - "flags", G_APPLICATION_NON_UNIQUE, - nullptr)); -} diff --git a/packages/flutter/example/linux/my_application.h b/packages/flutter/example/linux/my_application.h deleted file mode 100644 index 72271d5e4..000000000 --- a/packages/flutter/example/linux/my_application.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef FLUTTER_MY_APPLICATION_H_ -#define FLUTTER_MY_APPLICATION_H_ - -#include - -G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION, - GtkApplication) - -/** - * my_application_new: - * - * Creates a new Flutter-based application. - * - * Returns: a new #MyApplication. - */ -MyApplication* my_application_new(); - -#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/packages/flutter/example/macos/.gitignore b/packages/flutter/example/macos/.gitignore deleted file mode 100644 index 746adbb6b..000000000 --- a/packages/flutter/example/macos/.gitignore +++ /dev/null @@ -1,7 +0,0 @@ -# Flutter-related -**/Flutter/ephemeral/ -**/Pods/ - -# Xcode-related -**/dgph -**/xcuserdata/ diff --git a/packages/flutter/example/macos/Flutter/Flutter-Debug.xcconfig b/packages/flutter/example/macos/Flutter/Flutter-Debug.xcconfig deleted file mode 100644 index 4b81f9b2d..000000000 --- a/packages/flutter/example/macos/Flutter/Flutter-Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/packages/flutter/example/macos/Flutter/Flutter-Release.xcconfig b/packages/flutter/example/macos/Flutter/Flutter-Release.xcconfig deleted file mode 100644 index 5caa9d157..000000000 --- a/packages/flutter/example/macos/Flutter/Flutter-Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" -#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/packages/flutter/example/macos/Podfile b/packages/flutter/example/macos/Podfile deleted file mode 100644 index c795730db..000000000 --- a/packages/flutter/example/macos/Podfile +++ /dev/null @@ -1,43 +0,0 @@ -platform :osx, '10.14' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'ephemeral', 'Flutter-Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure \"flutter pub get\" is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Flutter-Generated.xcconfig, then run \"flutter pub get\"" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_macos_podfile_setup - -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_macos_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerTests' do - inherit! :search_paths - end -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_macos_build_settings(target) - end -end diff --git a/packages/flutter/example/macos/Runner.xcodeproj/project.pbxproj b/packages/flutter/example/macos/Runner.xcodeproj/project.pbxproj deleted file mode 100644 index c0406c87e..000000000 --- a/packages/flutter/example/macos/Runner.xcodeproj/project.pbxproj +++ /dev/null @@ -1,695 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 54; - objects = { - -/* Begin PBXAggregateTarget section */ - 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { - isa = PBXAggregateTarget; - buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; - buildPhases = ( - 33CC111E2044C6BF0003C045 /* ShellScript */, - ); - dependencies = ( - ); - name = "Flutter Assemble"; - productName = FLX; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; - 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; - 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; - 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; - 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; - 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 33CC10E52044A3C60003C045 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 33CC10EC2044A3C60003C045; - remoteInfo = Runner; - }; - 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 33CC10E52044A3C60003C045 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 33CC111A2044C6BA0003C045; - remoteInfo = FLX; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 33CC110E2044A8840003C045 /* Bundle Framework */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Bundle Framework"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; - 33CC10ED2044A3C60003C045 /* flutter_plugin_example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "flutter_plugin_example.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; - 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; - 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; - 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; - 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; - 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; - 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 331C80D2294CF70F00263BE5 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 33CC10EA2044A3C60003C045 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 331C80D6294CF71000263BE5 /* RunnerTests */ = { - isa = PBXGroup; - children = ( - 331C80D7294CF71000263BE5 /* RunnerTests.swift */, - ); - path = RunnerTests; - sourceTree = ""; - }; - 33BA886A226E78AF003329D5 /* Configs */ = { - isa = PBXGroup; - children = ( - 33E5194F232828860026EE4D /* AppInfo.xcconfig */, - 9740EEB21CF90195004384FC /* Debug.xcconfig */, - 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, - 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, - ); - path = Configs; - sourceTree = ""; - }; - 33CC10E42044A3C60003C045 = { - isa = PBXGroup; - children = ( - 33FAB671232836740065AC1E /* Runner */, - 33CEB47122A05771004F2AC0 /* Flutter */, - 331C80D6294CF71000263BE5 /* RunnerTests */, - 33CC10EE2044A3C60003C045 /* Products */, - D73912EC22F37F3D000D13A0 /* Frameworks */, - ); - sourceTree = ""; - }; - 33CC10EE2044A3C60003C045 /* Products */ = { - isa = PBXGroup; - children = ( - 33CC10ED2044A3C60003C045 /* flutter_plugin_example.app */, - 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - 33CC11242044D66E0003C045 /* Resources */ = { - isa = PBXGroup; - children = ( - 33CC10F22044A3C60003C045 /* Assets.xcassets */, - 33CC10F42044A3C60003C045 /* MainMenu.xib */, - 33CC10F72044A3C60003C045 /* Info.plist */, - ); - name = Resources; - path = ..; - sourceTree = ""; - }; - 33CEB47122A05771004F2AC0 /* Flutter */ = { - isa = PBXGroup; - children = ( - 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, - 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, - 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, - 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, - ); - path = Flutter; - sourceTree = ""; - }; - 33FAB671232836740065AC1E /* Runner */ = { - isa = PBXGroup; - children = ( - 33CC10F02044A3C60003C045 /* AppDelegate.swift */, - 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, - 33E51913231747F40026EE4D /* DebugProfile.entitlements */, - 33E51914231749380026EE4D /* Release.entitlements */, - 33CC11242044D66E0003C045 /* Resources */, - 33BA886A226E78AF003329D5 /* Configs */, - ); - path = Runner; - sourceTree = ""; - }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { - isa = PBXGroup; - children = ( - ); - name = Frameworks; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 331C80D4294CF70F00263BE5 /* RunnerTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; - buildPhases = ( - 331C80D1294CF70F00263BE5 /* Sources */, - 331C80D2294CF70F00263BE5 /* Frameworks */, - 331C80D3294CF70F00263BE5 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 331C80DA294CF71000263BE5 /* PBXTargetDependency */, - ); - name = RunnerTests; - productName = RunnerTests; - productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 33CC10EC2044A3C60003C045 /* Runner */ = { - isa = PBXNativeTarget; - buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; - buildPhases = ( - 33CC10E92044A3C60003C045 /* Sources */, - 33CC10EA2044A3C60003C045 /* Frameworks */, - 33CC10EB2044A3C60003C045 /* Resources */, - 33CC110E2044A8840003C045 /* Bundle Framework */, - 3399D490228B24CF009A79C7 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - 33CC11202044C79F0003C045 /* PBXTargetDependency */, - ); - name = Runner; - productName = Runner; - productReference = 33CC10ED2044A3C60003C045 /* flutter_plugin_example.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 33CC10E52044A3C60003C045 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1300; - ORGANIZATIONNAME = ""; - TargetAttributes = { - 331C80D4294CF70F00263BE5 = { - CreatedOnToolsVersion = 14.0; - TestTargetID = 33CC10EC2044A3C60003C045; - }; - 33CC10EC2044A3C60003C045 = { - CreatedOnToolsVersion = 9.2; - LastSwiftMigration = 1100; - ProvisioningStyle = Automatic; - SystemCapabilities = { - com.apple.Sandbox = { - enabled = 1; - }; - }; - }; - 33CC111A2044C6BA0003C045 = { - CreatedOnToolsVersion = 9.2; - ProvisioningStyle = Manual; - }; - }; - }; - buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 33CC10E42044A3C60003C045; - productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 33CC10EC2044A3C60003C045 /* Runner */, - 331C80D4294CF70F00263BE5 /* RunnerTests */, - 33CC111A2044C6BA0003C045 /* Flutter Assemble */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 331C80D3294CF70F00263BE5 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 33CC10EB2044A3C60003C045 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, - 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 3399D490228B24CF009A79C7 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; - }; - 33CC111E2044C6BF0003C045 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - Flutter/ephemeral/FlutterInputs.xcfilelist, - ); - inputPaths = ( - Flutter/ephemeral/tripwire, - ); - outputFileListPaths = ( - Flutter/ephemeral/FlutterOutputs.xcfilelist, - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 331C80D1294CF70F00263BE5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 33CC10E92044A3C60003C045 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, - 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, - 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 33CC10EC2044A3C60003C045 /* Runner */; - targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */; - }; - 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; - targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { - isa = PBXVariantGroup; - children = ( - 33CC10F52044A3C60003C045 /* Base */, - ); - name = MainMenu.xib; - path = Runner; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 331C80DB294CF71000263BE5 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterPluginExample.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/flutter_plugin_example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/flutter_plugin_example"; - }; - name = Debug; - }; - 331C80DC294CF71000263BE5 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterPluginExample.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/flutter_plugin_example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/flutter_plugin_example"; - }; - name = Release; - }; - 331C80DD294CF71000263BE5 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterPluginExample.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/flutter_plugin_example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/flutter_plugin_example"; - }; - name = Profile; - }; - 338D0CE9231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Profile; - }; - 338D0CEA231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Profile; - }; - 338D0CEB231458BD00FA5F75 /* Profile */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Profile; - }; - 33CC10F92044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - 33CC10FA2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CODE_SIGN_IDENTITY = "-"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = macosx; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - }; - name = Release; - }; - 33CC10FC2044A3C60003C045 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 33CC10FD2044A3C60003C045 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; - CODE_SIGN_STYLE = Automatic; - COMBINE_HIDPI_IMAGES = YES; - INFOPLIST_FILE = Runner/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/../Frameworks", - ); - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - 33CC111C2044C6BA0003C045 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Manual; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 33CC111D2044C6BA0003C045 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 331C80DB294CF71000263BE5 /* Debug */, - 331C80DC294CF71000263BE5 /* Release */, - 331C80DD294CF71000263BE5 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC10F92044A3C60003C045 /* Debug */, - 33CC10FA2044A3C60003C045 /* Release */, - 338D0CE9231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC10FC2044A3C60003C045 /* Debug */, - 33CC10FD2044A3C60003C045 /* Release */, - 338D0CEA231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 33CC111C2044C6BA0003C045 /* Debug */, - 33CC111D2044C6BA0003C045 /* Release */, - 338D0CEB231458BD00FA5F75 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 33CC10E52044A3C60003C045 /* Project object */; -} diff --git a/packages/flutter/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/flutter/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/packages/flutter/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/packages/flutter/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/flutter/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme deleted file mode 100644 index 2bf18fb2f..000000000 --- a/packages/flutter/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/flutter/example/macos/Runner.xcworkspace/contents.xcworkspacedata b/packages/flutter/example/macos/Runner.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 1d526a16e..000000000 --- a/packages/flutter/example/macos/Runner.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/packages/flutter/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/flutter/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/packages/flutter/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/packages/flutter/example/macos/Runner/AppDelegate.swift b/packages/flutter/example/macos/Runner/AppDelegate.swift deleted file mode 100644 index d53ef6437..000000000 --- a/packages/flutter/example/macos/Runner/AppDelegate.swift +++ /dev/null @@ -1,9 +0,0 @@ -import Cocoa -import FlutterMacOS - -@NSApplicationMain -class AppDelegate: FlutterAppDelegate { - override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { - return true - } -} diff --git a/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index a2ec33f19..000000000 --- a/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "images" : [ - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_16.png", - "scale" : "1x" - }, - { - "size" : "16x16", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "2x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_32.png", - "scale" : "1x" - }, - { - "size" : "32x32", - "idiom" : "mac", - "filename" : "app_icon_64.png", - "scale" : "2x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_128.png", - "scale" : "1x" - }, - { - "size" : "128x128", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "2x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_256.png", - "scale" : "1x" - }, - { - "size" : "256x256", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "2x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_512.png", - "scale" : "1x" - }, - { - "size" : "512x512", - "idiom" : "mac", - "filename" : "app_icon_1024.png", - "scale" : "2x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} diff --git a/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png deleted file mode 100644 index 82b6f9d9a..000000000 Binary files a/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png and /dev/null differ diff --git a/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png deleted file mode 100644 index 13b35eba5..000000000 Binary files a/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png and /dev/null differ diff --git a/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png deleted file mode 100644 index 0a3f5fa40..000000000 Binary files a/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png and /dev/null differ diff --git a/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png deleted file mode 100644 index bdb57226d..000000000 Binary files a/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png and /dev/null differ diff --git a/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png deleted file mode 100644 index f083318e0..000000000 Binary files a/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png and /dev/null differ diff --git a/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png deleted file mode 100644 index 326c0e72c..000000000 Binary files a/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png and /dev/null differ diff --git a/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png deleted file mode 100644 index 2f1632cfd..000000000 Binary files a/packages/flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png and /dev/null differ diff --git a/packages/flutter/example/macos/Runner/Base.lproj/MainMenu.xib b/packages/flutter/example/macos/Runner/Base.lproj/MainMenu.xib deleted file mode 100644 index 80e867a4e..000000000 --- a/packages/flutter/example/macos/Runner/Base.lproj/MainMenu.xib +++ /dev/null @@ -1,343 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/flutter/example/macos/Runner/Configs/AppInfo.xcconfig b/packages/flutter/example/macos/Runner/Configs/AppInfo.xcconfig deleted file mode 100644 index b61858d65..000000000 --- a/packages/flutter/example/macos/Runner/Configs/AppInfo.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -// Application-level settings for the Runner target. -// -// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the -// future. If not, the values below would default to using the project name when this becomes a -// 'flutter create' template. - -// The application's name. By default this is also the title of the Flutter window. -PRODUCT_NAME = flutter_plugin_example - -// The application's bundle identifier -PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterPluginExample - -// The copyright displayed in application information -PRODUCT_COPYRIGHT = Copyright © 2023 com.example. All rights reserved. diff --git a/packages/flutter/example/macos/Runner/Configs/Debug.xcconfig b/packages/flutter/example/macos/Runner/Configs/Debug.xcconfig deleted file mode 100644 index 36b0fd946..000000000 --- a/packages/flutter/example/macos/Runner/Configs/Debug.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Debug.xcconfig" -#include "Warnings.xcconfig" diff --git a/packages/flutter/example/macos/Runner/Configs/Release.xcconfig b/packages/flutter/example/macos/Runner/Configs/Release.xcconfig deleted file mode 100644 index dff4f4956..000000000 --- a/packages/flutter/example/macos/Runner/Configs/Release.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -#include "../../Flutter/Flutter-Release.xcconfig" -#include "Warnings.xcconfig" diff --git a/packages/flutter/example/macos/Runner/Configs/Warnings.xcconfig b/packages/flutter/example/macos/Runner/Configs/Warnings.xcconfig deleted file mode 100644 index 42bcbf478..000000000 --- a/packages/flutter/example/macos/Runner/Configs/Warnings.xcconfig +++ /dev/null @@ -1,13 +0,0 @@ -WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings -GCC_WARN_UNDECLARED_SELECTOR = YES -CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES -CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE -CLANG_WARN__DUPLICATE_METHOD_MATCH = YES -CLANG_WARN_PRAGMA_PACK = YES -CLANG_WARN_STRICT_PROTOTYPES = YES -CLANG_WARN_COMMA = YES -GCC_WARN_STRICT_SELECTOR_MATCH = YES -CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES -CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES -GCC_WARN_SHADOW = YES -CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/packages/flutter/example/macos/Runner/DebugProfile.entitlements b/packages/flutter/example/macos/Runner/DebugProfile.entitlements deleted file mode 100644 index dddb8a30c..000000000 --- a/packages/flutter/example/macos/Runner/DebugProfile.entitlements +++ /dev/null @@ -1,12 +0,0 @@ - - - - - com.apple.security.app-sandbox - - com.apple.security.cs.allow-jit - - com.apple.security.network.server - - - diff --git a/packages/flutter/example/macos/Runner/Info.plist b/packages/flutter/example/macos/Runner/Info.plist deleted file mode 100644 index 4789daa6a..000000000 --- a/packages/flutter/example/macos/Runner/Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIconFile - - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - $(FLUTTER_BUILD_NAME) - CFBundleVersion - $(FLUTTER_BUILD_NUMBER) - LSMinimumSystemVersion - $(MACOSX_DEPLOYMENT_TARGET) - NSHumanReadableCopyright - $(PRODUCT_COPYRIGHT) - NSMainNibFile - MainMenu - NSPrincipalClass - NSApplication - - diff --git a/packages/flutter/example/macos/Runner/MainFlutterWindow.swift b/packages/flutter/example/macos/Runner/MainFlutterWindow.swift deleted file mode 100644 index 3cc05eb23..000000000 --- a/packages/flutter/example/macos/Runner/MainFlutterWindow.swift +++ /dev/null @@ -1,15 +0,0 @@ -import Cocoa -import FlutterMacOS - -class MainFlutterWindow: NSWindow { - override func awakeFromNib() { - let flutterViewController = FlutterViewController() - let windowFrame = self.frame - self.contentViewController = flutterViewController - self.setFrame(windowFrame, display: true) - - RegisterGeneratedPlugins(registry: flutterViewController) - - super.awakeFromNib() - } -} diff --git a/packages/flutter/example/macos/Runner/Release.entitlements b/packages/flutter/example/macos/Runner/Release.entitlements deleted file mode 100644 index 852fa1a47..000000000 --- a/packages/flutter/example/macos/Runner/Release.entitlements +++ /dev/null @@ -1,8 +0,0 @@ - - - - - com.apple.security.app-sandbox - - - diff --git a/packages/flutter/example/macos/RunnerTests/RunnerTests.swift b/packages/flutter/example/macos/RunnerTests/RunnerTests.swift deleted file mode 100644 index 5418c9f53..000000000 --- a/packages/flutter/example/macos/RunnerTests/RunnerTests.swift +++ /dev/null @@ -1,12 +0,0 @@ -import FlutterMacOS -import Cocoa -import XCTest - -class RunnerTests: XCTestCase { - - func testExample() { - // If you add code to the Runner application, consider adding tests here. - // See https://developer.apple.com/documentation/xctest for more information about using XCTest. - } - -} diff --git a/packages/flutter/example/pubspec.yaml b/packages/flutter/example/pubspec.yaml deleted file mode 100644 index d4879d54e..000000000 --- a/packages/flutter/example/pubspec.yaml +++ /dev/null @@ -1,56 +0,0 @@ -name: flutter_plugin_example -description: Demonstrates how to use the flutter_plugin plugin. -publish_to: 'none' - -version: 1.0.0+1 - -environment: - sdk: ">=2.18.0 <4.0.0" - -dependencies: - flutter: - sdk: flutter - - cupertino_icons: ^1.0.2 - parse_server_sdk_flutter: - path: ../ - - path: ^1.8.2 - path_provider: ^2.0.15 - sembast: ^3.4.4 - shared_preferences: ^2.1.1 - -dependency_overrides: - # Override to local mono-repo path so devs can test this repo - # against changes that they're making to other mono-repo packages. - parse_server_sdk: - path: ../../dart - -dev_dependencies: - flutter_test: - sdk: flutter - - flutter_lints: ^2.0.0 - mockito: ^5.4.0 - - -flutter: - uses-material-design: true - assets: - - assets/parse.png - fonts: - - family: Roboto - fonts: - - asset: fonts/Roboto/Roboto-Thin.ttf - weight: 100 - - asset: fonts/Roboto/Roboto-Light.ttf - weight: 300 - - asset: fonts/Roboto/Roboto-Regular.ttf - weight: 400 - - asset: fonts/Roboto/Roboto-Medium.ttf - weight: 500 - - asset: fonts/Roboto/Roboto-Bold.ttf - weight: 700 - - asset: fonts/Roboto/Roboto-Black.ttf - weight: 900 - diff --git a/packages/flutter/example/test/data/repository/diet_plan/repository_diet_plan_api_test.dart b/packages/flutter/example/test/data/repository/diet_plan/repository_diet_plan_api_test.dart deleted file mode 100644 index 8012bdec0..000000000 --- a/packages/flutter/example/test/data/repository/diet_plan/repository_diet_plan_api_test.dart +++ /dev/null @@ -1,184 +0,0 @@ -import 'package:flutter_plugin_example/data/base/api_response.dart'; -import 'package:flutter_plugin_example/data/model/diet_plan.dart'; -import 'package:flutter_plugin_example/data/repositories/diet_plan/contract_provider_diet_plan.dart'; -import 'package:flutter_plugin_example/data/repositories/diet_plan/provider_api_diet_plan.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:shared_preferences/shared_preferences.dart'; - -import '../repository_mock_utils.dart'; - -void main() { - DietPlanProviderContract? repository; - SharedPreferences.setMockInitialValues({}); - - Future getRepository() async { - repository ??= DietPlanProviderApi(); - return repository; - } - - setUp(() async { - await setupParseInstance(); - await getRepository(); - }); - - tearDown(() async { - repository = null; - }); - - group('API Integration tests', () { - test('create DB instance', () async { - expect(true, repository != null); - }); - - test('add DietPlan from API', () async { - // arrange - final DietPlan expected = getDummyDietPlan(); - expected['objectId'] = null; - - // act - final ApiResponse? response = await repository?.add(expected); - final DietPlan actual = response?.result; - - await deleteFromApi(response?.results); - - // assert - expect(actual.protein, expected.protein); - }); - - test('addAll DietPlan from API', () async { - // arrange - final List actual = []; - final DietPlan item1 = getDummyDietPlan(); - item1['objectId'] = null; - item1.protein = 5; - actual.add(item1); - final DietPlan item2 = getDummyDietPlan(); - item2['objectId'] = null; - item2.protein = 6; - actual.add(item2); - - // act - final ApiResponse? response = await repository?.addAll(actual); - final List? items = response?.results; - - await deleteFromApi(response?.results); - - // assert - expect(response?.success, true); - expect(actual[1].objectId, items?[1].objectId); - }); - - test('getById DietPlan from API', () async { - // arrange - final DietPlan dummy = getDummyDietPlan(); - dummy['objectId'] = null; - - // act - final ApiResponse? response = await repository?.add(dummy); - final DietPlan expected = response?.result; - final ApiResponse? updateResponse = - await repository?.getById(expected.objectId ?? ""); - final DietPlan actual = updateResponse?.result; - - await deleteFromApi(response?.results); - await deleteFromApi(updateResponse?.results); - - // assert - expect(actual.objectId, expected.objectId); - expect(actual.protein, expected.protein); - }); - - test('getNewerThan DietPlan from API', () async { - // arrange - final DietPlan dummy = getDummyDietPlan(); - dummy['objectId'] = null; - - // act - final ApiResponse? baseResponse = await repository?.add(dummy); - final ApiResponse? responseWithResult = await repository - ?.getNewerThan(DateTime.now().subtract(const Duration(days: 1))); - final ApiResponse? responseWithoutResult = await repository - ?.getNewerThan(DateTime.now().add(const Duration(days: 1))); - - await deleteFromApi(baseResponse?.results); - await deleteFromApi(responseWithoutResult?.results); - await deleteFromApi(responseWithResult?.results); - - // assert - expect(responseWithResult?.success, true); - expect(responseWithoutResult?.success, true); - expect(responseWithResult?.result, isNotNull); - expect(responseWithoutResult?.result, isNull); - }); - - test('getAll DietPlan from API', () async { - // arrange - final List actual = []; - - final DietPlan item1 = getDummyDietPlan(); - item1['objectId'] = null; - item1.protein = 5; - actual.add(item1); - final DietPlan item2 = getDummyDietPlan(); - item2['objectId'] = null; - item2.protein = 6; - actual.add(item2); - - // act - final ApiResponse? response = await repository?.addAll(actual); - - await deleteFromApi(response?.results); - - // assert - expect(response?.success, true); - expect(response?.result, isNotNull); - }); - - test('update DietPlan from API', () async { - // arrange - final DietPlan expected = getDummyDietPlan(); - expected['objectId'] = null; - final ApiResponse? response = await repository?.add(expected); - final DietPlan initialResponse = response?.result; - - // act - initialResponse.protein = 10; - final ApiResponse? updateResponse = - await repository?.update(initialResponse); - final DietPlan actual = updateResponse?.result; - - await deleteFromApi(response?.results); - await deleteFromApi(updateResponse?.results); - - // assert - expect(actual.protein, 10); - }); - - test('updateAll DietPlan from API', () async { - // arrange - final List actual = []; - - final DietPlan item1 = getDummyDietPlan(); - item1['objectId'] = null; - item1.protein = 7; - actual.add(item1); - final DietPlan item2 = getDummyDietPlan(); - item2['objectId'] = null; - item2.protein = 8; - actual.add(item2); - await repository?.addAll(actual); - - // act - item1.protein = 9; - item2.protein = 10; - final ApiResponse? updateResponse = await repository?.updateAll(actual); - final List? updated = updateResponse?.results; - - await deleteFromApi(updateResponse?.results); - - // assert - expect(updated?[0].protein, 9); - expect(updated?[1].protein, 10); - }); - }); -} diff --git a/packages/flutter/example/test/data/repository/diet_plan/repository_diet_plan_db_test.dart b/packages/flutter/example/test/data/repository/diet_plan/repository_diet_plan_db_test.dart deleted file mode 100644 index 94a8da758..000000000 --- a/packages/flutter/example/test/data/repository/diet_plan/repository_diet_plan_db_test.dart +++ /dev/null @@ -1,210 +0,0 @@ -import 'package:flutter_plugin_example/data/base/api_response.dart'; -import 'package:flutter_plugin_example/data/model/diet_plan.dart'; -import 'package:flutter_plugin_example/data/repositories/diet_plan/contract_provider_diet_plan.dart'; -import 'package:flutter_plugin_example/data/repositories/diet_plan/provider_db_diet_plan.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:parse_server_sdk_flutter/parse_server_sdk_flutter.dart'; -import 'package:sembast/sembast.dart'; -import 'package:shared_preferences/shared_preferences.dart'; - -import '../repository_mock_utils.dart'; - -void main() { - DietPlanProviderContract? repository; - SharedPreferences.setMockInitialValues({}); - - StoreRef> getStore(Database database) { - final StoreRef> store = - stringMapStoreFactory.store('repository_diet'); - return store; - } - - Future getRepository() async { - if (repository == null) { - final Database database = await getDB(); - repository ??= DietPlanProviderDB(database, getStore(database)); - } - - return repository; - } - - setUp(() async { - await setupParseInstance(); - await getRepository(); - }); - - tearDown(() async { - final Database database = await getDB(); - getStore(database).drop(database); - }); - - test('create DB instance', () async { - expect(true, repository != null); - }); - - test('add DietPlan from DB', () async { - // arrange - final DietPlan expected = getDummyDietPlan(); - - // act - final ApiResponse? response = await repository?.add(expected); - final DietPlan actual = response?.result; - - await deleteFromApi(response?.results); - - // assert - expect(actual.objectId, expected.objectId); - expect(actual.protein, expected.protein); - }); - - test('addAll DietPlan from DB', () async { - // arrange - const String objectIdPrefix = '12345abc'; - final List actual = []; - - final DietPlan item1 = getDummyDietPlan(); - item1.objectId = '${objectIdPrefix}0'; - actual.add(item1); - - final DietPlan item2 = getDummyDietPlan(); - item2.objectId = '${objectIdPrefix}1'; - actual.add(item2); - - // act - final ApiResponse? response = await repository?.addAll(actual); - final List? items = response?.results; - - // assert - expect(response?.success, true); - expect(actual[0].objectId, items?[0].objectId); - expect(actual[1].objectId, items?[1].objectId); - }); - - test('getById DietPlan from DB', () async { - // arrange - final DietPlan actual = getDummyDietPlan(); - - // act - final ApiResponse? response = await repository?.add(actual); - final ApiResponse? updateResponse = await repository?.getById('1234abcd'); - - await deleteFromApi(response?.results); - await deleteFromApi(updateResponse?.results); - - // assert - final DietPlan expected = response?.result; - expect(actual.objectId, expected.objectId); - expect(actual.protein, expected.protein); - }); - - test('getAll DietPlan from DB', () async { - // arrange - const String objectIdPrefix = '12345abc'; - final DietPlan item1 = getDummyDietPlan()..objectId = '${objectIdPrefix}0'; - final DietPlan item2 = getDummyDietPlan()..objectId = '${objectIdPrefix}1'; - final List actual = [item1, item2]; - - // act - final ApiResponse? response = await repository?.addAll(actual); - - final ApiResponse? updateResponse = await repository?.getAll(); - final List? expected = updateResponse?.results; - - await deleteFromApi(response?.results); - await deleteFromApi(updateResponse?.results); - - // assert - expect(2, expected?.length); - expect(actual[0].objectId, expected?[0].objectId); - expect(actual[1].objectId, expected?[1].objectId); - }); - - test('getNewerThan DietPlan from DB', () async { - // arrange - final DietPlan expected = getDummyDietPlan(); - - expected[keyVarUpdatedAt] = DateTime.now(); - final ApiResponse? response = await repository?.add(expected); - - // act - DateTime dateTime = DateTime.now(); - dateTime = dateTime.subtract(const Duration(hours: 1)); - final ApiResponse? updateResponse = - await repository?.getNewerThan(dateTime); - final List? actual = updateResponse?.results; - - await deleteFromApi(response?.results); - await deleteFromApi(updateResponse?.results); - - // assert - expect(actual?.isNotEmpty, true); - expect(actual?.first.objectId, expected.objectId); - }); - - test('update DietPlan from DB', () async { - // arrange - final DietPlan item = getDummyDietPlan(); - item.protein = 1000; - final ApiResponse? apiResponse = await repository?.add(item); - - // act - item.protein = 1000; - final ApiResponse? updateResponse = await repository?.update(item); - final DietPlan userFood = updateResponse?.result; - - await deleteFromApi(apiResponse?.results); - await deleteFromApi(updateResponse?.results); - - // assert - expect(item.objectId, userFood.objectId); - expect(userFood.protein, 1000); - }); - - test('updateAll DietPlan from DB', () async { - // arrange - const String objectIdPrefix = '12345abc'; - - final List actual = []; - final DietPlan item1 = getDummyDietPlan(); - item1.objectId = '${objectIdPrefix}0'; - actual.add(item1); - - final DietPlan item2 = getDummyDietPlan(); - item2.objectId = '${objectIdPrefix}1'; - actual.add(item2); - - final ApiResponse? apiResponse = await repository?.addAll(actual); - - await deleteFromApi(apiResponse?.results); - - // act - actual[0].protein = 1000; - actual[1].protein = 1000; - final ApiResponse? updateResponse = await repository?.updateAll(actual); - final List? expected = updateResponse?.results; - - await deleteFromApi(updateResponse?.results); - await deleteFromApi(updateResponse?.results); - await deleteFromApi(apiResponse?.results); - - // assert - expect(actual[0].objectId, expected?[0].objectId); - expect(actual[1].objectId, expected?[1].objectId); - expect(expected?[0].protein, 1000); - expect(expected?[1].protein, 1000); - }); - - test('delete DietPlan from DB', () async { - // arrange - final DietPlan actual = getDummyDietPlan(); - repository?.add(actual); - - // act - repository?.remove(actual); - final ApiResponse? response = - await repository?.getById(actual.objectId ?? ""); - - // assert - expect(response?.result == null, true); - }); -} diff --git a/packages/flutter/example/test/data/repository/repository_mock_utils.dart b/packages/flutter/example/test/data/repository/repository_mock_utils.dart deleted file mode 100644 index 20386bb12..000000000 --- a/packages/flutter/example/test/data/repository/repository_mock_utils.dart +++ /dev/null @@ -1,47 +0,0 @@ -import 'dart:io'; - -import 'package:flutter_plugin_example/data/model/diet_plan.dart'; -import 'package:flutter_plugin_example/data/repositories/diet_plan/provider_api_diet_plan.dart'; -import 'package:flutter_plugin_example/data/repositories/diet_plan/provider_db_diet_plan.dart'; -import 'package:flutter_plugin_example/domain/constants/application_constants.dart'; -import 'package:mockito/mockito.dart'; -import 'package:parse_server_sdk_flutter/parse_server_sdk_flutter.dart'; -import 'package:path/path.dart'; -import 'package:sembast/sembast.dart'; -import 'package:sembast/sembast_io.dart'; - -class MockDietPlanProviderApi extends Mock implements DietPlanProviderApi {} - -class MockDietPlanProviderDB extends Mock implements DietPlanProviderDB {} - -Future getDB() async { - final String dbDirectory = Directory.current.path; - final String dbPath = join(dbDirectory, 'no_sql_test'); - final DatabaseFactory dbFactory = databaseFactoryIo; - return await dbFactory.openDatabase(dbPath); -} - -Future setupParseInstance() async { - await Parse().initialize(keyParseApplicationId, keyParseServerUrl, - clientKey: keyParseClientKey, appName: keyApplicationName, debug: true); -} - -DietPlan getDummyDietPlan() { - return DietPlan() - ..set('objectId', '1234abcd') - ..set(keyVarUpdatedAt, DateTime.now()) - ..name = 'Test Diet Plan' - ..description = 'Some random description about a diet plan' - ..protein = 40 - ..carbs = 40 - ..fat = 20 - ..status = false; -} - -Future deleteFromApi(List? results) async { - if (results != null && results.isNotEmpty) { - for (final ParseObject item in results) { - await item.delete(); - } - } -} diff --git a/packages/flutter/example/web/favicon.png b/packages/flutter/example/web/favicon.png deleted file mode 100644 index 8aaa46ac1..000000000 Binary files a/packages/flutter/example/web/favicon.png and /dev/null differ diff --git a/packages/flutter/example/web/icons/Icon-192.png b/packages/flutter/example/web/icons/Icon-192.png deleted file mode 100644 index b749bfef0..000000000 Binary files a/packages/flutter/example/web/icons/Icon-192.png and /dev/null differ diff --git a/packages/flutter/example/web/icons/Icon-512.png b/packages/flutter/example/web/icons/Icon-512.png deleted file mode 100644 index 88cfd48df..000000000 Binary files a/packages/flutter/example/web/icons/Icon-512.png and /dev/null differ diff --git a/packages/flutter/example/web/icons/Icon-maskable-192.png b/packages/flutter/example/web/icons/Icon-maskable-192.png deleted file mode 100644 index eb9b4d76e..000000000 Binary files a/packages/flutter/example/web/icons/Icon-maskable-192.png and /dev/null differ diff --git a/packages/flutter/example/web/icons/Icon-maskable-512.png b/packages/flutter/example/web/icons/Icon-maskable-512.png deleted file mode 100644 index d69c56691..000000000 Binary files a/packages/flutter/example/web/icons/Icon-maskable-512.png and /dev/null differ diff --git a/packages/flutter/example/web/index.html b/packages/flutter/example/web/index.html deleted file mode 100644 index 24b128139..000000000 --- a/packages/flutter/example/web/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - flutter_plugin_example - - - - - - - - - - diff --git a/packages/flutter/example/web/manifest.json b/packages/flutter/example/web/manifest.json deleted file mode 100644 index a9193babc..000000000 --- a/packages/flutter/example/web/manifest.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "flutter_plugin_example", - "short_name": "flutter_plugin_example", - "start_url": ".", - "display": "standalone", - "background_color": "#0175C2", - "theme_color": "#0175C2", - "description": "Demonstrates how to use the flutter_plugin plugin.", - "orientation": "portrait-primary", - "prefer_related_applications": false, - "icons": [ - { - "src": "icons/Icon-192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "icons/Icon-512.png", - "sizes": "512x512", - "type": "image/png" - }, - { - "src": "icons/Icon-maskable-192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "maskable" - }, - { - "src": "icons/Icon-maskable-512.png", - "sizes": "512x512", - "type": "image/png", - "purpose": "maskable" - } - ] -} diff --git a/packages/flutter/example/windows/.gitignore b/packages/flutter/example/windows/.gitignore deleted file mode 100644 index d492d0d98..000000000 --- a/packages/flutter/example/windows/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -flutter/ephemeral/ - -# Visual Studio user-specific files. -*.suo -*.user -*.userosscache -*.sln.docstates - -# Visual Studio build-related files. -x64/ -x86/ - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ diff --git a/packages/flutter/example/windows/CMakeLists.txt b/packages/flutter/example/windows/CMakeLists.txt deleted file mode 100644 index 3242ba0da..000000000 --- a/packages/flutter/example/windows/CMakeLists.txt +++ /dev/null @@ -1,102 +0,0 @@ -# Project-level configuration. -cmake_minimum_required(VERSION 3.14) -project(flutter_plugin_example LANGUAGES CXX) - -# The name of the executable created for the application. Change this to change -# the on-disk name of your application. -set(BINARY_NAME "flutter_plugin_example") - -# Explicitly opt in to modern CMake behaviors to avoid warnings with recent -# versions of CMake. -cmake_policy(SET CMP0063 NEW) - -# Define build configuration option. -get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) -if(IS_MULTICONFIG) - set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" - CACHE STRING "" FORCE) -else() - if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) - set(CMAKE_BUILD_TYPE "Debug" CACHE - STRING "Flutter build mode" FORCE) - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS - "Debug" "Profile" "Release") - endif() -endif() -# Define settings for the Profile build mode. -set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") -set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") -set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") -set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") - -# Use Unicode for all projects. -add_definitions(-DUNICODE -D_UNICODE) - -# Compilation settings that should be applied to most targets. -# -# Be cautious about adding new options here, as plugins use this function by -# default. In most cases, you should add new options to specific targets instead -# of modifying this function. -function(APPLY_STANDARD_SETTINGS TARGET) - target_compile_features(${TARGET} PUBLIC cxx_std_17) - target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") - target_compile_options(${TARGET} PRIVATE /EHsc) - target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") - target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") -endfunction() - -# Flutter library and tool build rules. -set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") -add_subdirectory(${FLUTTER_MANAGED_DIR}) - -# Application build; see runner/CMakeLists.txt. -add_subdirectory("runner") - - -# Generated plugin build rules, which manage building the plugins and adding -# them to the application. -include(flutter/generated_plugins.cmake) - - -# === Installation === -# Support files are copied into place next to the executable, so that it can -# run in place. This is done instead of making a separate bundle (as on Linux) -# so that building and running from within Visual Studio will work. -set(BUILD_BUNDLE_DIR "$") -# Make the "install" step default, as it's required to run. -set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() - -set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") -set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - COMPONENT Runtime) - -install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) - -if(PLUGIN_BUNDLED_LIBRARIES) - install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" - DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" - COMPONENT Runtime) -endif() - -# Fully re-copy the assets directory on each build to avoid having stale files -# from a previous install. -set(FLUTTER_ASSET_DIR_NAME "flutter_assets") -install(CODE " - file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") - " COMPONENT Runtime) -install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" - DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) - -# Install the AOT library on non-Debug builds only. -install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" - CONFIGURATIONS Profile;Release - COMPONENT Runtime) diff --git a/packages/flutter/example/windows/flutter/CMakeLists.txt b/packages/flutter/example/windows/flutter/CMakeLists.txt deleted file mode 100644 index 930d2071a..000000000 --- a/packages/flutter/example/windows/flutter/CMakeLists.txt +++ /dev/null @@ -1,104 +0,0 @@ -# This file controls Flutter-level build steps. It should not be edited. -cmake_minimum_required(VERSION 3.14) - -set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") - -# Configuration provided via flutter tool. -include(${EPHEMERAL_DIR}/generated_config.cmake) - -# TODO: Move the rest of this into files in ephemeral. See -# https://github.com/flutter/flutter/issues/57146. -set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") - -# === Flutter Library === -set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") - -# Published to parent scope for install step. -set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) -set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) -set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) -set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) - -list(APPEND FLUTTER_LIBRARY_HEADERS - "flutter_export.h" - "flutter_windows.h" - "flutter_messenger.h" - "flutter_plugin_registrar.h" - "flutter_texture_registrar.h" -) -list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") -add_library(flutter INTERFACE) -target_include_directories(flutter INTERFACE - "${EPHEMERAL_DIR}" -) -target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") -add_dependencies(flutter flutter_assemble) - -# === Wrapper === -list(APPEND CPP_WRAPPER_SOURCES_CORE - "core_implementations.cc" - "standard_codec.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_PLUGIN - "plugin_registrar.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") -list(APPEND CPP_WRAPPER_SOURCES_APP - "flutter_engine.cc" - "flutter_view_controller.cc" -) -list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") - -# Wrapper sources needed for a plugin. -add_library(flutter_wrapper_plugin STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} -) -apply_standard_settings(flutter_wrapper_plugin) -set_target_properties(flutter_wrapper_plugin PROPERTIES - POSITION_INDEPENDENT_CODE ON) -set_target_properties(flutter_wrapper_plugin PROPERTIES - CXX_VISIBILITY_PRESET hidden) -target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) -target_include_directories(flutter_wrapper_plugin PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_plugin flutter_assemble) - -# Wrapper sources needed for the runner. -add_library(flutter_wrapper_app STATIC - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_APP} -) -apply_standard_settings(flutter_wrapper_app) -target_link_libraries(flutter_wrapper_app PUBLIC flutter) -target_include_directories(flutter_wrapper_app PUBLIC - "${WRAPPER_ROOT}/include" -) -add_dependencies(flutter_wrapper_app flutter_assemble) - -# === Flutter tool backend === -# _phony_ is a non-existent file to force this command to run every time, -# since currently there's no way to get a full input/output list from the -# flutter tool. -set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") -set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) -add_custom_command( - OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} - ${PHONY_OUTPUT} - COMMAND ${CMAKE_COMMAND} -E env - ${FLUTTER_TOOL_ENVIRONMENT} - "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" - windows-x64 $ - VERBATIM -) -add_custom_target(flutter_assemble DEPENDS - "${FLUTTER_LIBRARY}" - ${FLUTTER_LIBRARY_HEADERS} - ${CPP_WRAPPER_SOURCES_CORE} - ${CPP_WRAPPER_SOURCES_PLUGIN} - ${CPP_WRAPPER_SOURCES_APP} -) diff --git a/packages/flutter/example/windows/flutter/generated_plugin_registrant.cc b/packages/flutter/example/windows/flutter/generated_plugin_registrant.cc deleted file mode 100644 index 8777c93d9..000000000 --- a/packages/flutter/example/windows/flutter/generated_plugin_registrant.cc +++ /dev/null @@ -1,14 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#include "generated_plugin_registrant.h" - -#include - -void RegisterPlugins(flutter::PluginRegistry* registry) { - ConnectivityPlusWindowsPluginRegisterWithRegistrar( - registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin")); -} diff --git a/packages/flutter/example/windows/flutter/generated_plugin_registrant.h b/packages/flutter/example/windows/flutter/generated_plugin_registrant.h deleted file mode 100644 index dc139d85a..000000000 --- a/packages/flutter/example/windows/flutter/generated_plugin_registrant.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// Generated file. Do not edit. -// - -// clang-format off - -#ifndef GENERATED_PLUGIN_REGISTRANT_ -#define GENERATED_PLUGIN_REGISTRANT_ - -#include - -// Registers Flutter plugins. -void RegisterPlugins(flutter::PluginRegistry* registry); - -#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/packages/flutter/example/windows/flutter/generated_plugins.cmake b/packages/flutter/example/windows/flutter/generated_plugins.cmake deleted file mode 100644 index cc1361d8d..000000000 --- a/packages/flutter/example/windows/flutter/generated_plugins.cmake +++ /dev/null @@ -1,24 +0,0 @@ -# -# Generated file, do not edit. -# - -list(APPEND FLUTTER_PLUGIN_LIST - connectivity_plus -) - -list(APPEND FLUTTER_FFI_PLUGIN_LIST -) - -set(PLUGIN_BUNDLED_LIBRARIES) - -foreach(plugin ${FLUTTER_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) - target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) - list(APPEND PLUGIN_BUNDLED_LIBRARIES $) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) -endforeach(plugin) - -foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) - add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) - list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) -endforeach(ffi_plugin) diff --git a/packages/flutter/example/windows/runner/CMakeLists.txt b/packages/flutter/example/windows/runner/CMakeLists.txt deleted file mode 100644 index 394917c05..000000000 --- a/packages/flutter/example/windows/runner/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -cmake_minimum_required(VERSION 3.14) -project(runner LANGUAGES CXX) - -# Define the application target. To change its name, change BINARY_NAME in the -# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer -# work. -# -# Any new source files that you add to the application should be added here. -add_executable(${BINARY_NAME} WIN32 - "flutter_window.cpp" - "main.cpp" - "utils.cpp" - "win32_window.cpp" - "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" - "Runner.rc" - "runner.exe.manifest" -) - -# Apply the standard set of build settings. This can be removed for applications -# that need different build settings. -apply_standard_settings(${BINARY_NAME}) - -# Add preprocessor definitions for the build version. -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") -target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") - -# Disable Windows macros that collide with C++ standard library functions. -target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") - -# Add dependency libraries and include directories. Add any application-specific -# dependencies here. -target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) -target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") -target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") - -# Run the Flutter tool portions of the build. This must not be removed. -add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/packages/flutter/example/windows/runner/Runner.rc b/packages/flutter/example/windows/runner/Runner.rc deleted file mode 100644 index 9c1036ecf..000000000 --- a/packages/flutter/example/windows/runner/Runner.rc +++ /dev/null @@ -1,121 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#pragma code_page(65001) -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "winres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English (United States) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""winres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_APP_ICON ICON "resources\\app_icon.ico" - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) -#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD -#else -#define VERSION_AS_NUMBER 1,0,0,0 -#endif - -#if defined(FLUTTER_VERSION) -#define VERSION_AS_STRING FLUTTER_VERSION -#else -#define VERSION_AS_STRING "1.0.0" -#endif - -VS_VERSION_INFO VERSIONINFO - FILEVERSION VERSION_AS_NUMBER - PRODUCTVERSION VERSION_AS_NUMBER - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK -#ifdef _DEBUG - FILEFLAGS VS_FF_DEBUG -#else - FILEFLAGS 0x0L -#endif - FILEOS VOS__WINDOWS32 - FILETYPE VFT_APP - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904e4" - BEGIN - VALUE "CompanyName", "com.example" "\0" - VALUE "FileDescription", "flutter_plugin_example" "\0" - VALUE "FileVersion", VERSION_AS_STRING "\0" - VALUE "InternalName", "flutter_plugin_example" "\0" - VALUE "LegalCopyright", "Copyright (C) 2023 com.example. All rights reserved." "\0" - VALUE "OriginalFilename", "flutter_plugin_example.exe" "\0" - VALUE "ProductName", "flutter_plugin_example" "\0" - VALUE "ProductVersion", VERSION_AS_STRING "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 - END -END - -#endif // English (United States) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED diff --git a/packages/flutter/example/windows/runner/flutter_window.cpp b/packages/flutter/example/windows/runner/flutter_window.cpp deleted file mode 100644 index b25e363ef..000000000 --- a/packages/flutter/example/windows/runner/flutter_window.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "flutter_window.h" - -#include - -#include "flutter/generated_plugin_registrant.h" - -FlutterWindow::FlutterWindow(const flutter::DartProject& project) - : project_(project) {} - -FlutterWindow::~FlutterWindow() {} - -bool FlutterWindow::OnCreate() { - if (!Win32Window::OnCreate()) { - return false; - } - - RECT frame = GetClientArea(); - - // The size here must match the window dimensions to avoid unnecessary surface - // creation / destruction in the startup path. - flutter_controller_ = std::make_unique( - frame.right - frame.left, frame.bottom - frame.top, project_); - // Ensure that basic setup of the controller was successful. - if (!flutter_controller_->engine() || !flutter_controller_->view()) { - return false; - } - RegisterPlugins(flutter_controller_->engine()); - SetChildContent(flutter_controller_->view()->GetNativeWindow()); - - flutter_controller_->engine()->SetNextFrameCallback([&]() { - this->Show(); - }); - - return true; -} - -void FlutterWindow::OnDestroy() { - if (flutter_controller_) { - flutter_controller_ = nullptr; - } - - Win32Window::OnDestroy(); -} - -LRESULT -FlutterWindow::MessageHandler(HWND hwnd, UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - // Give Flutter, including plugins, an opportunity to handle window messages. - if (flutter_controller_) { - std::optional result = - flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, - lparam); - if (result) { - return *result; - } - } - - switch (message) { - case WM_FONTCHANGE: - flutter_controller_->engine()->ReloadSystemFonts(); - break; - } - - return Win32Window::MessageHandler(hwnd, message, wparam, lparam); -} diff --git a/packages/flutter/example/windows/runner/flutter_window.h b/packages/flutter/example/windows/runner/flutter_window.h deleted file mode 100644 index 6da0652f0..000000000 --- a/packages/flutter/example/windows/runner/flutter_window.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef RUNNER_FLUTTER_WINDOW_H_ -#define RUNNER_FLUTTER_WINDOW_H_ - -#include -#include - -#include - -#include "win32_window.h" - -// A window that does nothing but host a Flutter view. -class FlutterWindow : public Win32Window { - public: - // Creates a new FlutterWindow hosting a Flutter view running |project|. - explicit FlutterWindow(const flutter::DartProject& project); - virtual ~FlutterWindow(); - - protected: - // Win32Window: - bool OnCreate() override; - void OnDestroy() override; - LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, - LPARAM const lparam) noexcept override; - - private: - // The project to run. - flutter::DartProject project_; - - // The Flutter instance hosted by this window. - std::unique_ptr flutter_controller_; -}; - -#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/packages/flutter/example/windows/runner/main.cpp b/packages/flutter/example/windows/runner/main.cpp deleted file mode 100644 index 599ee0124..000000000 --- a/packages/flutter/example/windows/runner/main.cpp +++ /dev/null @@ -1,43 +0,0 @@ -#include -#include -#include - -#include "flutter_window.h" -#include "utils.h" - -int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, - _In_ wchar_t *command_line, _In_ int show_command) { - // Attach to console when present (e.g., 'flutter run') or create a - // new console when running with a debugger. - if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { - CreateAndAttachConsole(); - } - - // Initialize COM, so that it is available for use in the library and/or - // plugins. - ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); - - flutter::DartProject project(L"data"); - - std::vector command_line_arguments = - GetCommandLineArguments(); - - project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); - - FlutterWindow window(project); - Win32Window::Point origin(10, 10); - Win32Window::Size size(1280, 720); - if (!window.Create(L"flutter_plugin_example", origin, size)) { - return EXIT_FAILURE; - } - window.SetQuitOnClose(true); - - ::MSG msg; - while (::GetMessage(&msg, nullptr, 0, 0)) { - ::TranslateMessage(&msg); - ::DispatchMessage(&msg); - } - - ::CoUninitialize(); - return EXIT_SUCCESS; -} diff --git a/packages/flutter/example/windows/runner/resource.h b/packages/flutter/example/windows/runner/resource.h deleted file mode 100644 index 66a65d1e4..000000000 --- a/packages/flutter/example/windows/runner/resource.h +++ /dev/null @@ -1,16 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by Runner.rc -// -#define IDI_APP_ICON 101 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 102 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1001 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/packages/flutter/example/windows/runner/resources/app_icon.ico b/packages/flutter/example/windows/runner/resources/app_icon.ico deleted file mode 100644 index c04e20caf..000000000 Binary files a/packages/flutter/example/windows/runner/resources/app_icon.ico and /dev/null differ diff --git a/packages/flutter/example/windows/runner/runner.exe.manifest b/packages/flutter/example/windows/runner/runner.exe.manifest deleted file mode 100644 index a42ea7687..000000000 --- a/packages/flutter/example/windows/runner/runner.exe.manifest +++ /dev/null @@ -1,20 +0,0 @@ - - - - - PerMonitorV2 - - - - - - - - - - - - - - - diff --git a/packages/flutter/example/windows/runner/utils.cpp b/packages/flutter/example/windows/runner/utils.cpp deleted file mode 100644 index b2b08734d..000000000 --- a/packages/flutter/example/windows/runner/utils.cpp +++ /dev/null @@ -1,65 +0,0 @@ -#include "utils.h" - -#include -#include -#include -#include - -#include - -void CreateAndAttachConsole() { - if (::AllocConsole()) { - FILE *unused; - if (freopen_s(&unused, "CONOUT$", "w", stdout)) { - _dup2(_fileno(stdout), 1); - } - if (freopen_s(&unused, "CONOUT$", "w", stderr)) { - _dup2(_fileno(stdout), 2); - } - std::ios::sync_with_stdio(); - FlutterDesktopResyncOutputStreams(); - } -} - -std::vector GetCommandLineArguments() { - // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. - int argc; - wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); - if (argv == nullptr) { - return std::vector(); - } - - std::vector command_line_arguments; - - // Skip the first argument as it's the binary name. - for (int i = 1; i < argc; i++) { - command_line_arguments.push_back(Utf8FromUtf16(argv[i])); - } - - ::LocalFree(argv); - - return command_line_arguments; -} - -std::string Utf8FromUtf16(const wchar_t* utf16_string) { - if (utf16_string == nullptr) { - return std::string(); - } - int target_length = ::WideCharToMultiByte( - CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - -1, nullptr, 0, nullptr, nullptr) - -1; // remove the trailing null character - int input_length = (int)wcslen(utf16_string); - std::string utf8_string; - if (target_length <= 0 || target_length > utf8_string.max_size()) { - return utf8_string; - } - utf8_string.resize(target_length); - int converted_length = ::WideCharToMultiByte( - CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, - input_length, utf8_string.data(), target_length, nullptr, nullptr); - if (converted_length == 0) { - return std::string(); - } - return utf8_string; -} diff --git a/packages/flutter/example/windows/runner/utils.h b/packages/flutter/example/windows/runner/utils.h deleted file mode 100644 index 3879d5475..000000000 --- a/packages/flutter/example/windows/runner/utils.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef RUNNER_UTILS_H_ -#define RUNNER_UTILS_H_ - -#include -#include - -// Creates a console for the process, and redirects stdout and stderr to -// it for both the runner and the Flutter library. -void CreateAndAttachConsole(); - -// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string -// encoded in UTF-8. Returns an empty std::string on failure. -std::string Utf8FromUtf16(const wchar_t* utf16_string); - -// Gets the command line arguments passed in as a std::vector, -// encoded in UTF-8. Returns an empty std::vector on failure. -std::vector GetCommandLineArguments(); - -#endif // RUNNER_UTILS_H_ diff --git a/packages/flutter/example/windows/runner/win32_window.cpp b/packages/flutter/example/windows/runner/win32_window.cpp deleted file mode 100644 index 60608d0fe..000000000 --- a/packages/flutter/example/windows/runner/win32_window.cpp +++ /dev/null @@ -1,288 +0,0 @@ -#include "win32_window.h" - -#include -#include - -#include "resource.h" - -namespace { - -/// Window attribute that enables dark mode window decorations. -/// -/// Redefined in case the developer's machine has a Windows SDK older than -/// version 10.0.22000.0. -/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute -#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE -#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 -#endif - -constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; - -/// Registry key for app theme preference. -/// -/// A value of 0 indicates apps should use dark mode. A non-zero or missing -/// value indicates apps should use light mode. -constexpr const wchar_t kGetPreferredBrightnessRegKey[] = - L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; -constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; - -// The number of Win32Window objects that currently exist. -static int g_active_window_count = 0; - -using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); - -// Scale helper to convert logical scaler values to physical using passed in -// scale factor -int Scale(int source, double scale_factor) { - return static_cast(source * scale_factor); -} - -// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. -// This API is only needed for PerMonitor V1 awareness mode. -void EnableFullDpiSupportIfAvailable(HWND hwnd) { - HMODULE user32_module = LoadLibraryA("User32.dll"); - if (!user32_module) { - return; - } - auto enable_non_client_dpi_scaling = - reinterpret_cast( - GetProcAddress(user32_module, "EnableNonClientDpiScaling")); - if (enable_non_client_dpi_scaling != nullptr) { - enable_non_client_dpi_scaling(hwnd); - } - FreeLibrary(user32_module); -} - -} // namespace - -// Manages the Win32Window's window class registration. -class WindowClassRegistrar { - public: - ~WindowClassRegistrar() = default; - - // Returns the singleton registrar instance. - static WindowClassRegistrar* GetInstance() { - if (!instance_) { - instance_ = new WindowClassRegistrar(); - } - return instance_; - } - - // Returns the name of the window class, registering the class if it hasn't - // previously been registered. - const wchar_t* GetWindowClass(); - - // Unregisters the window class. Should only be called if there are no - // instances of the window. - void UnregisterWindowClass(); - - private: - WindowClassRegistrar() = default; - - static WindowClassRegistrar* instance_; - - bool class_registered_ = false; -}; - -WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; - -const wchar_t* WindowClassRegistrar::GetWindowClass() { - if (!class_registered_) { - WNDCLASS window_class{}; - window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); - window_class.lpszClassName = kWindowClassName; - window_class.style = CS_HREDRAW | CS_VREDRAW; - window_class.cbClsExtra = 0; - window_class.cbWndExtra = 0; - window_class.hInstance = GetModuleHandle(nullptr); - window_class.hIcon = - LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); - window_class.hbrBackground = 0; - window_class.lpszMenuName = nullptr; - window_class.lpfnWndProc = Win32Window::WndProc; - RegisterClass(&window_class); - class_registered_ = true; - } - return kWindowClassName; -} - -void WindowClassRegistrar::UnregisterWindowClass() { - UnregisterClass(kWindowClassName, nullptr); - class_registered_ = false; -} - -Win32Window::Win32Window() { - ++g_active_window_count; -} - -Win32Window::~Win32Window() { - --g_active_window_count; - Destroy(); -} - -bool Win32Window::Create(const std::wstring& title, - const Point& origin, - const Size& size) { - Destroy(); - - const wchar_t* window_class = - WindowClassRegistrar::GetInstance()->GetWindowClass(); - - const POINT target_point = {static_cast(origin.x), - static_cast(origin.y)}; - HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); - UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); - double scale_factor = dpi / 96.0; - - HWND window = CreateWindow( - window_class, title.c_str(), WS_OVERLAPPEDWINDOW, - Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), - Scale(size.width, scale_factor), Scale(size.height, scale_factor), - nullptr, nullptr, GetModuleHandle(nullptr), this); - - if (!window) { - return false; - } - - UpdateTheme(window); - - return OnCreate(); -} - -bool Win32Window::Show() { - return ShowWindow(window_handle_, SW_SHOWNORMAL); -} - -// static -LRESULT CALLBACK Win32Window::WndProc(HWND const window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - if (message == WM_NCCREATE) { - auto window_struct = reinterpret_cast(lparam); - SetWindowLongPtr(window, GWLP_USERDATA, - reinterpret_cast(window_struct->lpCreateParams)); - - auto that = static_cast(window_struct->lpCreateParams); - EnableFullDpiSupportIfAvailable(window); - that->window_handle_ = window; - } else if (Win32Window* that = GetThisFromHandle(window)) { - return that->MessageHandler(window, message, wparam, lparam); - } - - return DefWindowProc(window, message, wparam, lparam); -} - -LRESULT -Win32Window::MessageHandler(HWND hwnd, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept { - switch (message) { - case WM_DESTROY: - window_handle_ = nullptr; - Destroy(); - if (quit_on_close_) { - PostQuitMessage(0); - } - return 0; - - case WM_DPICHANGED: { - auto newRectSize = reinterpret_cast(lparam); - LONG newWidth = newRectSize->right - newRectSize->left; - LONG newHeight = newRectSize->bottom - newRectSize->top; - - SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, - newHeight, SWP_NOZORDER | SWP_NOACTIVATE); - - return 0; - } - case WM_SIZE: { - RECT rect = GetClientArea(); - if (child_content_ != nullptr) { - // Size and position the child window. - MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, - rect.bottom - rect.top, TRUE); - } - return 0; - } - - case WM_ACTIVATE: - if (child_content_ != nullptr) { - SetFocus(child_content_); - } - return 0; - - case WM_DWMCOLORIZATIONCOLORCHANGED: - UpdateTheme(hwnd); - return 0; - } - - return DefWindowProc(window_handle_, message, wparam, lparam); -} - -void Win32Window::Destroy() { - OnDestroy(); - - if (window_handle_) { - DestroyWindow(window_handle_); - window_handle_ = nullptr; - } - if (g_active_window_count == 0) { - WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); - } -} - -Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { - return reinterpret_cast( - GetWindowLongPtr(window, GWLP_USERDATA)); -} - -void Win32Window::SetChildContent(HWND content) { - child_content_ = content; - SetParent(content, window_handle_); - RECT frame = GetClientArea(); - - MoveWindow(content, frame.left, frame.top, frame.right - frame.left, - frame.bottom - frame.top, true); - - SetFocus(child_content_); -} - -RECT Win32Window::GetClientArea() { - RECT frame; - GetClientRect(window_handle_, &frame); - return frame; -} - -HWND Win32Window::GetHandle() { - return window_handle_; -} - -void Win32Window::SetQuitOnClose(bool quit_on_close) { - quit_on_close_ = quit_on_close; -} - -bool Win32Window::OnCreate() { - // No-op; provided for subclasses. - return true; -} - -void Win32Window::OnDestroy() { - // No-op; provided for subclasses. -} - -void Win32Window::UpdateTheme(HWND const window) { - DWORD light_mode; - DWORD light_mode_size = sizeof(light_mode); - LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey, - kGetPreferredBrightnessRegValue, - RRF_RT_REG_DWORD, nullptr, &light_mode, - &light_mode_size); - - if (result == ERROR_SUCCESS) { - BOOL enable_dark_mode = light_mode == 0; - DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE, - &enable_dark_mode, sizeof(enable_dark_mode)); - } -} diff --git a/packages/flutter/example/windows/runner/win32_window.h b/packages/flutter/example/windows/runner/win32_window.h deleted file mode 100644 index e901dde68..000000000 --- a/packages/flutter/example/windows/runner/win32_window.h +++ /dev/null @@ -1,102 +0,0 @@ -#ifndef RUNNER_WIN32_WINDOW_H_ -#define RUNNER_WIN32_WINDOW_H_ - -#include - -#include -#include -#include - -// A class abstraction for a high DPI-aware Win32 Window. Intended to be -// inherited from by classes that wish to specialize with custom -// rendering and input handling -class Win32Window { - public: - struct Point { - unsigned int x; - unsigned int y; - Point(unsigned int x, unsigned int y) : x(x), y(y) {} - }; - - struct Size { - unsigned int width; - unsigned int height; - Size(unsigned int width, unsigned int height) - : width(width), height(height) {} - }; - - Win32Window(); - virtual ~Win32Window(); - - // Creates a win32 window with |title| that is positioned and sized using - // |origin| and |size|. New windows are created on the default monitor. Window - // sizes are specified to the OS in physical pixels, hence to ensure a - // consistent size this function will scale the inputted width and height as - // as appropriate for the default monitor. The window is invisible until - // |Show| is called. Returns true if the window was created successfully. - bool Create(const std::wstring& title, const Point& origin, const Size& size); - - // Show the current window. Returns true if the window was successfully shown. - bool Show(); - - // Release OS resources associated with window. - void Destroy(); - - // Inserts |content| into the window tree. - void SetChildContent(HWND content); - - // Returns the backing Window handle to enable clients to set icon and other - // window properties. Returns nullptr if the window has been destroyed. - HWND GetHandle(); - - // If true, closing this window will quit the application. - void SetQuitOnClose(bool quit_on_close); - - // Return a RECT representing the bounds of the current client area. - RECT GetClientArea(); - - protected: - // Processes and route salient window messages for mouse handling, - // size change and DPI. Delegates handling of these to member overloads that - // inheriting classes can handle. - virtual LRESULT MessageHandler(HWND window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Called when CreateAndShow is called, allowing subclass window-related - // setup. Subclasses should return false if setup fails. - virtual bool OnCreate(); - - // Called when Destroy is called. - virtual void OnDestroy(); - - private: - friend class WindowClassRegistrar; - - // OS callback called by message pump. Handles the WM_NCCREATE message which - // is passed when the non-client area is being created and enables automatic - // non-client DPI scaling so that the non-client area automatically - // responds to changes in DPI. All other messages are handled by - // MessageHandler. - static LRESULT CALLBACK WndProc(HWND const window, - UINT const message, - WPARAM const wparam, - LPARAM const lparam) noexcept; - - // Retrieves a class instance pointer for |window| - static Win32Window* GetThisFromHandle(HWND const window) noexcept; - - // Update the window frame's theme to match the system theme. - static void UpdateTheme(HWND const window); - - bool quit_on_close_ = false; - - // window handle for top level window. - HWND window_handle_ = nullptr; - - // window handle for hosted content. - HWND child_content_ = nullptr; -}; - -#endif // RUNNER_WIN32_WINDOW_H_ diff --git a/packages/flutter/lib/parse_server_sdk_flutter.dart b/packages/flutter/lib/parse_server_sdk_flutter.dart deleted file mode 100644 index 20aed2b95..000000000 --- a/packages/flutter/lib/parse_server_sdk_flutter.dart +++ /dev/null @@ -1,149 +0,0 @@ -library flutter_parse_sdk_flutter; - -import 'dart:convert'; -import 'dart:async'; -import 'dart:io'; -import 'dart:math'; -import 'dart:ui'; -import 'package:awesome_notifications/awesome_notifications.dart'; -import 'package:connectivity_plus/connectivity_plus.dart'; -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:package_info_plus/package_info_plus.dart'; -import 'package:parse_server_sdk/parse_server_sdk.dart' as sdk; -import 'package:parse_server_sdk_flutter/src/storage/core_store_directory_io.dart' - if (dart.library.html) 'package:parse_server_sdk_flutter/src/storage/core_store_directory_web.dart'; -import 'package:sembast/sembast.dart'; -import 'package:shared_preferences/shared_preferences.dart'; - -export 'package:parse_server_sdk/parse_server_sdk.dart' - hide Parse, CoreStoreSembastImp; - -part 'src/storage/core_store_shared_preferences.dart'; -part 'src/storage/core_store_sembast.dart'; -part 'src/utils/parse_live_grid.dart'; -part 'src/utils/parse_live_list.dart'; -part 'src/notification/parse_notification.dart'; -part 'src/push//parse_push.dart'; - -class Parse extends sdk.Parse - with WidgetsBindingObserver - implements sdk.ParseConnectivityProvider { - /// To initialize Parse Server in your application - /// - /// This should be initialized in MyApp() creation - /// - /// ``` - /// Parse().initialize( - /// "PARSE_APP_ID", - /// "https://parse.myaddress.com/parse/,-%20%20///%20%20%20%20%20%20%20%20clientKey:"asd23rjh234r234r234r", - /// debug: true, - /// liveQuery: true); - /// ``` - /// [appName], [appVersion] and [appPackageName] are automatically set on Android and IOS, if they are not defined. You should provide a value on web. - /// [fileDirectory] is not used on web - @override - Future initialize( - String appId, - String serverUrl, { - bool debug = false, - String? appName, - String? appVersion, - String? appPackageName, - String? locale, - String? liveQueryUrl, - String? clientKey, - String? masterKey, - String? sessionId, - bool autoSendSessionId = true, - SecurityContext? securityContext, - sdk.CoreStore? coreStore, - Map? registeredSubClassMap, - sdk.ParseUserConstructor? parseUserConstructor, - sdk.ParseFileConstructor? parseFileConstructor, - List? liveListRetryIntervals, - sdk.ParseConnectivityProvider? connectivityProvider, - String? fileDirectory, - Stream? appResumedStream, - sdk.ParseClientCreator? clientCreator, - }) async { - if (appName == null || appVersion == null || appPackageName == null) { - final PackageInfo packageInfo = await PackageInfo.fromPlatform(); - appName ??= packageInfo.appName; - appVersion ??= packageInfo.version; - appPackageName ??= packageInfo.packageName; - } - - return await super.initialize( - appId, - serverUrl, - debug: debug, - appName: appName, - appVersion: appVersion, - appPackageName: appPackageName, - locale: locale ?? - (sdk.parseIsWeb - ? PlatformDispatcher.instance.locale.toString() - : Platform.localeName), - liveQueryUrl: liveQueryUrl, - clientKey: clientKey, - masterKey: masterKey, - sessionId: sessionId, - autoSendSessionId: autoSendSessionId, - securityContext: securityContext, - coreStore: coreStore ?? await CoreStoreSharedPreferences.getInstance(), - registeredSubClassMap: registeredSubClassMap, - parseUserConstructor: parseUserConstructor, - parseFileConstructor: parseFileConstructor, - liveListRetryIntervals: liveListRetryIntervals, - connectivityProvider: connectivityProvider ?? this, - fileDirectory: - fileDirectory ?? (await CoreStoreDirectory().getTempDirectory()), - appResumedStream: appResumedStream ?? _appResumedStreamController.stream, - clientCreator: clientCreator, - ) as Parse; - } - - final StreamController _appResumedStreamController = - StreamController(); - - @override - Future checkConnectivity() async { - switch (await Connectivity().checkConnectivity()) { - case ConnectivityResult.wifi: - return sdk.ParseConnectivityResult.wifi; - case ConnectivityResult.mobile: - return sdk.ParseConnectivityResult.mobile; - case ConnectivityResult.none: - return sdk.ParseConnectivityResult.none; - default: - return sdk.ParseConnectivityResult.wifi; - } - } - - @override - Stream get connectivityStream { - return Connectivity().onConnectivityChanged.map((ConnectivityResult event) { - switch (event) { - case ConnectivityResult.wifi: - return sdk.ParseConnectivityResult.wifi; - case ConnectivityResult.mobile: - return sdk.ParseConnectivityResult.mobile; - default: - return sdk.ParseConnectivityResult.none; - } - }); - } - - @override - void didChangeAppLifecycleState(AppLifecycleState state) { - if (state == AppLifecycleState.resumed) { - _appResumedStreamController.sink.add(null); - } - - if (state == AppLifecycleState.paused) { - _appResumedStreamController.close(); - } - } -} diff --git a/packages/flutter/lib/src/notification/parse_notification.dart b/packages/flutter/lib/src/notification/parse_notification.dart deleted file mode 100644 index 65ffd071d..000000000 --- a/packages/flutter/lib/src/notification/parse_notification.dart +++ /dev/null @@ -1,34 +0,0 @@ -part of flutter_parse_sdk_flutter; - -/// A class that provides a mechanism for showing system notifications in the app. -class ParseNotification { - static final ParseNotification instance = ParseNotification._internal(); - static String keyNotificationChannelName = "parse"; - - factory ParseNotification() { - return instance; - } - - ParseNotification._internal() { - // Initialize notifications helper package - AwesomeNotifications().initialize( - null, - [ - NotificationChannel( - channelKey: keyNotificationChannelName, - channelName: keyNotificationChannelName, - channelDescription: 'Notification channel for parse') - ], - ); - } - - /// Show notification - void showNotification(title) { - AwesomeNotifications().createNotification( - content: NotificationContent( - id: Random().nextInt(1000), - channelKey: keyNotificationChannelName, - title: title, - )); - } -} diff --git a/packages/flutter/lib/src/push/parse_push.dart b/packages/flutter/lib/src/push/parse_push.dart deleted file mode 100644 index 5cf2a2cf0..000000000 --- a/packages/flutter/lib/src/push/parse_push.dart +++ /dev/null @@ -1,88 +0,0 @@ -part of flutter_parse_sdk_flutter; - -/// A class that provides a mechanism for handling push notifications in the app. -class ParsePush { - static final ParsePush instance = ParsePush._internal(); - - static String keyType = "gcm"; - static String keyPushType = 'pushType'; - - factory ParsePush() { - return instance; - } - - ParsePush._internal(); - - /// Initialize ParsePush; for web a [vapidKey] is required. - Future initialize( - firebaseMessaging, { - String? vapidKey, - }) async { - // Get Google Cloud Messaging (GCM) token - firebaseMessaging - .getToken(vapidKey: vapidKey) - .asStream() - .listen((event) async { - // Set token in installation - sdk.ParseInstallation parseInstallation = - await sdk.ParseInstallation.currentInstallation(); - - parseInstallation.deviceToken = event; - parseInstallation.set(keyPushType, keyType); - - await parseInstallation.save(); - }); - } - - /// Handle push notification message - void onMessage(message) { - String pushId = message.data["push_id"] ?? ""; - String timestamp = message.data["time"] ?? ""; - String dataString = message.data["data"] ?? ""; - String channel = message.data["channel"] ?? ""; - - Map? data; - try { - data = json.decode(dataString); - } catch (_) {} - - _handlePush(pushId, timestamp, channel, data); - } - - /// Processes the incoming push notification message. - void _handlePush(String pushId, String timestamp, String channel, - Map? data) { - if (pushId.isEmpty || timestamp.isEmpty) { - return; - } - - if (data != null) { - // Show push notification - ParseNotification.instance.showNotification(data["alert"]); - } - } - - /// Subscribes the device to a channel of push notifications - Future subscribeToChannel(String value) async { - sdk.ParseInstallation parseInstallation = - await sdk.ParseInstallation.currentInstallation(); - - await parseInstallation.subscribeToChannel(value); - } - - /// Unsubscribes the device to a channel of push notifications - Future unsubscribeFromChannel(String value) async { - sdk.ParseInstallation parseInstallation = - await sdk.ParseInstallation.currentInstallation(); - - await parseInstallation.unsubscribeFromChannel(value); - } - - /// Returns an > containing all the channel names this device is subscribed to - Future> getSubscribedChannels() async { - sdk.ParseInstallation parseInstallation = - await sdk.ParseInstallation.currentInstallation(); - - return await parseInstallation.getSubscribedChannels(); - } -} diff --git a/packages/flutter/lib/src/storage/core_store_directory_io.dart b/packages/flutter/lib/src/storage/core_store_directory_io.dart deleted file mode 100644 index fbf49e14a..000000000 --- a/packages/flutter/lib/src/storage/core_store_directory_io.dart +++ /dev/null @@ -1,87 +0,0 @@ -import 'dart:io'; - -import 'package:flutter/foundation.dart'; -import 'package:path_provider/path_provider.dart' as path_provider; -import 'package:path/path.dart' as path; - -/// A storage directories -class CoreStoreDirectory { - /// Returns the library directory path for the database file on iOS, or - /// the documents directory path for other platforms. If the application is - /// running on iOS, this function also migrates the database file from the - /// documents directory to the library directory. This is done to prevent - /// issues with Parse SDK Flutter on iOS. - Future getDatabaseDirectory() async { - if (defaultTargetPlatform == TargetPlatform.iOS) { - await _migrateDBFileToLibraryDirectory(); - - return (await path_provider.getLibraryDirectory()).path; - } - - return (await path_provider.getApplicationDocumentsDirectory()).path; - } - - /// Returns the database directory. - Future dbDirectory() async { - String dbDirectory = ''; - dbDirectory = await CoreStoreDirectory().getDatabaseDirectory(); - return path.join('$dbDirectory/parse', 'parse.db'); - } - - /// A migration algorithm for the internal SDK database file on iOS. This - /// function moves the database file from the documents directory to the - /// library directory to prevent issues with Parse SDK Flutter on iOS. - /// Migrate SDK internal database file on iOS, see: - /// https://github.com/parse-community/Parse-SDK-Flutter/issues/791 - /// TODO: Remove this migration algorithm in the future. - Future _migrateDBFileToLibraryDirectory() async { - final dbFile = await _getDBFileIfExistsInAppDocDir(); - - if (dbFile != null) { - await _moveDatabaseFileToLibraryDirectory(dbFile); - } - } - - /// Returns the database file from the application documents directory if it - /// exists, otherwise returns null. - Future _getDBFileIfExistsInAppDocDir() async { - final appDocDirPath = - (await path_provider.getApplicationDocumentsDirectory()).path; - - final databaseFilePath = path.join( - appDocDirPath, - 'parse', - 'parse.db', - ); - - final dbFile = File(databaseFilePath); - - if (await dbFile.exists()) { - return dbFile; - } - - return null; - } - - /// Moves the given database file to the library directory. - Future _moveDatabaseFileToLibraryDirectory( - File databaseFileToMove, - ) async { - final libraryDirectoryPath = - (await path_provider.getLibraryDirectory()).path; - - final libraryDirectoryDatabaseFilePath = path.join( - libraryDirectoryPath, - 'parse', - 'parse.db', - ); - - await File(libraryDirectoryDatabaseFilePath).create(recursive: true); - await databaseFileToMove.rename(libraryDirectoryDatabaseFilePath); - } - - /// Returns the path to the application temporary directory. - Future getTempDirectory() async { - return (await path_provider.getTemporaryDirectory()).path; - } -} diff --git a/packages/flutter/lib/src/storage/core_store_directory_web.dart b/packages/flutter/lib/src/storage/core_store_directory_web.dart deleted file mode 100644 index 158a2abab..000000000 --- a/packages/flutter/lib/src/storage/core_store_directory_web.dart +++ /dev/null @@ -1,12 +0,0 @@ -/// A storage directories for web -class CoreStoreDirectory { - /// Returns the library directory path for the database file - Future getDatabaseDirectory() async { - return ''; - } - - /// Returns the path to the application temporary directory. - Future getTempDirectory() async { - return ''; - } -} diff --git a/packages/flutter/lib/src/storage/core_store_sembast.dart b/packages/flutter/lib/src/storage/core_store_sembast.dart deleted file mode 100644 index 3755f405d..000000000 --- a/packages/flutter/lib/src/storage/core_store_sembast.dart +++ /dev/null @@ -1,67 +0,0 @@ -part of flutter_parse_sdk_flutter; - -/// provides database operations using Sembast -class CoreStoreSembast implements sdk.CoreStoreSembastImp { - CoreStoreSembast._(); - - static sdk.CoreStore? _sembastImp; - - static Future getInstance( - {DatabaseFactory? factory, String? password}) async { - _sembastImp ??= await sdk.CoreStoreSembastImp.getInstance( - await CoreStoreDirectory().dbDirectory(), - factory: factory, - password: password); - return CoreStoreSembast._(); - } - - @override - Future clear() async { - await _sembastImp!.clear(); - return true; - } - - @override - Future containsKey(String key) => _sembastImp!.containsKey(key); - - @override - Future get(String key) => _sembastImp!.get(key); - - @override - Future getBool(String key) => _sembastImp!.getBool(key); - - @override - Future getDouble(String key) => _sembastImp!.getDouble(key); - - @override - Future getInt(String key) => _sembastImp!.getInt(key); - - @override - Future getString(String key) => _sembastImp!.getString(key); - - @override - Future?> getStringList(String key) => - _sembastImp!.getStringList(key); - - @override - Future remove(String key) => _sembastImp!.remove(key); - - @override - Future setBool(String key, bool value) => - _sembastImp!.setBool(key, value); - - @override - Future setDouble(String key, double value) => - _sembastImp!.setDouble(key, value); - - @override - Future setInt(String key, int value) => _sembastImp!.setInt(key, value); - - @override - Future setString(String key, String value) => - _sembastImp!.setString(key, value); - - @override - Future setStringList(String key, List values) => - _sembastImp!.setStringList(key, values); -} diff --git a/packages/flutter/lib/src/storage/core_store_shared_preferences.dart b/packages/flutter/lib/src/storage/core_store_shared_preferences.dart deleted file mode 100644 index 7fdd98dc2..000000000 --- a/packages/flutter/lib/src/storage/core_store_shared_preferences.dart +++ /dev/null @@ -1,95 +0,0 @@ -part of flutter_parse_sdk_flutter; - -/// A class that implements the `sdk.CoreStore` interface using `SharedPreferences`. -class CoreStoreSharedPreferences implements sdk.CoreStore { - CoreStoreSharedPreferences._internal(this._store); - - static CoreStoreSharedPreferences? _instance; - - /// Returns a new instance of `CoreStoreSharedPrefsImp`. - /// - /// If no instance exists, this function creates a new instance of - /// `SharedPreferences` and passes it as a parameter to the constructor of - /// `CoreStoreSharedPrefsImp`. - static Future getInstance( - {SharedPreferences? store}) async { - if (_instance == null) { - store ??= await SharedPreferences.getInstance(); - _instance = CoreStoreSharedPreferences._internal(store); - } - - return _instance!; - } - - final SharedPreferences _store; - - @override - Future clear() { - return _store.clear(); - } - - @override - Future containsKey(String key) async { - return _store.containsKey(key); - } - - @override - Future get(String key) async { - return _store.get(key); - } - - @override - Future getBool(String key) async { - return _store.getBool(key); - } - - @override - Future getDouble(String key) async { - return _store.getDouble(key); - } - - @override - Future getInt(String key) async { - return _store.getInt(key); - } - - @override - Future getString(String key) async { - return _store.getString(key); - } - - @override - Future?> getStringList(String key) async { - return _store.getStringList(key); - } - - @override - Future remove(String key) async { - return _store.remove(key); - } - - @override - Future setBool(String key, bool value) { - return _store.setBool(key, value); - } - - @override - Future setDouble(String key, double value) { - return _store.setDouble(key, value); - } - - @override - Future setInt(String key, int value) { - return _store.setInt(key, value); - } - - @override - Future setString(String key, String value) { - return _store.setString(key, value); - } - - @override - Future setStringList(String key, List values) { - return _store.setStringList(key, values); - } -} diff --git a/packages/flutter/lib/src/utils/parse_live_grid.dart b/packages/flutter/lib/src/utils/parse_live_grid.dart deleted file mode 100644 index 6b4c91a06..000000000 --- a/packages/flutter/lib/src/utils/parse_live_grid.dart +++ /dev/null @@ -1,198 +0,0 @@ -part of flutter_parse_sdk_flutter; - -/// A widget that displays a live grid of Parse objects. -/// -/// The `ParseLiveGridWidget` is initialized with a `query` that retrieves the -/// objects to display in the grid. The `gridDelegate` is used to specify the -/// layout of the grid, and the `itemBuilder` function is used to specify how -/// each object in the grid should be displayed. -/// -/// The `ParseLiveGridWidget` also provides support for error handling and -/// refreshing the live list of objects. -class ParseLiveGridWidget extends StatefulWidget { - const ParseLiveGridWidget({ - Key? key, - required this.query, - this.gridLoadingElement, - this.queryEmptyElement, - this.duration = const Duration(milliseconds: 300), - this.scrollPhysics, - this.scrollController, - this.scrollDirection = Axis.vertical, - this.padding, - this.primary, - this.reverse = false, - this.childBuilder, - this.shrinkWrap = false, - this.removedItemBuilder, - this.listenOnAllSubItems, - this.listeningIncludes, - this.lazyLoading = true, - this.preloadedColumns, - this.animationController, - this.crossAxisCount = 3, - this.crossAxisSpacing = 5.0, - this.mainAxisSpacing = 5.0, - this.childAspectRatio = 0.80, - }) : super(key: key); - - final sdk.QueryBuilder query; - final Widget? gridLoadingElement; - final Widget? queryEmptyElement; - final Duration duration; - final ScrollPhysics? scrollPhysics; - final ScrollController? scrollController; - - final Axis scrollDirection; - final EdgeInsetsGeometry? padding; - final bool? primary; - final bool reverse; - final bool shrinkWrap; - - final ChildBuilder? childBuilder; - final ChildBuilder? removedItemBuilder; - - final bool? listenOnAllSubItems; - final List? listeningIncludes; - - final bool lazyLoading; - final List? preloadedColumns; - - final AnimationController? animationController; - - final int crossAxisCount; - final double crossAxisSpacing; - final double mainAxisSpacing; - final double childAspectRatio; - - @override - State> createState() => _ParseLiveGridWidgetState(); - - static Widget defaultChildBuilder( - BuildContext context, sdk.ParseLiveListElementSnapshot snapshot) { - Widget child; - if (snapshot.failed) { - child = const Text('something went wrong!'); - } else if (snapshot.hasData) { - child = ListTile( - title: Text( - snapshot.loadedData!.get(sdk.keyVarObjectId)!, - ), - ); - } else { - child = const ListTile( - leading: CircularProgressIndicator(), - ); - } - return child; - } -} - -class _ParseLiveGridWidgetState - extends State> { - sdk.ParseLiveList? _liveGrid; - bool noData = true; - - @override - void initState() { - sdk.ParseLiveList.create( - widget.query, - listenOnAllSubItems: widget.listenOnAllSubItems, - listeningIncludes: widget.listeningIncludes, - lazyLoading: widget.lazyLoading, - preloadedColumns: widget.preloadedColumns, - ).then((sdk.ParseLiveList value) { - if (value.size > 0) { - setState(() { - noData = false; - }); - } else { - setState(() { - noData = true; - }); - } - setState(() { - _liveGrid = value; - _liveGrid!.stream - .listen((sdk.ParseLiveListEvent event) { - if (mounted) { - setState(() {}); - } - }); - }); - }); - - super.initState(); - } - - @override - Widget build(BuildContext context) { - if (_liveGrid == null) { - return widget.gridLoadingElement ?? Container(); - } - if (noData) { - return widget.queryEmptyElement ?? Container(); - } - return buildAnimatedGrid(_liveGrid!); - } - - @override - void setState(VoidCallback fn) { - if (mounted) { - super.setState(fn); - } - } - - Widget buildAnimatedGrid(sdk.ParseLiveList liveGrid) { - Animation boxAnimation; - boxAnimation = Tween( - begin: 0.0, - end: 1.0, - ).animate( - CurvedAnimation( - // TODO: AnimationController is always null, so this breaks - parent: widget.animationController!, - curve: const Interval( - 0, - 0.5, - curve: Curves.decelerate, - ), - ), - ); - return GridView.builder( - reverse: widget.reverse, - padding: widget.padding, - physics: widget.scrollPhysics, - controller: widget.scrollController, - scrollDirection: widget.scrollDirection, - shrinkWrap: widget.shrinkWrap, - itemCount: liveGrid.size, - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: widget.crossAxisCount, - crossAxisSpacing: widget.crossAxisSpacing, - mainAxisSpacing: widget.mainAxisSpacing, - childAspectRatio: widget.childAspectRatio), - itemBuilder: ( - BuildContext context, - int index, - ) { - return ParseLiveListElementWidget( - key: ValueKey(liveGrid.getIdentifier(index)), - stream: () => liveGrid.getAt(index), - loadedData: () => liveGrid.getLoadedAt(index)!, - preLoadedData: () => liveGrid.getPreLoadedAt(index)!, - sizeFactor: boxAnimation, - duration: widget.duration, - childBuilder: - widget.childBuilder ?? ParseLiveGridWidget.defaultChildBuilder, - ); - }); - } - - @override - void dispose() { - _liveGrid?.dispose(); - _liveGrid = null; - super.dispose(); - } -} diff --git a/packages/flutter/lib/src/utils/parse_live_list.dart b/packages/flutter/lib/src/utils/parse_live_list.dart deleted file mode 100644 index 020fcf2ca..000000000 --- a/packages/flutter/lib/src/utils/parse_live_list.dart +++ /dev/null @@ -1,292 +0,0 @@ -part of flutter_parse_sdk_flutter; - -/// The type of function that builds a child widget for a ParseLiveList element. -typedef ChildBuilder = Widget Function( - BuildContext context, sdk.ParseLiveListElementSnapshot snapshot); - -/// The type of function that returns the stream to listen for updates from. -typedef StreamGetter = Stream Function(); - -/// The type of function that returns the loaded data for a ParseLiveList element. -typedef DataGetter = T? Function(); - -/// A widget that displays a live list of Parse objects. -/// -/// The `ParseLiveListWidget` is initialized with a `query` that retrieves the -/// objects to display in the list. The `childBuilder` function is used to -/// specify how each object in the list should be displayed. -/// -/// The `ParseLiveListWidget` also provides support for error handling and -/// lazy loading of objects in the list. -class ParseLiveListWidget extends StatefulWidget { - const ParseLiveListWidget({ - Key? key, - required this.query, - this.listLoadingElement, - this.queryEmptyElement, - this.duration = const Duration(milliseconds: 300), - this.scrollPhysics, - this.scrollController, - this.scrollDirection = Axis.vertical, - this.padding, - this.primary, - this.reverse = false, - this.childBuilder, - this.shrinkWrap = false, - this.removedItemBuilder, - this.listenOnAllSubItems, - this.listeningIncludes, - this.lazyLoading = true, - this.preloadedColumns, - }) : super(key: key); - - final sdk.QueryBuilder query; - final Widget? listLoadingElement; - final Widget? queryEmptyElement; - final Duration duration; - final ScrollPhysics? scrollPhysics; - final ScrollController? scrollController; - - final Axis scrollDirection; - final EdgeInsetsGeometry? padding; - final bool? primary; - final bool reverse; - final bool shrinkWrap; - - final ChildBuilder? childBuilder; - final ChildBuilder? removedItemBuilder; - - final bool? listenOnAllSubItems; - final List? listeningIncludes; - - final bool lazyLoading; - final List? preloadedColumns; - - @override - State> createState() => _ParseLiveListWidgetState(); - - /// The default child builder function used to display a ParseLiveList element. - static Widget defaultChildBuilder( - BuildContext context, sdk.ParseLiveListElementSnapshot snapshot) { - Widget child; - if (snapshot.failed) { - child = const Text('something went wrong!'); - } else if (snapshot.hasData) { - child = ListTile( - title: Text( - snapshot.loadedData?.get(sdk.keyVarObjectId) ?? - 'Missing Data!', - ), - ); - } else { - child = const ListTile( - leading: CircularProgressIndicator(), - ); - } - return child; - } -} - -class _ParseLiveListWidgetState - extends State> { - @override - void initState() { - sdk.ParseLiveList.create( - widget.query, - listenOnAllSubItems: widget.listenOnAllSubItems, - listeningIncludes: widget.listeningIncludes, - lazyLoading: widget.lazyLoading, - preloadedColumns: widget.preloadedColumns, - ).then((sdk.ParseLiveList liveList) { - setState(() { - _noData = liveList.size == 0; - _liveList = liveList; - liveList.stream.listen((sdk.ParseLiveListEvent event) { - final AnimatedListState? animatedListState = - _animatedListKey.currentState; - if (animatedListState != null) { - if (event is sdk.ParseLiveListAddEvent) { - animatedListState.insertItem(event.index, - duration: widget.duration); - - setState(() { - _noData = liveList.size == 0; - }); - } else if (event is sdk.ParseLiveListDeleteEvent) { - animatedListState.removeItem( - event.index, - (BuildContext context, Animation animation) => - ParseLiveListElementWidget( - key: ValueKey( - event.object.get(sdk.keyVarObjectId) ?? - 'removingItem'), - childBuilder: widget.childBuilder ?? - ParseLiveListWidget.defaultChildBuilder, - sizeFactor: animation, - duration: widget.duration, - loadedData: () => event.object as T, - preLoadedData: () => event.object as T, - ), - duration: widget.duration); - setState(() { - _noData = liveList.size == 0; - }); - } - } - }); - }); - }); - - super.initState(); - } - - sdk.ParseLiveList? _liveList; - final GlobalKey _animatedListKey = - GlobalKey(); - bool _noData = true; - - @override - Widget build(BuildContext context) { - final sdk.ParseLiveList? liveList = _liveList; - if (liveList == null) { - return widget.listLoadingElement ?? Container(); - } else { - return Stack( - children: [ - if (widget.queryEmptyElement != null) - AnimatedOpacity( - opacity: _noData ? 1 : 0, - duration: widget.duration, - child: widget.queryEmptyElement, - ), - buildAnimatedList(liveList), - ], - ); - } - } - - @override - void setState(VoidCallback fn) { - if (mounted) { - super.setState(fn); - } - } - - Widget buildAnimatedList(sdk.ParseLiveList liveList) { - return AnimatedList( - key: _animatedListKey, - physics: widget.scrollPhysics, - controller: widget.scrollController, - scrollDirection: widget.scrollDirection, - padding: widget.padding, - primary: widget.primary, - reverse: widget.reverse, - shrinkWrap: widget.shrinkWrap, - initialItemCount: liveList.size, - itemBuilder: - (BuildContext context, int index, Animation animation) { - return ParseLiveListElementWidget( - key: ValueKey(liveList.getIdentifier(index)), - stream: () => liveList.getAt(index), - loadedData: () => liveList.getLoadedAt(index), - preLoadedData: () => liveList.getPreLoadedAt(index), - sizeFactor: animation, - duration: widget.duration, - childBuilder: - widget.childBuilder ?? ParseLiveListWidget.defaultChildBuilder, - ); - }); - } - - @override - void dispose() { - _liveList?.dispose(); - _liveList = null; - super.dispose(); - } -} - -class ParseLiveListElementWidget - extends StatefulWidget { - const ParseLiveListElementWidget( - {Key? key, - this.stream, - this.loadedData, - this.preLoadedData, - required this.sizeFactor, - required this.duration, - required this.childBuilder}) - : super(key: key); - - final StreamGetter? stream; - final DataGetter? loadedData; - final DataGetter? preLoadedData; - final Animation sizeFactor; - final Duration duration; - final ChildBuilder childBuilder; - - @override - State> createState() { - return _ParseLiveListElementWidgetState(); - } -} - -class _ParseLiveListElementWidgetState - extends State> { - late sdk.ParseLiveListElementSnapshot _snapshot; - StreamSubscription? _streamSubscription; - - @override - void initState() { - _snapshot = sdk.ParseLiveListElementSnapshot( - loadedData: widget.loadedData != null ? widget.loadedData!() : null, - preLoadedData: - widget.preLoadedData != null ? widget.preLoadedData!() : null); - if (widget.stream != null) { - _streamSubscription = widget.stream!().listen( - (T data) { - setState(() { - _snapshot = sdk.ParseLiveListElementSnapshot( - loadedData: data, preLoadedData: data); - }); - }, - onError: (Object error) { - if (error is sdk.ParseError) { - setState(() { - _snapshot = sdk.ParseLiveListElementSnapshot(error: error); - }); - } - }, - cancelOnError: false, - ); - } - - super.initState(); - } - - @override - void setState(VoidCallback fn) { - if (mounted) { - super.setState(fn); - } - } - - @override - void dispose() { - _streamSubscription?.cancel(); - _streamSubscription = null; - super.dispose(); - } - - @override - Widget build(BuildContext context) { - final Widget result = SizeTransition( - sizeFactor: widget.sizeFactor, - child: AnimatedSize( - duration: widget.duration, - child: widget.childBuilder(context, _snapshot), - ), - ); - return result; - } -} diff --git a/packages/flutter/pubspec.yaml b/packages/flutter/pubspec.yaml deleted file mode 100644 index 60157ab10..000000000 --- a/packages/flutter/pubspec.yaml +++ /dev/null @@ -1,44 +0,0 @@ -name: parse_server_sdk_flutter -description: The Flutter SDK to connect to Parse Server. Build your apps faster with Parse Platform, the complete application stack. -version: 5.1.0 -homepage: https://github.com/parse-community/Parse-SDK-Flutter - -environment: - sdk: ">=2.18.0 <4.0.0" - -dependencies: - flutter: - sdk: flutter - - parse_server_sdk: ^5.1.1 - # Uncomment for local testing - #parse_server_sdk: - # path: ../dart - - # Networking - dio: ^5.0.1 - connectivity_plus: ^3.0.3 # only used in the flutter part - - #Database - shared_preferences: ^2.0.18 # only used in the flutter part - - # Utils - path_provider: ^2.0.13 # only used in the flutter part - package_info_plus: ^3.0.3 # only used in the flutter part - sembast: ^3.4.0+6 - sembast_web: ^2.1.0+4 - path: ^1.8.2 # required for transitive use only - awesome_notifications: ^0.7.4+1 - -dev_dependencies: - flutter_lints: ^2.0.1 - # Testing - flutter_test: - sdk: flutter - mockito: ^5.3.2 - path_provider_platform_interface: ^2.0.6 - plugin_platform_interface: ^2.1.4 - -screenshots: - - description: Parse Platform logo. - path: screenshots/logo.png \ No newline at end of file diff --git a/packages/flutter/screenshots/logo.png b/packages/flutter/screenshots/logo.png deleted file mode 100644 index 16dad8c70..000000000 Binary files a/packages/flutter/screenshots/logo.png and /dev/null differ diff --git a/packages/flutter/test/parse_client_configuration_test.dart b/packages/flutter/test/parse_client_configuration_test.dart deleted file mode 100644 index 549915bb1..000000000 --- a/packages/flutter/test/parse_client_configuration_test.dart +++ /dev/null @@ -1,34 +0,0 @@ -import 'package:flutter_test/flutter_test.dart'; -import 'package:parse_server_sdk_flutter/parse_server_sdk_flutter.dart'; -import 'package:shared_preferences/shared_preferences.dart'; - -void main() { - SharedPreferences.setMockInitialValues({}); - - test('testBuilder', () async { - // arrange - await Parse().initialize('appId', 'serverUrl', - clientKey: 'clientKey', - liveQueryUrl: 'liveQueryUrl', - appName: 'appName', - appPackageName: 'somePackageName', - appVersion: 'someAppVersion', - masterKey: 'masterKey', - sessionId: 'sessionId', - fileDirectory: 'someDirectory', - debug: true); - - // assert - expect(ParseCoreData().applicationId, 'appId'); - expect(ParseCoreData().serverUrl, 'serverUrl'); - expect(ParseCoreData().clientKey, 'clientKey'); - expect(ParseCoreData().liveQueryURL, 'liveQueryUrl'); - expect(ParseCoreData().appName, 'appName'); - expect(ParseCoreData().appPackageName, 'somePackageName'); - expect(ParseCoreData().appVersion, 'someAppVersion'); - expect(ParseCoreData().masterKey, 'masterKey'); - expect(ParseCoreData().sessionId, 'sessionId'); - expect(ParseCoreData().debug, true); - expect(ParseCoreData().fileDirectory, 'someDirectory'); - }); -} diff --git a/packages/flutter/test/src/storage/core_store_directory_io_test.dart b/packages/flutter/test/src/storage/core_store_directory_io_test.dart deleted file mode 100644 index a2a39a421..000000000 --- a/packages/flutter/test/src/storage/core_store_directory_io_test.dart +++ /dev/null @@ -1,242 +0,0 @@ -@TestOn('dart-vm') -@Timeout.factor(2) - -import 'dart:io'; -import 'dart:math'; - -import 'package:flutter/foundation.dart'; -import 'package:path_provider_platform_interface/path_provider_platform_interface.dart'; -import 'package:plugin_platform_interface/plugin_platform_interface.dart'; -import 'package:path_provider/path_provider.dart' as path_provider; -import 'package:path/path.dart' as path; -import 'package:flutter_test/flutter_test.dart'; -import 'package:parse_server_sdk_flutter/src/storage/core_store_directory_io.dart'; - -void main() { - TestWidgetsFlutterBinding.ensureInitialized(); - group('Core store directory IO', () { - late CoreStoreDirectory coreStoreDirectory; - setUp(() { - PathProviderPlatform.instance = FakePathProviderPlatform(); - coreStoreDirectory = CoreStoreDirectory(); - }); - - test('getTemporaryDirectory', () async { - final result = await path_provider.getTemporaryDirectory(); - expect(result.path, kTemporaryPath); - }); - - test('getLibraryDirectory', () async { - final result = await path_provider.getLibraryDirectory(); - expect(result.path, libraryPath); - }); - - test('getApplicationDocumentsDirectory', () async { - final result = await path_provider.getApplicationDocumentsDirectory(); - expect(result.path, applicationDocumentsPath); - }); - - test('defaultTargetPlatform should equals iOS', () async { - debugDefaultTargetPlatformOverride = TargetPlatform.iOS; - - final platform = defaultTargetPlatform; - expect(platform, equals(TargetPlatform.iOS)); - }); - - test('getTempDirectory() should return kTemporaryPath', () async { - final path = await coreStoreDirectory.getTempDirectory(); - expect(path, kTemporaryPath); - }); - - group('getDatabaseDirectory()', () { - setUp(() { - deleteApplicationDocumentDir(); - deleteLibraryDir(); - }); - - tearDown(() { - deleteApplicationDocumentDir(); - deleteLibraryDir(); - }); - - test( - 'on ios, should copy the db file if exists from the old dir path ' - '(applicationDocumentDirectory) to the new dir path (LibraryDirectory)' - ' and the old db file should be deleted from the old dir path ' - 'then return the new dir path (LibraryDirectory)', () async { - debugDefaultTargetPlatformOverride = TargetPlatform.iOS; - - final oldDBFile = create1MBParseDBFileInAppDocDir(); - final oldDBFileSize = oldDBFile.lengthSync(); - final dbDirectory = await coreStoreDirectory.getDatabaseDirectory(); - expect( - oldDBFile.existsSync(), - isFalse, - reason: 'the old db file should be deleted from app doc dir', - ); - expect( - dbDirectory, - equals(libraryPath), - reason: - 'dbDirectory should be the new db dir path for iOS (LibraryDir)', - ); - - final newDBFilePath = path.join( - dbDirectory, - 'parse', - 'parse.db', - ); - final newDBFile = File(newDBFilePath); - expect(newDBFile.existsSync(), isTrue); - expect( - newDBFile.lengthSync(), - equals(oldDBFileSize), - reason: 'the old and the new coped db file should be the same size', - ); - }); - - test( - 'on ios, if there is no db file in the old dir (applicationDocumentDirectory)' - ' and there is db file in the new dir (LibraryDirectory) ' - 'the (copy) migration should not work and so the getDatabaseDirectory()' - 'should return the new db dir path (LibraryDirectory)', () async { - debugDefaultTargetPlatformOverride = TargetPlatform.iOS; - - final dbFileInNewPath = create1MBParseDBFileInLibraryPath(); - final dbFileSizeBefore = dbFileInNewPath.lengthSync(); - final dbFileLastModifiedBefore = dbFileInNewPath.lastModifiedSync(); - final dbDirectory = await coreStoreDirectory.getDatabaseDirectory(); - expect(dbFileInNewPath.existsSync(), isTrue); - - final dbFileSizeAfter = dbFileInNewPath.lengthSync(); - final dbFileLastModifiedAfter = dbFileInNewPath.lastModifiedSync(); - expect( - dbFileSizeBefore, - equals(dbFileSizeAfter), - reason: 'the db file should be the same', - ); - expect( - dbFileLastModifiedBefore.compareTo(dbFileLastModifiedAfter), - equals(0), // 0 if this DateTime [isAtSameMomentAs] [other] - reason: 'last modified date should not change', - ); - expect( - dbDirectory, - equals(libraryPath), - reason: - 'dbDirectory should be the new db dir path for iOS (LibraryDir)', - ); - }); - - test( - 'on any platform other than iOS, the copy migration algorithm should ' - 'not run and the db file should and will remain in ' - '(applicationDocumentDirectory) and getDatabaseDirectory() should ' - 'return (applicationDocumentDirectory) as db directory', () async { - final targetPlatforms = TargetPlatform.values.toSet(); - targetPlatforms.remove(TargetPlatform.iOS); - - final dbFile = create1MBParseDBFileInAppDocDir(); - final dbFileSizeBefore = dbFile.lengthSync(); - final dbFileLastModifiedBefore = dbFile.lastModifiedSync(); - - for (final platform in targetPlatforms) { - debugDefaultTargetPlatformOverride = platform; - - final dbDirectory = await coreStoreDirectory.getDatabaseDirectory(); - expect(dbFile.existsSync(), isTrue); - - final dbFileSizeAfter = dbFile.lengthSync(); - final dbFileLastModifiedSyncAfter = dbFile.lastModifiedSync(); - expect( - dbFileSizeBefore, - equals(dbFileSizeAfter), - reason: 'the db file should be the same', - ); - expect( - dbFileLastModifiedBefore.compareTo(dbFileLastModifiedSyncAfter), - equals(0), // 0 if this DateTime [isAtSameMomentAs] [other] - reason: 'last modified date should not change', - ); - expect( - dbDirectory, - equals(applicationDocumentsPath), - reason: - 'dbDirectory should point to application Documents Directory', - ); - } - }); - }); - }); -} - -File create1MBParseDBFileInAppDocDir() { - final databaseFilePath = path.join( - applicationDocumentsPath, - 'parse', - 'parse.db', - ); - - return generate1MBFile(databaseFilePath); -} - -File create1MBParseDBFileInLibraryPath() { - final databaseFilePath = path.join( - libraryPath, - 'parse', - 'parse.db', - ); - - return generate1MBFile(databaseFilePath); -} - -File generate1MBFile(String path) { - final dbFile = File(path); - dbFile.createSync(recursive: true); - - const fileSize = 1024 * 1024; // 1 MB - final random = Random(); - final data = List.generate(fileSize, (_) => random.nextInt(256)); - - dbFile.writeAsBytesSync(data, flush: true, mode: FileMode.write); - return dbFile; -} - -void deleteApplicationDocumentDir() { - deleteDirectory(applicationDocumentsPath); -} - -void deleteLibraryDir() { - deleteDirectory(libraryPath); -} - -void deleteDirectory(String path) { - final dir = Directory(path); - if (dir.existsSync()) { - dir.deleteSync(recursive: true); - } -} - -const String kTemporaryPath = "temporaryPath"; -final String libraryPath = path.join(path.current, 'library'); -final String applicationDocumentsPath = - path.join(path.current, 'applicationDocument'); - -class FakePathProviderPlatform extends Fake - with MockPlatformInterfaceMixin - implements PathProviderPlatform { - @override - Future getTemporaryPath() async { - return kTemporaryPath; - } - - @override - Future getLibraryPath() async { - return libraryPath; - } - - @override - Future getApplicationDocumentsPath() async { - return applicationDocumentsPath; - } -} diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb deleted file mode 100644 index 9e26dfeeb..000000000 --- a/res/values/strings_en.arb +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/tools/flutter-dependencies.bat b/tools/flutter-dependencies.bat deleted file mode 100644 index 62b47bf34..000000000 --- a/tools/flutter-dependencies.bat +++ /dev/null @@ -1,8 +0,0 @@ -call flutter config --no-analytics -cd packages/dart -call flutter pub get -cd ../.. -cd packages/flutter -call flutter pub remove parse_server_sdk -call flutter pub add parse_server_sdk --path ../dart -call flutter pub get \ No newline at end of file diff --git a/tools/flutter-dependencies.sh b/tools/flutter-dependencies.sh deleted file mode 100644 index aeddd7539..000000000 --- a/tools/flutter-dependencies.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/sh -# This scrip installs the dependencies of the flutter package. -# parse_server_sdk is set to the relative path. - -cd packages/dart -flutter pub get -cd ../.. -cd packages/flutter -flutter pub remove parse_server_sdk -flutter pub add parse_server_sdk --path ../dart -flutter pub get