This repository has been archived by the owner on Dec 12, 2024. It is now read-only.
generated from TBD54566975/tbd-project-template
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add tbDEX protocol models (#3)
* add hermit * add pubspec * add linter * add change log * add gitignore * add tbdex library * add protocol models * add test data * add offering test * add resource test * update `OfferingData` * fix linter error * update `ResourceKind` enum * update `RfqData` and `CloseData` * make params optional * add `getRfq()` * add `signature` to serializations * refactor variable names * use `verify()` with detached payload and check for signing did * add tests for remaining models * update model tests * use lowercase in exception * add `signature` null check * update tests * call `verify()` on decoded jws * add commas * renaming * check metadata kind * remove just
- Loading branch information
Showing
28 changed files
with
1,960 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# https://dart.dev/guides/libraries/private-files | ||
# Created by `dart pub` | ||
.dart_tool/ | ||
|
||
# Avoid committing pubspec.lock for library packages; see | ||
# https://dart.dev/guides/libraries/private-files#pubspeclock. | ||
pubspec.lock | ||
|
||
# Flutter/Dart/Pub related | ||
**/doc/api/ | ||
**/ios/Flutter/.last_build_id | ||
.dart_tool/ | ||
.flutter-plugins | ||
.flutter-plugins-dependencies | ||
.pub-cache/ | ||
.pub/ | ||
/build/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
## 1.0.0 | ||
|
||
- Initial version. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,191 @@ | ||
|
||
analyzer: | ||
exclude: | ||
- "lib/l10n/**" | ||
|
||
linter: | ||
rules: | ||
- always_declare_return_types | ||
# - always_put_control_body_on_new_line | ||
- always_put_required_named_parameters_first | ||
# - always_specify_types | ||
- always_use_package_imports | ||
- annotate_overrides | ||
- avoid_annotating_with_dynamic | ||
- avoid_bool_literals_in_conditional_expressions | ||
- avoid_catches_without_on_clauses | ||
- avoid_catching_errors | ||
# - avoid_classes_with_only_static_members | ||
- avoid_double_and_int_checks | ||
- avoid_dynamic_calls | ||
- avoid_empty_else | ||
- avoid_equals_and_hash_code_on_mutable_classes | ||
- avoid_escaping_inner_quotes | ||
- avoid_field_initializers_in_const_classes | ||
- avoid_function_literals_in_foreach_calls | ||
- avoid_implementing_value_types | ||
- avoid_init_to_null | ||
- avoid_js_rounded_ints | ||
- avoid_multiple_declarations_per_line | ||
- avoid_null_checks_in_equality_operators | ||
- avoid_positional_boolean_parameters | ||
- avoid_print | ||
- avoid_private_typedef_functions | ||
- avoid_redundant_argument_values | ||
- avoid_relative_lib_imports | ||
- avoid_renaming_method_parameters | ||
- avoid_return_types_on_setters | ||
- avoid_returning_null_for_void | ||
- avoid_returning_this | ||
- avoid_setters_without_getters | ||
- avoid_shadowing_type_parameters | ||
- avoid_single_cascade_in_expression_statements | ||
- avoid_slow_async_io | ||
- avoid_type_to_string | ||
- avoid_types_as_parameter_names | ||
- avoid_types_on_closure_parameters | ||
- avoid_unnecessary_containers | ||
- avoid_unused_constructor_parameters | ||
- avoid_void_async | ||
- avoid_web_libraries_in_flutter | ||
- await_only_futures | ||
- camel_case_extensions | ||
- camel_case_types | ||
- cancel_subscriptions | ||
# - cascade_invocations | ||
- cast_nullable_to_non_nullable | ||
- close_sinks | ||
- comment_references | ||
- constant_identifier_names | ||
- control_flow_in_finally | ||
- curly_braces_in_flow_control_structures | ||
- depend_on_referenced_packages | ||
- deprecated_consistency | ||
# - diagnostic_describe_all_properties | ||
- directives_ordering | ||
- do_not_use_environment | ||
- empty_catches | ||
- empty_constructor_bodies | ||
- empty_statements | ||
- exhaustive_cases | ||
- file_names | ||
- flutter_style_todos | ||
- hash_and_equals | ||
- implementation_imports | ||
- join_return_with_assignment | ||
- leading_newlines_in_multiline_strings | ||
- library_names | ||
- library_prefixes | ||
- library_private_types_in_public_api | ||
# - lines_longer_than_80_chars | ||
- literal_only_boolean_expressions | ||
- missing_whitespace_between_adjacent_strings | ||
- no_adjacent_strings_in_list | ||
- no_default_cases | ||
- no_duplicate_case_values | ||
- no_logic_in_create_state | ||
- no_runtimeType_toString | ||
- non_constant_identifier_names | ||
- noop_primitive_operations | ||
- null_check_on_nullable_type_parameter | ||
- null_closures | ||
- omit_local_variable_types | ||
- one_member_abstracts | ||
- only_throw_errors | ||
- overridden_fields | ||
- package_api_docs | ||
- package_names | ||
- package_prefixed_library_names | ||
- parameter_assignments | ||
- prefer_adjacent_string_concatenation | ||
- prefer_asserts_in_initializer_lists | ||
- prefer_asserts_with_message | ||
- prefer_collection_literals | ||
- prefer_conditional_assignment | ||
# - prefer_const_constructors //TODO: remove in future PR | ||
- prefer_const_constructors_in_immutables | ||
- prefer_const_declarations | ||
- prefer_const_literals_to_create_immutables | ||
# - prefer_constructors_over_static_methods | ||
- prefer_contains | ||
# - prefer_double_quotes | ||
- prefer_equal_for_default_values | ||
# - prefer_expression_function_bodies | ||
- prefer_final_fields | ||
- prefer_final_in_for_each | ||
# - prefer_final_locals | ||
# - prefer_final_parameters | ||
- prefer_for_elements_to_map_fromIterable | ||
- prefer_foreach | ||
- prefer_function_declarations_over_variables | ||
- prefer_generic_function_type_aliases | ||
# - prefer_if_elements_to_conditional_expressions | ||
- prefer_if_null_operators | ||
- prefer_initializing_formals | ||
- prefer_inlined_adds | ||
- prefer_int_literals | ||
- prefer_interpolation_to_compose_strings | ||
- prefer_is_empty | ||
- prefer_is_not_empty | ||
- prefer_is_not_operator | ||
- prefer_iterable_whereType | ||
# - prefer_mixin | ||
- prefer_null_aware_method_calls | ||
- prefer_null_aware_operators | ||
# - prefer_relative_imports | ||
- prefer_single_quotes | ||
- prefer_spread_collections | ||
- prefer_typing_uninitialized_variables | ||
- prefer_void_to_null | ||
- provide_deprecation_message | ||
# - public_member_api_docs | ||
- recursive_getters | ||
- require_trailing_commas | ||
- sized_box_for_whitespace | ||
- slash_for_doc_comments | ||
- sort_child_properties_last | ||
# - sort_constructors_first | ||
# - sort_pub_dependencies | ||
- sort_unnamed_constructors_first | ||
- test_types_in_equals | ||
- throw_in_finally | ||
- tighten_type_of_initializing_formals | ||
# - type_annotate_public_apis | ||
- type_init_formals | ||
- unawaited_futures | ||
- unnecessary_await_in_return | ||
- unnecessary_brace_in_string_interps | ||
- unnecessary_const | ||
# - unnecessary_final | ||
- unnecessary_getters_setters | ||
- unnecessary_lambdas | ||
- unnecessary_new | ||
- unnecessary_null_aware_assignments | ||
- unnecessary_null_checks | ||
- unnecessary_null_in_if_null_operators | ||
- unnecessary_nullable_for_final_variable_declarations | ||
- unnecessary_overrides | ||
- unnecessary_parenthesis | ||
- unnecessary_raw_strings | ||
- unnecessary_statements | ||
- unnecessary_string_escapes | ||
- unnecessary_string_interpolations | ||
- unnecessary_this | ||
- unrelated_type_equality_checks | ||
- unsafe_html | ||
- use_build_context_synchronously | ||
- use_full_hex_values_for_flutter_colors | ||
- use_function_type_syntax_for_parameters | ||
- use_if_null_to_convert_nulls_to_bools | ||
- use_is_even_rather_than_modulo | ||
- use_key_in_widget_constructors | ||
- use_late_for_private_fields_and_variables | ||
- use_named_constants | ||
- use_raw_strings | ||
- use_rethrow_when_possible | ||
- use_setters_to_change_properties | ||
- use_string_buffers | ||
- use_test_throws_matchers | ||
- use_to_and_as_if_applicable | ||
- valid_regexps | ||
- void_checks |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# Hermit environment | ||
|
||
This is a [Hermit](https://github.com/cashapp/hermit) bin directory. | ||
|
||
The symlinks in this directory are managed by Hermit and will automatically | ||
download and install Hermit itself as well as packages. These packages are | ||
local to this environment. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
#!/bin/bash | ||
# This file must be used with "source bin/activate-hermit" from bash or zsh. | ||
# You cannot run it directly | ||
# | ||
# THIS FILE IS GENERATED; DO NOT MODIFY | ||
|
||
if [ "${BASH_SOURCE-}" = "$0" ]; then | ||
echo "You must source this script: \$ source $0" >&2 | ||
exit 33 | ||
fi | ||
|
||
BIN_DIR="$(dirname "${BASH_SOURCE[0]:-${(%):-%x}}")" | ||
if "${BIN_DIR}/hermit" noop > /dev/null; then | ||
eval "$("${BIN_DIR}/hermit" activate "${BIN_DIR}/..")" | ||
|
||
if [ -n "${BASH-}" ] || [ -n "${ZSH_VERSION-}" ]; then | ||
hash -r 2>/dev/null | ||
fi | ||
|
||
echo "Hermit environment $("${HERMIT_ENV}"/bin/hermit env HERMIT_ENV) activated" | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
#!/bin/bash | ||
# | ||
# THIS FILE IS GENERATED; DO NOT MODIFY | ||
|
||
set -eo pipefail | ||
|
||
export HERMIT_USER_HOME=~ | ||
|
||
if [ -z "${HERMIT_STATE_DIR}" ]; then | ||
case "$(uname -s)" in | ||
Darwin) | ||
export HERMIT_STATE_DIR="${HERMIT_USER_HOME}/Library/Caches/hermit" | ||
;; | ||
Linux) | ||
export HERMIT_STATE_DIR="${XDG_CACHE_HOME:-${HERMIT_USER_HOME}/.cache}/hermit" | ||
;; | ||
esac | ||
fi | ||
|
||
export HERMIT_DIST_URL="${HERMIT_DIST_URL:-https://github.com/cashapp/hermit/releases/download/stable}" | ||
HERMIT_CHANNEL="$(basename "${HERMIT_DIST_URL}")" | ||
export HERMIT_CHANNEL | ||
export HERMIT_EXE=${HERMIT_EXE:-${HERMIT_STATE_DIR}/pkg/hermit@${HERMIT_CHANNEL}/hermit} | ||
|
||
if [ ! -x "${HERMIT_EXE}" ]; then | ||
echo "Bootstrapping ${HERMIT_EXE} from ${HERMIT_DIST_URL}" 1>&2 | ||
INSTALL_SCRIPT="$(mktemp)" | ||
# This value must match that of the install script | ||
INSTALL_SCRIPT_SHA256="180e997dd837f839a3072a5e2f558619b6d12555cd5452d3ab19d87720704e38" | ||
if [ "${INSTALL_SCRIPT_SHA256}" = "BYPASS" ]; then | ||
curl -fsSL "${HERMIT_DIST_URL}/install.sh" -o "${INSTALL_SCRIPT}" | ||
else | ||
# Install script is versioned by its sha256sum value | ||
curl -fsSL "${HERMIT_DIST_URL}/install-${INSTALL_SCRIPT_SHA256}.sh" -o "${INSTALL_SCRIPT}" | ||
# Verify install script's sha256sum | ||
openssl dgst -sha256 "${INSTALL_SCRIPT}" | \ | ||
awk -v EXPECTED="$INSTALL_SCRIPT_SHA256" \ | ||
'$2!=EXPECTED {print "Install script sha256 " $2 " does not match " EXPECTED; exit 1}' | ||
fi | ||
/bin/bash "${INSTALL_SCRIPT}" 1>&2 | ||
fi | ||
|
||
exec "${HERMIT_EXE}" --level=fatal exec "$0" -- "$@" |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
import 'package:tbdex/src/protocol/models/message.dart'; | ||
import 'package:tbdex/src/protocol/models/message_data.dart'; | ||
import 'package:typeid/typeid.dart'; | ||
|
||
class Close extends Message { | ||
@override | ||
final MessageMetadata metadata; | ||
@override | ||
final CloseData data; | ||
|
||
@override | ||
Set<MessageKind> get validNext => {}; | ||
|
||
Close._({ | ||
required this.metadata, | ||
required this.data, | ||
String? signature, | ||
}) : super() { | ||
this.signature = signature; | ||
} | ||
|
||
static Close create( | ||
String to, | ||
String from, | ||
String exchangeId, | ||
CloseData data, { | ||
String? externalId, | ||
String protocol = '1.0', | ||
}) { | ||
final now = DateTime.now().toIso8601String(); | ||
final metadata = MessageMetadata( | ||
kind: MessageKind.close, | ||
to: to, | ||
from: from, | ||
id: TypeId.generate(MessageKind.close.name), | ||
exchangeId: exchangeId, | ||
createdAt: now, | ||
protocol: protocol, | ||
externalId: externalId, | ||
); | ||
|
||
return Close._( | ||
metadata: metadata, | ||
data: data, | ||
); | ||
} | ||
|
||
factory Close.fromJson(Map<String, dynamic> json) { | ||
return Close._( | ||
metadata: MessageMetadata.fromJson(json['metadata']), | ||
data: CloseData.fromJson(json['data']), | ||
signature: json['signature'], | ||
); | ||
} | ||
|
||
Map<String, dynamic> toJson() { | ||
return { | ||
'metadata': metadata.toJson(), | ||
'data': data.toJson(), | ||
'signature': signature, | ||
}; | ||
} | ||
} |
Oops, something went wrong.