https://github.com/polywrap/client-readiness
The current state of all Polywrap Clients in the ecosystem.
https://github.com/polywrap/client-readiness
Last synced: about 21 hours ago
JSON representation
The current state of all Polywrap Clients in the ecosystem.
- Host: GitHub
- URL: https://github.com/polywrap/client-readiness
- Owner: polywrap
- Created: 2023-04-04T15:44:57.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-08-18T15:04:41.000Z (almost 3 years ago)
- Last Synced: 2025-02-21T11:45:30.749Z (over 1 year ago)
- Language: Rust
- Homepage:
- Size: 831 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# Client Readiness Checklist
A "readiness checklist" for [all Polywrap clients](https://docs.polywrap.io/clients) to adhere to.
## Checklist
| Feature :heavy_check_mark: | Scenario :thought_balloon: | Required :question: | Spec :clipboard: | JS :scroll: | KT :robot: | Swift :eagle: | RS :crab: | PY :snake: |
|----------------------------------------------------------------------------------------------|------------------------------------------------|---------------------|--------------------------------------------------------|-------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|
| **`wrap://` URIs** | | | | | | | | |
| | Create & sanitize a `wrap://` URI | Yes | [:mag:](./specs/uri.yaml) | [:heavy_check_mark:](./clients/js/src/features/uri.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/uri/uri.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/Uri.swift) | [:heavy_check_mark:](./clients/rs/src/features/uri.rs) | [:heavy_check_mark:](./clients/py/src/features/uri.py) |
| **Client Configuration** | | | | | | | | |
| | Add a wrap package | Yes | [:mag:](./specs/config_embed_wrap_package.yaml) | [:heavy_check_mark:](./clients/js/src/features/config_embed_wrap_package.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/config/EmbedWrapPackage.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/ConfigEmbedWrapPackage.swift) | [:heavy_check_mark:](./clients/rs/src/features/config_embed_wrap_package.rs) | [:heavy_check_mark:](./clients/py/src/features/config_embed_wrap_package.py) |
| | Add a plugin package | Yes | [:mag:](./specs/config_plugin_package.yaml) | [:heavy_check_mark:](./clients/js/src/features/config_plugin_package.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/config/PluginPackage.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/ConfigPluginPackage.swift) | [:heavy_check_mark:](./clients/rs/src/features/config_plugin_package.rs) | [:heavy_check_mark:](./clients/py/src/features/config_plugin_package.py) |
| | Add a plugin instance | Yes | [:mag:](./specs/config_plugin_instance.yaml) | [:heavy_check_mark:](./clients/js/src/features/config_plugin_instance.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/config/PluginInstance.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/ConfigPluginInstance.swift) | [:heavy_check_mark:](./clients/rs/src/features/config_plugin_instance.rs) | [:heavy_check_mark:](./clients/py/src/features/config_plugin_instance.py) |
| | Add a URI redirect | Yes | [:mag:](./specs/config_uri_redirect.yaml) | [:heavy_check_mark:](./clients/js/src/features/config_uri_redirect.ts) | [:x:](./clients/kotlin/src/main/kotlin/features/config/UriRedirect.kt) | [:x:](./clients/swift/Sources/Readiness/Features/ConfigUriRedirect.swift) | [:heavy_check_mark:](./clients/rs/src/features/config_uri_redirect.rs) | [:heavy_check_mark:](./clients/py/src/features/config_uri_redirect.py) |
| | Add env variables | Yes | [:mag:](./specs/config_env_variables.yaml) | [:heavy_check_mark:](./clients/js/src/features/config_env_variables.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/config/EnvVariables.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/ConfigEnvVariables.swift) | [:heavy_check_mark:](./clients/rs/src/features/config_env_variables.rs) | [:heavy_check_mark:](./clients/py/src/features/config_env_variables.py) |
| | Add interface implementations | Yes | [:mag:](./specs/config_interface_implementations.yaml) | [:heavy_check_mark:](./clients/js/src/features/config_interface_implementations.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/config/InterfaceImplementations.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/ConfigInterfaceImplementations.swift) | [:heavy_check_mark:](./clients/rs/src/features/config_interface_implementations.rs) | [:heavy_check_mark:](./clients/py/src/features/config_interface_implementations.py) |
| | Add resolver | Yes | [:mag:](./specs/config_resolver.yaml) | [:heavy_check_mark:](./clients/js/src/features/config_resolver.ts) | [:x:](./clients/kotlin/src/main/kotlin/features/config/Resolver.kt) | [:x:](./clients/swift/Sources/Readiness/Features/ConfigResolver.swift) | [:heavy_check_mark:](./clients/rs/src/features/config_resolver.rs) | [:heavy_check_mark:](./clients/py/src/features/config_resolver.py) |
| | Add resolver ext | Yes | [:mag:](./specs/config_resolver_ext.yaml) | [:heavy_check_mark:](./clients/js/src/features/config_resolver_ext.ts) | [:x:](./clients/kotlin/src/main/kotlin/features/config/ResolverExt.kt) | [:x:](./clients/swift/Sources/Readiness/Features/ConfigResolverExt.swift) | [:heavy_check_mark:](./clients/rs/src/features/config_resolver_ext.rs) | [:heavy_check_mark:](./clients/py/src/features/config_resolver_ext.py) |
| **Invocation** | | | | | | | | |
| | Invoke a wrap function
(Wasm Runtime v0.1) | Yes | [:mag:](./specs/invoke_wrap_wasm_v0_1.yaml) | [:heavy_check_mark:](./clients/js/src/features/invoke_wrap_wasm_v0_1.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/invoke/WrapWasmV01.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/InvokeWrapWasmV0_1.swift) | [:heavy_check_mark:](./clients/rs/src/features/invoke_wrap_wasm_v0_1.rs) | [:heavy_check_mark:](./clients/py/src/features/invoke_wrap_wasm_v0_1.py) |
| | Invoke a plugin function | Yes | [:mag:](./specs/invoke_plugin.yaml) | [:heavy_check_mark:](./clients/js/src/features/invoke_plugin.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/invoke/Plugin.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/InvokePlugin.swift) | [:heavy_check_mark:](./clients/rs/src/features/invoke_plugin.rs) | [:heavy_check_mark:](./clients/py/src/features/invoke_plugin.py) |
| | Subinvoke: `wrap -> wrap` | Yes | [:mag:](./specs/subinvoke_wrap_wrap.yaml) | [:heavy_check_mark:](./clients/js/src/features/subinvoke_wrap_wrap.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/subinvoke/WrapWrap.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/SubinvokeWrapWrap.swift) | [:heavy_check_mark:](./clients/rs/src/features/subinvoke_wrap_wrap.rs) | [:heavy_check_mark:](./clients/py/src/features/subinvoke_wrap_wrap.py) |
| | Subinvoke: `wrap -> plugin` | Yes | [:mag:](./specs/subinvoke_wrap_plugin.yaml) | [:heavy_check_mark:](./clients/js/src/features/subinvoke_wrap_plugin.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/subinvoke/WrapPlugin.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/SubinvokeWrapPlugin.swift) | [:heavy_check_mark:](./clients/rs/src/features/subinvoke_wrap_plugin.rs) | [:heavy_check_mark:](./clients/py/src/features/subinvoke_wrap_plugin.py) |
| | Subinvoke: `plugin -> wrap` | Yes | [:mag:](./specs/subinvoke_plugin_wrap.yaml) | [:heavy_check_mark:](./clients/js/src/features/subinvoke_plugin_wrap.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/subinvoke/PluginWrap.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/SubinvokePluginWrap.swift) | [:heavy_check_mark:](./clients/rs/src/features/subinvoke_plugin_wrap.rs) | [:heavy_check_mark:](./clients/py/src/features/subinvoke_plugin_wrap.py) |
| **`wrap://` Resolution** | | | | | | | | |
| | Resolve a wrap package | Yes | [:mag:](./specs/resolve_package.yaml) | [:heavy_check_mark:](./clients/js/src/features/resolve_package.ts) | [:x:](./clients/kotlin/src/main/kotlin/features/resolve/Package.kt) | :x: | [:heavy_check_mark:](./clients/rs/src/features/resolve_package.rs) | [:heavy_check_mark:](./clients/py/src/features/resolve_package.py) |
| | Resolve a wrap instance | Yes | [:mag:](./specs/resolve_instance.yaml) | [:heavy_check_mark:](./clients/js/src/features/resolve_instance.ts) | [:x:](./clients/kotlin/src/main/kotlin/features/resolve/Instance.kt) | :x: | [:heavy_check_mark:](./clients/rs/src/features/resolve_instance.rs) | [:heavy_check_mark:](./clients/py/src/features/resolve_instance.py) |
| | Resolve a redirect | Yes | [:mag:](./specs/resolve_redirect.yaml) | [:heavy_check_mark:](./clients/js/src/features/resolve_redirect.ts) | [:x:](./clients/kotlin/src/main/kotlin/features/resolve/Redirect.kt) | :x: | [:heavy_check_mark:](./clients/rs/src/features/resolve_redirect.rs) | [:heavy_check_mark:](./clients/py/src/features/resolve_redirect.py) |
| | Resolve `wrap://http/` &
`wrap://https/` | Yes | [:mag:](./specs/resolve_http.yaml) | [:heavy_check_mark:](./clients/js/src/features/resolve_http.ts) | [:x:](./clients/kotlin/src/main/kotlin/features/resolve/Http.kt) | :x: | [:heavy_check_mark:](./clients/rs/src/features/resolve_http.rs) | [:heavy_check_mark:](./clients/py/src/features/resolve_http.py) |
| | Resolve `wrap://file/` &
`wrap://fs/` | Yes | [:mag:](./specs/resolve_file.yaml) | [:heavy_check_mark:](./clients/js/src/features/resolve_file.ts) | [:x:](./clients/kotlin/src/main/kotlin/features/resolve/File.kt) | :x: | [:heavy_check_mark:](./clients/rs/src/features/resolve_file.rs) | [:heavy_check_mark:](./clients/py/src/features/resolve_file.py) |
| | Resolve `wrap://ipfs/` | Yes | [:mag:](./specs/resolve_ipfs.yaml) | [:heavy_check_mark:](./clients/js/src/features/resolve_ipfs.ts) | [:x:](./clients/kotlin/src/main/kotlin/features/resolve/Ipfs.kt) | :x: | [:heavy_check_mark:](./clients/rs/src/features/resolve_ipfs.rs) | [:heavy_check_mark:](./clients/py/src/features/resolve_ipfs.py) |
| | Resolve `wrap://ens/` contenthash | No | [:mag:](./specs/resolve_ens_contenthash.yaml) | [:heavy_check_mark:](./clients/js/src/features/resolve_ens_contenthash.ts) | [:x:](./clients/kotlin/src/main/kotlin/features/resolve/EnsContentHash.kt) | :x: | [:heavy_check_mark:](./clients/rs/src/features/resolve_ens_contenthash.rs) | [:heavy_check_mark:](./clients/py/src/features/resolve_ens_contenthash.py) |
| | Resolve `wrap://ens/` text-records | No | [:mag:](./specs/resolve_ens_text_record.yaml) | [:heavy_check_mark:](./clients/js/src/features/resolve_ens_text_record.ts) | [:x:](./clients/kotlin/src/main/kotlin/features/resolve/EnsTextRecord.kt) | :x: | [:heavy_check_mark:](./clients/rs/src/features/resolve_ens_text_record.rs) | [:heavy_check_mark:](./clients/py/src/features/resolve_ens_text_record.py) |
| | Resolve `wrap://wrapscan.io/` | No | [:mag:](./specs/resolve_wrapscan.yaml) | [:heavy_check_mark:](./clients/js/src/features/resolve_wrapscan.ts) | :x: | :x: | [:heavy_check_mark:](./clients/rs/src/features/resolve_wrapscan.rs) | [:heavy_check_mark:](./clients/py/src/features/resolve_wrapscan.py) |
| **[WRAP Features](https://github.com/polywrap/wrap-test-harness/tree/master/cases)** | | | | | | | | |
| | Wrap `Env` Variables | Yes | [:mag:](./specs/wrap_feature_env_vars.yaml) | [:heavy_check_mark:](./clients/js/src/features/wrap_feature_env_vars.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/wrapFeature/EnvVars.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/WrapFeatureEnvVars.swift) | [:heavy_check_mark:](./clients/rs/src/features/wrap_feature_env_vars.rs) | [:heavy_check_mark:](./clients/py/src/features/wrap_feature_env_vars.py) |
| | Wrap Interface Invocations | Yes | [:mag:](./specs/wrap_feature_interface_invoke.yaml) | [:heavy_check_mark:](./clients/js/src/features/wrap_feature_interface_invoke.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/wrapFeature/InterfaceInvoke.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/WrapFeatureInterfaceInvoke.swift) | [:heavy_check_mark:](./clients/rs/src/features/wrap_feature_interface_invoke.rs) | [:heavy_check_mark:](./clients/py/src/features/wrap_feature_interface_invoke.py) |
| **[WRAP ABI Type Support](https://github.com/polywrap/wrap-test-harness/tree/master/cases)** | | | | | | | | |
| | `(U)Int(8\|16\|32)` | Yes | [:mag:](./specs/wrap_type_ints.yaml) | [:heavy_check_mark:](./clients/js/src/features/wrap_type_ints.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/wrapType/Ints.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/WrapTypeInts.swift) | [:heavy_check_mark:](./clients/rs/src/features/wrap_type_ints.rs) | [:heavy_check_mark:](./clients/py/src/features/wrap_type_ints.py) |
| | `String` | Yes | TODO | TODO | TODO | TODO | TODO | TODO |
| | `Bytes` | Yes | [:mag:](./specs/wrap_type_bytes.yaml) | [:heavy_check_mark:](./clients/js/src/features/wrap_type_bytes.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/wrapType/Bytes.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/WrapTypeBytes.swift) | [:heavy_check_mark:](./clients/rs/src/features/wrap_type_bytes.rs) | [:heavy_check_mark:](./clients/py/src/features/wrap_type_bytes.py) |
| | `Object` | Yes | [:mag:](./specs/wrap_type_object.yaml) | [:heavy_check_mark:](./clients/js/src/features/wrap_type_object.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/wrapType/Object.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/WrapTypeObject.swift) | [:yellow_circle:](./clients/rs/src/features/wrap_type_object.rs) | [:heavy_check_mark:](./clients/py/src/features/wrap_type_object.py) |
| | `Enum` | Yes | [:mag:](./specs/wrap_type_enum.yaml) | [:heavy_check_mark:](./clients/js/src/features/wrap_type_enum.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/wrapType/Enum.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/WrapTypeEnum.swift) | [:heavy_check_mark:](./clients/rs/src/features/wrap_type_enum.rs) | [:heavy_check_mark:](./clients/py/src/features/wrap_type_enum.py) |
| | `BigInt` | Yes | [:mag:](./specs/wrap_type_bigint.yaml) | [:heavy_check_mark:](./clients/js/src/features/wrap_type_bigint.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/wrapType/BigInt.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/WrapTypeBigint.swift) | [:heavy_check_mark:](./clients/rs/src/features/wrap_type_bigint.rs) | [:heavy_check_mark:](./clients/py/src/features/wrap_type_bigint.py) |
| | `BigNumber` | Yes | [:mag:](./specs/wrap_type_bignumber.yaml) | [:heavy_check_mark:](./clients/js/src/features/wrap_type_bignumber.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/wrapType/BigNumber.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/WrapTypeBignumber.swift) | [:heavy_check_mark:](./clients/rs/src/features/wrap_type_bignumber.rs) | [:heavy_check_mark:](./clients/py/src/features/wrap_type_bignumber.py) |
| | `JSON` | Yes | [:mag:](./specs/wrap_type_json.yaml) | [:heavy_check_mark:](./clients/js/src/features/wrap_type_json.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/wrapType/Json.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/WrapTypeJson.swift) | [:yellow_circle:](./clients/rs/src/features/wrap_type_json.rs) | [:heavy_check_mark:](./clients/py/src/features/wrap_type_json.py) |
| | `Array` | Yes | TODO | TODO | TODO | TODO | TODO | TODO |
| | `Map` | Yes | [:mag:](./specs/wrap_type_map.yaml) | [:heavy_check_mark:](./clients/js/src/features/wrap_type_map.ts) | [:heavy_check_mark:](./clients/kotlin/src/main/kotlin/features/wrapType/Map.kt) | [:heavy_check_mark:](./clients/swift/Sources/Readiness/Features/WrapTypeMap.swift) | [:yellow_circle:](./clients/rs/src/features/wrap_type_map.rs) | [:heavy_check_mark:](./clients/py/src/features/wrap_type_map.py) |
| **Error handling** | | | | | | | | |
| | Invoke | Yes | [:mag:](./specs/error_invoke.yaml) | [:heavy_check_mark:](./clients/js/src/features/error_invoke.ts) | :x: | :x: | [:heavy_check_mark:](./clients/rs/src/features/error_invoke.rs) | [:heavy_check_mark:](./clients/py/src/features/error_invoke.py) |
| | Subinvoke | Yes | [:mag:](./specs/error_subinvoke.yaml) | [:heavy_check_mark:](./clients/js/src/features/error_subinvoke.ts) | :x: | :x: | [:heavy_check_mark:](./clients/rs/src/features/error_subinvoke.rs) | [:heavy_check_mark:](./clients/py/src/features/error_subinvoke.py) |
| | Resolution | Yes | [:mag:](./specs/error_resolve_uri.yaml) | [:heavy_check_mark:](./clients/js/src/features/error_resolve_uri.ts) | :x: | :x: | [:heavy_check_mark:](./clients/rs/src/features/error_resolve_uri.rs) | [:heavy_check_mark:](./clients/py/src/features/error_resolve_uri.py) |
## Build & Contribute
### Prerequisites
- [NVM](https://github.com/nvm-sh/nvm)
- [Curl](https://curl.se/)
- [Yarn](https://yarnpkg.com/)
### Install
```bash
./install.sh
```
### Usage
```bash
./run.sh [implementation] [feature]
```
- implementation (e.g: js|rs|py)
- feature (e.g: resolve_http|uri) -> check [specs](./specs) for all features