diff --git a/.github/composite_actions/log_cw_metric/dist/main.cjs b/.github/composite_actions/log_cw_metric/dist/main.cjs index 46ee1b4ef91..148cef3ac2a 100644 --- a/.github/composite_actions/log_cw_metric/dist/main.cjs +++ b/.github/composite_actions/log_cw_metric/dist/main.cjs @@ -7544,7 +7544,7 @@ throw A.wrapException(A.Exception_Exception("test-type input of " + testType + " must be one of: canary, e2e, unit")); workingDirectory = A.Core_getRequiredInput(A._asJSObject(t1.core), "working-directory"); t3 = type$.String; - category = A.IterableExtension_firstWhereOrNull(A._setArrayType(["canaries", "analytics", "api", "auth", "authenticator", "core", "datastore", "db_common", "push", "secure_storage", "storage", "aws_common", "aws_signature_v4", "smithy", "worker_bee", "amplify_flutter", "amplify_foundation_dart_bridge", "amplify_foundation_dart", "amplify_lints", "amplify_native_legacy_wrapper", "pub_server"], t2), B.JSString_methods.get$contains(workingDirectory), t3); + category = A.IterableExtension_firstWhereOrNull(A._setArrayType(["canaries", "analytics", "api", "auth", "authenticator", "core", "datastore", "db_common", "push", "secure_storage", "storage", "aws_common", "aws_signature_v4", "smithy", "worker_bee", "amplify_flutter", "amplify_foundation_dart_bridge", "amplify_foundation_dart", "amplify_lints", "amplify_native_legacy_wrapper", "kinesis", "pub_server"], t2), B.JSString_methods.get$contains(workingDirectory), t3); if (category == null) throw A.wrapException(A.Exception_Exception("WorkingDirectory input of " + workingDirectory + " must contain a valid category.")); t4 = A._asString(A._asJSObject(A._asJSObject(t1.github).context).workflow); @@ -7702,7 +7702,7 @@ }, IterableExtension_firstWhereOrNull(_this, test, $T) { var _i, element; - for (_i = 0; _i < 21; ++_i) { + for (_i = 0; _i < 22; ++_i) { element = _this[_i]; if (test.call$1(element)) return element; diff --git a/.github/composite_actions/log_cw_metric/dist/main.cjs.map b/.github/composite_actions/log_cw_metric/dist/main.cjs.map index e5bfaed2c7f..86664b70112 100644 --- a/.github/composite_actions/log_cw_metric/dist/main.cjs.map +++ b/.github/composite_actions/log_cw_metric/dist/main.cjs.map @@ -5,12 +5,12 @@ "sourceRoot": "", "sources": ["org-dartlang-sdk:///lib/_internal/js_runtime/lib/interceptors.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/native_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_array.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_string.dart","org-dartlang-sdk:///lib/internal/cast.dart","org-dartlang-sdk:///lib/internal/errors.dart","org-dartlang-sdk:///lib/internal/internal.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/internal_patch.dart","org-dartlang-sdk:///lib/internal/iterable.dart","org-dartlang-sdk:///lib/core/errors.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_names.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/rti.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/records.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/regexp_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/string_helper.dart","org-dartlang-sdk:///lib/core/iterable.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/core_patch.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/native_typed_data.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/synced/recipe_syntax.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/async_patch.dart","org-dartlang-sdk:///lib/async/future_impl.dart","org-dartlang-sdk:///lib/async/zone.dart","org-dartlang-sdk:///lib/async/async_error.dart","org-dartlang-sdk:///lib/async/future.dart","org-dartlang-sdk:///lib/async/schedule_microtask.dart","org-dartlang-sdk:///lib/async/stream.dart","org-dartlang-sdk:///lib/async/stream_impl.dart","org-dartlang-sdk:///lib/async/stream_controller.dart","org-dartlang-sdk:///lib/async/zone_api.dart","org-dartlang-sdk:///lib/async/zone_root.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/collection_patch.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/linked_hash_map.dart","org-dartlang-sdk:///lib/collection/hash_map.dart","org-dartlang-sdk:///lib/collection/maps.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/convert_patch.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/convert_utf_patch.dart","org-dartlang-sdk:///lib/convert/base64.dart","org-dartlang-sdk:///lib/convert/utf.dart","org-dartlang-sdk:///lib/core/exceptions.dart","org-dartlang-sdk:///lib/core/map.dart","org-dartlang-sdk:///lib/core/object.dart","org-dartlang-sdk:///lib/core/uri.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_allow_interop_patch.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/js_util_patch.dart","/amplify-flutter/actions/lib/actions.dart","/amplify-flutter/actions/lib/src/node/child_process.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/js_interop_patch.dart","/amplify-flutter/actions/lib/src/util.dart","/amplify-flutter/packages/aws_common/lib/src/util/stream.dart","/.pub-cache/hosted/pub.dev/path-1.9.1/lib/src/context.dart","/.pub-cache/hosted/pub.dev/path-1.9.1/lib/src/parsed_path.dart","/.pub-cache/hosted/pub.dev/path-1.9.1/lib/src/path_exception.dart","/.pub-cache/hosted/pub.dev/path-1.9.1/lib/src/style.dart","/.pub-cache/hosted/pub.dev/source_map_stack_trace-2.1.2/lib/source_map_stack_trace.dart","/.pub-cache/hosted/pub.dev/stack_trace-1.12.1/lib/src/chain.dart","/.pub-cache/hosted/pub.dev/source_maps-0.10.13/lib/parser.dart","/.pub-cache/hosted/pub.dev/source_maps-0.10.13/lib/src/source_map_span.dart","/.pub-cache/hosted/pub.dev/source_maps-0.10.13/lib/src/vlq.dart","/.pub-cache/hosted/pub.dev/source_span-1.10.2/lib/src/location.dart","/.pub-cache/hosted/pub.dev/stack_trace-1.12.1/lib/src/stack_zone_specification.dart","org-dartlang-sdk:///lib/async/zone_specification.dart","/.pub-cache/hosted/pub.dev/stack_trace-1.12.1/lib/src/frame.dart","/.pub-cache/hosted/pub.dev/stack_trace-1.12.1/lib/src/unparsed_frame.dart","/.pub-cache/hosted/pub.dev/stack_trace-1.12.1/lib/src/trace.dart","/.pub-cache/hosted/pub.dev/stack_trace-1.12.1/lib/src/lazy_trace.dart","/amplify-flutter/actions/bin/log_cw_metric.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_primitives.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/late_helper.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/math_patch.dart","/amplify-flutter/actions/lib/src/node/actions/core.dart","/amplify-flutter/actions/lib/src/node/process.dart","org-dartlang-sdk:///lib/_internal/js_shared/lib/js_interop_unsafe_patch.dart","/.pub-cache/hosted/pub.dev/collection-1.19.1/lib/src/iterable_extensions.dart","/.pub-cache/hosted/pub.dev/path-1.9.1/lib/path.dart","/.pub-cache/hosted/pub.dev/path-1.9.1/lib/src/utils.dart","/.pub-cache/hosted/pub.dev/source_maps-0.10.13/lib/src/utils.dart","org-dartlang-sdk:///lib/collection/list.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/js_number.dart","org-dartlang-sdk:///lib/internal/list.dart","org-dartlang-sdk:///lib/_internal/js_runtime/lib/instantiation.dart","org-dartlang-sdk:///lib/async/stream_transformers.dart","org-dartlang-sdk:///lib/async/zone_delegate.dart","org-dartlang-sdk:///lib/convert/ascii.dart","org-dartlang-sdk:///lib/convert/byte_conversion.dart","org-dartlang-sdk:///lib/typed_data/typed_data.dart","org-dartlang-sdk:///lib/convert/chunked_conversion.dart","org-dartlang-sdk:///lib/convert/converter.dart","org-dartlang-sdk:///lib/convert/json.dart","org-dartlang-sdk:///lib/convert/line_splitter.dart","org-dartlang-sdk:///lib/convert/string_conversion.dart","org-dartlang-sdk:///lib/core/duration.dart","org-dartlang-sdk:///lib/core/enum.dart","org-dartlang-sdk:///lib/core/null.dart","org-dartlang-sdk:///lib/core/stacktrace.dart","org-dartlang-sdk:///lib/core/weak.dart","org-dartlang-sdk:///lib/io/io_sink.dart","org-dartlang-sdk:///lib/io/process.dart","/amplify-flutter/actions/lib/src/action_context.dart","/amplify-flutter/actions/lib/src/node/process_manager.dart","/.pub-cache/hosted/pub.dev/path-1.9.1/lib/src/internal_style.dart","/.pub-cache/hosted/pub.dev/path-1.9.1/lib/src/style/posix.dart","/.pub-cache/hosted/pub.dev/path-1.9.1/lib/src/style/url.dart","/.pub-cache/hosted/pub.dev/path-1.9.1/lib/src/style/windows.dart","/.pub-cache/hosted/pub.dev/source_span-1.10.2/lib/src/file.dart","/.pub-cache/hosted/pub.dev/source_span-1.10.2/lib/src/span.dart","/.pub-cache/hosted/pub.dev/source_span-1.10.2/lib/src/span_mixin.dart","/.pub-cache/hosted/pub.dev/stack_trace-1.12.1/lib/src/lazy_chain.dart","/.pub-cache/hosted/pub.dev/stack_trace-1.12.1/lib/src/utils.dart","org-dartlang-sdk:///lib/core/list.dart","org-dartlang-sdk:///lib/core/string_buffer.dart","/amplify-flutter/actions/lib/src/node/fs.dart"], "names": ["makeDispatchRecord","getNativeInterceptor","lookupInterceptorByConstructor","JS_INTEROP_INTERCEPTOR_TAG","cacheInterceptorOnConstructor","JSArray.fixed","JSArray.growable","JSArray.markGrowable","JSArray.markFixed","JSString._isWhitespace","JSString._skipLeadingWhitespace","JSString._skipTrailingWhitespace","CastIterable","LateError.fieldADI","LateError.fieldNI","hexDigitValue","SystemHash.combine","SystemHash.finish","checkNotNullable","isToStringVisiting","SubListIterable","MappedIterable","TakeIterable","SkipIterable","EfficientLengthSkipIterable","IterableElementError.noElement","IterableElementError.tooFew","unminifyOrTag","isJsIndexable","S","Primitives.objectHashCode","Primitives.parseInt","Primitives.objectTypeName","instanceTypeName","rtiToString","Primitives.safeToString","Primitives.stringSafeToString","Primitives.currentUri","Primitives._fromCharCodeApply","Primitives.stringFromCodePoints","Primitives.stringFromCharCodes","Primitives.stringFromNativeUint8List","Primitives.stringFromCharCode","Primitives.extractStackTrace","Primitives.trySetStackTrace","iae","ioore","diagnoseIndexError","diagnoseRangeError","argumentErrorValue","wrapException","initializeExceptionWrapper","toStringWrapper","throwExpression","throwUnsupportedOperation","_diagnoseUnsupportedOperation","throwConcurrentModificationError","TypeErrorDecoder.extractPattern","TypeErrorDecoder.provokeCallErrorOn","TypeErrorDecoder.provokePropertyErrorOn","JsNoSuchMethodError","unwrapException","saveStackTrace","_unwrapNonDartException","getTraceFromException","objectHashCode","fillLiteralMap","_invokeClosure","convertDartClosureToJS","convertDartClosureToJSUncached","Closure.fromTearOff","Closure._computeSignatureFunction","Closure.cspForwardCall","Closure.forwardCallTo","Closure.cspForwardInterceptedCall","Closure.forwardInterceptedCallTo","closureFromTearOff","BoundClosure.evalRecipe","evalInInstance","BoundClosure.receiverOf","BoundClosure.interceptorOf","BoundClosure._computeFieldNamed","getIsolateAffinityTag","convertMainArgumentList","defineProperty","lookupAndCacheInterceptor","setDispatchProperty","patchInstance","lookupInterceptor","patchProto","patchInteriorProto","makeLeafDispatchRecord","makeDefaultDispatchRecord","initNativeDispatch","initNativeDispatchContinue","initHooks","applyHooksTransformer","createRecordTypePredicate","JSSyntaxRegExp.makeNative","stringContainsUnchecked","stringContainsStringUnchecked","escapeReplacement","stringReplaceFirstRE","quoteStringForRegExp","stringReplaceAllUnchecked","stringReplaceAllGeneral","stringReplaceAllUncheckedString","_stringIdentity","stringReplaceAllFuncUnchecked","_AllMatchesIterable.iterator","stringReplaceFirstUnchecked","stringReplaceRangeUnchecked","_ensureNativeList","NativeInt8List._create1","NativeUint8List","NativeUint8List.view","_checkValidIndex","_checkValidRange","Rti._getFutureFromFutureOr","Rti._getFutureOrArgument","Rti._isUnionOfFunctionType","Rti._getKind","Rti._getCanonicalRecipe","findType","instantiatedGenericFunctionType","Rti._getInterfaceTypeArguments","Rti._getGenericFunctionBase","_substitute","Rti._getInterfaceName","Rti._getBindingBase","Rti._getRecordPartialShapeTag","Rti._getReturnType","Rti._getGenericFunctionParameterIndex","_substituteArray","_substituteNamed","_substituteFunctionParameters","_FunctionParameters.allocate","_setArrayType","closureFunctionType","instanceOrFunctionType","instanceType","_arrayInstanceType","_instanceType","_instanceTypeFromConstructor","_instanceTypeFromConstructorMiss","getTypeFromTypesTable","getRuntimeTypeOfDartObject","getRuntimeTypeOfClosure","_structuralTypeOf","_instanceFunctionType","createRuntimeType","_createAndCacheRuntimeType","_Type","typeLiteral","_installSpecializedIsTest","_specializedIsTest","_recordSpecializedIsTest","_simpleSpecializedIsTest","_installSpecializedAsCheck","_generalIsTestImplementation","_generalNullableIsTestImplementation","Rti._getQuestionArgument","_isTestViaProperty","_isListTestViaProperty","_isJSObject","_isJSObjectStandalone","_generalAsCheckImplementation","_generalNullableAsCheckImplementation","_errorForAsCheck","checkTypeBound","_Error.compose","_TypeError.fromMessage","_TypeError.forType","_isFutureOr","_isObject","_asObject","_isTop","_asTop","_isNever","_isBool","_asBool","_asBoolQ","_asDouble","_asDoubleQ","_isInt","_asInt","_asIntQ","_isNum","_asNum","_asNumQ","_isString","_asString","_asStringQ","_asJSObject","_asJSObjectQ","_rtiArrayToString","_recordRtiToString","_functionRtiToString","_rtiToString","_unminifyOrTag","_Universe.findRule","_Universe._findRule","_Universe.findErasedType","_Universe.addRules","_Universe.addErasedTypes","_Universe.eval","_Universe.evalInEnvironment","_Universe.bind","_Universe._installTypeTests","_Universe._lookupTerminalRti","Rti.allocate","_Universe._createTerminalRti","_Universe._installRti","_Universe._lookupQuestionRti","_Universe._createQuestionRti","_Universe._lookupFutureOrRti","_Universe._createFutureOrRti","_Universe._lookupGenericFunctionParameterRti","_Universe._createGenericFunctionParameterRti","_Universe._canonicalRecipeJoin","_Universe._canonicalRecipeJoinNamed","_Universe._lookupInterfaceRti","_Universe._canonicalRecipeOfInterface","_Universe._createInterfaceRti","_Universe._lookupBindingRti","_Universe._createBindingRti","_Universe._lookupRecordRti","_Universe._createRecordRti","_Universe._lookupFunctionRti","_Universe._canonicalRecipeOfFunction","_Universe._canonicalRecipeOfFunctionParameters","_Universe._createFunctionRti","_Universe._lookupGenericFunctionRti","_Universe._createGenericFunctionRti","_Parser.create","_Parser.parse","_Parser.toGenericFunctionParameter","_Parser.pushStackFrame","_Parser.collectArray","_Parser.handleOptionalGroup","_Parser.collectNamed","_Parser.handleNamedGroup","_Parser.handleStartRecord","_Parser.handleDigit","_Parser.handleIdentifier","_Universe.evalTypeVariable","_Parser.handleTypeArguments","_Parser.handleArguments","_Parser.handleExtendedOperations","_Parser.toType","_Parser.toTypes","_Parser.toTypesNamed","_Parser.indexToType","isSubtype","_isSubtype","_isFunctionSubtype","_isInterfaceSubtype","_Utils.newArrayOrEmpty","_areArgumentsSubtypes","_isRecordSubtype","isNullable","isTopType","_Utils.objectAssign","_AsyncRun._initializeScheduleImmediate","_AsyncRun._scheduleImmediateJsOverride","_AsyncRun._scheduleImmediateWithSetImmediate","_AsyncRun._scheduleImmediateWithTimer","Timer._createTimer","_TimerImpl","_TimerImpl.periodic","_makeAsyncAwaitCompleter","_AsyncAwaitCompleter._future","_asyncStartSync","_asyncAwait","_asyncReturn","_asyncRethrow","_awaitOnObject","_wrapJsFunctionForAsync","AsyncError.defaultStackTrace","Future._#value#tearOff","Future.value","_Future.immediate","Future.wait","_interceptCaughtError","Future.any","_Completer.future","Completer.sync","FutureExtensions.ignore","_interceptError","_interceptUserError","_Future.value","_Future.zoneValue","_Future._chainCoreFuture","_Future._asyncCompleteError","_Future._propagateToListeners","_registerErrorHandler","_microtaskLoop","_startMicrotaskLoop","_scheduleAsyncCallback","_schedulePriorityAsyncCallback","scheduleMicrotask","StreamIterator","StreamController","_runGuarded","_BufferingStreamSubscription._registerErrorHandler","_nullErrorHandler","_nullDoneHandler","runZoned","_runZoned","_rootHandleUncaughtError","_rootHandleError","_rootRun","_rootRunUnary","_rootRunBinary","_rootRegisterCallback","_rootRegisterUnaryCallback","_rootRegisterBinaryCallback","_rootErrorCallback","_rootScheduleMicrotask","_rootCreateTimer","_rootCreatePeriodicTimer","_rootPrint","_rootFork","_CustomZone","HashMap","_HashMap._getTableEntry","_HashMap._setTableEntry","_HashMap._newHashTable","LinkedHashMap._literal","LinkedHashMap._empty","HashMap.from","MapBase.mapToString","_parseJson","_convertJsonToDartLazy","_JsonMap._processed","_Utf8Decoder._makeNativeUint8List","_Utf8Decoder._convertInterceptedUint8List","_Utf8Decoder._useTextDecoder","Base64Codec._checkPadding","_Base64Encoder.encodeChunk","_Utf8Decoder.errorDescription","Expando._checkType","Expando._badExpandoKey","int.parse","Error._throw","List.filled","List.from","List._of","List._ofArray","List.unmodifiable","String.fromCharCodes","String._stringFromIterable","String.fromCharCode","String._stringFromUint8List","RegExp","StringBuffer._writeAll","Uri.base","_Uri._uriEncode","JSSyntaxRegExp.hasMatch","StringBuffer.writeCharCode","StackTrace.current","Error.safeToString","Error.throwWithStackTrace","AssertionError","ArgumentError","ArgumentError.value","ArgumentError.checkNotNull","RangeError","RangeError.value","RangeError.range","RangeError.checkValueInInterval","RangeError.checkValidRange","RangeError.checkNotNegative","IndexError.withLength","UnsupportedError","UnimplementedError","StateError","ConcurrentModificationError","Exception","FormatException","Iterable.iterableToShortString","Iterable.iterableToFullString","_iterablePartsToStrings","Map.castFrom","Object.hash","Uri.dataFromString","UriData.fromString","Uri.parse","_Uri.notSimple","Uri.decodeComponent","Uri._ipv4FormatError","Uri._parseIPv4Address","Uri._validateIPvAddress","Uri._validateIPvFutureAddress","Uri.parseIPv6Address","_Uri._internal","_Uri","JSString.isNotEmpty","_Uri._defaultPort","_Uri._fail","_Uri.file","_Uri._checkNonWindowsPathReservedCharacters","_Uri._checkWindowsPathReservedCharacters","ListIterable.iterator","_Uri._checkWindowsDriveLetter","_Uri._makeFileUri","_Uri._makeWindowsFileUrl","JSString.replaceAll","_Uri._makePort","_Uri._makeHost","_Uri._checkZoneID","_Uri._normalizeZoneID","StringBuffer.write","_Uri._normalizeRegName","_Uri._makeScheme","_Uri._canonicalizeScheme","_Uri._makeUserInfo","_Uri._makePath","JSArray.map","_Uri._normalizePath","_Uri._makeQuery","_Uri._makeFragment","_Uri._normalizeEscape","_Uri._escapeChar","_Uri._normalizeOrSubstring","_Uri._normalize","_Uri._mayContainDotSegments","_Uri._removeDotSegments","JSArray.isNotEmpty","_Uri._normalizeRelativePath","_Uri._escapeScheme","_Uri._packageNameEnd","_Uri._toWindowsFilePath","StringBuffer._writeString","_Uri._hexCharPairToByte","_Uri._uriDecode","JSString.codeUnits","_Uri._isAlphabeticCharacter","UriData._writeUri","UriData._parse","UriData._uriEncodeBytes","_scan","_SimpleUri._packageNameEnd","_skipPackageNameChars","_caseInsensitiveCompareStart","_functionToJS1","_callDartFunctionFast1","_callDartFunctionFast3","_noJsifyRequired","jsify","wrapMain","ChildProcess|spawn","ListIterable.toList","NodeReadableStream|get#stream","_StreamController.stream","EventEmitter|once","Completer","unreachable","StreamForward.forward","Context","_parseUri","_validateArgList","JSArray.take","ListIterable.map","ParsedPath.parse","PathException","Style._getPlatformStyle","mapStackTrace","Iterable.whereType","_prettifyMember","JSString.replaceAllMapped","parseJson","MultiSectionMapping.fromJson","SingleMapping.fromJson","SourceMapSpan","decodeVlq","SourceLocation","Chain.capture","StackZoneSpecification._chains","Expando","StackZoneSpecification.toSpec","Chain.parse","WhereIterable.map","JSArray.where","Frame._#parseVM#tearOff","Frame.parseVM","Frame._#parseV8#tearOff","Frame.parseV8","Frame._parseFirefoxEval","Frame._#parseFirefox#tearOff","Frame.parseFirefox","Frame._#parseFriendly#tearOff","Frame.parseFriendly","Frame._uriOrPathToUri","Frame._catchFormatException","UnparsedFrame","Trace.from","Trace.parse","Trace._#parseVM#tearOff","Trace.parseVM","Trace._parseVM","Iterable.toList","Trace.parseV8","Trace.parseJSCore","Trace.parseFirefox","Trace._#parseFriendly#tearOff","Trace.parseFriendly","Trace","main","logMetric","Core|getInput","JsLinkedHashMap.entries","printString","throwLateFieldNI","throwLateFieldADI","max","pow","Core|getRequiredInput","Core|withGroup","Core|setFailed","Process|get#env","Process|exit","IterableExtension.firstWhereOrNull","current","isAlphabetic","driveLetterEnd","binarySearch","Interceptor.hashCode","Interceptor.==","Interceptor.toString","Interceptor.runtimeType","JSBool.toString","JSBool.hashCode","JSBool.runtimeType","JSNull.==","JSNull.toString","JSNull.hashCode","LegacyJavaScriptObject.toString","LegacyJavaScriptObject.hashCode","JavaScriptFunction.toString","JavaScriptBigInt.toString","JavaScriptBigInt.hashCode","JavaScriptSymbol.toString","JavaScriptSymbol.hashCode","List.castFrom","JSArray.cast","JSArray.add","JSArray.removeAt","JSArray.insert","JSArray.insertAll","JSArray.removeLast","JSArray.addAll","JSArray._addAllFromArray","JSArray.join","JSArray.join[function-entry$0]","JSArray.skip","JSArray.elementAt","JSArray.getRange","JSArray.first","JSArray.last","JSArray.setRange","JSArray.setRange[function-entry$3]","JSArray.contains","JSArray.toString","JSArray.toList","JSArray._toListGrowable","JSArray.toList[function-entry$0]","JSArray.iterator","JSArray.hashCode","JSArray.length","JSArray.[]","JSArray.[]=","JSArraySafeToStringHook.tryFormat","ArrayIterator.current","ArrayIterator.moveNext","JSNumber.toRadixString","JSNumber.toString","JSNumber.hashCode","JSNumber.+","JSNumber.%","JSNumber.~/","JSNumber._tdivFast","JSNumber._tdivSlow","JSNumber._shlPositive","JSNumber._shrOtherPositive","JSNumber._shrReceiverPositive","JSNumber._shrBothPositive","JSNumber.runtimeType","JSInt.runtimeType","JSNumNotInt.runtimeType","JSString.codeUnitAt","JSString.allMatches","allMatchesInStringUnchecked","JSString.allMatches[function-entry$1]","JSString.matchAsPrefix","JSString.endsWith","JSString.replaceFirst","JSString.split","stringSplitUnchecked","regExpHasCaptures","JSString.replaceRange","JSString._defaultSplit","JSString.startsWith","JSString.startsWith[function-entry$1]","JSString.substring","JSString.substring[function-entry$1]","JSString.trim","JSString.*","JSString.padLeft","JSString.padRight","JSString.indexOf","JSString.indexOf[function-entry$1]","JSString.lastIndexOf","JSString.lastIndexOf[function-entry$1]","JSString.contains","JSString.contains[function-entry$1]","JSString.toString","JSString.hashCode","JSString.runtimeType","JSString.length","_CastIterableBase.iterator","_CastIterableBase.length","_CastIterableBase.skip","_CastIterableBase.take","_CastIterableBase.elementAt","_CastIterableBase.contains","_CastIterableBase.toString","CastIterator.moveNext","CastIterator.current","_CastListBase.[]","_CastListBase.[]=","_CastListBase.getRange","CastList.cast","CastMap.cast","CastMap.containsKey","CastMap.[]","CastMap.forEach","CastMap.keys","CastMap.values","CastMap.length","CastMap.forEach.","CastMap_forEach_closure","LateError.toString","CodeUnits.length","CodeUnits.[]","nullFuture.","ListIterable.contains","ListIterable.join","ListIterable.join[function-entry$0]","ListIterable.fold","ListIterable.skip","ListIterable.take","SubListIterable._endIndex","SubListIterable._startIndex","SubListIterable.length","SubListIterable.elementAt","SubListIterable.skip","SubListIterable.take","SubListIterable.toList","ListIterator.current","ListIterator.moveNext","MappedIterable.iterator","MappedIterable.length","MappedIterable.elementAt","MappedIterator.moveNext","MappedIterator.current","MappedListIterable.length","MappedListIterable.elementAt","WhereIterable.iterator","WhereIterator.moveNext","WhereIterator.current","ExpandIterable.iterator","ExpandIterator","ExpandIterator.current","ExpandIterator.moveNext","TakeIterable.iterator","EfficientLengthTakeIterable.length","TakeIterator.moveNext","TakeIterator.current","SkipIterable.skip","SkipIterable.iterator","EfficientLengthSkipIterable.length","EfficientLengthSkipIterable.skip","SkipIterator.moveNext","SkipIterator.current","SkipWhileIterable.iterator","SkipWhileIterator.moveNext","SkipWhileIterator.current","EmptyIterable.iterator","EmptyIterable.length","EmptyIterable.elementAt","EmptyIterable.contains","EmptyIterable.map","EmptyIterable.skip","EmptyIterable.take","EmptyIterator.moveNext","EmptyIterator.current","WhereTypeIterable.iterator","WhereTypeIterator.moveNext","WhereTypeIterator.current","UnmodifiableListMixin.[]=","Instantiation.==","Instantiation.hashCode","Instantiation.toString","TypeErrorDecoder.matchTypeError","NullError.toString","JsNoSuchMethodError.toString","UnknownJsTypeError.toString","NullThrownFromJavaScriptException.toString","_StackTrace.toString","Closure.toString","StaticClosure.toString","BoundClosure.==","BoundClosure.hashCode","BoundClosure.toString","RuntimeError.toString","JsLinkedHashMap.keys","JsLinkedHashMap.length","JsLinkedHashMap.values","JsLinkedHashMap.containsKey","JsLinkedHashMap._containsTableEntry","JsLinkedHashMap.addAll","JsLinkedHashMap.[]","JsLinkedHashMap.internalGet","JsLinkedHashMap._getBucket","JsLinkedHashMap.[]=","JsLinkedHashMap.internalSet","JsLinkedHashMap.forEach","JsLinkedHashMap._addHashTableEntry","JsLinkedHashMap._newLinkedCell","JsLinkedHashMap.internalComputeHashCode","JsLinkedHashMap.internalFindBucketIndex","JsLinkedHashMap.toString","JsLinkedHashMap._newHashTable","JsLinkedHashMap.addAll.","JsLinkedHashMap_addAll_closure","LinkedHashMapKeysIterable.length","LinkedHashMapKeysIterable.iterator","LinkedHashMapKeysIterable.contains","LinkedHashMapKeyIterator.current","LinkedHashMapKeyIterator.moveNext","LinkedHashMapValuesIterable.length","LinkedHashMapValuesIterable.iterator","LinkedHashMapValueIterator.current","LinkedHashMapValueIterator.moveNext","LinkedHashMapEntriesIterable.length","LinkedHashMapEntriesIterable.iterator","LinkedHashMapEntryIterator.current","LinkedHashMapEntryIterator.moveNext","initHooks.","JSSyntaxRegExp.toString","JSSyntaxRegExp._nativeGlobalVersion","JSSyntaxRegExp._nativeAnchoredVersion","JSSyntaxRegExp._computeHasCaptures","JSSyntaxRegExp.firstMatch","JSSyntaxRegExp.allMatches","JSSyntaxRegExp.allMatches[function-entry$1]","JSSyntaxRegExp._execGlobal","JSSyntaxRegExp._execAnchored","JSSyntaxRegExp.matchAsPrefix","_MatchImplementation.start","_MatchImplementation.end","_MatchImplementation.[]","_MatchImplementation.namedGroup","_AllMatchesIterator.current","_AllMatchesIterator.moveNext","JSSyntaxRegExp.isUnicode","StringMatch.end","StringMatch.[]","_StringAllMatchesIterable.iterator","_StringAllMatchesIterator.moveNext","_StringAllMatchesIterator.current","NativeByteBuffer.runtimeType","NativeByteBuffer.asUint8List","NativeTypedData.buffer","NativeTypedData._invalidPosition","NativeTypedData._checkPosition","_UnmodifiableNativeByteBufferView.asUint8List","NativeByteData.runtimeType","NativeTypedArray.length","NativeTypedArray._setRangeFast","NativeTypedArrayOfDouble.[]","NativeTypedArrayOfDouble.[]=","NativeTypedArrayOfInt.[]=","NativeTypedArrayOfInt.setRange","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.[]","NativeUint8List.sublist","Rti._eval","Rti._bind","_Type.toString","_Error.toString","_AsyncRun._initializeScheduleImmediate.internalCallback","_AsyncRun._initializeScheduleImmediate.","_AsyncRun._scheduleImmediateJsOverride.internalCallback","_AsyncRun._scheduleImmediateWithSetImmediate.internalCallback","_TimerImpl.internalCallback","_TimerImpl.periodic.","_AsyncAwaitCompleter.complete","_AsyncAwaitCompleter.completeError","_Future._completeError","_awaitOnObject.","_wrapJsFunctionForAsync.","AsyncError.toString","Future.wait.handleError","Future.wait.","Future_wait_closure","Future.any.onValue","_Completer.isCompleted","Future_any_onValue","Future.any.onError","_Completer.completeError","_AsyncCompleter.complete","_AsyncCompleter._completeErrorObject","_SyncCompleter.complete","_SyncCompleter.complete[function-entry$0]","_SyncCompleter._completeErrorObject","_FutureListener.matchesErrorTest","_FutureListener._errorTest","_FutureListener.handleError","_Future.then","_Future.then[function-entry$1]","_Future._thenAwait","_Future._ignore","_Future.whenComplete","_Future._setErrorObject","_Future._cloneResult","_Future._addListener","_Future._prependListeners","_Future._removeListeners","_Future._reverseListeners","_Future._complete","_Future._completeWithValue","_Future._completeWithResultOf","_Future._completeErrorObject","_Future._asyncComplete","_Future._asyncCompleteWithValue","_Future._chainFuture","_Future._asyncCompleteErrorObject","_Future._addListener.","_Future._prependListeners.","_Future._chainCoreFuture.","_Future._asyncCompleteWithValue.","_Future._asyncCompleteErrorObject.","_Future._propagateToListeners.handleWhenCompleteCallback","_FutureListener.handleWhenComplete","_FutureListener._whenCompleteAction","_Future._newFutureWithSameType","_Future._propagateToListeners.handleWhenCompleteCallback.","_Future._propagateToListeners.handleValueCallback","_FutureListener.handleValue","_FutureListener._onValue","_Future._propagateToListeners.handleError","_FutureListener.hasErrorCallback","Stream.length","Stream.length.","Stream_length_closure","_StreamController._pendingEvents","_StreamController._ensurePendingEvents","_StreamController._subscription","_StreamController._badEventState","_StreamController.addStream","_AddStreamState","_StreamControllerAddStreamState","_StreamController.isPaused","_StreamController._ensureDoneFuture","_StreamController.add","_StreamController.addError","_StreamController.addError[function-entry$1]","_StreamController.close","_StreamController._add","_StreamController._addError","_StreamController._close","_StreamController._subscribe","_BufferingStreamSubscription","_BufferingStreamSubscription.zoned","_StreamController._recordCancel","_StreamController.onListen","_StreamController.onCancel","_StreamController._subscribe.","_StreamController._recordCancel.complete","_SyncStreamControllerDispatch._sendData","_SyncStreamControllerDispatch._sendError","_SyncStreamControllerDispatch._sendDone","_ControllerStream.hashCode","_ControllerStream.==","_ControllerSubscription._onCancel","_ControllerSubscription._onPause","_StreamController._recordPause","_ControllerSubscription._onResume","_StreamController._recordResume","_StreamSinkWrapper.add","_StreamSinkWrapper.addError","_StreamSinkWrapper.close","_AddStreamState.cancel","_AddStreamState.cancel.","_BufferingStreamSubscription._setPendingEvents","_BufferingStreamSubscription.pause","_PendingEvents.cancelSchedule","_BufferingStreamSubscription.resume","_BufferingStreamSubscription.cancel","_BufferingStreamSubscription._cancel","_BufferingStreamSubscription._add","_BufferingStreamSubscription._addError","_BufferingStreamSubscription._close","_BufferingStreamSubscription._onPause","_BufferingStreamSubscription._onResume","_BufferingStreamSubscription._onCancel","_BufferingStreamSubscription._addPending","_BufferingStreamSubscription._sendData","_BufferingStreamSubscription._sendError","_BufferingStreamSubscription._sendDone","_BufferingStreamSubscription._guardCallback","_BufferingStreamSubscription._checkState","_BufferingStreamSubscription._mayResumeInput","_BufferingStreamSubscription._sendError.sendError","_BufferingStreamSubscription._sendDone.sendDone","_StreamImpl.listen","_StreamImpl.listen[function-entry$1]","_StreamImpl.listen[function-entry$1$onDone$onError]","_DelayedEvent.next","_DelayedData.perform","_DelayedError.perform","_DelayedDone.perform","_DelayedDone.next","_PendingEvents.schedule","_PendingEvents.add","_PendingEvents.schedule.","_EventSinkWrapper.add","_SinkTransformerStreamSubscription._add","_EventSinkWrapper.addError","_SinkTransformerStreamSubscription._addError","_EventSinkWrapper.close","_SinkTransformerStreamSubscription._close","_SinkTransformerStreamSubscription._onPause","_SinkTransformerStreamSubscription._onResume","_SinkTransformerStreamSubscription._onCancel","_SinkTransformerStreamSubscription._handleData","_SinkTransformerStreamSubscription._handleError","_SinkTransformerStreamSubscription._handleDone","_BoundSinkStream.listen","_SinkTransformerStreamSubscription","_BoundSinkStream.listen[function-entry$1]","_BoundSinkStream.listen[function-entry$1$onDone$onError]","_Zone._processUncaughtError","_CustomZone._delegate","_CustomZone._parentDelegate","_CustomZone.errorZone","_CustomZone.runGuarded","_CustomZone.runUnaryGuarded","_CustomZone.runBinaryGuarded","_CustomZone.bindCallback","_CustomZone.bindUnaryCallback","_CustomZone.bindCallbackGuarded","_CustomZone.[]","_CustomZone.handleUncaughtError","_CustomZone.fork","_CustomZone.run","_CustomZone.runUnary","_CustomZone.runBinary","_CustomZone.registerCallback","_CustomZone.registerUnaryCallback","_CustomZone.registerBinaryCallback","_CustomZone.errorCallback","_CustomZone.scheduleMicrotask","_CustomZone.bindCallback.","_CustomZone_bindCallback_closure","_CustomZone.bindUnaryCallback.","_CustomZone_bindUnaryCallback_closure","_CustomZone.bindCallbackGuarded.","_RootZone._map","_RootZone._run","_RootZone._runUnary","_RootZone._runBinary","_RootZone._registerCallback","_RootZone._registerUnaryCallback","_RootZone._registerBinaryCallback","_RootZone._errorCallback","_RootZone._scheduleMicrotask","_RootZone._createTimer","_RootZone._createPeriodicTimer","_RootZone._print","_RootZone._fork","_RootZone._handleUncaughtError","_RootZone.parent","_RootZone._delegate","_RootZone._parentDelegate","_RootZone.errorZone","_RootZone.runGuarded","_RootZone.runUnaryGuarded","_RootZone.runBinaryGuarded","_RootZone.bindCallback","_RootZone.bindUnaryCallback","_RootZone.bindCallbackGuarded","_RootZone.[]","_RootZone.handleUncaughtError","_RootZone.fork","_RootZone.run","_RootZone.runUnary","_RootZone.runBinary","_RootZone.registerCallback","_RootZone.registerUnaryCallback","_RootZone.registerBinaryCallback","_RootZone.errorCallback","_RootZone.scheduleMicrotask","_RootZone.bindCallback.","_RootZone_bindCallback_closure","_RootZone.bindUnaryCallback.","_RootZone_bindUnaryCallback_closure","_RootZone.bindCallbackGuarded.","_ZoneDelegate.registerCallback","_ZoneDelegate.registerUnaryCallback","_ZoneDelegate.registerBinaryCallback","_ZoneDelegate.errorCallback","_rootHandleError.","_HashMap.keys","_HashMap.length","_HashMap.values","_HashMap.containsKey","_HashMap._containsKey","_HashMap.[]","_HashMap._get","_HashMap.[]=","_HashMap._set","_HashMap.forEach","_HashMap._computeKeys","_HashMap._addHashTableEntry","_HashMap._computeHashCode","_HashMap._getBucket","_HashMap._findBucketIndex","_HashMap.values.","_HashMap_values_closure","_IdentityHashMap._computeHashCode","_IdentityHashMap._findBucketIndex","_HashMapKeyIterable.length","_HashMapKeyIterable.iterator","_HashMapKeyIterable.contains","_HashMapKeyIterator.current","_HashMapKeyIterator.moveNext","HashMap.from.","ListBase.iterator","ListBase.elementAt","ListBase.contains","ListBase.map","ListBase.skip","ListBase.take","ListBase.cast","ListBase.sublist","ListBase.sublist[function-entry$1]","ListBase.getRange","ListBase.fillRange","ListBase.setRange","ListBase.toString","MapBase.cast","MapBase.forEach","MapBase.containsKey","MapBase.length","MapBase.values","MapBase.toString","MapBase.mapToString.","_MapBaseValueIterable.length","_MapBaseValueIterable.iterator","_MapBaseValueIterator.moveNext","_MapBaseValueIterator.current","_JsonMap.[]","_JsonMap.length","_JsonMap.keys","_JsonMap.values","_JsonMap.containsKey","_JsonMap.forEach","_JsonMap._computeKeys","_JsonMap._process","_JsonMap.values.","_JsonMapKeyIterable.length","_JsonMapKeyIterable.elementAt","_JsonMapKeyIterable.iterator","_JsonMapKeyIterable.contains","_JsonDecoderSink.close","_Utf8Decoder._decoder.","_Utf8Decoder._decoderNonfatal.","AsciiCodec.encode","_UnicodeSubsetEncoder.convert","_UnicodeSubsetEncoder.startChunkedConversion","_UnicodeSubsetEncoderSink.close","_UnicodeSubsetEncoderSink.addSlice","Base64Codec.normalize","Base64Encoder.startChunkedConversion","_Utf8Base64EncoderSink","_AsciiBase64EncoderSink","_Base64Encoder.createBuffer","_Base64Encoder.encode","_BufferCachingBase64Encoder.createBuffer","_Base64EncoderSink.add","_Base64EncoderSink.close","_Base64EncoderSink.addSlice","_AsciiBase64EncoderSink._add","_Utf8Base64EncoderSink._add","ByteConversionSink.addSlice","_ByteAdapterSink.add","_ByteAdapterSink.close","_ConverterStreamEventSink.add","_ConverterStreamEventSink.addError","_ConverterStreamEventSink.close","Converter.startChunkedConversion","Converter.bind","Stream.eventTransformed","Converter.bind.","JsonCodec.decode","JsonCodec.decode[function-entry$1]","JsonCodec.decoder","JsonDecoder.startChunkedConversion","_JsonDecoderSink","LineSplitter.bind","LineSplitter.bind.","_LineSplitterEventSink","_LineSplitterSink.addSlice","_LineSplitterSink.close","_LineSplitterSink._addLines","_LineSplitterSink._addCarry","_LineSplitterSink._useCarry","_LineSplitterEventSink.addError","StringConversionSink.add","StringConversionSink.asUtf8Sink","_Utf8ConversionSink._","_Utf8ConversionSink","_StringSinkConversionSink.close","_StringSinkConversionSink.addSlice","_StringSinkConversionSink.add","_StringSinkConversionSink.asUtf8Sink","_Utf8StringSinkAdapter","_StringAdapterSink.add","_StringAdapterSink.addSlice","_StringAdapterSink.close","_Utf8StringSinkAdapter.close","_Utf8StringSinkAdapter.add","_Utf8StringSinkAdapter.addSlice","_Utf8ConversionSink.close","StringBuffer.isEmpty","_Utf8ConversionSink.add","_Utf8ConversionSink.addSlice","Utf8Encoder.convert","Utf8Encoder.startChunkedConversion","_Utf8Encoder._writeReplacementCharacter","_Utf8Encoder._writeSurrogate","_Utf8Encoder._fillBuffer","_Utf8EncoderSink.close","_Utf8EncoderSink.addSlice","Utf8Decoder.convert","Utf8Decoder.startChunkedConversion","Utf8Decoder.bind","_Utf8Decoder._convertGeneral","_Utf8Decoder._decodeRecursive","_Utf8Decoder.flush","_Utf8Decoder.decodeGeneral","Duration.==","Duration.hashCode","Duration.toString","_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.map","Iterable.contains","Iterable.join","List.of","makeListFixedLength","Iterable.toList[function-entry$0]","Iterable.length","Iterable.isEmpty","Iterable.take","Iterable.skip","Iterable.skipWhile","Iterable.first","Iterable.last","Iterable.elementAt","Iterable.toString","MapEntry.toString","Null.hashCode","Null.toString","Object.hashCode","Object.==","Object.toString","Object.runtimeType","_StringStackTrace.toString","StringBuffer.length","StringBuffer.toString","Uri.parseIPv6Address.error","_Uri._text","_Uri._initializeText","_Uri._writeAuthority","_Uri.pathSegments","_Uri._computePathSegments","_Uri.hashCode","_Uri.userInfo","_Uri.host","_Uri.port","_Uri.query","_Uri.fragment","_Uri.isScheme","_Uri.replace","_Uri._mergePaths","_Uri.resolve","_Uri.resolveUri","_Uri.hasEmptyPath","_Uri.hasAuthority","_Uri.hasQuery","_Uri.hasFragment","_Uri.hasAbsolutePath","_Uri.toFilePath","_Uri._toFilePath","_Uri.toString","_Uri.==","_Uri._makePath.","UriData.uri","UriData._computeUri","UriData.toString","_SimpleUri.hasAbsolutePath","_SimpleUri.hasAuthority","_SimpleUri.hasPort","_SimpleUri.hasQuery","_SimpleUri.hasFragment","_SimpleUri.hasEmptyPath","_SimpleUri.scheme","_SimpleUri._computeScheme","_SimpleUri.userInfo","_SimpleUri.host","_SimpleUri.port","_SimpleUri.path","_SimpleUri.query","_SimpleUri.fragment","_SimpleUri.pathSegments","_SimpleUri._isPort","_SimpleUri.removeFragment","_SimpleUri.replace","_SimpleUri.resolve","_SimpleUri.resolveUri","_SimpleUri._simpleMerge","_SimpleUri.toFilePath","_SimpleUri._toFilePath","_SimpleUri.hashCode","_SimpleUri.==","_SimpleUri._toNonSimple","_SimpleUri.toString","Expando.[]=","Expando.toString","_StreamSinkImpl.add","_StreamSinkImpl.addError","_StreamSinkImpl.close","_StreamSinkImpl._closeTarget","_StreamSinkImpl._completeDoneValue","_StreamSinkImpl._completeDoneError","_StreamSinkImpl._controller","_StreamSinkImpl._controller.","ProcessStartMode.toString","ProcessException.toString","jsify._convert","wrapMain.","wrapMain..","wrapMain_closure","parse","FileSystem|readFileSync","ActionContext.runTearDowns","ActionResult._enumToString","ChildProcess|spawn.","NodeReadableStream|get#stream.onData","NodeReadableStream|get#stream.onError","NodeReadableStream|get#stream.onDone","NodeReadableStream_get_stream_onDone","NodeReadableStream|get#stream[function-entry$0].onDone","NodeReadableStream|get#stream.","EventEmitter|once.","EventEmitter_once_closure","EventEmitter|once[function-entry$1].","EventEmitter|once[function-entry$2].","EventEmitter|once[function-entry$0].","processManager.","NodeProcessManager","NodeProcessManager.run","NodeProcess.stdout","NodeProcess.stderr","NodeProcessManager.start","NodeProcess","NodeProcessManager.close","NodeProcessManager.run.","NodeProcess._init","_StreamController.sink","NodeProcess.exitCode","NodeProcess.pid","NodeProcess.close","NodeProcess.kill","NodeProcess._init.","NativeUint8List.fromList","StreamForward|forward.","StreamForward_forward_closure","Context.absolute","Context.absolute[function-entry$1]","Context.join","JSArray.whereType","Context.join[function-entry$2]","Context.joinAll","Context.split","Context.normalize","Context._needsNormalization","Context.relative","Context.isRelative","Context.relative[function-entry$1]","Context._isWithinOrEquals","Context._isWithinOrEqualsFast","Context._pathDirection","Context.toUri","Context.prettyUri","Context.joinAll.","Context.split.","_validateArgList.","_PathDirection.toString","_PathRelation.toString","InternalStyle.getRoot","InternalStyle.relativePathToUri","InternalStyle.codeUnitsEqual","InternalStyle.pathsEqual","ParsedPath.hasTrailingSeparator","ParsedPath.removeTrailingSeparators","ParsedPath.normalize","ParsedPath.toString","ParsedPath.parts","PathException.toString","Style.toString","PosixStyle.containsSeparator","PosixStyle.isSeparator","PosixStyle.needsSeparator","PosixStyle.rootLength","PosixStyle.rootLength[function-entry$1]","PosixStyle.isRootRelative","PosixStyle.pathFromUri","PosixStyle.absolutePathToUri","UrlStyle.containsSeparator","UrlStyle.isSeparator","UrlStyle.needsSeparator","UrlStyle.rootLength","UrlStyle.rootLength[function-entry$1]","UrlStyle.isRootRelative","UrlStyle.pathFromUri","UrlStyle.relativePathToUri","UrlStyle.absolutePathToUri","WindowsStyle.containsSeparator","WindowsStyle.isSeparator","WindowsStyle.needsSeparator","WindowsStyle.rootLength","WindowsStyle.rootLength[function-entry$1]","WindowsStyle.isRootRelative","WindowsStyle.pathFromUri","WindowsStyle.absolutePathToUri","WindowsStyle.codeUnitsEqual","WindowsStyle.pathsEqual","WindowsStyle.absolutePathToUri.","mapStackTrace.","_prettifyMember.","MultiSectionMapping._indexFor","MultiSectionMapping.spanFor","MultiSectionMapping.spanFor[function-entry$2$uri]","MultiSectionMapping.spanFor[function-entry$2$files]","MultiSectionMapping.toString","SourceFile._fromList","SourceFile.fromString","NativeUint32List","SingleMapping._segmentError","SingleMapping._findLine","SingleMapping._findColumn","SingleMapping.spanFor","SourceMapSpan.identifier","SingleMapping.spanFor[function-entry$2$uri]","SingleMapping.spanFor[function-entry$2$files]","SingleMapping.toString","SingleMapping.fromJson.","SingleMapping._findLine.","SingleMapping._findColumn.","TargetLineEntry.toString","TargetEntry.toString","_MappingTokenizer.moveNext","_MappingTokenizer.current","_MappingTokenizer.hasTokens","_MappingTokenizer.nextKind","_MappingTokenizer.toString","_digits.","SourceFile.length","SourceLocation.distance","SourceLocation.==","SourceLocation.hashCode","SourceLocation.toString","SourceSpanBase","SourceSpanMixin.sourceUrl","SourceSpanMixin.length","SourceSpanMixin.==","SourceSpanMixin.hashCode","SourceSpanMixin.toString","Chain.toTrace","JSArray.expand","Chain.toString","Chain.capture.","Chain_capture_closure","Chain.parse.","Chain.toTrace.","Chain.toString.","Chain.toString..","Frame.library","Frame.location","Frame.toString","Frame.parseVM.","Frame.parseV8.","Frame.parseV8..parseJsLocation","Frame._parseFirefoxEval.","Frame.parseFirefox.","Frame.parseFriendly.","fromUri","LazyChain._chain","LazyChain.traces","LazyChain.toTrace","LazyChain.toString","LazyTrace._trace","LazyTrace.frames","LazyTrace.toString","StackZoneSpecification.chainFor","StackZoneSpecification._registerCallback","StackZoneSpecification._disabled","StackZoneSpecification._createNode","StackZoneSpecification._registerCallback[function-entry$4]","StackZoneSpecification._registerUnaryCallback","StackZoneSpecification._registerUnaryCallback[function-entry$4]","StackZoneSpecification._registerBinaryCallback","StackZoneSpecification._registerBinaryCallback[function-entry$4]","StackZoneSpecification._handleUncaughtError","StackZoneSpecification._errorCallback","StackZoneSpecification._run","StackZoneSpecification._currentTrace","StackZoneSpecification._trimVMChain","StackZoneSpecification.chainFor.","StackZoneSpecification._registerCallback.","StackZoneSpecification__registerCallback_closure","StackZoneSpecification._registerUnaryCallback.","StackZoneSpecification__registerUnaryCallback_closure","StackZoneSpecification._registerUnaryCallback..","StackZoneSpecification__registerUnaryCallback__closure","StackZoneSpecification._registerBinaryCallback.","StackZoneSpecification__registerBinaryCallback_closure","StackZoneSpecification._registerBinaryCallback..","StackZoneSpecification__registerBinaryCallback__closure","StackZoneSpecification._currentTrace.","_Node.toChain","Trace.toString","Trace.from.","Trace._parseVM.","Trace.parseV8.","Trace.parseJSCore.","Trace.parseFirefox.","Trace.parseFriendly.","Trace.toString.","UnparsedFrame.toString","logMetric.parseMatrixInput","logMetric.parseMatrixInput.","logMetric.","Future._#value#tearOff[function-entry$1]","Future._#value#tearOff[function-entry$0]","_rootRun[function-entry$4]","_rootRunUnary[function-entry$5]","_rootRegisterCallback[function-entry$4]","_rootRegisterUnaryCallback[function-entry$4]","_rootRegisterBinaryCallback[function-entry$4]","max[function-entry$2]","DART_CLOSURE_PROPERTY_NAME","nullFuture","_safeToStringHooks","TypeErrorDecoder.noSuchMethodPattern","TypeErrorDecoder.notClosurePattern","TypeErrorDecoder.nullCallPattern","TypeErrorDecoder.nullLiteralCallPattern","TypeErrorDecoder.undefinedCallPattern","TypeErrorDecoder.undefinedLiteralCallPattern","TypeErrorDecoder.nullPropertyPattern","TypeErrorDecoder.nullLiteralPropertyPattern","TypeErrorDecoder.undefinedPropertyPattern","TypeErrorDecoder.undefinedLiteralPropertyPattern","_AsyncRun._scheduleImmediateClosure","Future._nullFuture","_RootZone._rootMap","_Utf8Decoder._reusableBuffer","_Utf8Decoder._decoder","_Utf8Decoder._decoderNonfatal","_Base64Decoder._inverseAlphabet","_Uri._isWindowsCached","_Uri._needsNoEncoding","_hashSeed","context","ActionContext","processManager","windows","url","createInternal","Style.posix","PosixStyle","Style.windows","WindowsStyle","Style.url","UrlStyle","Style.platform","_digits","maxInt32","minInt32","_specKey","_vmFrame","_v8JsFrame","_v8JsUrlLocation","_v8WasmFrame","_v8EvalLocation","_firefoxEvalLocation","_firefoxSafariJSFrame","_firefoxWasmFrame","_safariWasmFrame","_friendlyFrame","_asyncBody","_initialDot","Frame._uriRegExp","Frame._windowsRegExp","StackZoneSpecification.disableKey","_v8Trace","_v8TraceLine","_firefoxEvalTrace","_firefoxSafariTrace","_friendlyTrace","vmChainGap","","ActionResult","ArrayIterator","AsciiCodec","AsciiEncoder","AsyncError","Base64Codec","Base64Encoder","BoundClosure","ByteBuffer","ByteConversionSink","ByteData","CastIterator","CastList","CastMap","Chain","Chain_Chain$parse_closure","Chain_toString__closure","Chain_toString_closure","Chain_toTrace_closure","ChildProcess_spawn_closure","Closure","Closure0Args","Closure2Args","CodeUnits","Codec","Context_joinAll_closure","Context_split_closure","Converter","Converter_bind_closure","Duration","EfficientLengthIterable","EfficientLengthMappedIterable","EfficientLengthTakeIterable","EmptyIterable","EmptyIterator","Encoding","Error","EventSink","ExceptionAndStackTrace","ExpandIterable","FixedLengthListMixin","Float32List","Float64List","Frame","Frame_Frame$_parseFirefoxEval_closure","Frame_Frame$parseFirefox_closure","Frame_Frame$parseFriendly_closure","Frame_Frame$parseV8_closure","Frame_Frame$parseV8_closure_parseJsLocation","Frame_Frame$parseVM_closure","Function","Future","FutureExtensions|ignore","Future_any_onError","Future_wait_handleError","HashMap_HashMap$from_closure","IOSink","IndexError","Instantiation","Instantiation1","Int16List","Int32List","Int8List","Interceptor","InternalStyle","Iterable","IterableExtension|firstWhereOrNull","Iterator","JSArray","JSArraySafeToStringHook","JSBool","JSIndexable","JSInt","JSNull","JSNumNotInt","JSNumber","JSON","JSObject","JSString","JSSyntaxRegExp","JSUnmodifiableArray","JS_CONST","JavaScriptBigInt","JavaScriptFunction","JavaScriptIndexingBehavior","JavaScriptObject","JavaScriptSymbol","JsLinkedHashMap","JsonCodec","JsonDecoder","LateError","LazyChain","LazyTrace","LegacyJavaScriptObject","LineSplitter","LineSplitter_bind_closure","LinkedHashMap","LinkedHashMapCell","LinkedHashMapEntriesIterable","LinkedHashMapEntryIterator","LinkedHashMapKeyIterator","LinkedHashMapKeysIterable","LinkedHashMapValueIterator","LinkedHashMapValuesIterable","List","ListBase","ListIterable","ListIterator","Map","MapBase","MapBase_mapToString_closure","MapEntry","MappedIterator","MappedListIterable","Mapping","Match","MultiSectionMapping","NativeArrayBuffer","NativeByteBuffer","NativeByteData","NativeFloat32List","NativeFloat64List","NativeInt16List","NativeInt32List","NativeInt8List","NativeSharedArrayBuffer","NativeTypedArray","NativeTypedArrayOfDouble","NativeTypedArrayOfInt","NativeTypedData","NativeUint16List","NativeUint8ClampedList","NodeProcessManager_run_closure","NodeProcess__init_closure","NodeReadableStream_get_stream_closure","NodeReadableStream_get_stream_onData","NodeReadableStream_get_stream_onError","Null","NullError","NullThrownFromJavaScriptException","Object","OutOfMemoryError","ParsedPath","Pattern","PlainJavaScriptObject","Process","ProcessException","ProcessResult","ProcessStartMode","Record","RegExpMatch","Rti","RuntimeError","SafeToStringHook","SentinelValue","SingleMapping","SingleMapping$fromJson_closure","SingleMapping__findColumn_closure","SingleMapping__findLine_closure","Sink","SkipIterator","SkipWhileIterable","SkipWhileIterator","SourceFile","SourceSpan","SourceSpanMixin","StackOverflowError","StackTrace","StackZoneSpecification","StackZoneSpecification__currentTrace_closure","StackZoneSpecification_chainFor_closure","StaticClosure","Stream","StreamConsumer","StreamForward|forward","StreamSubscription","StreamTransformer","StreamTransformerBase","String","StringBuffer","StringConversionSink","StringMatch","StringSink","Style","TakeIterator","TargetEntry","TargetLineEntry","TearOffClosure","Timer","Trace$parseFirefox_closure","Trace$parseFriendly_closure","Trace$parseJSCore_closure","Trace$parseV8_closure","Trace_Trace$from_closure","Trace__parseVM_closure","Trace_toString_closure","TrustedGetRuntimeType","TypeError","TypeErrorDecoder","Uint16List","Uint32List","Uint8ClampedList","Uint8List","UnknownJavaScriptObject","UnknownJsTypeError","UnmodifiableListBase","UnmodifiableListMixin","Uri","UriData","Uri_parseIPv6Address_error","Utf8Codec","Utf8Decoder","Utf8Encoder","WhereIterable","WhereIterator","WhereTypeIterable","WhereTypeIterator","WindowsStyle_absolutePathToUri_closure","Zone","ZoneDelegate","ZoneSpecification","_#parseFirefox#tearOff","_#parseFriendly#tearOff","_#parseV8#tearOff","_#parseVM#tearOff","_#value#tearOff","_AddStreamState_cancel_closure","_AllMatchesIterable","_AllMatchesIterator","_AsyncAwaitCompleter","_AsyncCallbackEntry","_AsyncCompleter","_AsyncRun__initializeScheduleImmediate_closure","_AsyncRun__initializeScheduleImmediate_internalCallback","_AsyncRun__scheduleImmediateJsOverride_internalCallback","_AsyncRun__scheduleImmediateWithSetImmediate_internalCallback","_Base64Encoder","_Base64EncoderSink","_BoundSinkStream","_BufferCachingBase64Encoder","_BufferingStreamSubscription__sendDone_sendDone","_BufferingStreamSubscription__sendError_sendError","_ByteAdapterSink","_CastIterableBase","_CastListBase","_Completer","_ControllerStream","_ControllerSubscription","_ConverterStreamEventSink","_CustomZone_bindCallbackGuarded_closure","_DataUri","_DelayedData","_DelayedDone","_DelayedError","_DelayedEvent","_EfficientLengthCastIterable","_Enum","_Error","_EventDispatch","_EventSink","_EventSinkWrapper","_Exception","_FunctionParameters","_FusedCodec","_Future","_FutureListener","_Future__addListener_closure","_Future__asyncCompleteErrorObject_closure","_Future__asyncCompleteWithValue_closure","_Future__chainCoreFuture_closure","_Future__prependListeners_closure","_Future__propagateToListeners_handleError","_Future__propagateToListeners_handleValueCallback","_Future__propagateToListeners_handleWhenCompleteCallback","_Future__propagateToListeners_handleWhenCompleteCallback_closure","_HashMap","_HashMapKeyIterable","_HashMapKeyIterator","_IOSinkImpl","_IdentityHashMap","_JS_INTEROP_INTERCEPTOR_TAG","_JsonMap","_JsonMapKeyIterable","_JsonMap_values_closure","_LineSplitterSink","_MapBaseValueIterable","_MapBaseValueIterator","_MappingTokenizer","_MatchImplementation","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin","_NativeTypedArrayOfDouble&NativeTypedArray&ListMixin&FixedLengthListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin","_NativeTypedArrayOfInt&NativeTypedArray&ListMixin&FixedLengthListMixin","_Node","_PathDirection","_PathRelation","_PendingEvents","_PendingEvents_schedule_closure","_RootZone","_RootZone_bindCallbackGuarded_closure","_SimpleUri","_StackTrace","_StreamController","_StreamControllerLifecycle","_StreamController__recordCancel_complete","_StreamController__subscribe_closure","_StreamImpl","_StreamIterator","_StreamSinkImpl","_StreamSinkImpl__controller_closure","_StreamSinkWrapper","_StringAdapterSink","_StringAllMatchesIterable","_StringAllMatchesIterator","_StringSinkConversionSink","_StringStackTrace","_SyncCompleter","_SyncStreamController","_SyncStreamControllerDispatch","_TimerImpl$periodic_closure","_TimerImpl_internalCallback","_TokenKind","_TypeError","_UnicodeSubsetEncoder","_UnicodeSubsetEncoderSink","_UnmodifiableNativeByteBufferView","_UnreachableError","_Uri__makePath_closure","_Utf8Decoder","_Utf8Decoder__decoderNonfatal_closure","_Utf8Decoder__decoder_closure","_Utf8Encoder","_Utf8EncoderSink","_Zone","_ZoneDelegate","_ZoneFunction","_ZoneSpecification","__CastListBase&_CastIterableBase&ListMixin","__Utf8EncoderSink&_Utf8Encoder&StringConversionSink","_awaitOnObject_closure","_badExpandoKey","_cachedBaseString","_cachedBaseUri","_canonicalRecipeJoin","_canonicalRecipeJoinNamed","_canonicalizeScheme","_catchFormatException","_chainCoreFuture","_checkNonWindowsPathReservedCharacters","_checkPadding","_checkType","_checkWindowsDriveLetter","_checkWindowsPathReservedCharacters","_checkZoneID","_computeFieldNamed","_computeSignatureFunction","_convertInterceptedUint8List","_create1","_createFutureOrRti","_createGenericFunctionRti","_createQuestionRti","_createTimer","_current","_currentUriBase","_decoder","_decoderNonfatal","_defaultPort","_digits_closure","_empty","_escapeChar","_escapeScheme","_fail","_fromCharCodeApply","_getCanonicalRecipe","_getFutureFromFutureOr","_getPlatformStyle","_getTableEntry","_hexCharPairToByte","_identityHashCodeProperty","_initializeScheduleImmediate","_installTypeTests","_interceptorFieldNameCache","_internal","_inverseAlphabet","_ipv4FormatError","_isAlphabeticCharacter","_isInCallbackLoop","_isUnionOfFunctionType","_isWhitespace","_isWindowsCached","_lastCallback","_lastPriorityCallback","_literal","_lookupBindingRti","_lookupFunctionRti","_lookupFutureOrRti","_lookupGenericFunctionParameterRti","_lookupGenericFunctionRti","_lookupInterfaceRti","_lookupQuestionRti","_lookupRecordRti","_lookupTerminalRti","_makeFileUri","_makeFragment","_makeHost","_makeNativeUint8List","_makePath","_makePort","_makeQuery","_makeScheme","_makeUserInfo","_makeWindowsFileUrl","_mayContainDotSegments","_needsNoEncoding","_newHashTable","_nextCallback","_normalize","_normalizeEscape","_normalizeOrSubstring","_normalizePath","_normalizeRegName","_normalizeRelativePath","_normalizeZoneID","_nullFuture","_of","_packageNameEnd","_parse","_parseFirefoxEval","_parseIPv4Address","_parseVM","_prettifyMember_closure","_propagateToListeners","_receiverFieldNameCache","_removeDotSegments","_reusableBuffer","_rootDelegate","_rootHandleError_closure","_rootMap","_scheduleImmediateClosure","_scheduleImmediateJsOverride","_scheduleImmediateWithSetImmediate","_scheduleImmediateWithTimer","_setTableEntry","_skipLeadingWhitespace","_skipTrailingWhitespace","_stringFromUint8List","_throw","_toStringVisiting","_toWindowsFilePath","_uriDecode","_uriEncode","_uriEncodeBytes","_uriOrPathToUri","_uriRegExp","_useTextDecoder","_validateArgList_closure","_validateIPvAddress","_validateIPvFutureAddress","_windowsRegExp","_wrapJsFunctionForAsync_closure","_writeAll","_writeUri","addErasedTypes","addRules","alternateTagFunction","any","async_Future___value_tearOff$closure","async__AsyncRun__scheduleImmediateJsOverride$closure","async__AsyncRun__scheduleImmediateWithSetImmediate$closure","async__AsyncRun__scheduleImmediateWithTimer$closure","async___nullDoneHandler$closure","async___nullErrorHandler$closure","async___rootCreatePeriodicTimer$closure","async___rootCreateTimer$closure","async___rootErrorCallback$closure","async___rootFork$closure","async___rootHandleUncaughtError$closure","async___rootPrint$closure","async___rootRegisterBinaryCallback$closure","async___rootRegisterCallback$closure","async___rootRegisterUnaryCallback$closure","async___rootRun$closure","async___rootRunBinary$closure","async___rootRunUnary$closure","async___rootScheduleMicrotask$closure","async___startMicrotaskLoop$closure","base","bind","bool","capture","castFrom","checkNotNegative","checkNotNull","checkValidRange","checkValueInInterval","collectArray","combine","compose","core_Uri_decodeComponent$closure","create","cspForwardCall","cspForwardInterceptedCall","currentUri","dataFromString","decodeComponent","defaultStackTrace","disableKey","dispatchRecordsForInstanceTags","double","encodeChunk","errorDescription","eval","evalInEnvironment","evalRecipe","extractPattern","extractStackTrace","fieldADI","fieldNI","file","filled","findErasedType","findRule","finish","fixed","forType","forwardCallTo","forwardInterceptedCallTo","frame_Frame___parseFirefox_tearOff$closure","frame_Frame___parseFriendly_tearOff$closure","frame_Frame___parseV8_tearOff$closure","frame_Frame___parseVM_tearOff$closure","from","fromCharCode","fromCharCodes","fromJson","fromMessage","fromTearOff","getInterceptor$","getInterceptor$asx","getInterceptor$ax","getInterceptor$s","getInterceptor$x","getTagFunction","growable","handleArguments","handleDigit","handleExtendedOperations","handleIdentifier","handleTypeArguments","hash","indexToType","initHooks_closure","initNativeDispatchFlag","int","interceptorOf","interceptorsForUncacheableTags","iterableToFullString","iterableToShortString","jsify__convert","logMetric_closure","logMetric_parseMatrixInput","logMetric_parseMatrixInput_closure","log_cw_metric__logMetric$closure","makeNative","mapStackTrace_closure","mapToString","markFixed","math__max$closure","newArrayOrEmpty","noElement","noSuchMethodPattern","notClosurePattern","nullCallPattern","nullFuture_closure","nullLiteralCallPattern","nullLiteralPropertyPattern","nullPropertyPattern","num","objectAssign","objectTypeName","parseFirefox","parseFriendly","parseIPv6Address","parseInt","parseJSCore","parseV8","parseVM","periodic","platform","posix","processManager_closure","prototypeForTagFunction","provokeCallErrorOn","provokePropertyErrorOn","range","receiverOf","safeToString","stringFromCharCode","stringFromCharCodes","stringFromCodePoints","stringFromNativeUint8List","throwWithStackTrace","toType","toTypes","toTypesNamed","tooFew","trace_Trace___parseFriendly_tearOff$closure","trace_Trace___parseVM_tearOff$closure","trySetStackTrace","undefinedCallPattern","undefinedLiteralCallPattern","undefinedLiteralPropertyPattern","undefinedPropertyPattern","unmodifiable","value","view","wait","withLength","wrapMain__closure","$add","$and","$div","$eq","$ge","$gt","$index","$indexSet","$le","$lt","$mod","$mul","$negate","$not","$or","$shl","$shr","$sub","$tdiv","$xor","%","*","+","==","[]","[]=","_add","_addError","_captured_#this_0","_captured_K_1","_captured_R_3","_captured_T1_3","_captured_T2_4","_captured_T_2","_captured_V_2","_captured__convertedObjects_0","_captured_arg1_1","_captured_arg2_2","_captured_arg_1","_captured_bodyFunction_0","_captured_cleanUp_4","_captured_closeWhenDone_0","_captured_completer_2","_captured_controller_0","_captured_dispatch_1","_captured_div_1","_captured_eagerError_2","_captured_echoOutput_0","_captured_f_1","_captured_frame_0","_captured_getTag_0","_captured_getUnknownTag_0","_captured_hasError_2","_captured_joinedResult_0","_captured_level_2","_captured_longest_0","_captured_mainFn_0","_captured_milliseconds_1","_captured_minified_3","_captured_node_2","_captured_onData_1","_captured_onDone_2","_captured_onError_3","_captured_originalSource_1","_captured_packageMap_2","_captured_pos_1","_captured_protected_0","_captured_prototypeForTag_0","_captured_registered_1","_captured_sdkLib_1","_captured_sdkRoot_3","_captured_sourceMap_0","_captured_sourceResult_1","_captured_span_2","_captured_target_1","_captured_this_0","_close","_fromList","abs","absolute","absolutePathToUri","add","addAll","addError","addSlice","addStream","addStreamFuture","addSubscription","allMatches","allowMalformed","arguments","asStringSink","asUint8List","asUtf8Sink","bindCallback","bindCallbackGuarded","bindUnaryCallback","buffer","bufferCache","call","callback","cancel","cancelSchedule","canonicalizePart","cast","chainFor","checkGrowable","checkMutable","clear","close","code","codeUnitAt","codeUnits","codeUnitsEqual","column","complete","completeError","contains","containsKey","containsSeparator","convert","convertChunked","convertSingle","count","createBuffer","createPeriodicTimer","createTimer","dart:_interceptors#_addAllFromArray","dart:_interceptors#_clear","dart:_interceptors#_codeUnitAt","dart:_interceptors#_current","dart:_interceptors#_defaultSplit","dart:_interceptors#_index","dart:_interceptors#_isInt32","dart:_interceptors#_iterable","dart:_interceptors#_length","dart:_interceptors#_setLengthUnsafe","dart:_interceptors#_shlPositive","dart:_interceptors#_shrBothPositive","dart:_interceptors#_shrOtherPositive","dart:_interceptors#_shrReceiverPositive","dart:_interceptors#_tdivFast","dart:_interceptors#_tdivSlow","dart:_interceptors#_toListFixed","dart:_interceptors#_toListGrowable","dart:_internal#_captured_f_1","dart:_internal#_captured_this_0","dart:_internal#_current","dart:_internal#_currentExpansion","dart:_internal#_endIndex","dart:_internal#_endOrLength","dart:_internal#_f","dart:_internal#_hasSkipped","dart:_internal#_index","dart:_internal#_iterable","dart:_internal#_iterator","dart:_internal#_length","dart:_internal#_message","dart:_internal#_remaining","dart:_internal#_skipCount","dart:_internal#_source","dart:_internal#_start","dart:_internal#_startIndex","dart:_internal#_string","dart:_internal#_takeCount","dart:_js_helper#_addHashTableEntry","dart:_js_helper#_arguments","dart:_js_helper#_argumentsExpr","dart:_js_helper#_captured_getTag_0","dart:_js_helper#_captured_getUnknownTag_0","dart:_js_helper#_captured_prototypeForTag_0","dart:_js_helper#_captured_this_0","dart:_js_helper#_cell","dart:_js_helper#_computeHasCaptures","dart:_js_helper#_containsTableEntry","dart:_js_helper#_current","dart:_js_helper#_deleteTableEntry","dart:_js_helper#_exception","dart:_js_helper#_execAnchored","dart:_js_helper#_execGlobal","dart:_js_helper#_expr","dart:_js_helper#_first","dart:_js_helper#_genericClosure","dart:_js_helper#_getBucket","dart:_js_helper#_getTableBucket","dart:_js_helper#_getTableCell","dart:_js_helper#_hasCaptures","dart:_js_helper#_hasCapturesCache","dart:_js_helper#_index","dart:_js_helper#_input","dart:_js_helper#_interceptor","dart:_js_helper#_irritant","dart:_js_helper#_isCaseSensitive","dart:_js_helper#_isDotAll","dart:_js_helper#_isMultiLine","dart:_js_helper#_isUnicode","dart:_js_helper#_last","dart:_js_helper#_length","dart:_js_helper#_map","dart:_js_helper#_match","dart:_js_helper#_message","dart:_js_helper#_method","dart:_js_helper#_modifications","dart:_js_helper#_modified","dart:_js_helper#_name","dart:_js_helper#_nativeAnchoredRegExp","dart:_js_helper#_nativeAnchoredVersion","dart:_js_helper#_nativeGlobalRegExp","dart:_js_helper#_nativeGlobalVersion","dart:_js_helper#_nativeRegExp","dart:_js_helper#_newHashTable","dart:_js_helper#_newLinkedCell","dart:_js_helper#_next","dart:_js_helper#_nextIndex","dart:_js_helper#_nums","dart:_js_helper#_pattern","dart:_js_helper#_previous","dart:_js_helper#_re","dart:_js_helper#_receiver","dart:_js_helper#_regExp","dart:_js_helper#_rest","dart:_js_helper#_setTableEntry","dart:_js_helper#_start","dart:_js_helper#_string","dart:_js_helper#_strings","dart:_js_helper#_target","dart:_js_helper#_trace","dart:_js_helper#_types","dart:_native_typed_data#_checkMutable","dart:_native_typed_data#_checkPosition","dart:_native_typed_data#_data","dart:_native_typed_data#_invalidPosition","dart:_native_typed_data#_isUnmodifiable","dart:_native_typed_data#_nativeBuffer","dart:_native_typed_data#_setRangeFast","dart:_rti#_as","dart:_rti#_bind","dart:_rti#_bindCache","dart:_rti#_cachedRuntimeType","dart:_rti#_canonicalRecipe","dart:_rti#_dynamicCheckData","dart:_rti#_eval","dart:_rti#_evalCache","dart:_rti#_is","dart:_rti#_isSubtypeCache","dart:_rti#_kind","dart:_rti#_message","dart:_rti#_named","dart:_rti#_optionalPositional","dart:_rti#_precomputed1","dart:_rti#_primary","dart:_rti#_requiredPositional","dart:_rti#_rest","dart:_rti#_rti","dart:_rti#_specializedTestResource","dart:async#_#_SinkTransformerStreamSubscription#_transformerSink#A","dart:async#_add","dart:async#_addError","dart:async#_addListener","dart:async#_addPending","dart:async#_asyncComplete","dart:async#_asyncCompleteError","dart:async#_asyncCompleteErrorObject","dart:async#_asyncCompleteWithValue","dart:async#_badEventState","dart:async#_box_0","dart:async#_box_1","dart:async#_canFire","dart:async#_cancel","dart:async#_cancelFuture","dart:async#_cancelOnError","dart:async#_captured_R_2","dart:async#_captured_R_3","dart:async#_captured_T_1","dart:async#_captured_T_2","dart:async#_captured_T_3","dart:async#_captured__future_2","dart:async#_captured__future_3","dart:async#_captured_bodyFunction_0","dart:async#_captured_callback_0","dart:async#_captured_callback_1","dart:async#_captured_callback_3","dart:async#_captured_cleanUp_1","dart:async#_captured_cleanUp_4","dart:async#_captured_completer_0","dart:async#_captured_dispatch_1","dart:async#_captured_div_1","dart:async#_captured_eagerError_2","dart:async#_captured_eagerError_5","dart:async#_captured_error_0","dart:async#_captured_error_1","dart:async#_captured_f_1","dart:async#_captured_future_1","dart:async#_captured_hasError_2","dart:async#_captured_joinedResult_0","dart:async#_captured_listener_1","dart:async#_captured_milliseconds_1","dart:async#_captured_originalSource_1","dart:async#_captured_pos_1","dart:async#_captured_protected_0","dart:async#_captured_registered_1","dart:async#_captured_sourceResult_1","dart:async#_captured_span_2","dart:async#_captured_stackTrace_1","dart:async#_captured_stackTrace_2","dart:async#_captured_start_2","dart:async#_captured_target_1","dart:async#_captured_this_0","dart:async#_captured_this_1","dart:async#_captured_value_1","dart:async#_chainForeignFuture","dart:async#_chainFuture","dart:async#_chainSource","dart:async#_checkState","dart:async#_clearPendingComplete","dart:async#_cloneResult","dart:async#_close","dart:async#_closeUnchecked","dart:async#_complete","dart:async#_completeError","dart:async#_completeErrorObject","dart:async#_completeWithResultOf","dart:async#_completeWithValue","dart:async#_controller","dart:async#_createPeriodicTimer","dart:async#_createSubscription","dart:async#_createTimer","dart:async#_decrementPauseCount","dart:async#_delegate","dart:async#_delegateCache","dart:async#_delegationTarget","dart:async#_doneFuture","dart:async#_ensureDoneFuture","dart:async#_ensurePendingEvents","dart:async#_error","dart:async#_errorCallback","dart:async#_errorTest","dart:async#_eventScheduled","dart:async#_fork","dart:async#_future","dart:async#_guardCallback","dart:async#_handle","dart:async#_handleData","dart:async#_handleDone","dart:async#_handleError","dart:async#_handleUncaughtError","dart:async#_hasError","dart:async#_hasPending","dart:async#_hasValue","dart:async#_ignore","dart:async#_ignoreError","dart:async#_inCallback","dart:async#_isAddingStream","dart:async#_isCanceled","dart:async#_isChained","dart:async#_isClosed","dart:async#_isComplete","dart:async#_isInitialState","dart:async#_isInputPaused","dart:async#_isPaused","dart:async#_map","dart:async#_mayAddEvent","dart:async#_mayAddListener","dart:async#_mayComplete","dart:async#_mayResumeInput","dart:async#_newFutureWithSameType","dart:async#_nextListener","dart:async#_onCancel","dart:async#_onData","dart:async#_onDone","dart:async#_onError","dart:async#_onListen","dart:async#_onPause","dart:async#_onResume","dart:async#_onValue","dart:async#_once","dart:async#_parentDelegate","dart:async#_pending","dart:async#_pendingEvents","dart:async#_prependListeners","dart:async#_print","dart:async#_processUncaughtError","dart:async#_recordCancel","dart:async#_recordPause","dart:async#_recordResume","dart:async#_registerBinaryCallback","dart:async#_registerCallback","dart:async#_registerUnaryCallback","dart:async#_removeListeners","dart:async#_resultOrListeners","dart:async#_reverseListeners","dart:async#_rootRegisterBinaryCallback","dart:async#_rootRegisterCallback","dart:async#_rootRegisterUnaryCallback","dart:async#_rootRun","dart:async#_rootRunUnary","dart:async#_run","dart:async#_runBinary","dart:async#_runUnary","dart:async#_scheduleMicrotask","dart:async#_sendData","dart:async#_sendDone","dart:async#_sendError","dart:async#_setChained","dart:async#_setErrorObject","dart:async#_setPendingComplete","dart:async#_setPendingEvents","dart:async#_setValue","dart:async#_sink","dart:async#_sinkMapper","dart:async#_state","dart:async#_stateData","dart:async#_stream","dart:async#_subscribe","dart:async#_subscription","dart:async#_target","dart:async#_thenAwait","dart:async#_tick","dart:async#_transformerSink","dart:async#_varData","dart:async#_waitsForCancel","dart:async#_whenCompleteAction","dart:async#_zone","dart:collection#_addHashTableEntry","dart:collection#_box_0","dart:collection#_captured_K_1","dart:collection#_captured_V_2","dart:collection#_captured_result_0","dart:collection#_captured_result_1","dart:collection#_captured_this_0","dart:collection#_closeGap","dart:collection#_computeHashCode","dart:collection#_computeKeys","dart:collection#_containsKey","dart:collection#_current","dart:collection#_findBucketIndex","dart:collection#_get","dart:collection#_getBucket","dart:collection#_keys","dart:collection#_length","dart:collection#_map","dart:collection#_nums","dart:collection#_offset","dart:collection#_rest","dart:collection#_set","dart:collection#_strings","dart:convert#_add","dart:convert#_addCarry","dart:convert#_addLines","dart:convert#_allowInvalid","dart:convert#_allowMalformed","dart:convert#_alphabet","dart:convert#_buffer","dart:convert#_bufferIndex","dart:convert#_captured_this_0","dart:convert#_carry","dart:convert#_charOrIndex","dart:convert#_chunkedSink","dart:convert#_computeKeys","dart:convert#_convertGeneral","dart:convert#_data","dart:convert#_decodeRecursive","dart:convert#_decoder","dart:convert#_encoder","dart:convert#_eventSink","dart:convert#_fillBuffer","dart:convert#_first","dart:convert#_isUpgraded","dart:convert#_multiCarry","dart:convert#_original","dart:convert#_parent","dart:convert#_process","dart:convert#_processed","dart:convert#_reviver","dart:convert#_second","dart:convert#_sink","dart:convert#_skipLeadingLF","dart:convert#_state","dart:convert#_stringSink","dart:convert#_subsetMask","dart:convert#_toEncodable","dart:convert#_upgrade","dart:convert#_upgradedMap","dart:convert#_urlSafe","dart:convert#_useCarry","dart:convert#_writeReplacementCharacter","dart:convert#_writeSurrogate","dart:core#_#_Uri#_text#FI","dart:core#_#_Uri#hashCode#FI","dart:core#_#_Uri#pathSegments#FI","dart:core#_#_Uri#queryParameters#FI","dart:core#_#_Uri#queryParametersAll#FI","dart:core#_captured_host_0","dart:core#_computeScheme","dart:core#_computeUri","dart:core#_contents","dart:core#_data","dart:core#_duration","dart:core#_enumToString","dart:core#_errorExplanation","dart:core#_errorName","dart:core#_fragment","dart:core#_fragmentStart","dart:core#_hasValue","dart:core#_hashCodeCache","dart:core#_host","dart:core#_hostStart","dart:core#_initializeText","dart:core#_isFile","dart:core#_isHttp","dart:core#_isHttps","dart:core#_isPackage","dart:core#_isPort","dart:core#_isScheme","dart:core#_jsWeakMap","dart:core#_mergePaths","dart:core#_name","dart:core#_pathStart","dart:core#_port","dart:core#_portStart","dart:core#_query","dart:core#_queryStart","dart:core#_schemeCache","dart:core#_schemeEnd","dart:core#_separatorIndices","dart:core#_simpleMerge","dart:core#_stackTrace","dart:core#_text","dart:core#_toFilePath","dart:core#_toNonSimple","dart:core#_uri","dart:core#_uriCache","dart:core#_userInfo","dart:core#_writeAuthority","dart:core#_writeString","dart:io#_captured_this_0","dart:io#_closeTarget","dart:io#_completeDoneError","dart:io#_completeDoneValue","dart:io#_controller","dart:io#_controllerCompleter","dart:io#_controllerInstance","dart:io#_doneCompleter","dart:io#_encoding","dart:io#_encodingMutable","dart:io#_hasError","dart:io#_isBound","dart:io#_isClosed","dart:io#_mode","dart:io#_target","dart:js_util#_captured__convertedObjects_0","dartException","decode","decodeGeneral","decoder","distance","done","elementAt","encode","encoder","end","endsWith","entries","error","errorCallback","errorCode","errorZone","executable","exitCode","expand","extensions","files","fillRange","first","firstMatch","firstPendingEvent","flush","fold","forEach","fork","fragment","frames","function","fuse","future","getColumn","getLine","getOffset","getRange","getRoot","getText","group","handleError","handleNext","handleUncaughtError","handleValue","handleWhenComplete","handlesComplete","handlesError","handlesValue","hasAbsolutePath","hasAuthority","hasEmptyPath","hasErrorCallback","hasErrorTest","hasFragment","hasListener","hasMatch","hasPort","hasQuery","hasScheme","hasTokens","hasTrailingSeparator","hashCode","hashMapCellKey","hashMapCellValue","host","id","inMicroseconds","inMilliseconds","inSameErrorZone","index","indexOf","indexable","input","insert","insertAll","internalComputeHashCode","internalContainsKey","internalFindBucketIndex","internalGet","internalSet","invalidValue","isAbsolute","isClosed","isCompleted","isCore","isEmpty","isEof","isFinite","isIdentifier","isNewLine","isNewSegment","isNotEmpty","isOdd","isPaused","isRelative","isRootRelative","isScheduled","isScheme","isSeparator","isSync","isUnicode","isValue","isWithin","iterator","join","joinAll","key","keys","kill","last","lastIndexOf","lastPendingEvent","length","library","line","lines","listen","listener","listenerHasError","listenerValueOrError","listeners","location","map","matchAsPrefix","matchTypeError","matchesErrorTest","member","message","modifiedObject","moveNext","name","namedGroup","names","needsSeparator","needsSeparatorPattern","next","nextKind","normalize","offset","offsetInBytes","onCancel","onExit","onListen","onPause","onResume","original","package","package:actions/actions.dart#_captured_mainFn_0","package:actions/src/action_context.dart#_errorTearDowns","package:actions/src/action_context.dart#_successTearDowns","package:actions/src/node/child_process.dart#_captured_#this_0","package:actions/src/node/child_process.dart#_captured_T_1","package:actions/src/node/child_process.dart#_captured_completer_0","package:actions/src/node/child_process.dart#_captured_controller_0","package:actions/src/node/child_process.dart#_captured_onData_1","package:actions/src/node/child_process.dart#_captured_onDone_2","package:actions/src/node/child_process.dart#_captured_onError_3","package:actions/src/node/process_manager.dart#_activeProcesses","package:actions/src/node/process_manager.dart#_box_0","package:actions/src/node/process_manager.dart#_captured_echoOutput_0","package:actions/src/node/process_manager.dart#_captured_stderr_1","package:actions/src/node/process_manager.dart#_captured_stdout_1","package:actions/src/node/process_manager.dart#_captured_this_0","package:actions/src/node/process_manager.dart#_init","package:actions/src/node/process_manager.dart#_jsProcess","package:actions/src/node/process_manager.dart#_stderr","package:actions/src/node/process_manager.dart#_stdin","package:actions/src/node/process_manager.dart#_stdinSink","package:actions/src/node/process_manager.dart#_stdinSub","package:actions/src/node/process_manager.dart#_stdout","package:aws_common/src/util/stream.dart#_captured_T_1","package:aws_common/src/util/stream.dart#_captured_closeWhenDone_0","package:aws_common/src/util/stream.dart#_captured_completer_2","package:aws_common/src/util/stream.dart#_captured_controller_0","package:aws_common/src/util/stream.dart#_captured_controller_1","package:path/src/context.dart#_current","package:path/src/context.dart#_isWithinOrEquals","package:path/src/context.dart#_isWithinOrEqualsFast","package:path/src/context.dart#_needsNormalization","package:path/src/context.dart#_parse","package:path/src/context.dart#_pathDirection","package:source_map_stack_trace/source_map_stack_trace.dart#_captured_minified_1","package:source_map_stack_trace/source_map_stack_trace.dart#_captured_minified_3","package:source_map_stack_trace/source_map_stack_trace.dart#_captured_packageMap_2","package:source_map_stack_trace/source_map_stack_trace.dart#_captured_sdkLib_1","package:source_map_stack_trace/source_map_stack_trace.dart#_captured_sdkRoot_3","package:source_map_stack_trace/source_map_stack_trace.dart#_captured_sourceMap_0","package:source_maps/parser.dart#_captured_column_0","package:source_maps/parser.dart#_captured_line_0","package:source_maps/parser.dart#_captured_this_0","package:source_maps/parser.dart#_columnStart","package:source_maps/parser.dart#_consumeNewLine","package:source_maps/parser.dart#_consumeNewSegment","package:source_maps/parser.dart#_consumeValue","package:source_maps/parser.dart#_findColumn","package:source_maps/parser.dart#_findLine","package:source_maps/parser.dart#_indexFor","package:source_maps/parser.dart#_internal","package:source_maps/parser.dart#_length","package:source_maps/parser.dart#_lineStart","package:source_maps/parser.dart#_mapUrl","package:source_maps/parser.dart#_maps","package:source_maps/parser.dart#_segmentError","package:source_span/src/file.dart#_binarySearch","package:source_span/src/file.dart#_cachedLine","package:source_span/src/file.dart#_decodedChars","package:source_span/src/file.dart#_isNearCachedLine","package:source_span/src/file.dart#_lineStarts","package:stack_trace/src/chain.dart#_captured_T_1","package:stack_trace/src/chain.dart#_captured_callback_0","package:stack_trace/src/chain.dart#_captured_longest_0","package:stack_trace/src/frame.dart#_captured_frame_0","package:stack_trace/src/lazy_chain.dart#_#LazyChain#_chain#FI","package:stack_trace/src/lazy_chain.dart#_chain","package:stack_trace/src/lazy_chain.dart#_thunk","package:stack_trace/src/lazy_trace.dart#_#LazyTrace#_trace#FI","package:stack_trace/src/lazy_trace.dart#_thunk","package:stack_trace/src/lazy_trace.dart#_trace","package:stack_trace/src/stack_zone_specification.dart#_box_0","package:stack_trace/src/stack_zone_specification.dart#_captured_R_2","package:stack_trace/src/stack_zone_specification.dart#_captured_R_3","package:stack_trace/src/stack_zone_specification.dart#_captured_R_4","package:stack_trace/src/stack_zone_specification.dart#_captured_R_5","package:stack_trace/src/stack_zone_specification.dart#_captured_T1_3","package:stack_trace/src/stack_zone_specification.dart#_captured_T2_4","package:stack_trace/src/stack_zone_specification.dart#_captured_T_3","package:stack_trace/src/stack_zone_specification.dart#_captured_arg1_1","package:stack_trace/src/stack_zone_specification.dart#_captured_arg2_2","package:stack_trace/src/stack_zone_specification.dart#_captured_arg_1","package:stack_trace/src/stack_zone_specification.dart#_captured_f_0","package:stack_trace/src/stack_zone_specification.dart#_captured_f_1","package:stack_trace/src/stack_zone_specification.dart#_captured_level_2","package:stack_trace/src/stack_zone_specification.dart#_captured_node_2","package:stack_trace/src/stack_zone_specification.dart#_captured_original_1","package:stack_trace/src/stack_zone_specification.dart#_captured_stackTrace_1","package:stack_trace/src/stack_zone_specification.dart#_captured_this_0","package:stack_trace/src/stack_zone_specification.dart#_chains","package:stack_trace/src/stack_zone_specification.dart#_createNode","package:stack_trace/src/stack_zone_specification.dart#_currentNode","package:stack_trace/src/stack_zone_specification.dart#_currentTrace","package:stack_trace/src/stack_zone_specification.dart#_disabled","package:stack_trace/src/stack_zone_specification.dart#_errorCallback","package:stack_trace/src/stack_zone_specification.dart#_errorZone","package:stack_trace/src/stack_zone_specification.dart#_handleUncaughtError","package:stack_trace/src/stack_zone_specification.dart#_onError","package:stack_trace/src/stack_zone_specification.dart#_registerBinaryCallback","package:stack_trace/src/stack_zone_specification.dart#_registerCallback","package:stack_trace/src/stack_zone_specification.dart#_registerUnaryCallback","package:stack_trace/src/stack_zone_specification.dart#_run","package:stack_trace/src/stack_zone_specification.dart#_trimVMChain","package:stack_trace/src/trace.dart#_captured_longest_0","package:stack_trace/src/trace.dart#_captured_trace_0","padLeft","padRight","parent","parts","path","pathFromUri","pathSegments","pathsEqual","pattern","pause","perform","pid","port","prettyUri","previous","print","query","registerBinaryCallback","registerCallback","registerUnaryCallback","relative","relativePathToUri","relativeRootPattern","remainder","remaining","removeAt","removeFragment","removeLast","removeTrailingSeparators","replace","replaceAll","replaceAllMapped","replaceFirst","replaceRange","resolve","resolveUri","result","resume","root","rootLength","rootPattern","run","runBinary","runBinaryGuarded","runGuarded","runTearDowns","runUnary","runUnaryGuarded","runtimeType","schedule","scheme","separator","separatorPattern","separators","setAll","setRange","shouldChain","sink","skip","skipWhile","source","sourceColumn","sourceLine","sourceNameId","sourceRoot","sourceUrl","sourceUrlId","span","spanFor","split","splitMapJoin","stackTrace","start","startChunkedConversion","startsWith","state","stderr","stdin","stdout","storedCallback","stream","style","sublist","substring","take","targetUrl","text","then","toChain","toFilePath","toJson","toList","toLowerCase","toRadixString","toSpec","toString","toTrace","toUpperCase","toUri","toolString","trace","traces","transform","trim","tryFormat","uri","urls","userInfo","values","whenComplete","where","whereType","write","writeAll","writeCharCode","writeln","zone","~/","_Universe._canonicalRecipeOfQuestion","_Universe._canonicalRecipeOfFutureOr","_Universe._canonicalRecipeOfBinding","_Universe._canonicalRecipeOfGenericFunction","isBottomType","Error._stringToSafeString","StringBuffer.isNotEmpty","_Utf8Encoder.withBufferSize","_Utf8Encoder._createBuffer","List._fixedOf","_Uri.hasScheme","_StreamSinkImpl._doneCompleter","JSObjectUnsafeUtilExtension|getProperty","NodeChildProcess|get#onClose","NodeChildProcess|get#onError","NodeChildProcess|get#onExit","NodeChildProcess|get#onSpawn","NullableObjectUtilExtension|jsify","_","_activeProcesses","_addCarry","_asCheck","_asyncCompleteError","_callMethodUnchecked0","_callMethodUnchecked1","_callMethodUnchecked2","_callMethodUnchecked3","_canonicalRecipeOfBinding","_canonicalRecipeOfFunction","_canonicalRecipeOfFunctionParameters","_canonicalRecipeOfFutureOr","_canonicalRecipeOfGenericFunction","_canonicalRecipeOfInterface","_canonicalRecipeOfQuestion","_canonicalRecipeOfRecord","_caseInsensitiveStartsWith","_chainSource","_chains","_checkCount","_checkMutable","_cloneResult","_closeUnchecked","_codeUnitAt","_columnStart","_combineSurrogatePair","_completeError","_computeIdentityHashCodeProperty","_computePathSegments","_computeUri","_consumeValue","_containsTableEntry","_create3","_createBindingRti","_createBuffer","_createFunctionRti","_createGenericFunctionParameterRti","_createInterfaceRti","_createLength","_createNode","_createPeriodicTimer","_createRecordRti","_createSubscription","_createTerminalRti","_currentExpansion","_decrementPauseCount","_delegate","_disabled","_doneCompleter","_error","_errorTearDowns","_errorTest","_findRule","_fixedOf","_functionToJS3","_future","_getBindCache","_getBindingArguments","_getBindingBase","_getBucket","_getCachedRuntimeType","_getEvalCache","_getFunctionParameters","_getFutureOrArgument","_getGenericFunctionBase","_getGenericFunctionBounds","_getGenericFunctionParameterIndex","_getInterfaceName","_getInterfaceTypeArguments","_getIsSubtypeCache","_getKind","_getNamed","_getOptionalPositional","_getPrimary","_getProperty","_getPropertyTrustType","_getQuestionArgument","_getRecordFields","_getRecordPartialShapeTag","_getRequiredPositional","_getRest","_getReturnType","_getRuntimeTypeOfArrayAsRti","_getSpecializedTestResource","_getTableBucket","_getTableCell","_handleIEtoString","_hasCaptures","_hasError","_hasPending","_hasProperty","_hasTableEntry","_hasTimer","_initializeText","_installRti","_isAddingStream","_isCanceled","_isChained","_isCheck","_isClosed","_isClosure","_isComplete","_isDartObject","_isDotAll","_isFile","_isGeneralDelimiter","_isHttp","_isHttps","_isInitialState","_isInputPaused","_isLeadSurrogate","_isMultiLine","_isPackage","_isRegNameChar","_isScheme","_isSchemeCharacter","_isTrailSurrogate","_isUnicode","_isUnreservedChar","_isUpgraded","_isWindows","_isZoneIDChar","_jsWeakMap","_lineStart","_lineStarts","_lookupAnyRti","_lookupDynamicRti","_lookupErasedRti","_lookupFutureRti","_lookupNeverRti","_lookupVoidRti","_maps","_mayAddEvent","_mayAddListener","_mayComplete","_mayResumeInput","_microtaskEntryCallback","_modified","_name","_newFutureWithSameType","_newJavaScriptObject","_objectToString","_ofArray","_onError","_onValue","_parseRecipe","_processed","_recipeJoin","_recordPause","_recordResume","_registerDataHandler","_registerDoneHandler","_removeListeners","_rtiBind","_rtiEval","_scheduleImmediate","_setAsCheckFunction","_setBindCache","_setCachedRuntimeType","_setCanonicalRecipe","_setChained","_setErrorObject","_setEvalCache","_setIsTestFunction","_setKind","_setNamed","_setOptionalPositional","_setPrecomputed1","_setPrimary","_setRequiredPositional","_setRest","_setSpecializedTestResource","_setValue","_specializedAsCheck","_startsWithData","_stderr","_stdin","_stdout","_stringFromIterable","_stringFromJSArray","_stringOrNullLength","_stringToSafeString","_successTearDowns","_target","_toFilePath","_toListGrowable","_transformerSink","_trySetStackTrace","_types","_upgradedMap","_waitsForCancel","_whenCompleteAction","_wrapAwaitedExpression","_writeAuthority","_writeOne","_writeString","_zone","allocate","arrayAt","arrayConcat","arrayLength","arraySplice","asBool","asBoolOrNull","asInt","asRti","asRtiOrNull","asString","as_Type","charCodeAt","checkNull","checkString","collectNamed","constructorNameFallback","dispatchRecordExtension","dispatchRecordIndexability","dispatchRecordInterceptor","dispatchRecordProto","empty","environment","erasedTypes","evalCache","evalTypeVariable","eventTransformed","firstMatchAfter","fromList","fromString","getDispatchProperty","getIndex","getLength","getProperty","getRuntimeTypeOfInterceptorNotArray","handleNamedGroup","handleOptionalGroup","handleStartRecord","hash2","hash3","identifier","identityHashCode","immediate","interceptorFieldName","isArray","isDigit","isDriveLetter","jsonDecode","jsonEncodeNative","listToString","lookupSupertype","lookupTypeVariable","mapGet","mapSet","markFixedList","markGrowable","notSimple","objectKeys","objectToHumanReadableString","of","parseHexByte","pop","position","printToConsole","propertyGet","provokeCallErrorOnNull","provokeCallErrorOnUndefined","provokePropertyErrorOnNull","provokePropertyErrorOnUndefined","push","pushStackFrame","receiverFieldName","recipe","regExpGetGlobalNative","regExpGetNative","sharedEmptyArray","stack","stringConcatUnchecked","stringIndexOf","stringIndexOfStringUnchecked","stringLastIndexOfUnchecked","stringReplaceAllUsingSplitJoin","stringReplaceJS","stringSafeToString","stringSplit","substring1Unchecked","substring2Unchecked","sync","thenAwait","toGenericFunctionParameter","toStringVisiting","tryParse","tryStringifyException","typeRules","typed","universe","unmangleGlobalNameIfPreservedAnyways","unsafeCast","withBufferSize","writeFinalChunk","zoneValue","zoned"], - "mappings": "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", + "mappings": "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", "x_org_dartlang_dart2js": { "minified_names": { "global": "$get$DART_CLOSURE_PROPERTY_NAME,1503,$get$Frame__uriRegExp,2018,$get$Frame__windowsRegExp,2023,$get$Future__nullFuture,1988,$get$StackZoneSpecification_disableKey,2071,$get$Style_platform,2153,$get$Style_posix,2154,$get$Style_url,1530,$get$Style_windows,1529,$get$TypeErrorDecoder_noSuchMethodPattern,2135,$get$TypeErrorDecoder_notClosurePattern,2136,$get$TypeErrorDecoder_nullCallPattern,2137,$get$TypeErrorDecoder_nullLiteralCallPattern,2139,$get$TypeErrorDecoder_nullLiteralPropertyPattern,2140,$get$TypeErrorDecoder_nullPropertyPattern,2141,$get$TypeErrorDecoder_undefinedCallPattern,2174,$get$TypeErrorDecoder_undefinedLiteralCallPattern,2175,$get$TypeErrorDecoder_undefinedLiteralPropertyPattern,2176,$get$TypeErrorDecoder_undefinedPropertyPattern,2177,$get$_AsyncRun__scheduleImmediateClosure,2003,$get$_Base64Decoder__inverseAlphabet,1948,$get$_RootZone__rootMap,2002,$get$_Uri__isWindowsCached,1954,$get$_Uri__needsNoEncoding,1978,$get$_Utf8Decoder__decoder,1929,$get$_Utf8Decoder__decoderNonfatal,1930,$get$_Utf8Decoder__reusableBuffer,1999,$get$_asyncBody,1553,$get$_digits,1539,$get$_firefoxEvalLocation,1548,$get$_firefoxEvalTrace,1560,$get$_firefoxSafariJSFrame,1549,$get$_firefoxSafariTrace,1561,$get$_firefoxWasmFrame,1550,$get$_friendlyFrame,1552,$get$_friendlyTrace,1562,$get$_hashSeed,1525,$get$_initialDot,1554,$get$_safariWasmFrame,1551,$get$_safeToStringHooks,1505,$get$_specKey,1542,$get$_v8EvalLocation,1547,$get$_v8JsFrame,1544,$get$_v8JsUrlLocation,1545,$get$_v8Trace,1558,$get$_v8TraceLine,1559,$get$_v8WasmFrame,1546,$get$_vmFrame,1543,$get$context,1526,$get$context0,1526,$get$maxInt32,1540,$get$minInt32,1541,$get$nullFuture,1504,$get$processManager,1528,$get$url,1530,$get$vmChainGap,1563,$get$windows,1529,ActionContext,1527,ActionResult,1565,ArgumentError,364,ArgumentError$,1564,ArgumentError$value,2179,ArgumentError_checkNotNull,2057,ArrayIterator,1566,AsciiCodec,1567,AsciiEncoder,1568,AssertionError,363,AssertionError$,1564,AsyncError,1569,AsyncError_defaultStackTrace,2070,Base64Codec,1570,Base64Codec__checkPadding,1914,Base64Encoder,1571,BoundClosure,1572,BoundClosure__computeFieldNamed,1919,BoundClosure__interceptorFieldNameCache,1946,BoundClosure__receiverFieldNameCache,1997,BoundClosure_evalRecipe,2078,BoundClosure_interceptorOf,2119,BoundClosure_receiverOf,2160,ByteBuffer,1573,ByteConversionSink,1574,ByteData,1575,CastIterable,12,CastIterable_CastIterable,1564,CastIterator,1576,CastList,1577,CastMap,1578,CastMap_forEach_closure,641,Chain,1579,Chain_Chain$parse,1294,Chain_Chain$parse_closure,1580,Chain_capture,2054,Chain_capture_closure,1434,Chain_toString__closure,1581,Chain_toString__closure0,1581,Chain_toString_closure,1582,Chain_toString_closure0,1582,Chain_toTrace_closure,1583,ChildProcess_spawn,451,ChildProcess_spawn_closure,1584,Closure,1585,Closure0Args,1586,Closure2Args,1587,Closure__computeSignatureFunction,1920,Closure_cspForwardCall,2065,Closure_cspForwardInterceptedCall,2066,Closure_forwardCallTo,2090,Closure_forwardInterceptedCallTo,2091,Closure_fromTearOff,2101,CodeUnits,1588,Codec,1589,Completer,456,ConcurrentModificationError,377,ConcurrentModificationError$,1564,Context,459,Context_Context,1564,Context_joinAll_closure,1590,Context_split_closure,1591,Converter,1592,Converter_bind_closure,1593,Core_getRequiredInput,517,Core_setFailed,519,Core_withGroup,518,Core_withGroup$body,518,DART_CLOSURE_PROPERTY_NAME,1503,Duration,1594,EfficientLengthIterable,1595,EfficientLengthMappedIterable,1596,EfficientLengthSkipIterable,24,EfficientLengthTakeIterable,1597,EmptyIterable,1598,EmptyIterator,1599,Encoding,1600,Error,1601,Error__throw,2011,Error_safeToString,2161,Error_throwWithStackTrace,2166,EventEmitter_once,455,EventEmitter_once_closure,1306,EventSink,1602,Exception,378,ExceptionAndStackTrace,1603,Exception_Exception,1564,ExpandIterable,1604,ExpandIterator,672,Expando,479,Expando__badExpandoKey,1905,Expando__checkType,1915,FixedLengthListMixin,1605,Float32List,1606,Float64List,1607,FormatException,379,FormatException$,1564,Frame,1608,Frame_Frame$_parseFirefoxEval,1992,Frame_Frame$_parseFirefoxEval_closure,1609,Frame_Frame$parseFirefox,2145,Frame_Frame$parseFirefox_closure,1610,Frame_Frame$parseFriendly,2146,Frame_Frame$parseFriendly_closure,1611,Frame_Frame$parseV8,2150,Frame_Frame$parseV8_closure,1612,Frame_Frame$parseV8_closure_parseJsLocation,1613,Frame_Frame$parseVM,2151,Frame_Frame$parseVM_closure,1614,Frame___parseFirefox_tearOff,1786,Frame___parseFriendly_tearOff,1787,Frame___parseV8_tearOff,1788,Frame___parseVM_tearOff,1789,Frame__catchFormatException,1911,Frame__uriOrPathToUri,2017,Frame__uriRegExp,2018,Frame__windowsRegExp,2023,Function,1615,Future,1616,FutureExtensions_ignore,1617,Future_Future$value,2179,Future___value_tearOff,1790,Future__nullFuture,1988,Future_any,2030,Future_any_onError,1618,Future_any_onValue,825,Future_wait,2181,Future_wait_closure,822,Future_wait_handleError,1619,HashMap_HashMap,1564,HashMap_HashMap$from,2096,HashMap_HashMap$from_closure,1620,IOSink,1621,IndexError,1622,IndexError$withLength,2182,Instantiation,1623,Instantiation1,1624,Int16List,1625,Int32List,1626,Int8List,1627,Interceptor,1628,InternalStyle,1629,Iterable,1630,IterableElementError_noElement,2134,IterableElementError_tooFew,2170,IterableExtension_firstWhereOrNull,1631,Iterable_iterableToFullString,2121,Iterable_iterableToShortString,2122,Iterator,1632,JSArray,1633,JSArraySafeToStringHook,1634,JSArray_JSArray$fixed,2088,JSArray_JSArray$growable,2108,JSArray_JSArray$markFixed,2131,JSBool,1635,JSIndexable,1636,JSInt,1637,JSNull,1638,JSNumNotInt,1639,JSNumber,1640,JSON,1641,JSObject,1642,JSString,1643,JSString__isWhitespace,1953,JSString__skipLeadingWhitespace,2008,JSString__skipTrailingWhitespace,2009,JSSyntaxRegExp,1644,JSSyntaxRegExp_makeNative,2128,JSUnmodifiableArray,1645,JS_CONST,1646,JavaScriptBigInt,1647,JavaScriptFunction,1648,JavaScriptIndexingBehavior,1649,JavaScriptObject,1650,JavaScriptSymbol,1651,JsLinkedHashMap,1652,JsLinkedHashMap_addAll_closure,735,JsNoSuchMethodError,60,JsNoSuchMethodError$,1564,JsonCodec,1653,JsonDecoder,1654,LateError,1655,LateError$fieldADI,2081,LateError$fieldNI,2082,LazyChain,1656,LazyTrace,1657,LegacyJavaScriptObject,1658,LineSplitter,1659,LineSplitter_bind_closure,1660,LinkedHashMap,1661,LinkedHashMapCell,1662,LinkedHashMapEntriesIterable,1663,LinkedHashMapEntryIterator,1664,LinkedHashMapKeyIterator,1665,LinkedHashMapKeysIterable,1666,LinkedHashMapValueIterator,1667,LinkedHashMapValuesIterable,1668,LinkedHashMap_LinkedHashMap$_empty,1933,LinkedHashMap_LinkedHashMap$_literal,1957,List,1669,ListBase,1670,ListIterable,1671,ListIterator,1672,List_List$_of,1989,List_List$filled,2084,List_List$from,2096,List_List$unmodifiable,2178,Map,1673,MapBase,1674,MapBase_mapToString,2130,MapBase_mapToString_closure,1675,MapEntry,1676,Map_castFrom,2055,MappedIterable,21,MappedIterable_MappedIterable,1564,MappedIterator,1677,MappedListIterable,1678,Mapping,1679,Match,1680,MultiSectionMapping,1681,NativeArrayBuffer,1682,NativeByteBuffer,1683,NativeByteData,1684,NativeFloat32List,1685,NativeFloat64List,1686,NativeInt16List,1687,NativeInt32List,1688,NativeInt8List,1689,NativeInt8List__create1,1922,NativeSharedArrayBuffer,1690,NativeTypedArray,1691,NativeTypedArrayOfDouble,1692,NativeTypedArrayOfInt,1693,NativeTypedData,1694,NativeUint16List,1695,NativeUint32List,1399,NativeUint8ClampedList,1696,NativeUint8List,114,NativeUint8List_NativeUint8List,1564,NativeUint8List_NativeUint8List$view,2180,NodeProcess,1316,NodeProcessManager,1311,NodeProcessManager_run_closure,1697,NodeProcessManager_run_closure0,1697,NodeProcess__init_closure,1698,NodeProcess__init_closure0,1698,NodeReadableStream_get_stream,453,NodeReadableStream_get_stream_closure,1699,NodeReadableStream_get_stream_closure0,1699,NodeReadableStream_get_stream_onData,1700,NodeReadableStream_get_stream_onDone,1302,NodeReadableStream_get_stream_onError,1701,Null,1702,NullError,1703,NullThrownFromJavaScriptException,1704,Object,1705,Object_hash,2114,OutOfMemoryError,1706,ParsedPath,1707,ParsedPath_ParsedPath$parse,1294,PathException,465,PathException$,1564,Pattern,1708,PlainJavaScriptObject,1709,PosixStyle,1533,Primitives__fromCharCodeApply,1937,Primitives__identityHashCodeProperty,1943,Primitives_currentUri,2067,Primitives_extractStackTrace,2080,Primitives_objectHashCode,65,Primitives_objectTypeName,2144,Primitives_parseInt,2148,Primitives_safeToString,2161,Primitives_stringFromCharCode,2162,Primitives_stringFromCharCodes,2163,Primitives_stringFromCodePoints,2164,Primitives_stringFromNativeUint8List,2165,Primitives_trySetStackTrace,2173,Process,1710,ProcessException,1711,ProcessResult,1712,ProcessStartMode,1713,Process_exit,521,Process_get_env,520,RangeError,367,RangeError$,1564,RangeError$range,2159,RangeError$value,2179,RangeError_checkNotNegative,2056,RangeError_checkValidRange,2058,RangeError_checkValueInInterval,2059,Record,1714,RegExp,354,RegExpMatch,1715,RegExp_RegExp,1564,Rti,1716,Rti__getCanonicalRecipe,1938,Rti__getFutureFromFutureOr,1939,Rti__isUnionOfFunctionType,1952,RuntimeError,1717,S,29,SafeToStringHook,1718,SentinelValue,1719,SingleMapping,1720,SingleMapping$fromJson,2099,SingleMapping$fromJson_closure,1721,SingleMapping__findColumn_closure,1722,SingleMapping__findLine_closure,1723,Sink,1724,SkipIterable,23,SkipIterable_SkipIterable,1564,SkipIterator,1725,SkipWhileIterable,1726,SkipWhileIterator,1727,SourceFile,1728,SourceLocation,476,SourceLocation$,1564,SourceMapSpan,474,SourceMapSpan$,1564,SourceSpan,1729,SourceSpanBase,1424,SourceSpanMixin,1730,StackOverflowError,1731,StackTrace,1732,StackTrace_current,523,StackZoneSpecification,1733,StackZoneSpecification__currentTrace_closure,1734,StackZoneSpecification__registerBinaryCallback__closure,1480,StackZoneSpecification__registerBinaryCallback_closure,1478,StackZoneSpecification__registerCallback_closure,1472,StackZoneSpecification__registerUnaryCallback__closure,1476,StackZoneSpecification__registerUnaryCallback_closure,1474,StackZoneSpecification_chainFor_closure,1735,StackZoneSpecification_chainFor_closure0,1735,StackZoneSpecification_disableKey,2071,StateError,376,StateError$,1564,StaticClosure,1736,Stream,1737,StreamConsumer,1738,StreamController,302,StreamController_StreamController,1564,StreamForward_forward,1739,StreamForward_forward_closure,1328,StreamForward_forward_closure0,1328,StreamForward_forward_closure1,1328,StreamIterator_StreamIterator,1564,StreamSubscription,1740,StreamTransformer,1741,StreamTransformerBase,1742,Stream_length_closure,872,Stream_length_closure0,872,String,1743,StringBuffer,1744,StringBuffer__writeAll,2025,StringConversionSink,1745,StringMatch,1746,StringSink,1747,String_String$fromCharCode,2097,String_String$fromCharCodes,2098,String__stringFromUint8List,2010,Style,1748,Style__getPlatformStyle,1940,Style_platform,2153,Style_posix,2154,Style_url,1530,Style_windows,1529,SubListIterable,20,SubListIterable$,1564,SystemHash_combine,2061,SystemHash_finish,2087,TakeIterable,22,TakeIterable_TakeIterable,1564,TakeIterator,1749,TargetEntry,1750,TargetLineEntry,1751,TearOffClosure,1752,Timer,1753,Timer__createTimer,1926,Trace,507,Trace$,1564,Trace$parseFirefox,2145,Trace$parseFirefox_closure,1754,Trace$parseFriendly,2146,Trace$parseFriendly_closure,1755,Trace$parseJSCore,2149,Trace$parseJSCore_closure,1756,Trace$parseV8,2150,Trace$parseV8_closure,1757,Trace$parseVM,2151,Trace_Trace$from,2096,Trace_Trace$from_closure,1758,Trace_Trace$parse,1294,Trace___parseFriendly_tearOff,1787,Trace___parseVM_tearOff,1789,Trace__parseVM,1994,Trace__parseVM_closure,1759,Trace_toString_closure,1760,Trace_toString_closure0,1760,TrustedGetRuntimeType,1761,TypeError,1762,TypeErrorDecoder,1763,TypeErrorDecoder_extractPattern,2079,TypeErrorDecoder_noSuchMethodPattern,2135,TypeErrorDecoder_notClosurePattern,2136,TypeErrorDecoder_nullCallPattern,2137,TypeErrorDecoder_nullLiteralCallPattern,2139,TypeErrorDecoder_nullLiteralPropertyPattern,2140,TypeErrorDecoder_nullPropertyPattern,2141,TypeErrorDecoder_provokeCallErrorOn,2157,TypeErrorDecoder_provokePropertyErrorOn,2158,TypeErrorDecoder_undefinedCallPattern,2174,TypeErrorDecoder_undefinedLiteralCallPattern,2175,TypeErrorDecoder_undefinedLiteralPropertyPattern,2176,TypeErrorDecoder_undefinedPropertyPattern,2177,Uint16List,1764,Uint32List,1765,Uint8ClampedList,1766,Uint8List,1767,UnimplementedError,375,UnimplementedError$,1564,UnknownJavaScriptObject,1768,UnknownJsTypeError,1769,UnmodifiableListBase,1770,UnmodifiableListMixin,1771,UnparsedFrame,495,UnsupportedError,374,UnsupportedError$,1564,Uri,1772,UriData,1773,UriData__parse,1991,UriData__uriEncodeBytes,2016,UriData__writeUri,2026,Uri_Uri$dataFromString,2068,Uri__cachedBaseString,1906,Uri__cachedBaseUri,1907,Uri__ipv4FormatError,1949,Uri__parseIPv4Address,1993,Uri__validateIPvAddress,2021,Uri__validateIPvFutureAddress,2022,Uri_base,2051,Uri_decodeComponent,2069,Uri_parse,1294,Uri_parseIPv6Address,2147,Uri_parseIPv6Address_error,1774,UrlStyle,1537,Utf8Codec,1775,Utf8Decoder,1776,Utf8Encoder,1777,WhereIterable,1778,WhereIterator,1779,WhereTypeIterable,1780,WhereTypeIterator,1781,WindowsStyle,1535,WindowsStyle_absolutePathToUri_closure,1782,Zone,1783,ZoneDelegate,1784,ZoneSpecification,1785,Zone__current,1927,_AddStreamState,878,_AddStreamState_cancel_closure,1791,_AllMatchesIterable,1792,_AllMatchesIterator,1793,_AsciiBase64EncoderSink,1104,_AsyncAwaitCompleter,1794,_AsyncCallbackEntry,1795,_AsyncCompleter,1796,_AsyncRun__initializeScheduleImmediate,1944,_AsyncRun__initializeScheduleImmediate_closure,1797,_AsyncRun__initializeScheduleImmediate_internalCallback,1798,_AsyncRun__scheduleImmediateClosure,2003,_AsyncRun__scheduleImmediateJsOverride,2004,_AsyncRun__scheduleImmediateJsOverride_internalCallback,1799,_AsyncRun__scheduleImmediateWithSetImmediate,2005,_AsyncRun__scheduleImmediateWithSetImmediate_internalCallback,1800,_AsyncRun__scheduleImmediateWithTimer,2006,_Base64Decoder__inverseAlphabet,1948,_Base64Encoder,1801,_Base64EncoderSink,1802,_Base64Encoder_encodeChunk,2074,_BoundSinkStream,1803,_BufferCachingBase64Encoder,1804,_BufferingStreamSubscription,890,_BufferingStreamSubscription__registerErrorHandler,295,_BufferingStreamSubscription__sendDone_sendDone,1805,_BufferingStreamSubscription__sendError_sendError,1806,_ByteAdapterSink,1807,_CastIterableBase,1808,_CastListBase,1809,_Completer,1810,_ControllerStream,1811,_ControllerSubscription,1812,_ConverterStreamEventSink,1813,_CustomZone,323,_CustomZone_bindCallbackGuarded_closure,1814,_CustomZone_bindCallback_closure,982,_CustomZone_bindUnaryCallback_closure,984,_DataUri,1815,_DelayedData,1816,_DelayedDone,1817,_DelayedError,1818,_DelayedEvent,1819,_EfficientLengthCastIterable,1820,_Enum,1821,_Error,1822,_Error_compose,2062,_EventDispatch,1823,_EventSink,1824,_EventSinkWrapper,1825,_Exception,1826,_FunctionParameters,1827,_FusedCodec,1828,_Future,1829,_Future$value,2179,_FutureListener,1830,_Future__addListener_closure,1831,_Future__asyncCompleteErrorObject_closure,1832,_Future__asyncCompleteWithValue_closure,1833,_Future__chainCoreFuture,1912,_Future__chainCoreFuture_closure,1834,_Future__prependListeners_closure,1835,_Future__propagateToListeners,1996,_Future__propagateToListeners_handleError,1836,_Future__propagateToListeners_handleValueCallback,1837,_Future__propagateToListeners_handleWhenCompleteCallback,1838,_Future__propagateToListeners_handleWhenCompleteCallback_closure,1839,_Future__propagateToListeners_handleWhenCompleteCallback_closure0,1839,_HashMap,1840,_HashMapKeyIterable,1841,_HashMapKeyIterator,1842,_HashMap__getTableEntry,1941,_HashMap__newHashTable,1979,_HashMap__setTableEntry,2007,_HashMap_values_closure,1047,_IOSinkImpl,1843,_IdentityHashMap,1844,_JS_INTEROP_INTERCEPTOR_TAG,1845,_JsonDecoderSink,1127,_JsonMap,1846,_JsonMapKeyIterable,1847,_JsonMap_values_closure,1848,_LineSplitterEventSink,1130,_LineSplitterSink,1849,_MapBaseValueIterable,1850,_MapBaseValueIterator,1851,_MappingTokenizer,1852,_MatchImplementation,1853,_NativeTypedArrayOfDouble_NativeTypedArray_ListMixin,1854,_NativeTypedArrayOfDouble_NativeTypedArray_ListMixin_FixedLengthListMixin,1855,_NativeTypedArrayOfInt_NativeTypedArray_ListMixin,1856,_NativeTypedArrayOfInt_NativeTypedArray_ListMixin_FixedLengthListMixin,1857,_Node,1858,_Parser_collectArray,2060,_Parser_create,2064,_Parser_handleArguments,2109,_Parser_handleDigit,2110,_Parser_handleExtendedOperations,2111,_Parser_handleIdentifier,2112,_Parser_handleTypeArguments,2113,_Parser_indexToType,2115,_Parser_parse,1294,_Parser_toType,2167,_Parser_toTypes,2168,_Parser_toTypesNamed,2169,_PathDirection,1859,_PathRelation,1860,_PendingEvents,1861,_PendingEvents_schedule_closure,1862,_RootZone,1863,_RootZone__rootDelegate,2000,_RootZone__rootMap,2002,_RootZone_bindCallbackGuarded_closure,1864,_RootZone_bindCallback_closure,1022,_RootZone_bindUnaryCallback_closure,1024,_SimpleUri,1865,_SimpleUri__packageNameEnd,1990,_SinkTransformerStreamSubscription,957,_StackTrace,1866,_StreamController,1867,_StreamControllerAddStreamState,879,_StreamControllerLifecycle,1868,_StreamController__recordCancel_complete,1869,_StreamController__subscribe_closure,1870,_StreamImpl,1871,_StreamIterator,1872,_StreamSinkImpl,1873,_StreamSinkImpl__controller_closure,1874,_StreamSinkImpl__controller_closure0,1874,_StreamSinkWrapper,1875,_StringAdapterSink,1876,_StringAllMatchesIterable,1877,_StringAllMatchesIterator,1878,_StringSinkConversionSink,1879,_StringStackTrace,1880,_SyncCompleter,1881,_SyncStreamController,1882,_SyncStreamControllerDispatch,1883,_TimerImpl,268,_TimerImpl$,1564,_TimerImpl$periodic,2152,_TimerImpl$periodic_closure,1884,_TimerImpl_internalCallback,1885,_TokenKind,1886,_Type,152,_TypeError,1887,_TypeError$fromMessage,2100,_TypeError__TypeError$forType,2089,_UnicodeSubsetEncoder,1888,_UnicodeSubsetEncoderSink,1889,_Universe__canonicalRecipeJoin,1908,_Universe__canonicalRecipeJoinNamed,1909,_Universe__createFutureOrRti,1923,_Universe__createGenericFunctionRti,1924,_Universe__createQuestionRti,1925,_Universe__installTypeTests,1945,_Universe__lookupBindingRti,1958,_Universe__lookupFunctionRti,1959,_Universe__lookupFutureOrRti,1960,_Universe__lookupGenericFunctionParameterRti,1961,_Universe__lookupGenericFunctionRti,1962,_Universe__lookupInterfaceRti,1963,_Universe__lookupQuestionRti,1964,_Universe__lookupRecordRti,1965,_Universe__lookupTerminalRti,1966,_Universe_addErasedTypes,2027,_Universe_addRules,2028,_Universe_bind,2052,_Universe_eval,2076,_Universe_evalInEnvironment,2077,_Universe_findErasedType,2085,_Universe_findRule,2086,_UnmodifiableNativeByteBufferView,1890,_UnreachableError,1891,_Uri,396,_Uri$_internal,1947,_Uri__Uri,1564,_Uri__Uri$file,2083,_Uri__canonicalizeScheme,1910,_Uri__checkNonWindowsPathReservedCharacters,1913,_Uri__checkWindowsDriveLetter,1916,_Uri__checkWindowsPathReservedCharacters,1917,_Uri__checkZoneID,1918,_Uri__defaultPort,1931,_Uri__escapeChar,1934,_Uri__escapeScheme,1935,_Uri__fail,1936,_Uri__hexCharPairToByte,1942,_Uri__isAlphabeticCharacter,1950,_Uri__isWindowsCached,1954,_Uri__makeFileUri,1967,_Uri__makeFragment,1968,_Uri__makeHost,1969,_Uri__makePath,1971,_Uri__makePath_closure,1892,_Uri__makePort,1972,_Uri__makeQuery,1973,_Uri__makeScheme,1974,_Uri__makeUserInfo,1975,_Uri__makeWindowsFileUrl,1976,_Uri__mayContainDotSegments,1977,_Uri__needsNoEncoding,1978,_Uri__normalize,1981,_Uri__normalizeEscape,1982,_Uri__normalizeOrSubstring,1983,_Uri__normalizePath,1984,_Uri__normalizeRegName,1985,_Uri__normalizeRelativePath,1986,_Uri__normalizeZoneID,1987,_Uri__packageNameEnd,1990,_Uri__removeDotSegments,1998,_Uri__toWindowsFilePath,2013,_Uri__uriDecode,2014,_Uri__uriEncode,2015,_Utf8Base64EncoderSink,1103,_Utf8ConversionSink,1140,_Utf8Decoder,1893,_Utf8Decoder__convertInterceptedUint8List,1921,_Utf8Decoder__decoder,1929,_Utf8Decoder__decoderNonfatal,1930,_Utf8Decoder__decoderNonfatal_closure,1894,_Utf8Decoder__decoder_closure,1895,_Utf8Decoder__makeNativeUint8List,1970,_Utf8Decoder__reusableBuffer,1999,_Utf8Decoder__useTextDecoder,2019,_Utf8Decoder_errorDescription,2075,_Utf8Encoder,1896,_Utf8EncoderSink,1897,_Utf8StringSinkAdapter,1145,_Utils_newArrayOrEmpty,2133,_Utils_objectAssign,2143,_Zone,1898,_ZoneDelegate,1899,_ZoneFunction,1900,_ZoneSpecification,1901,__CastListBase__CastIterableBase_ListMixin,1902,__Utf8EncoderSink__Utf8Encoder_StringConversionSink,1903,_areArgumentsSubtypes,258,_arrayInstanceType,141,_asBool,180,_asBoolQ,181,_asDouble,182,_asDoubleQ,183,_asInt,185,_asIntQ,186,_asJSObject,193,_asJSObjectQ,194,_asNum,188,_asNumQ,189,_asObject,175,_asString,191,_asStringQ,192,_asTop,177,_asyncAwait,273,_asyncBody,1553,_asyncRethrow,275,_asyncReturn,274,_asyncStartSync,272,_awaitOnObject,276,_awaitOnObject_closure,1904,_awaitOnObject_closure0,1904,_callDartFunctionFast1,446,_callDartFunctionFast3,447,_caseInsensitiveCompareStart,444,_checkValidIndex,116,_checkValidRange,117,_convertJsonToDartLazy,333,_current,1927,_currentUriBase,1928,_diagnoseUnsupportedOperation,55,_digits,1539,_digits_closure,1932,_ensureNativeList,112,_errorForAsCheck,168,_firefoxEvalLocation,1548,_firefoxEvalTrace,1560,_firefoxSafariJSFrame,1549,_firefoxSafariTrace,1561,_firefoxWasmFrame,1550,_friendlyFrame,1552,_friendlyTrace,1562,_functionRtiToString,197,_functionToJS1,445,_generalAsCheckImplementation,166,_generalIsTestImplementation,159,_generalNullableAsCheckImplementation,167,_generalNullableIsTestImplementation,160,_hashSeed,1525,_initialDot,1554,_installSpecializedAsCheck,158,_installSpecializedIsTest,154,_instanceType,142,_instanceTypeFromConstructor,143,_instanceTypeFromConstructorMiss,144,_interceptError,288,_interceptUserError,289,_invokeClosure,67,_isBool,179,_isFunctionSubtype,255,_isFutureOr,173,_isInCallbackLoop,1951,_isInt,184,_isInterfaceSubtype,256,_isJSObject,164,_isJSObjectStandalone,165,_isListTestViaProperty,163,_isNever,178,_isNum,187,_isObject,174,_isRecordSubtype,259,_isString,190,_isSubtype,254,_isTestViaProperty,162,_isTop,176,_iterablePartsToStrings,382,_lastCallback,1955,_lastPriorityCallback,1956,_makeAsyncAwaitCompleter,270,_microtaskLoop,296,_nextCallback,1980,_noJsifyRequired,448,_nullDoneHandler,306,_nullErrorHandler,305,_parseJson,332,_parseUri,460,_prettifyMember,469,_prettifyMember_closure,1995,_prettifyMember_closure0,1995,_recordRtiToString,196,_registerErrorHandler,295,_rootCreatePeriodicTimer,320,_rootCreateTimer,319,_rootErrorCallback,317,_rootFork,322,_rootHandleError,310,_rootHandleError_closure,2001,_rootHandleUncaughtError,309,_rootPrint,321,_rootRegisterBinaryCallback,316,_rootRegisterCallback,314,_rootRegisterUnaryCallback,315,_rootRun,311,_rootRunBinary,313,_rootRunUnary,312,_rootScheduleMicrotask,318,_rtiArrayToString,195,_rtiToString,198,_runGuarded,303,_runZoned,308,_safariWasmFrame,1551,_safeToStringHooks,1505,_scan,441,_scheduleAsyncCallback,298,_schedulePriorityAsyncCallback,299,_setArrayType,137,_simpleSpecializedIsTest,157,_skipPackageNameChars,443,_specKey,1542,_specializedIsTest,155,_startMicrotaskLoop,297,_stringIdentity,107,_structuralTypeOf,148,_substitute,127,_substituteArray,133,_substituteFunctionParameters,135,_substituteNamed,134,_toStringVisiting,2012,_unminifyOrTag,199,_unwrapNonDartException,63,_v8EvalLocation,1547,_v8JsFrame,1544,_v8JsUrlLocation,1545,_v8Trace,1558,_v8TraceLine,1559,_v8WasmFrame,1546,_validateArgList,461,_validateArgList_closure,2020,_vmFrame,1543,_wrapJsFunctionForAsync,277,_wrapJsFunctionForAsync_closure,2024,alternateTagFunction,2029,applyHooksTransformer,96,argumentErrorValue,49,async_Future___value_tearOff$closure,2031,async__AsyncRun__scheduleImmediateJsOverride$closure,2032,async__AsyncRun__scheduleImmediateWithSetImmediate$closure,2033,async__AsyncRun__scheduleImmediateWithTimer$closure,2034,async___nullDoneHandler$closure,2035,async___nullErrorHandler$closure,2036,async___rootCreatePeriodicTimer$closure,2037,async___rootCreateTimer$closure,2038,async___rootErrorCallback$closure,2039,async___rootFork$closure,2040,async___rootHandleUncaughtError$closure,2041,async___rootPrint$closure,2042,async___rootRegisterBinaryCallback$closure,2043,async___rootRegisterCallback$closure,2044,async___rootRegisterUnaryCallback$closure,2045,async___rootRun$closure,2046,async___rootRunBinary$closure,2047,async___rootRunUnary$closure,2048,async___rootScheduleMicrotask$closure,2049,async___startMicrotaskLoop$closure,2050,binarySearch,526,bool,2053,checkNotNullable,18,checkTypeBound,169,closureFromTearOff,76,closureFunctionType,138,context,1526,context0,1526,convertDartClosureToJS,68,convertDartClosureToJSUncached,69,convertMainArgumentList,83,core_Uri_decodeComponent$closure,2063,createRecordTypePredicate,97,createRuntimeType,150,current,523,decodeVlq,475,defineProperty,84,diagnoseIndexError,47,diagnoseRangeError,48,dispatchRecordsForInstanceTags,2072,double,2073,driveLetterEnd,525,escapeReplacement,101,fillLiteralMap,66,findType,123,frame_Frame___parseFirefox_tearOff$closure,2092,frame_Frame___parseFriendly_tearOff$closure,2093,frame_Frame___parseV8_tearOff$closure,2094,frame_Frame___parseVM_tearOff$closure,2095,get$context,1526,get$current,523,get$scheduleMicrotask,300,getInterceptor$,2102,getInterceptor$asx,2103,getInterceptor$ax,2104,getInterceptor$s,2105,getInterceptor$x,2106,getIsolateAffinityTag,82,getNativeInterceptor,1,getRuntimeTypeOfClosure,147,getRuntimeTypeOfDartObject,146,getTagFunction,2107,getTraceFromException,64,getTypeFromTypesTable,145,hexDigitValue,15,iae,45,initHooks,95,initHooks_closure,2116,initHooks_closure0,2116,initHooks_closure1,2116,initNativeDispatch,93,initNativeDispatchContinue,94,initNativeDispatchFlag,2117,initializeExceptionWrapper,51,instanceOrFunctionType,139,instanceType,140,instantiatedGenericFunctionType,124,int,2118,int_parse,1294,interceptorsForUncacheableTags,2120,ioore,46,isAlphabetic,524,isJsIndexable,28,isNullable,260,isSubtype,253,isToStringVisiting,19,isTopType,261,jsify,449,jsify__convert,2123,logMetric,509,logMetric_closure,2124,logMetric_parseMatrixInput,2125,logMetric_parseMatrixInput_closure,2126,log_cw_metric__logMetric$closure,2127,lookupAndCacheInterceptor,85,main,508,makeDefaultDispatchRecord,92,makeDispatchRecord,0,makeLeafDispatchRecord,91,mapStackTrace,467,mapStackTrace_closure,2129,mapStackTrace_closure0,2129,math__max$closure,2132,max,515,maxInt32,1540,minInt32,1541,nullFuture,1504,nullFuture_closure,2138,num,2142,objectHashCode,65,parseJson,471,patchInteriorProto,90,pow,516,printString,512,processManager,1528,processManager_closure,2155,prototypeForTagFunction,2156,quoteStringForRegExp,103,runZoned,307,saveStackTrace,62,scheduleMicrotask,300,stringContainsUnchecked,99,stringReplaceAllFuncUnchecked,108,stringReplaceAllGeneral,105,stringReplaceAllUnchecked,104,stringReplaceAllUncheckedString,106,stringReplaceFirstRE,102,stringReplaceFirstUnchecked,110,stringReplaceRangeUnchecked,111,throwConcurrentModificationError,56,throwExpression,53,throwLateFieldADI,514,throwLateFieldNI,513,throwUnsupportedOperation,54,toStringWrapper,52,trace_Trace___parseFriendly_tearOff$closure,2171,trace_Trace___parseVM_tearOff$closure,2172,typeLiteral,153,unminifyOrTag,27,unreachable,457,unwrapException,61,url,1530,vmChainGap,1563,windows,1529,wrapException,50,wrapMain,450,wrapMain__closure,2183,wrapMain__closure0,2183,wrapMain_closure,1293,wrapMain_closure0,1293", "instance": "$add,2184,$and,2185,$arguments,2274,$call,2283,$call$body$wrapMain_closure,2283,$div,2186,$eq,2187,$function,2766,$ge,2188,$gt,2189,$index,2190,$indexSet,2191,$le,2192,$lt,2193,$mod,2194,$mul,2195,$negate,2196,$not,2197,$or,2198,$package,2882,$protected,2250,$shl,2199,$shr,2200,$sub,2201,$tdiv,2202,$this,2259,$xor,2203,K,2213,MultiSectionMapping$fromJson$3$mapUrl,2099,R,2214,SingleMapping$fromJson$2$mapUrl,2099,SourceFile$_fromList$2$url,2261,SourceSpanBase$3,1564,SubListIterable$3,1564,T,2217,T1,2215,T2,2216,V,2218,_,2206,_0,2204,_1,2205,_TimerImpl$2,1564,_TimerImpl$periodic$2,2152,__,2207,__0,2208,__1,3105,__LazyChain__chain_FI,2948,__LazyTrace__trace_FI,2951,___,2209,___SinkTransformerStreamSubscription__transformerSink_A,2439,___Uri__text_FI,2671,___Uri_hashCode_FI,2672,___Uri_pathSegments_FI,2673,___Uri_queryParametersAll_FI,2675,___Uri_queryParameters_FI,2674,__internal$_current,2331,__internal$_index,2337,__internal$_iterable,2338,__internal$_length,2340,__js_helper$_captured_this_0,2355,__js_helper$_current,2359,__js_helper$_getBucket$2,2367,__js_helper$_index,2372,__js_helper$_length,2381,__js_helper$_message,2384,__js_helper$_name,2388,__js_helper$_rest,2404,__js_helper$_start,2406,__js_helper$_string,2407,__js_helper$_target,2409,__native_typed_data$_data,2414,__rti$_message,2430,_activeProcesses,2893,_add,2440,_add$1,2440,_addAllFromArray,2311,_addAllFromArray$1,2311,_addCarry$2,2631,_addError,2441,_addError$2,2441,_addHashTableEntry,2349,_addHashTableEntry$3,2349,_addLines,2632,_addLines$4,2632,_addListener,2442,_addListener$1,2442,_addPending,2443,_addPending$1,2443,_allowInvalid,2633,_allowMalformed,2634,_alphabet,2635,_arguments,2350,_argumentsExpr,2351,_as,2419,_async$_captured_f_1,2475,_async$_captured_this_0,2491,_async$_errorCallback,2519,_async$_handleUncaughtError,2529,_async$_hasError,2530,_async$_hasValue,2532,_async$_isClosed,2539,_async$_map,2544,_async$_registerBinaryCallback,2569,_async$_registerCallback,2570,_async$_registerUnaryCallback,2571,_async$_run,2580,_async$_target,2599,_asyncComplete,2444,_asyncComplete$1,2444,_asyncCompleteError$2,2445,_asyncCompleteErrorObject,2446,_asyncCompleteErrorObject$1,2446,_asyncCompleteWithValue,2447,_asyncCompleteWithValue$1,2447,_badEventState,2448,_badEventState$0,2448,_binarySearch$1,2939,_bind,2420,_bind$1,2420,_bindCache,2421,_box_0,2449,_box_1,2450,_buffer,2636,_bufferIndex,2637,_cachedLine,2940,_cachedRuntimeType,2422,_canFire,2451,_cancel,2452,_cancel$0,2452,_cancelFuture,2453,_cancelOnError,2454,_canonicalRecipe,2423,_captured_K_1,2609,_captured_R_2,2455,_captured_R_3,2456,_captured_R_4,2957,_captured_R_5,2958,_captured_T1_3,2959,_captured_T2_4,2960,_captured_T_1,2457,_captured_T_2,2458,_captured_T_3,2459,_captured_V_2,2610,_captured__convertedObjects_0,2734,_captured__future_2,2460,_captured__future_3,2461,_captured__this_0,2886,_captured_arg1_1,2962,_captured_arg2_2,2963,_captured_arg_1,2964,_captured_bodyFunction_0,2462,_captured_callback_0,2463,_captured_callback_1,2464,_captured_callback_3,2465,_captured_cleanUp_1,2466,_captured_cleanUp_4,2467,_captured_closeWhenDone_0,2907,_captured_column_0,2923,_captured_completer_0,2468,_captured_completer_2,2908,_captured_controller_0,2889,_captured_controller_1,2910,_captured_dispatch_1,2469,_captured_div_1,2470,_captured_eagerError_2,2471,_captured_eagerError_5,2472,_captured_echoOutput_0,2895,_captured_error_0,2473,_captured_error_1,2474,_captured_f_0,2965,_captured_f_1,2329,_captured_frame_0,2947,_captured_future_1,2476,_captured_getTag_0,2352,_captured_getUnknownTag_0,2353,_captured_hasError_2,2477,_captured_host_0,2676,_captured_joinedResult_0,2478,_captured_level_2,2967,_captured_line_0,2924,_captured_listener_1,2479,_captured_longest_0,2946,_captured_mainFn_0,2883,_captured_milliseconds_1,2480,_captured_minified_1,2917,_captured_minified_3,2918,_captured_node_2,2968,_captured_onData_1,2890,_captured_onDone_2,2891,_captured_onError_3,2892,_captured_originalSource_1,2481,_captured_original_1,2969,_captured_packageMap_2,2919,_captured_pos_1,2482,_captured_protected_0,2483,_captured_prototypeForTag_0,2354,_captured_registered_1,2484,_captured_result_0,2611,_captured_result_1,2612,_captured_sdkLib_1,2920,_captured_sdkRoot_3,2921,_captured_sourceMap_0,2922,_captured_sourceResult_1,2485,_captured_span_2,2486,_captured_stackTrace_1,2487,_captured_stackTrace_2,2488,_captured_start_2,2489,_captured_stderr_1,2896,_captured_stdout_1,2897,_captured_target_1,2490,_captured_this_0,2330,_captured_this_1,2492,_captured_trace_0,2987,_captured_value_1,2493,_carry,2639,_cell,2356,_chain,2949,_chain$_captured_T_1,2944,_chain$_captured_callback_0,2945,_chainForeignFuture$1,2494,_chainFuture,2495,_chainFuture$1,2495,_chainSource,2496,_chains,2972,_charOrIndex,2640,_checkMutable$1,2412,_checkPosition,2413,_checkPosition$3,2413,_checkState,2497,_checkState$1,2497,_child_process$_captured_T_1,2887,_child_process$_captured_completer_0,2888,_chunkedSink,2641,_clear$0,2312,_clearPendingComplete$0,2498,_cloneResult,2499,_cloneResult$1,2499,_close,2500,_close$0,2500,_closeGap$2,2614,_closeTarget,2720,_closeTarget$0,2720,_closeUnchecked$0,2501,_codeUnitAt$1,2313,_collection$_addHashTableEntry,2607,_collection$_addHashTableEntry$3,2607,_collection$_box_0,2608,_collection$_captured_this_0,2613,_collection$_current,2618,_collection$_length,2623,_collection$_map,2624,_collection$_nums,2625,_collection$_rest,2627,_collection$_strings,2629,_columnStart,2926,_complete,2502,_complete$1,2502,_completeDoneError,2721,_completeDoneError$2,2721,_completeDoneValue,2722,_completeDoneValue$1,2722,_completeError,2503,_completeError$2,2503,_completeErrorObject,2504,_completeErrorObject$1,2504,_completeWithResultOf,2505,_completeWithResultOf$1,2505,_completeWithValue,2506,_completeWithValue$1,2506,_computeHasCaptures,2357,_computeHasCaptures$0,2357,_computeHashCode,2615,_computeHashCode$1,2615,_computeKeys,2616,_computeKeys$0,2616,_computeScheme,2677,_computeScheme$0,2677,_computeUri$0,2678,_consumeNewLine$0,2927,_consumeNewSegment$0,2928,_consumeValue$0,2929,_containsKey,2617,_containsKey$1,2617,_containsTableEntry$2,2358,_contents,2679,_context$_current,2911,_controller,2507,_controllerCompleter,2724,_controllerInstance,2725,_convert$_add,2630,_convert$_add$4,2630,_convert$_captured_this_0,2638,_convert$_computeKeys,2642,_convert$_computeKeys$0,2642,_convert$_first,2650,_convert$_sink,2659,_convert$_state,2661,_convertGeneral,2643,_convertGeneral$4,2643,_convertedObjects,2219,_core$_data,2680,_createNode$1,2973,_createPeriodicTimer,2508,_createSubscription$4,2509,_createTimer,2510,_current,2314,_currentExpansion,2332,_currentNode,2974,_currentTrace,2975,_currentTrace$1,2975,_data,2644,_decodeRecursive,2645,_decodeRecursive$4,2645,_decodedChars,2941,_decoder,2646,_decrementPauseCount$0,2511,_defaultSplit,2315,_defaultSplit$1,2315,_delegate,2512,_delegateCache,2513,_delegationTarget,2514,_deleteTableEntry$2,2360,_disabled,2976,_doneCompleter,2726,_doneFuture,2515,_duration,2681,_dynamicCheckData,2424,_encoder,2647,_encoding,2727,_encodingMutable,2728,_endIndex,2333,_endOrLength,2334,_ensureDoneFuture,2516,_ensureDoneFuture$0,2516,_ensurePendingEvents,2517,_ensurePendingEvents$0,2517,_enumToString,2682,_enumToString$0,2682,_error,2518,_errorCallback,2977,_errorCallback$5,2977,_errorExplanation,2683,_errorName,2684,_errorTearDowns,2884,_errorTest,2520,_errorZone,2978,_eval,2425,_eval$1,2425,_evalCache,2426,_eventScheduled,2521,_eventSink,2648,_exception,2361,_execAnchored,2362,_execAnchored$2,2362,_execGlobal,2363,_execGlobal$2,2363,_expr,2364,_f,2335,_fillBuffer,2649,_fillBuffer$3,2649,_findBucketIndex,2619,_findBucketIndex$2,2619,_findColumn,2930,_findColumn$3,2930,_findLine,2931,_findLine$1,2931,_first,2365,_fork,2522,_fragment,2685,_fragmentStart,2686,_future,2523,_genericClosure,2366,_get,2620,_get$1,2620,_getBucket,2621,_getBucket$2,2621,_getTableBucket$2,2368,_getTableCell$2,2369,_guardCallback,2524,_guardCallback$1,2524,_handle,2525,_handleData,2526,_handleData$1,2526,_handleDone,2527,_handleDone$0,2527,_handleError,2528,_handleError$2,2528,_handleUncaughtError,2979,_handleUncaughtError$5,2979,_hasCaptures,2370,_hasCapturesCache,2371,_hasError,2729,_hasPending,2531,_hasSkipped,2336,_hasValue,2687,_hashCodeCache,2688,_host,2689,_hostStart,2690,_ignore,2533,_ignore$0,2533,_ignoreError,2534,_inCallback,2535,_index,2316,_indexFor,2932,_indexFor$2,2932,_init,2899,_init$0,2899,_initializeText$0,2691,_input,2373,_interceptor,2374,_internal,2933,_invalidPosition,2415,_invalidPosition$3,2415,_io$_captured_this_0,2719,_io$_controller,2723,_irritant,2375,_is,2427,_isAddingStream,2536,_isBound,2730,_isCanceled,2537,_isCaseSensitive,2376,_isChained,2538,_isClosed,2731,_isComplete,2540,_isDotAll,2377,_isFile,2692,_isHttp,2693,_isHttps,2694,_isInitialState,2541,_isInputPaused,2542,_isInt32$1,2317,_isMultiLine,2378,_isNearCachedLine$1,2942,_isPackage,2695,_isPaused,2543,_isPort,2696,_isPort$1,2696,_isScheme$1,2697,_isSubtypeCache,2428,_isUnicode,2379,_isUnmodifiable$0,2416,_isUpgraded,2651,_isWithinOrEquals,2912,_isWithinOrEquals$2,2912,_isWithinOrEqualsFast,2913,_isWithinOrEqualsFast$2,2913,_iterable,2318,_iterator,2339,_jsProcess,2900,_jsWeakMap,2698,_keys,2622,_kind,2429,_last,2380,_lazy_chain$_thunk,2950,_lazy_trace$_trace,2953,_length,2319,_lineStart,2935,_lineStarts,2943,_map,2382,_mapUrl,2936,_maps,2937,_match,2383,_mayAddEvent,2545,_mayAddListener,2546,_mayComplete,2547,_mayResumeInput,2548,_mergePaths,2699,_mergePaths$2,2699,_message,2341,_method,2385,_mode,2732,_modifications,2386,_modified$0,2387,_multiCarry,2652,_name,2700,_named,2431,_nativeAnchoredRegExp,2389,_nativeAnchoredVersion,2390,_nativeBuffer,2417,_nativeGlobalRegExp,2391,_nativeGlobalVersion,2392,_nativeRegExp,2393,_needsNormalization,2914,_needsNormalization$1,2914,_newFutureWithSameType$0,2549,_newHashTable,2394,_newHashTable$0,2394,_newLinkedCell,2395,_newLinkedCell$2,2395,_next,2396,_nextIndex,2397,_nextListener,2550,_nums,2398,_offset,2626,_onCancel,2551,_onCancel$0,2551,_onData,2552,_onDone,2553,_onError,2554,_onListen$1,2555,_onPause,2556,_onPause$0,2556,_onResume,2557,_onResume$0,2557,_onValue,2558,_once,2559,_optionalPositional,2432,_original,2653,_parent,2654,_parentDelegate,2560,_parse$1,2915,_parser$_captured_this_0,2925,_parser$_length,2934,_pathDirection,2916,_pathDirection$2,2916,_pathStart,2701,_pattern,2399,_pending,2561,_pendingEvents,2562,_port,2702,_portStart,2703,_precomputed1,2433,_prependListeners,2563,_prependListeners$1,2563,_previous,2400,_primary,2434,_print,2564,_process,2655,_process$1,2655,_processUncaughtError,2565,_processUncaughtError$3,2565,_process_manager$_box_0,2894,_process_manager$_captured_this_0,2898,_processed,2656,_query,2704,_queryStart,2705,_re,2401,_receiver,2402,_recordCancel,2566,_recordCancel$1,2566,_recordPause$1,2567,_recordResume$1,2568,_regExp,2403,_registerBinaryCallback,2981,_registerBinaryCallback$3$4,2981,_registerBinaryCallback$4,2981,_registerCallback,2982,_registerCallback$1$4,2982,_registerCallback$4,2982,_registerUnaryCallback,2983,_registerUnaryCallback$2$4,2983,_registerUnaryCallback$4,2983,_remaining,2342,_removeListeners,2572,_removeListeners$0,2572,_requiredPositional,2435,_rest,2436,_resultOrListeners,2573,_reverseListeners,2574,_reverseListeners$1,2574,_reviver,2657,_rootRegisterBinaryCallback$4,2575,_rootRegisterCallback$4,2576,_rootRegisterUnaryCallback$4,2577,_rootRun$4,2578,_rootRunUnary$5,2579,_rti,2437,_run,2984,_run$1$2,2984,_runBinary,2581,_runUnary,2582,_scheduleMicrotask,2583,_schemeCache,2706,_schemeEnd,2707,_second,2658,_segmentError,2938,_segmentError$2,2938,_sendData,2584,_sendData$1,2584,_sendDone,2585,_sendDone$0,2585,_sendError,2586,_sendError$2,2586,_separatorIndices,2708,_set,2628,_set$2,2628,_setChained$1,2587,_setErrorObject,2588,_setErrorObject$1,2588,_setLengthUnsafe$1,2320,_setPendingComplete$0,2589,_setPendingEvents,2590,_setPendingEvents$1,2590,_setRangeFast,2418,_setRangeFast$4,2418,_setTableEntry$3,2405,_setValue$1,2591,_shlPositive,2321,_shlPositive$1,2321,_shrBothPositive,2322,_shrBothPositive$1,2322,_shrOtherPositive,2323,_shrOtherPositive$1,2323,_shrReceiverPositive,2324,_shrReceiverPositive$1,2324,_simpleMerge,2709,_simpleMerge$2,2709,_sink,2592,_sinkMapper,2593,_skipCount,2343,_skipLeadingLF,2660,_source,2344,_specializedTestResource,2438,_stackTrace,2710,_stack_zone_specification$_box_0,2954,_stack_zone_specification$_captured_R_2,2955,_stack_zone_specification$_captured_R_3,2956,_stack_zone_specification$_captured_T_3,2961,_stack_zone_specification$_captured_f_1,2966,_stack_zone_specification$_captured_stackTrace_1,2970,_stack_zone_specification$_captured_this_0,2971,_stack_zone_specification$_onError,2980,_start,2345,_startIndex,2346,_state,2594,_stateData,2595,_stderr,2901,_stdin,2902,_stdinSink,2903,_stdinSub,2904,_stdout,2905,_stream,2596,_stream$_captured_T_1,2906,_stream$_captured_controller_0,2909,_string,2347,_stringSink,2662,_strings,2408,_subscribe,2597,_subscribe$4,2597,_subscription,2598,_subsetMask,2663,_successTearDowns,2885,_takeCount,2348,_target,2733,_tdivFast,2325,_tdivFast$1,2325,_tdivSlow,2326,_tdivSlow$1,2326,_text,2711,_thenAwait,2600,_thenAwait$1$2,2600,_this,2212,_thunk,2952,_tick,2601,_toEncodable,2664,_toFilePath$0,2712,_toListFixed$0,2327,_toListGrowable$0,2328,_toNonSimple,2713,_toNonSimple$0,2713,_trace,2410,_trace$_captured_longest_0,2986,_transformerSink,2602,_trimVMChain,2985,_trimVMChain$1,2985,_types,2411,_upgrade$0,2665,_upgradedMap,2666,_uri,2714,_uriCache,2715,_urlSafe,2667,_useCarry,2668,_useCarry$2,2668,_userInfo,2716,_varData,2603,_waitsForCancel,2604,_whenCompleteAction,2605,_writeAuthority$1,2717,_writeReplacementCharacter,2669,_writeReplacementCharacter$0,2669,_writeString$1,2718,_writeSurrogate,2670,_writeSurrogate$2,2670,_zone,2606,abs$0,2262,absolute,2263,absolute$1,2263,absolute$15,2263,absolutePathToUri,2264,absolutePathToUri$1,2264,add,2265,add$1,2265,addAll,2266,addAll$1,2266,addError,2267,addError$1,2267,addError$2,2267,addSlice,2268,addSlice$4,2268,addStream,2269,addStream$1,2269,addStreamFuture,2270,addSubscription,2271,allMatches,2272,allMatches$1,2272,allMatches$2,2272,allowMalformed,2273,arg,2222,arg1,2220,arg2,2221,asStringSink$0,2275,asUint8List,2276,asUint8List$2,2276,asUtf8Sink,2277,asUtf8Sink$1,2277,bind,2052,bind$1,2052,bindCallback,2278,bindCallback$1$1,2278,bindCallbackGuarded,2279,bindCallbackGuarded$1,2279,bindUnaryCallback,2280,bindUnaryCallback$2$1,2280,bodyFunction,2223,buffer,2281,bufferCache,2282,callback,2284,cancel,2285,cancel$0,2285,cancelSchedule$0,2286,canonicalizePart$1,2287,cast,2288,cast$1$0,2288,cast$2$0,2288,chainFor,2289,chainFor$1,2289,checkGrowable$2,2290,checkMutable$2,2291,cleanUp,2224,clear$0,2292,close,2293,close$0,2293,closeWhenDone,2225,code,2294,codeUnitAt,2295,codeUnitAt$1,2295,codeUnits,2296,codeUnitsEqual,2297,codeUnitsEqual$2,2297,column,2298,complete,2299,complete$0,2299,complete$1,2299,completeError,2300,completeError$2,2300,completer,2226,contains,2301,contains$1,2301,contains$2,2301,containsKey,2302,containsKey$1,2302,containsSeparator,2303,containsSeparator$1,2303,context,1526,controller,2227,convert,2304,convert$1,2304,convertChunked$3,2305,convertSingle$3,2306,count,2307,createBuffer,2308,createBuffer$1,2308,createPeriodicTimer,2309,createTimer,2310,current,523,dartException,2735,decode,2736,decode$1,2736,decode$2$reviver,2736,decodeGeneral,2737,decodeGeneral$4,2737,decoder,2738,dispatch,2228,distance,2739,distance$1,2739,div,2229,done,2740,eagerError,2230,echoOutput,2231,elementAt,2741,elementAt$1,2741,encode,2742,encode$1,2742,encode$4,2742,encoder,2743,end,2744,endsWith,2745,endsWith$1,2745,entries,2746,error,2747,errorCallback,2748,errorCallback$2,2748,errorCallback$3,2748,errorCode,2749,errorZone,2750,executable,2751,exitCode,2752,expand$1$1,2753,extensions,2754,f,2232,files,2755,fillRange,2756,fillRange$3,2756,first,2757,firstMatch,2758,firstMatch$1,2758,firstPendingEvent,2759,flush,2760,flush$1,2760,fold,2761,fold$1$2,2761,forEach,2762,forEach$1,2762,fork,2763,fork$2$specification$zoneValues,2763,fragment,2764,frame,2233,frames,2765,fromUri$1,1448,fuse$1$1,2767,future,2768,get$$call,2283,get$_,2206,get$_0,2204,get$_1,2205,get$__,2207,get$__0,2208,get$__1,3105,get$___,2209,get$__js_helper$_name,2388,get$__js_helper$_target,2409,get$_add,2440,get$_addAllFromArray,2311,get$_addError,2441,get$_addHashTableEntry,2349,get$_addLines,2632,get$_addListener,2442,get$_addPending,2443,get$_async$_errorCallback,2519,get$_async$_handleUncaughtError,2529,get$_async$_hasError,2530,get$_async$_isClosed,2539,get$_async$_map,2544,get$_async$_registerBinaryCallback,2569,get$_async$_registerCallback,2570,get$_async$_registerUnaryCallback,2571,get$_async$_run,2580,get$_asyncComplete,2444,get$_asyncCompleteErrorObject,2446,get$_asyncCompleteWithValue,2447,get$_badEventState,2448,get$_bind,2420,get$_canFire,2451,get$_cancel,2452,get$_cancelOnError,2454,get$_chain,2949,get$_chainFuture,2495,get$_chainSource,2496,get$_checkPosition,2413,get$_checkState,2497,get$_cloneResult,2499,get$_close,2500,get$_closeTarget,2720,get$_collection$_addHashTableEntry,2607,get$_complete,2502,get$_completeDoneError,2721,get$_completeDoneValue,2722,get$_completeError,2503,get$_completeErrorObject,2504,get$_completeWithResultOf,2505,get$_completeWithValue,2506,get$_computeHasCaptures,2357,get$_computeHashCode,2615,get$_computeKeys,2616,get$_computeScheme,2677,get$_containsKey,2617,get$_convert$_add,2630,get$_convert$_computeKeys,2642,get$_convertGeneral,2643,get$_createPeriodicTimer,2508,get$_createTimer,2510,get$_currentTrace,2975,get$_decodeRecursive,2645,get$_defaultSplit,2315,get$_delegate,2512,get$_disabled,2976,get$_endIndex,2333,get$_ensureDoneFuture,2516,get$_ensurePendingEvents,2517,get$_enumToString,2682,get$_error,2518,get$_errorCallback,2977,get$_errorExplanation,2683,get$_errorName,2684,get$_errorTest,2520,get$_eval,2425,get$_eventScheduled,2521,get$_execAnchored,2362,get$_execGlobal,2363,get$_fillBuffer,2649,get$_findBucketIndex,2619,get$_findColumn,2930,get$_findLine,2931,get$_fork,2522,get$_get,2620,get$_getBucket,2621,get$_guardCallback,2524,get$_handleData,2526,get$_handleDone,2527,get$_handleError,2528,get$_handleUncaughtError,2979,get$_hasCaptures,2370,get$_hasPending,2531,get$_ignore,2533,get$_ignoreError,2534,get$_inCallback,2535,get$_indexFor,2932,get$_init,2899,get$_invalidPosition,2415,get$_io$_controller,2723,get$_isAddingStream,2536,get$_isCanceled,2537,get$_isCaseSensitive,2376,get$_isChained,2538,get$_isComplete,2540,get$_isDotAll,2377,get$_isFile,2692,get$_isHttp,2693,get$_isHttps,2694,get$_isInitialState,2541,get$_isInputPaused,2542,get$_isMultiLine,2378,get$_isPackage,2695,get$_isPaused,2543,get$_isPort,2696,get$_isUnicode,2379,get$_isUpgraded,2651,get$_isWithinOrEquals,2912,get$_isWithinOrEqualsFast,2913,get$_lazy_trace$_trace,2953,get$_mayAddEvent,2545,get$_mayAddListener,2546,get$_mayComplete,2547,get$_mayResumeInput,2548,get$_mergePaths,2699,get$_nativeAnchoredVersion,2390,get$_nativeBuffer,2417,get$_nativeGlobalVersion,2392,get$_needsNormalization,2914,get$_newHashTable,2394,get$_newLinkedCell,2395,get$_onCancel,2551,get$_onError,2554,get$_onPause,2556,get$_onResume,2557,get$_onValue,2558,get$_parentDelegate,2560,get$_pathDirection,2916,get$_pendingEvents,2562,get$_prependListeners,2563,get$_print,2564,get$_process,2655,get$_processUncaughtError,2565,get$_recordCancel,2566,get$_registerBinaryCallback,2981,get$_registerCallback,2982,get$_registerUnaryCallback,2983,get$_removeListeners,2572,get$_reverseListeners,2574,get$_run,2984,get$_runBinary,2581,get$_runUnary,2582,get$_scheduleMicrotask,2583,get$_segmentError,2938,get$_sendData,2584,get$_sendDone,2585,get$_sendError,2586,get$_set,2628,get$_setErrorObject,2588,get$_setPendingEvents,2590,get$_setRangeFast,2418,get$_shlPositive,2321,get$_shrBothPositive,2322,get$_shrOtherPositive,2323,get$_shrReceiverPositive,2324,get$_simpleMerge,2709,get$_source,2344,get$_startIndex,2346,get$_subscribe,2597,get$_subscription,2598,get$_tdivFast,2325,get$_tdivSlow,2326,get$_text,2711,get$_thenAwait,2600,get$_toNonSimple,2713,get$_transformerSink,2602,get$_trimVMChain,2985,get$_types,2411,get$_upgradedMap,2666,get$_useCarry,2668,get$_waitsForCancel,2604,get$_whenCompleteAction,2605,get$_writeReplacementCharacter,2669,get$_writeSurrogate,2670,get$_zone,2606,get$absolute,2263,get$absolutePathToUri,2264,get$add,2265,get$addAll,2266,get$addError,2267,get$addSlice,2268,get$addStream,2269,get$allMatches,2272,get$asUint8List,2276,get$asUtf8Sink,2277,get$bind,2052,get$bindCallback,2278,get$bindCallbackGuarded,2279,get$bindUnaryCallback,2280,get$buffer,2281,get$cancel,2285,get$cast,2288,get$chainFor,2289,get$close,2293,get$codeUnitAt,2295,get$codeUnits,2296,get$codeUnitsEqual,2297,get$column,2298,get$complete,2299,get$completeError,2300,get$contains,2301,get$containsKey,2302,get$containsSeparator,2303,get$context,1526,get$convert,2304,get$createBuffer,2308,get$current,523,get$decode,2736,get$decodeGeneral,2737,get$decoder,2738,get$distance,2739,get$done,2740,get$elementAt,2741,get$encode,2742,get$encoder,2743,get$end,2744,get$endsWith,2745,get$entries,2746,get$errorCallback,2748,get$errorZone,2750,get$exitCode,2752,get$fillRange,2756,get$first,2757,get$firstMatch,2758,get$flush,2760,get$fold,2761,get$forEach,2762,get$fork,2763,get$fragment,2764,get$frames,2765,get$future,2768,get$getRange,2772,get$getRoot,2773,get$handleError,2776,get$handleUncaughtError,2778,get$handlesComplete,2781,get$handlesError,2782,get$handlesValue,2783,get$hasAbsolutePath,2784,get$hasAuthority,2785,get$hasEmptyPath,2786,get$hasErrorCallback,2787,get$hasErrorTest,2788,get$hasFragment,2789,get$hasListener,2790,get$hasPort,2792,get$hasQuery,2793,get$hasScheme,2794,get$hasTokens,2795,get$hasTrailingSeparator,2796,get$hashCode,2797,get$host,2800,get$inMicroseconds,2802,get$inMilliseconds,2803,get$indexOf,2806,get$insert,2809,get$insertAll,2810,get$internalComputeHashCode,2811,get$internalFindBucketIndex,2813,get$internalGet,2814,get$invalidValue,2816,get$isAbsolute,2817,get$isClosed,2818,get$isCompleted,2819,get$isEmpty,2821,get$isFinite,2823,get$isNotEmpty,2827,get$isOdd,2828,get$isPaused,2829,get$isRootRelative,2831,get$isScheduled,2832,get$isScheme,2833,get$isSeparator,2834,get$isUnicode,2836,get$isValue,2837,get$iterator,2839,get$join,2840,get$joinAll,2841,get$keys,2843,get$last,2845,get$lastIndexOf,2846,get$length,2848,get$library,2849,get$line,2850,get$lines,2851,get$listen,2852,get$location,2857,get$map,2858,get$matchAsPrefix,2859,get$matchTypeError,2860,get$matchesErrorTest,2861,get$member,2862,get$moveNext,2865,get$name,2866,get$namedGroup,2867,get$needsSeparator,2869,get$next,2871,get$nextKind,2872,get$normalize,2873,get$offset,2874,get$offsetInBytes,2875,get$padLeft,2988,get$padRight,2989,get$parent,2990,get$path,2992,get$pathFromUri,2993,get$pathSegments,2994,get$pathsEqual,2995,get$pause,2997,get$perform,2998,get$pid,2999,get$port,3000,get$prettyUri,3001,get$query,3004,get$registerBinaryCallback,3005,get$registerCallback,3006,get$registerUnaryCallback,3007,get$relative,3008,get$relativePathToUri,3009,get$removeAt,3013,get$removeFragment,3014,get$removeLast,3015,get$removeTrailingSeparators,3016,get$replace,3017,get$replaceFirst,3020,get$replaceRange,3021,get$resolve,3022,get$resolveUri,3023,get$resume,3025,get$rootLength,3027,get$run,3029,get$runBinary,3030,get$runBinaryGuarded,3031,get$runGuarded,3032,get$runTearDowns,3033,get$runUnary,3034,get$runUnaryGuarded,3035,get$runtimeType,3036,get$schedule,3037,get$scheduleMicrotask,300,get$scheme,3038,get$separator,3039,get$setRange,3043,get$sink,3045,get$skip,3046,get$skipWhile,3047,get$sourceUrl,3053,get$spanFor,3056,get$split,3057,get$stackTrace,3059,get$start,3060,get$startChunkedConversion,3061,get$startsWith,3062,get$stderr,3064,get$stdout,3066,get$stream,3068,get$sublist,3070,get$substring,3071,get$take,3072,get$text,3074,get$then,3075,get$toChain,3076,get$toFilePath,3077,get$toList,3079,get$toRadixString,3081,get$toString,3083,get$toTrace,3084,get$toUri,3086,get$toolString,3087,get$traces,3089,get$trim,3091,get$tryFormat,3092,get$uri,3093,get$userInfo,3095,get$values,3096,get$whenComplete,3097,getColumn$1,2769,getLine$1,2770,getOffset$2,2771,getRange,2772,getRange$2,2772,getRoot,2773,getRoot$1,2773,getTag,2234,getText$2,2774,getUnknownTag,2235,group$1,2775,handleError,2776,handleError$1,2776,handleNext$1,2777,handleUncaughtError,2778,handleUncaughtError$2,2778,handleUncaughtError$3,2778,handleValue$1,2779,handleWhenComplete$0,2780,handlesComplete,2781,handlesError,2782,handlesValue,2783,hasAbsolutePath,2784,hasAuthority,2785,hasEmptyPath,2786,hasError,2236,hasErrorCallback,2787,hasErrorTest,2788,hasFragment,2789,hasListener,2790,hasMatch$1,2791,hasPort,2792,hasQuery,2793,hasScheme,2794,hasTokens,2795,hasTrailingSeparator,2796,hashCode,2797,hashMapCellKey,2798,hashMapCellValue,2799,host,2800,id,2801,inMicroseconds,2802,inMilliseconds,2803,inSameErrorZone$1,2804,index,2805,indexOf,2806,indexOf$1,2806,indexOf$2,2806,indexable,2807,input,2808,insert,2809,insert$2,2809,insertAll,2810,insertAll$2,2810,internalComputeHashCode,2811,internalComputeHashCode$1,2811,internalContainsKey$1,2812,internalFindBucketIndex,2813,internalFindBucketIndex$2,2813,internalGet,2814,internalGet$1,2814,internalSet$2,2815,invalidValue,2816,isAbsolute,2817,isAbsolute$1,2817,isClosed,2818,isCompleted,2819,isCore,2820,isEmpty,2821,isEof,2822,isFinite,2823,isIdentifier,2824,isNewLine,2825,isNewSegment,2826,isNotEmpty,2827,isOdd,2828,isPaused,2829,isRelative$1,2830,isRootRelative,2831,isRootRelative$1,2831,isScheduled,2832,isScheme,2833,isScheme$1,2833,isSeparator,2834,isSeparator$1,2834,isSync,2835,isUnicode,2836,isValue,2837,isWithin$2,2838,iterator,2839,join,2840,join$0,2840,join$1,2840,join$16,2840,join$2,2840,joinAll,2841,joinAll$1,2841,joinedResult,2237,key,2842,keys,2843,kill$0,2844,last,2845,lastIndexOf,2846,lastIndexOf$1,2846,lastIndexOf$2,2846,lastPendingEvent,2847,length,2848,level,2238,library,2849,line,2850,lines,2851,listen,2852,listen$1,2852,listen$3$onDone$onError,2852,listen$4$cancelOnError$onDone$onError,2852,listener,2853,listenerHasError,2854,listenerValueOrError,2855,listeners,2856,location,2857,location$1,2857,longest,2239,mainFn,2240,map,2858,map$1$1,2858,matchAsPrefix,2859,matchAsPrefix$2,2859,matchTypeError,2860,matchTypeError$1,2860,matchesErrorTest,2861,matchesErrorTest$1,2861,max$2,515,member,2862,message,2863,milliseconds,2241,minified,2242,modifiedObject,2864,moveNext,2865,moveNext$0,2865,name,2866,namedGroup,2867,namedGroup$1,2867,names,2868,needsSeparator,2869,needsSeparator$1,2869,needsSeparatorPattern,2870,next,2871,nextKind,2872,node,2243,normalize,2873,normalize$0,2873,normalize$1,2873,normalize$3,2873,offset,2874,offsetInBytes,2875,onCancel,2876,onData,2244,onDone,2245,onError,2246,onExit$1,2877,onListen,2878,onPause,2879,onResume,2880,original,2881,originalSource,2247,packageMap,2248,padLeft,2988,padLeft$2,2988,padRight,2989,padRight$1,2989,parent,2990,parts,2991,path,2992,pathFromUri,2993,pathFromUri$1,2993,pathSegments,2994,pathsEqual,2995,pathsEqual$2,2995,pattern,2996,pause,2997,pause$0,2997,perform,2998,perform$1,2998,pid,2999,port,3000,pos,2249,prettyUri,3001,prettyUri$1,3001,previous,3002,print,3003,print$1,3003,prototypeForTag,2251,query,3004,registerBinaryCallback,3005,registerBinaryCallback$3$1,3005,registerBinaryCallback$3$2,3005,registerCallback,3006,registerCallback$1$1,3006,registerCallback$1$2,3006,registerUnaryCallback,3007,registerUnaryCallback$2$1,3007,registerUnaryCallback$2$2,3007,registered,2252,relative,3008,relative$1,3008,relative$2$from,3008,relativePathToUri,3009,relativePathToUri$1,3009,relativeRootPattern,3010,remainder$1,3011,remaining,3012,removeAt,3013,removeAt$1,3013,removeFragment,3014,removeFragment$0,3014,removeLast,3015,removeLast$0,3015,removeTrailingSeparators,3016,removeTrailingSeparators$0,3016,replace,3017,replace$1$scheme,3017,replaceAll$2,3018,replaceAllMapped$2,3019,replaceFirst,3020,replaceFirst$2,3020,replaceRange,3021,replaceRange$3,3021,resolve,3022,resolve$1,3022,resolveUri,3023,resolveUri$1,3023,result,3024,resume,3025,resume$0,3025,root,3026,rootLength,3027,rootLength$1,3027,rootLength$2$withDrive,3027,rootPattern,3028,run,3029,run$1,3029,run$1$1,3029,run$body$NodeProcessManager,3029,runBinary,3030,runBinary$3$3,3030,runBinaryGuarded,3031,runBinaryGuarded$2$3,3031,runGuarded,3032,runGuarded$1,3032,runTearDowns,3033,runTearDowns$1,3033,runUnary,3034,runUnary$2$2,3034,runUnaryGuarded,3035,runUnaryGuarded$1$2,3035,runtimeType,3036,schedule,3037,schedule$1,3037,scheduleMicrotask,300,scheduleMicrotask$1,300,scheme,3038,sdkLib,2253,sdkRoot,2254,separator,3039,separatorPattern,3040,separators,3041,set$_transformerSink,2602,set$length,2848,set$next,2871,set$onCancel,2876,set$onListen,2878,set$parts,2991,setAll$2,3042,setRange,3043,setRange$3,3043,setRange$4,3043,shouldChain$1,3044,sink,3045,skip,3046,skip$1,3046,skipWhile,3047,skipWhile$1,3047,source,3048,sourceColumn,3049,sourceLine,3050,sourceMap,2255,sourceNameId,3051,sourceResult,2256,sourceRoot,3052,sourceUrl,3053,sourceUrlId,3054,span,2257,span$2,3055,spanFor,3056,spanFor$3$files,3056,spanFor$3$uri,3056,spanFor$4$files$uri,3056,split,3057,split$1,3057,splitMapJoin$2$onMatch,3058,stackTrace,3059,start,3060,start$7$environment$includeParentEnvironment$mode$pipe$runInShell$workingDirectory,3060,start$body$NodeProcessManager,3060,startChunkedConversion,3061,startChunkedConversion$1,3061,startsWith,3062,startsWith$1,3062,startsWith$2,3062,state,3063,stderr,3064,stdin,3065,stdout,3066,storedCallback,3067,stream,3068,style,3069,sublist,3070,sublist$1,3070,sublist$2,3070,substring,3071,substring$1,3071,substring$2,3071,super$Converter$bind,2052,super$Iterable$skipWhile,3047,super$LegacyJavaScriptObject$toString,3083,super$ListBase$setRange,3043,super$_BufferingStreamSubscription$_add,2210,super$_BufferingStreamSubscription$_addError,2211,super$_BufferingStreamSubscription$_close,2260,super$_StringSinkConversionSink$close,2293,take,3072,take$1,3072,target,2258,targetUrl,3073,text,3074,then,3075,then$1$1,3075,then$1$2$onError,3075,toChain,3076,toChain$0,3076,toFilePath,3077,toFilePath$0,3077,toJson$0,3078,toList,3079,toList$0,3079,toList$1$growable,3079,toLowerCase$0,3080,toRadixString,3081,toRadixString$1,3081,toSpec$0,3082,toString,3083,toString$0,3083,toTrace,3084,toTrace$0,3084,toUpperCase$0,3085,toUri,3086,toUri$1,3086,toolString,3087,trace,3088,traces,3089,transform$1$1,3090,trim,3091,trim$0,3091,tryFormat,3092,tryFormat$1,3092,uri,3093,url,1530,urls,3094,userInfo,3095,value,2179,values,3096,whenComplete,3097,whenComplete$1,3097,where$1,3098,whereType$1$0,3099,write$1,3100,writeAll$2,3101,writeCharCode$1,3102,writeln$1,3103,zone,3104" }, - "frames": "uyTAoJewxGmC;+HAKAA6C;4CAKCVY;4CACeDE;sKAIlBAE;oBAGOF8B;8OAaAzwGAA8CgBCgEANK+EwG,A,oB;sgBATrC9EAAmB0BDgEAVW+E8E,A,AAUvCEiD,A;ooBGrJS6tGgBAsCwBuC6C,A;60RE5CtB5zDuH;eAEFwhDuF;u+BE8hCQgSkB;qDAAAAkB;yHEl3BjBxzDAAAAAwR,A;uPAwIWAsI;eAEFwhDwG;oSA6IExhDoG;eAEFwhDsE;iKAwFExhDAAmByC4iDkH,A;OAnBzC5iDAAmBFwhDgG,A;gBAjB4BoB8G;OAA5BpBkE;6DA2cwBxhD8B;0DAIHAoC;gxJRl9BV8zDsB;4LAmCL9EY;mrBAyLT5LmG;uzCAwJS/iGAW0fRCuB,A;uCX1fQDAW0fRCAAo5B6CguG6B,A,A;uMXv3C1BQ6C;+YAYbzuGAWudNCeAo5B6CguG6B,A,A;mOXt1CzC2EAARFnCsB,A;gTAyBWUyC;4gHAyuBoBjrC4C;mgBAoCnBA2C;uDASAA6C;8LA8CAvmB8F;0xDAuHdAkG;iuBAsPEA+S;u4BAkNAA2C;yxCA4DyBAkB;8oDAkCJAkB;4DAQ1BAoE;wDAKuBiuBkF;OAChBjuB0B;sJAOC0zDc;4BAIgB1zDoE;sOAUjBA0B;4NA8BmBA4B;6FAGtBA4C;ubAsEK8vDe;qJAEDDsB;AACEAyB;wrEAmQJ7vD+C;cAKAAgG;grIAyTEA0F;m7DA+F6BywDmK;AACH4BsK;wRAwIzBnvGAW16ENioGiD,sB;sPXg8EUnrDoG;iEACKoxDiC;uhCCtzFTUa;8BACcnuGAAsE3BDAFzIAFuI,A,A;aEmE2BGAAuEpBsrGE,A;8DAtEW6Ca;oGAKKluGAAzChBkuGa,A;yLA+CMAoB;kCACkBnuGAAyD/BDAFzIAF2I,A,A;aEgF+BGAA0DxBsrGE,A;sEAzDW6CoB;4GAGKluGAApDhBkuG0D,A;0QA0EEnuGAA+BTDAFzIAFuI,A,A;aE0GSGAAgCFsrGE,A;2NAvBEprGAA2BTHAF9IAFsB,A,oI;SEmHSKAA4BForGE,A;iRAbEprGAAYTHAF9IAFsB,A,oI;SEkISKAAaForGE,A;4KAMPvrGAFrJAFgE,A;27CEwNQEAFxNRFwN,A;iIEsO2BsuG8P;o2BAqFX1tG6E;ugDaxRPIAAnGFquGwC,A;wIAqGElmB4B;6GAGyBoCc;oDAsB9BvqFAA9HGquG8C,A;4TA4IWrVe;ydA2BP+U2D;AACFSoC;sCAAAAiC;kWAeMIyC;sFAIFDgD;8aA+BCN8C;uBASRruGAAnOCquGY,A;0FAoOIEiB;eAKJCiB;kDAAAAiC;wPAsCPrjBADdI3vC4B,uG;sCCcJjhCqG;AAC+Dy+EwC;AAA7DwCc;+EACAAI;uDACmBpWuB;AAErBoWc;kSAqEc6SuD;4JAONGiD;kDAA0BRgB;AAA1BQoC;klLG6jC+BjPuB;0FAa/BN+D;owEN1zCegGgB;AAFA8EsB;2BAGfvCyE;AAD0CxGAA6JlC8IoB,A;mEA/ECvIAAxBsBsIc,A;6EA0BECU;qGAsJzBEiB;gTAwLN3IAA/R8BYwC,A;AAkSxBxBmB;qDAGVqGqD;AAEWh0CAAhMDk3CyB,A;AAiMG0C8B;wGAIbzLAA/PU6IyB,A;AAmQT6C2B;0ZAmCQpLAA5ZwBsIc,A;8JAqabCqB;qRAUAAqB;mSAUWzIkB;kRAe3BDAAtYM4I6C,A;sCA0YGrJAA9XHmJqB,A;iGAgYQpJkB;kUAiBHqBAAvYILiC,A;AAwYJIkB;+QAUIIAA9XT4HqB,A;qHAqYiC/IkB;iZAqB5BGiC;AACDuImB;oGAODxIAAxZH6IqB,A;yTAqaI3IAA3ZJ0IqB,A;6EA+ZUN2B;0VAmBNEmE;uEAGDKa;kXAiBCLmE;2EAImBF4B;AACEAiC;AACtBOiB;4YAyB0B9HqL;AASAP8D;0GASbDoC;0PAYiB8HAAhZR9tDkD,A;AAiZrBksDkE;AAIAHkE;AAIADkC;gVA4CFwCoB;iLAaZzGsB;sMAuBFEiB;sCAIO2ImC;k4BAmFkB7IiE;kRAyBXkGe;uCAENhoGgE;wYA0EQ0BqCAlFlBogGuD,A;uHAsFc4G0B;aAELiCmC;OAAwB/J4B;iFAOMh/FAAI5Bq4CY,A;AAJFqlD2B;uBAA8B19FAAI5Bq4CAAkCbAAAAAAAACMurD2C,A,A,A,A;oEARmBxlGmD;wFA6DrB6lG4C;OACOjEmB;0OAWI5BAA7gCwBsIc,A;4UA+hCnBzIAA79BJ4ImB,A;WA89BM3I8C;AAWduGqD;wOAYCpkG+CA2BmBu+FAA1/BZiIkB,A,AA2/BMlIiB,yD;+JArBPPAA9jCwBsI6D,A;0YAmmC1B/BmlC;AAEF3KO;AADP0JmB;+XAiEO1DI;AADOtBAAlkCFiIqB,A;4JA4kCF1HiC;uBAKVmBiB;iRAsBO2ImC;gCACG9JiC;uBAKVmBiB;iPAkBEAmB;kBAOYnB0B;gOAwBZmBmB;kUA0BSJiC;sMAaWAmD;uKAQRnmCiC;yBADsBlhE+B;wTAUMAiG;mIAmBbAeA8VmBguGkG,A;6KAhVhC9sCiC;yGAgBTmmCO;AAAanCAAlwCR8IyB,A;yDAmwCR3GW;ijHAwKmBsGS;wDAGDK4B;6JAYA/HAAz8CViIsC,A;AA08CKlIc;0HAMG2He;AACFiFyD;AACEjF4B;8KAOGK8B;+CAELEsB;kdAgBMPiB;wrBAgBFK8B;AACjB7/FAAukEMs3FAA3pHwBsIkB,A,A;4RA6lDlB3HAAj/CCR0C,A;AAk/CeX6C;AACQiByE;AAGPyH8C;AACOhIyE;AAGPgIiC;AACNjIkC;AACPiIe;oNAWVK4B;uNAaEA8B;uNAaFHqB;6EAKEGsC;AAIFEuB;8XAsBAzIAA5qDwBsIc,A;sRAqrDVhIAAnlDbiImB,A;6FAqlDSvIAAvrDcsIgB,A;4JAgsDV7IAAzlDb8IgC,A;8DA8lDI1IAAnoDJ4IoB,A;gBA4oDM3IgB;gWAgBOJAAxmDb6I8B,A;AAymDG5IO;2CAUDCAAzmDIOsC,A;wQAinDF4NsB;2JAsLPjPAAHK8OG,oB;uDAKP9OAALO8OG,c;mJAWDtE6B;0IAKOhByB;AACP7EmE;uYAiBOmKW;oGAqCAtEW;iEAeH6BiC;AADP5B8C;+CAGF5E8E;AACHyG8B;qIASS7LmB;8CAGVqG+B;AAEauFiC;+CAETxGoF;AACHyG8B;+IAKSlMmB;8CAGVqG6D;AAEuBh0CAAx2Dfk3CyB,A;AAy2DK0C0C;sHAGXnLAA5hE6BsI2B,A;AA6hEdnJgC;AAKhBiMuC;6EAyCH9F8C;AACAO0C;iFAuGesFqC;AADP5BoB;+CAGsBlLAAIpB0JAAjhEP9tDsC,A,AAkhEH6rDwB,AACAL+B,yD;AANGjEAApGA4JQ,AAAO7BwB,A;0FAqHK4B8B;AAFN3OAA7DKjrCAAv9DJk3CiD,A,A;AAqhEFcoB;8HAGL/HAAvHA4JQ,AAAO7BwB,A;wKAqIOvJAAttEgBsImC,A;6LA2tEZ7IAApnEX8IoB,A;+GA0nEARAAzjEP9tDsC,A;AA0jEH6rDqB;AACAI4B;GACAT+B;oIAWe0F8B;AAFN9OAApGK9qCAAz9DJk3CiD,A,A;AA8jEFcoB;8HAGL/HAAhKA4JQ,AAAO7BwB,A;wJA8KOvJgB;+HAIV0D+D;oIAKGqEAAhmEP9tDsC,A;AAimEH6rDqB;AACAI4B;GACAT+B;sIAOe0FqE;AADP5BoB;+CAMVzLAASYiKAAxnEP9tDsC,A,AAynEH6rDsB,AACAI4B,AACAT+B,yD;AAfGjEAAnMA4JQ,AAAO7BwB,A;oHAwNMrBe;wFAEIKG;AACCh3CAA5nEXk3CyB,A;qIAqoEMPe;uFAGmBFiC;AACZIiE;AAIPGO;AACKh3CAA9oEXk3CiC,A;mJAyqEDlMAAjBO2LqB,qE;AAmBDiDgB;AADP5BkB;+CAMVxLAAUYgKAAlsEP9tDsC,A,AAmsEH6rDqB,AACAI4B,AACAEyC,AACgB8BwB,AAEdjC2B,AAA6B+Bc,AAE/BvC6B,yD;AArBGjEAA5QA4JQ,AAAO7BsB,A;oJA2TNvJAA54E6BsIsC,A;AA64ErBlJAA/zEFmJmB,A;AAg0EUNmB;AAChB9IkD;iEAIKjDaApBP3qCAA/sEQk3CyF,A,A;AAquEK0CgB;AADP5BoB;+CAMV5LAAUYoKAA5vEP9tDsC,A,AA6vEH6rDqB,AACAI8B,AACAEgC,AACAX+B,yD;AAjBGjEAAtUA4JQ,AAAO7BwB,A;4FA6WD9M2H;AAEM0OQ;AADP5BoB;+CAMVpLAAUY4JAAvyEP9tDsC,A,AAwyEH6rDsB,AACAIsC,AACAE0B,AACAX+B,yD;AAjBGjEAAjXA4JQ,AAAO7BwB,A;6FAgcDpNAArDbCoD,AADI7qC0D,AACJ6qCAAM6CqE2E,AAGPyHgD,AACOhI2E,AAGPgImC,AACNjIoC,AACPiI4F,iX,AAjBtBrDgC,A;AAyDgBsGgB;AADP5BoB;+CAMV1LAAUYkKAA13EP9tDsC,A,AA23EH6rDsB,AACAIiC,AACAE8B,AACAX+B,yD;AAjBGjEAApcA4JQ,AAAO7BwB,A;iHAyeDjNsCAZT/qCAA93EUk3C4F,A,A;AA44EK0CQ;AADP5BoB;qJAGL/HAA7eA4JQ,AAAO7BwB,A;2PAkgBQrBiB;8HAICKwB;AACXvIAAxlFyBsIkE,A;mYAknFvBPAA18EP9tDsC,A;AA28EH6rDsB;AACAIuC;AACAEuB;GACAX+B;iTA0KoB8G0B;AACJI0B;mCAGThEmC;6eAcHyDiC;0CAIAAgC;0CAIAAW;uBAES0BU;AAAkBzEI;AAAqBuC6B;0CAKhDQW;AAEEoBqD;AAA2BMI;AAA3BNAAgYDlF6B,A;0CA3XD8DW;AAAsB3IqC;AAAiBqK4B;0CAIvC1BW;AAAsB5IqC;AAAkBsK4B;2CAIxC1BW;AAAsBxIqC;AAAekK4B;0CAIrCzBAA0ERDiB,AAAYPmC,AACe3DuB,A;qQA/DX4FkB;AACR1BW;4DAIc/CI;AAAqBuCoB;AAC/B9foB;oDAMIgiBkB;AACR1BW;4DAIc/CI;AAAqBuCoB;AAC/B9foB;0CAMJsgB8B;AACACAAqCRDiB,AAAYPmC,AACe3DuB,A;4IA9BnBmEAA6BRDiB,AAAYPmC,AACe3DuB,A;0CA1BnBiCAAmMSlxCAA2CEkvC2B,AAAmB0DmB,wBACtBiCU,AAAkBzE0B,AACPfsC,A,AA5C3B8DiC,AACAA8B,A;2CAjMQCAAqBRDiB,AAAYPmC,AACe3DuB,A;2CAlBnBgCAAiMSpBAA4CEX2B,AAAmB0DmB,6BACjBiCU,AAAkBzE0B,AACZfsC,A,AA7C3B8DiC,AACAA8B,A;0CA/LYhCAAwMKyC4C,AAMjBTW,AAAmBhUyC,AACnBgU8B,AACACAAnMADiB,AAAYPmC,AACe3DuB,A,2B;2GANhB0D0B;8BACGkCU;AAAkBzES;gKAWrBVmC;oGAIXyDyB;yNAaWzDmC;sNAIyCiCsD;yEAM7BxS2C;oCAKjB0VgC;AACAzE2B;AAFQGAAz5BCxJAA3iEsBsIiD,A,AA6iEjBlJAA/9DNmJmB,A,6CAk+Da1IAA9+Db4IU,A,AAi/DYyCkB,oI;AA+4BxBkBW;AAEY5C8E;AAOZ4C0B;2GAMqB0B+E;AAEZlCmB;qCAGTQW;2HAE4B/C+B;AAChBrJAAz9FuBsIyC,A;AA29F/B8DW;wEAMItgBkB;sCAMJsgBW;2JA+BKRyE;AAnBYkCuF;oFAwBIlC8C;sCAIbAiC;sCAIRQ8B;oCAIJAwB;kEAKKR0B;2CAGIAuG;AAC0Bc+D;AACbAgB;8CACcrDqB;AACmBtBAAhzFlB9tD8D,A;AAizFfksD+D;AAIAH+D;AAIAD2B;AACpBqGW;gHAWAAW;uCAIW3D6C;qMA0CLmD8B;0BAERQW;AAAsBzIqC;AAAgBmKuB;gDAItC1BW;AAAsB7IqC;AAAcuKuB;qKAOnB3F+B;AAAmB0DW;wBACtBiCU;AAAkBzEkB;AACPf8B;iLAmBboEK;8QAUMxEe;8FAEAFU;gGAOAEe;iGAGAFU;mHAOLhIAArqGsBsIc,A;uEAuqGRlJAAzlGfmJS,A;qCA0lGYpJmC;AACP+IiB;gDAEDKW;yDAIEnJAAjmGNmJqC,A;AAkmGDvIAAhrGwBsIqB,A;gMAurGbxIwC;AACPoIiB;oBAEDKW;yLA0CDxIkG;AACGsI8B;yFAGX+CqC;yQA2BOpLAAnwGuBsIc,A;iGA0wGnC3NAAyZ0BqFAAnqHSsIsB,A,A;uHAgxGlBCE;AADH3IAA/oGF0IsC,A;4BAopGAtIAApxGuBsImF,A;mEA2xGM7IAAprG7B8IgB,A;0KA4rGoB9IAA5rGpB8IyB,A;oGAmsGgB9IAAnsGhB8IqC,A;kOAktGejIAAvtGfiIyB,A;wEAiuGwB9IAA5tGxB8I4B,A;0OA2uGwBjIAAhvGxBiIgB,A;+YAwwGI5I2B;AACAAiC;AACGuIwC;AACAAmB;sBAGkBD8D;AACAA8D;0DAGjBM+B;AACAAe;mMAShB7IAAxwGQ6IkB,A;AA0wGR7IAA1wGQ6IgB,A;u5BA4yGM5HAAtzGN4HkB,A;AAuzGM5HAAvzGN4H0B,A;mCA4zGsB/I6B;AACAA+C;AAEQiB6D;AAGAA2E;AAGPyH8D;AACAAe;+MAKOhI6D;AAGAA2E;AAGPgI8D;AACAAe;iOAOAFa;+CACbOgC;4GAOaPa;+CACbO4D;8GAUfPuC;+CAEeOgC;gDAMOtImC;AACAAoC;AACPiIoC;AACAAe;yFAIFOuC;8EAGEAoB;kGAGILwB;qIAKcJwB;uEAERAwB;kCACbO2C;yGAMVHwB;gMAaMvIAAt8GH4I4B,A;AAu8GG5IAAv8GH4IiB,A;iDAq9GO3JAAnnDL8OG,iB;2FAsnDCnFwB;0CAIMwCiB;sEAEH/CiB;AACWxqCoEA0LjBgvCc,A;6GAxLWjEc;qEAIT3Ia;0DAaFAqB;AACAAa;yHAgBIoIe;uEAUAKgB;AACAAsB;2HA8CAhI2B;AACAAgC;AACA2HqC;AACAAiB;yBAEF1HAA3iHFiIe,A;AA4iHEjIAA5iHFiImB,A;4FAgjHMFkB;AACAAsB;8EASPvIAAlpHwBsIwF,A;4FAspHQ7IAA/iH/B8IkB,A;uDAojHDvIAA3pHwBsIc,A;6IA8sH1BkDqE;AACEtDe;kDAEEOa;2IAUDiEI;2sEQhxHhBzyD+C;6GAmBA4kBwD;kEA0FO5kB2BApCSglDAAAAhlD0D,A,sC;iJAqDCorCQ;4yBA+DEprCgF;AAAAqsDqE;geAkCPttF0C;ikBIQHyxFgEHdTAAAAAA+B,A,A;uDGgJmCxwDkP;m+BAwFajwCsEH9iBRiwC+H,A;0NG4lBtBqzDAAwnBUrzDAHtoCxBAAAnCsBorCAAAAprC2G,A,A,6E,A;mvBApD1BotD8E;0GA2BgBruFoB;sTAYVquFsC;iKAMJA4F;OAEgB5LmC;uHAqSlB0SAASAAAARE7H+E,A,A;iNA+Rc3EyB;uBACIhFsD;kGAGhBdmCAyKwB5hDiB,A;AAxKRumB2F;8OAehBklCiF;uMAhBA7JAAyKwB5hD+B,A;AAxKRumBiB;6qBA4LO0gCuE;iFAGYvCwD;osBAkCVvYkB;iHACD0hByB;uDACErgBiG;4EAESkXwD;2RAwFpBzYkB;woBAkBTuQ8D;gGAMgBsLqC;AACFmDgL;AACZnImI;gNAcImImK;0FAEVoBoI;4BAGAXoG;0zBIl9BJzBgC;uPAcYmBoD;qGAUiBprD4E;oJAMjBorDoD;oYAoBcprD2E;2rBAiExBwtCM;iCAAAAgD;qLASCzuEsB;yHC0+EDihC0D;OAAAAuD;gGEvhFIA+F;mTAitBDjhCwD;wwBD/RFA6D;wOErYGA0E;ojFCtCkByuEM;sCAAAAmC;wrBAiCbyWkC;4DAIb4NkB;goBAmCO7xDqdR0UPAAAAAA+DA+BwBAE,iTAOKAE,gWAOCAE,qXAOTAE,wSA8BMAE,kK,A,A;4kWShkBZAwC;uCAAAAwD;6pBA8fwBAuF;uEAQ9BAqF;+TGnbMAqD;0CAEXwzDmE;2JAeAAqC;gBAAAAuB;WAAAAmD;AAGKzUkB;0pEClCA/+CuBAwBQ2qDAAAANoB,A,A;+VCITrqDAlBszC+B+jDuC,A;o4GmBziCjCkQ4N;cAAAAqK;cAAAAsJ;cAAAA4E;cAAAAoL;qDAAAA0E;uEAAAA6F;cAAAAqK;cAAAAuJ;cAAAA4E;cAAAAmM;cAAAA4E;cAAAAsI;2mLpB5JSRwD;qlCAiIwBlJAAN9B8GgBdxPwBuC4C,A,A;u1BckUtBhHsD;OAAAA0F;qIAKFDuIAwC+B8EkD,A;OAxC/B9EoC;ybAsEH3sDoG;+LAkEUyuCsC;AAEDkfc;uFAGFAc;yEAGEAkC;wvBA0JoBhhBuDHvkBciiBkB,A;mCG8kBnCllB8D;gKAIRwWAAzMgB7+BiI,A;+XPtdXyrCAOwMSmGAhBiPXnCsB,A,A;eSvbAxGiC;o5E6B9D2BtqDyB;0fvB80BlCwzDmD;gFAAAAqC;gBAAAAuB;WAAAAwC;AAOQvT8G;yPAwBcjgDkD;yBACtBwzDmD;qBAEEvTiG;UAFFuTqC;gBAAAAuB;WAAAA6F;AAQOzUkB;+qFwB3sBL/+C2G;+ECWEmoBwC;0FACgBioC8D;gLAGAC6F;wHCoNGVAAkwGD3vDiF,wJAcHowCyD,iFASJoRW,AAAEzCkB,A;iZA5xFCwN8C;UAAAA4J;+kFAAAAkE;gDAAAAyD;m7DAyOTvsD0B;mJAYGsxD2N;iDAAAAgTA6tBAmCmC,gQ;6BA7tBAnCyM;OAAAA4I;86GA4YGtxD2C;gFAQJAgE;+DAIAA0C;iBAMFAuE;mDAGAAuF;2XAUAA0E;6eAsEUAAxBhNkB+jD2D,A;olIwB0eX8IuB;gOAOI9dAtCzgDRN4D,A;8JsCghDpBoe+D;AASSpeqB;u7BA6KLxgB4D;mPAecyuB4H;AAApB/MAjC1kE0B3vC2F,A;AiC0kE1BjhC8B;mCAAAAiF;uDACMkvDoD;ggDA0DG6sBAtClnEoC8TqB,A;2esCknEpC9ToE;4UAAAAAtClnEoC8TmB,A;ovFsCg0EnBhQmD;6JAUR1oCiI;isBAyCPlW4P;kZAeIA2C;8TASXggDAzBr6DJ4NyC,A;0FyBy6Da1E6E;8FAGIlpD6C;uQAHJkpD4B;8dAqBGlpD6C;AAAJggDkG;gZAYLjBkB;wuBA4BQ/+C2C;4GAEgB4+CiF;2PAS3BoBAzBj/DJ4NyC,A;qGyBq/DalFoE;8FAGI1oD6C;2PAQJkoDoE;gkBAYkBtJyE;AACf5+C6C;AAAJggDkG;yXAUiBpByF;AAGtBGkB;slBAeA6JsF;8QAQyBhK8B;+yBAiCrB9NAvCnzEJ9wCwE,I;iCuCmzEI8wCAvCnzEJ9wC4C,A;mQuCk0EIyuCyB;2SAeAAqB;m1CAuGPsaqF;UAAAAkF;uBAIY1nCqG;2HAIA49Ba;gMAYFj/CAxBv1CuB+jDkE,A;kfwBu2CvB/jDAxBv2CuB+jDwC,A;2jEwBy7CDmE8E;orBAkBpBloD6C;AAAJggDiE;EAAAAAzB/1EZ4NuH,A;qXyB42EO7OkB;gnBA2EQhQAvChwEONmB,A;mIuCkwELA6B;6yBA4EDA4E;uUASAAuB;AAAkBAmE;AA4CvBAuB;sjCA+CyBpCwB;ygCAyQzB0CAtCt/FWNyB,A;AsCy/FlBuRAzBr3FJ4NAA2BuB+E4C,A,A;AyB61FvB1SiH;6zCA0KuCryBAtC9tGd5tBwB,A;qtBsCovGlBopCiC;gBAAAA6E;2OA6KL4WAzBruGF4NmC,A;u1DyBmsHepMuC;8VAkBXtBAzBhtHgB7+ByG,A;AyBktHhB6+BAzBltHgB7+BsF,A;4FyBmtHhB6+BAzBntHgB7+BqC,A;mEyBotHhB6+BAzBptHgB7+BqC,A;87OyB6sIZonCuF;AAAmBpc0B;+xNE9sJHrsCuF;ijEE+FtB8wCA3C4LK9wCuD,A;A2C5LA2+CArCwFL8SqB,A;AqCxFA3gBA3C4LK9wCuD,I;0C2C5LA2+C8D;0FAMwCoRuC;mBACjCxOmC;2JATPS+G;wfAuFWhEAlB2RIh+CoC,4BAAAAgC,A;6DkB7QJAAtBs9BGAAHlmCnBAAApBsBorCAAAAprCgG,A,A,A,A;gCyBgKNAAtBs9BGAwE,A;AsB58BjB+kDsX;AATJhDqC;87DEvO2B/hD0B;+HCsBTqzDAzBytCQrzDAHtoCxBAAAnCsBorCAAAAprCmE,A,A,A,A;+J4BhDNqzDAzBytCQrzDsD,A;8FyBrsCIwpC8E;maCHfgY+C;0eAmkCCxhD0C;AAChBggDkCjC3kBA4NyB,A;AiC4kBcxPyC/CjyBPp+CyGMvFTAyC,A,yB;AyCy3BO8wCAzCv7BH9wC4E,I;mCyCu7BG8wCAzCv7BH9wCyD,A;gCyCs7BFggDAjC5kBA4NgC,A;AiCglBA5NAjChlBA4N6F,A;6+BkChfS7eA/C4WaNe,A;60B+CvVJ+SgD;mnDGlDXxhDqC;AAAiB8wCAnD4SjB9wCoD,I;qEmD5SiB8wCAnD4SjB9wCyD,A;6HmDnSiB+/CAtCiQI//CwB,A;AsCjQX8wCAnDmSV9wCqD,I;mEmDnSU8wCAnDmSV9wCkF,A;gHmDpPF86CwD;2JAIFCAlDjBIuCqC,A;AkDeJxCyC;mDAEACAlDjBIuCO,O;+FkDmBJxCoD;+CAMAAoD;uDAEAAoD;2EAKACAlDhCIuCgC,A;AkD6BJxCyC;2CAGACAlDhCIuCO,O;2pCoDKoB/7B+BA2BK6nCyB,AAGEnGyB,AAIC2GqD,AAGrCroCyE,A;uKA8OkB6GmF;aAAAAwG;wBACaA0D;gCACEAsC;6GACNAkF;kBACRA2C;iRALnB7GuD;siDiDnPAvhB6C;iT/ChCOqxCwD;mxCC1BPrxCAAAAAqX,A;uYJiDaA8DK5CG2iDAAAA3iDc3CqDUmpD+G,A,A,A;gPsCMFrKAKzCM9+CyB,iO;kGL6GFAS;AAAhByuCuB;mBAAgBzuCyB;yPAEjBAqC;AAEF8wCA9CoRL0QqB,A;A8CrRK1BApD6FA9/C8C,I;oCoD7FA8/CApD6FA9/CwD,A;AoD5FA8wCI;4CAAAAA9CoRL0QqD,A;iF8CjRoCxhDqC;gGAE/BAqC;AAAY8wCApD0IZ9wCyB,A;2DoD1IY8wCgC;sqFOwQV9wCoBCtbKy/CgD,A;ywGCwGPz/CgB;2IAUKyuC2B;i3CAsBgBzuCkC;qQAQvB8/CA7DqHE9/CoB,A;gB6DvHF86CwC;oCAEAgF+B;4CAGKrRiD;uDAIG2PwC;yBAAAAiE;AAAMtN6E;4CAAAA8C;AAAuB6NAhDkWxC8S8B,kD;gNgDpVW/U4C;wFACAC+E;kFAHT38C8B;AAOS8wCwE;4CAAAA0C;oEAMT9wCkC;AAGS8wCAvD0QX0QqB,A;AuD3QW1BA7DmFN9/CoB,A;0D6DnFM8/C+B;iEACAhPgC;yKAYT9wCkC;AAIS8wCAvD0PX0QqB,A;AuD3PW1BA7DmEN9/CoB,A;qF6DnEM8/C+B;kEACAhPgC;uSA4BCrC2D;AAMGqCAvDwNf0QqB,A;AuD1Ne1BA7DkCV9/CoB,A;qF6DlCU8/C+B;mEAEAhPgC;4FAPb9wCsD;2yDExNY+vDqD;AAGU7xFAIFP4jFyB,A;AJEEiOuB;AAAK7xFAIFP4jF8D,AACDrTiG,A;sCJwBGshBiB;AAARAc;AAAPAwB;AAAOAS;AAAQA8D;AAA6CthB6D;wEAGpEshBuB;AAAKjOwD;qCAkBciOsD;mCACFA6F;6RAOQA6F;8oBAkCcAiB;AAARAc;AAAPAwB;AAAOAS;AAAQA0B;AAA2BAiB;AAARAc;AAAPAwB;AAAOAS;AAAQAqB;AAE3C7xFAI1FF4jFyB,A;AJ0FHiOuB;AAAK7xFAI1FF4jF4D,AACDrTmD,A;0OJ+FYvwEAIhGX4jFyB,A;AJgGMiOuB;AAAK7xFAIhGX4jFgF,AACDrTmD,A;AJmGKvwEAIpGJ4jFyB,A;AJoGDiOuB;AAAK7xFAIpGJ4jFiE,AACDrTmD,A;AJoGQvwEAIrGP4jFyB,A;AJqGEiOuB;AAAK7xFAIrGP4jFuE,AACDrTmD,A;AJwGMvwEAIzGL4jFyB,A;AJyGAiOuB;AAAK7xFAIzGL4jFmE,AACDrTmD,A;AJ4GEvwEAI7GD4jFyB,A;AJ6GJiOuB;AAAK7xFAI7GD4jF0D,AACDrTmD,A;AJ6GSvwEAI9GR4jFyB,A;AJ8GGiOuB;AAAK7xFAI9GR4jFyE,AACDrT8G,A;8WJ+HWshBY;AAARAc;AAAPAwB;AAAOAS;AAAQAqC;AAIIjmBiClCpGK9pC4D,A;+JkCoGL8wCmL;wVAmBnCifuB;AAAKjO4C;6zCIlJgBA2D;iBACDrTgB;+0BAgClBqTyE;qnBAIEDkP;2UAsBFC8B;eACAiOuC;2JCjCiCjO6C;AAAAsE4B;AAAoB2JkC;qJAEpCAwB;AAAK7O+C;4LAiBtBY4B;4yDIhCSlDmC;wVCxBFnQuB;q1B5EkVuB+iB2C;sDAqB5BxByD;0+CG1MsBrxCA0G2FuB3eoC,A;sF1G3FvB2eA0G2FuB3eqD,A;2G1GzF/CstBwE;mFAKAAgG;4QASAA8F;4SASAAoF;gfAqBAAiG;4PAgEAAiF;8oBA2COttBkE;QAAAAkE;ugDA6JPutBuE;qrCA6P4BwjCmD;2DAGf7DAAINmEyBA9mBwBuCmB,A,uC;iJAqnBL5zD+C;+BAAAA4B;+nCA4HFwxDyE;6uC2EpnBjBzK4M;sBAAAAwD;yBAAAAqH;u+F1EjOA/DiF;OAAAA0B;mMAcA5/EAWwCF48BwD,A;4pBX1BEAkC;khBAoDEt8BAW/DJ2tFgBZmF0BuC8C,A,A;wFCnBUjwFAU5EWqjF8I,A;AVyEpD2HoB;yBAKSjrFAWlEJ2tFgBZmF0BuCsB,A,A;AClBpBpBsC;otHA+QFKgC;2DAIQpDwD;iCACqBjSa;8qBAsB7BsVoC;gtCCnYiB9yDkD;mGAAAA6B;onDAwKPAqC;oDAAAA8D;qEAmFSAoC;8GAAAA4B;qpDI3NFAmD;uBAAAAwC;0fAiHXyuCyB;6QASXuR0B;2RASAAU;2WAYFhgD2E;gBAAAA+E;mnFAkHOA0D;olCAuBemvDyC;4mCAoEEnvD+C;qHAAAA+B;m8BA6DAA8C;8FAAAAqC;+CAIxBwhDyB;iFAAAA8D;6UA6BwBxhD+C;gGAAAAAASWqkDkB,wC;qzBAyC9BrkDa;mHAAAA2B;uvBA0F0C4iDoH;OAA1CpBuB;sEAAAA2B;qCAIAxhDa;mHAAAA2B;oRAsBQ4iDoH;OAFRpBsC;saAqCAxhDkD;kGAAAAyC;+1BAgFqCAmD;6ZAkIlBAkD;4EAAAAyC;s8BuEr2BnBg8CoC;AAAqBAgC;gFAEmBAmD;sEAM/BqR2D;4jE/Ek2DY5ewC;mlDAmiCCuemB;AAAeAiB;8IAOQAiB;4DAOlC7CuC;AACAqHgC;6I+Bz4FIxxD8C;8IAAAAwC;yCAEEAwC;sBAAAA0C;0IAQfwjDAA+PiBsDa,A;oXAhOEA+C;+MAKAAe;8QAUf1BaAgLNyB6C,A;ywBA/JL1Y4LAQW0YgB,gV;uoBA0EaCa;kPA2BD9mDwB;wOASzBkqD+D;8nCA+GOlqDa;4EAAAAyD;8zBAyDAAa;8EAAAA2D;gvBAsDAAa;8EAAAA6D;kfA0BMwhDK;mFAAAAkD;4uBlB9aXgHsB;gFAAAA8B;AAEAMY;AACAda;uKAWAQsB;kFAAAA8B;AAEAMY;AACAda;wKAuEAcyC;iMAaK9oD6B;4LAmBAA8C;gYAQAAiC;iTAQAAiC;4ZAsCJw9Ce;SAAAAc;0DAY6B7R0E;iBAAAAO;0XA2C9B3rCoD;guBA6BYw9C2C;8BAIIhOAAlHEsZkD,A;8YAqHVD6F;oYCpRiBld2E;WAAAAQ;kFAuCzB3rC0D;+cAwBU6yDkC;mKAOD7yDK;8cGtEYwmBAAy5CjBi9BiE,A;4KAviCGzjD+C;+kBAqEMwsBwD;w9CA6efq2BoE;oRA2BAAoE;sMAWAAuE;+xFAseOvsCe;kfNl3CA60C+B;uIAMyBDsD;uDAiiCb5qGoC;sCAAAAAAytB+BguGY,A;okCQ7tD9CjH6B;oRAoBAA6B;k4CAyEFlE0BC2fmBnjD6C,A;ADzfnB4hD+BC2kBwB5hD8B,A;uRD5fgBAoC;4yBIsNpCmjDK;gCAAAAAHoNenjD+E,A;oHG9MfmjDK;gCAAAAAH8MenjDuC,A;+/BG9KXmjDK;gCAAAAAH8KWnjDuC,A;iNGxGJuuCOHpiBawb6B,A;mRGwiBbxbOHxiBawb6B,A;4JATlBA6B;uVAgBAA6B;6YAeAA6B;gXAkHPvd4B;8BACEqhB2B;AAA6BjJAAzB7BmPmC,sB;yRAyCIlGqB;qdAUL1hB+B;shBAyIkBptE2C;ycAqBJihC6G;oBACPu+CsH;sOASOv+CyE;oBACPszDsH;8LAaO5QsE;AACFgFwC;mKAiCE1nDwE;yGAIP6/C2F;uXAoDTiKe;kOAQiBpHmF;AACLoFmC;+bAgBZgCe;qeAiBiBpHmF;AACLoFmC;ujCA8IduEyG;0OASFA2D;4JAMWpFyC;2CAAczZqF;mgBAiBJxtC0C;41DAuKIgsCmBA7nBlB6hBsB,AAAULAAjEVuG6B,gE,A;0FAgsBkCrPS;qDAAAAoB;uDACDAE;gEAAAAiD;gEAEP1kDkF;2MAKqB8nDkD;AAC3Bb8D;AACqBvCE;2DAAAAkC;mKAWrB0FAAiGzBhK2C,qC;6xBA3F4CpgD6B;yRAUf+rCgB;wBAAAAE;0BAAAAAAttBxB8hB2B,AAA+BpDoBA3B/BsJM,2E,A;oJAmvBwB/zD6E;4RAOQ0kD8C;OAAAAyD;6DAElBnYAAxuBdieoC,A;gPA6uBsB9FsC;OAAAAoC;mMAGI1kDkF;oPKoYXAyF;mxBE/yBjBwnD4B;uVAUAA4C;iDAGmBxnDc;wDAAAAuC;wQAOIAc;iCAAAAwC;uIAWxBwnD4B;oNAYKxnDS;AADLsuC4B;wEAIGtuC0D;2KAKF6pDe;0GAC2B2GoEP1OlCAAAAAAmC,A,A;oDO4OMxwDAAoYFAAAzDkBAkE,8K,AAoDtBAAAAAAAAMiBivCAA3cbvCe,+CAA4B4b6C,A,oB,A,K;8DAsE1BtoDkF;0IAmBcynDmD;AAAmCznD0D;sIAIhD6pDsB;qJAMAAsB;uSAkBDvbe;4JAIJyUiL;mLAiBIrWe;qIAGyB1sC+D;uIAKzB0sCe;gJAGyB1sC6C;2OAU7B+tBqD;iSAWKs6B4B;0FAGqCroDAAqLxCAADjvBgBjhCoH,AAAXo1FAAWKpJgD,A,A,A;uBCijB8B/qDAAqLxCAADjvBKm0D8E,A,4DCivBLn0DADjvBKm0DAAaKnJyG,A,A,iD;oOC4jBV3P+D;4cAsBEmM4B;wiBAsBWxnD0E;AAAA4hD+GPsEW5hDuC,A;s9BO5Da+pD6B;ucAgGT9ckD;ykBAyB9B4dAA1GIrD4B,iEAEF/NkC,+B;4JA4GFqRAAtGItD4B,iEAEFnMmC,gC;+kCDjoBiB5M0C;gKAyDfgZe;yLAMYv6BAA4bZkiB6B,2B;+JAvbAqYe;6EAEFnD4B;4yBAwEQp3B2B;8QAoBNu6Be;+HAIcznD2F;4DAKlBotDqG;AACI3Fe;2IAIcznD6C;8DAMdynDe;yaAiCuBznDe;wDAAAAkE;0CAEtBknDe;mUAciBoBoB;mSAWAA+G;o5BAiEAAoB;+PAiBlBpB4C;qJAEoB8CwFAhM2Bvb8E,A;oPA2M5B6ZwC;wlBA1FjBbe;snBAqCC8Fe;gbAoF8BpJuG;ipCA0HjC/Ue;swBAWFvDQ;6BAAAAkM;wJsD5nBFvjB2B;gDAAAAAAmDIs/B4B,0H;+EA/CJr/BAA2DIq/B4B,4I;2DAvDJp8BAAmEIo8B4B,wH;upBA2BFuF8H;iJAEA5kC6EAzCEq/B8B,8I;8IAkDAr/ByG;AAHF4kC8H;uMAGE5kCAAlDAq/BgC,qJ;AAoDAr/BmEApDAq/BgC,qI;4IA4DFuF8H;4IAEA5kC6EA9DEq/B8B,8I;wSAuGA5nDAApIFAAtD8EgBjhC6H,AAAXo1FAAWKpJgD,A,A,A;kBsD2CR/qDAApIFAAtD8EKm0D8E,A,gEsD9ELn0DAtD8EKm0DAAaKnJyG,A,A,0EsDpGdhrDAAAAAAAUEmtD0F,I,A,A;oBAmIIntDAA7INAAAAAAAAU4BAmF,iC,A,A;iCAmItBAAA7INAAAAAAwG,A,A;u9C3DueiDAa;wgBAsG7C8rCyF;qTAQAAyF;wYAQAAyF;ivNA6N4C9rCU;yJAEZukDAAFYvkDU,gC;4fAoB5C8rCyE;2aAYAAyE;qgBAYAAyE;m0ISnzBK9rCuC;wIAAAAkC;kCAIqB+vCsC;uCAAAAAAJrB/vCuE,A;sRAU8BonDa;4JAGHAa;q+IAyL7BAiE;s0BAuGqBmJuD;6gBAmEnBvwDa;mFAAAA2C;86B8ChamBAyC;uDAAAA2B;yBAAAAoC;siBA2IUA2E;QAAAA2E;kXAkIZ2eAgChDuB3eyB,A;yBhCgDvB2eAgChDuB3e8D,A;gOhC0FnCyxDqB;yzDAiMOVmD;w2B3CrbK/wDkC;sBAAAAsD;4TAmBpBggDqB;AACAAAjBqaJ4NgD,A;AiBpaI5N2C;gMAkHsBhgDa;4DAAAAoG;2jBC3GtBgpDmB;mCACKsEqB;8FAIMnHe;yHAMC6C0B;AAAcsEM;AAAalduB;6EAMvC4Y+B;AAAiCjZAH1Gf/vCa,A;AG0GEstDgB;2CAAavdoBH1Gf/vCwC,A;uBG2GfA+B;uEAIHgpD+B;AAAiCpJAH7Gb5/CU,A;AG6GAstDgB;6CAAa1NoBH7Gb5/C0C,A;0MGiJpBgpD6B;WAAoBsEyB;eAEjBnGyC;4JA+BH6B6B;YAAoBsEsB;iJAOVnHe;6FAEqBAuB;6VAiClByNgB;4GAmCZzM8C;6FAC+BhBc;kXAgCrB6C6B;8SASAA+B;wHAEcrZAhCgZH3vCwC,yBAAAA4C,A;uRgCnXL++CoB;AACrBvxBiC;mtBgDjViCmcmC;yQAwCpB3pCAjEw2CwB+jDmD,A;8fiEl1CoB/jDuF;OAFlDAwC;grBA6CU4tBA/EuNQ5tBoC,A;qE+ErNvBytBkB;+1B9CjCWikCwD;cAAAA8I;cAAAAwH;srBAqBmBthBqE;oVAQdpwC+C;AAAJggDuE;mFAAAEApB0ZM7+BqH,A;mRoBrYP+uBiB;sWAUP4PApBsXN4NAA2BuB+E6B,6B,A;sDoB7YkB5ToB;i2BA6FhC/+CiCA2OIA4B,A;uBAzONAoCAsNMAyC,A;eAtK6BAAnBunCL+jDiD,A;04BmB/+BZ/jDAnB++BY+jDa,A;0DmB5+BpBv9BkB;43EkD/ZVgpCA7DwiBAxvDuB,A;6I6DxiBAwvDA7DwiBAxvDiC,A;4C6DtiBeAiD;4DAAAAI;+NC+KMouB8B;kBAAAAkB;oKrDyIrBpuBwD;kEAAAAAAa2CAuB,A;esDlS3CwvDA/DmgBAxvDuC,A;0R+DjgBuBAmCAgKDA+B,A;8qBAvG3B6rBK;eAAAAyB;qCAEF4BK;eAAAA+B;2MAuBE5ByE;qfAAAA4B;qKAaEA4B;qLAOA61B4DAmB6B1hDkB,0DACf+uCArFkNIN6E,A,0G;gJqF/LZMArF+LYNuB,A;mIqFvLtBjhBuB;yYC3LOxtB0BA8OAwhDAAMMxhD0C,A,AANEAuB,A;uWA7GXkgDAzE0XgB7+BqC,A;oSyE7WbrhB6BAiEMA8C,A;6PArBX6rBuB;gBAAAAqC;AAEAAY;4EAEU4BkB;sZAkCMYa;qWAyBN0gBAoBhNUNAAJJ2B2B,A,A;2BpBoNNrBAoBhNUNAAJJ2BkF,A,A;ApBsNhB5iByB;8RAYYaiD;4JACF0gBAoB/NUNAAJJ2BgF,A,A;qFpBsOhB5iByB;4WpDjNsBxtBApBg1Ca+jDiB,A;QoB70CViQAAyCfrQAAG8B3jDApBiyCL+jDoC,A,A,wC;0YoBxzCoB/jDuF;OADlDA2BAoHTAAAHIAAA/FkBg0DAAGRrQAAG8B3jDApBiyCL+jDqB,A,A,A,A,A,A;8uBoB7wCxBb0F;+nDAqCAqFiC;4qGA6IXvoDyC;oEAAAsuBkB;qNAWkCtuBsC;8kEAkNlCkgDArBjBkB7+BgG,A;0JqB4BQrhBwkB;2vBAatBkgDArBzCc7+BgG,A;kPqBkDR6+BArBlDQ7+B8G,A;sDqBuDR6+BArBvDQ7+B8G,A;+EqB8DR6+BArB9DQ7+BwE,A;AqB+DR6+BArB/DZ0NgE,A;ypCqB2FQ1NArB3FY7+B0C,A;yYqBuGhB6+BArBvGgB7+BgH,A;iLqBgHb09BkB;ugF5BhIiB3Q6C;8rJMnEWK0D;0aA8CjCgjBqDCzJqC3M+DAoBhC17DATnUMgoEuB,A,A,A;0pBQglB8BpxD6D;WAAAA4C;u9CC7kBbwxDuC;m2ByB4uDNlKwBA8oDbvYAtCzhGWNiD,A,AsC6hGlBpCyC,sCAGF2TAzB55FF4NAA2BuB+EoC,A,A,AyBk4FrBjF4BA/BY3eAtClgGQN2B,A,AsCogGpBuRAzBh4FF4NAA2BuB+E8B,A,A,qByBu2FJ3SAzBl4FnB4NAA2BuB+E8B,A,A,8CyB02FrB3S8E,A,oEA4BAAAzBj6FF4NAA2BuB+EsC,A,A,8CyB04FrB3SAzBr6FF4NAA2BuB+EyC,A,A,A;kSyB+uCctPAAihBrBtUAtC/5DMNiB,A,iF;YsC84Ce4UgMAohBjB5UiB,uCAGAqCAvClgEb9wCyB,A,+DuCkgEa8wCkC,wG;8tCAzUb2RU;gfAqRSpWc;4CAEI0CAtCn3DEN8E,A;kEsCm4DyBAkC;m1DAy4B1BMAtC5wFCNuB,A;2nCsC80FLnCAA+FWmC6B,A;iEA7FN3BAAmFKiCAtCn6FLNuC,A,A;4RsC81FH3BAAqEQiCAtCn6FLN6B,A,A;AsC81FoCrCmG;0uBA+E9BqCa;8VA4BxBuLe;yHAKAhPkB;+GAKeie2D;4DAAyCgESAIxD5gBqD,8LAWJ4T8B,AADI7T6I,A;yVAkFACyD;SACAsTmD;6LAIA9SkE;0FACAmN+B;kEACAvN6E;otBAuaiB6W+E;oBAAAAgUAwBdtjDU,A;sDAxBcsjD2F;0hCAqqBjB6E4F;qBACAC8E;sBACAHuE;qBACAQgF;+mBAaANgG;iBACAC8E;+/CA2EC3bgD;AACEzsCY;AADFysCiB;0aA2BckcoH;qcAyBC5ZAtCtxIENsE,A;gKsCsyIkBAkC;05BA8DhC3BmB;8CACATmB;+BACISqB;2CAEDmb6G;AACS3b8C;AACF6bwE;wDAEACkF;yFAQPpoDiB;sVAeHssC+C;uCACEOyB;4FAKC7sCiB;2OAWDysC+C;AAKCzsCS;gVAaHosCmG;kNAQCpsCiB;yQAWAssCsF;AAAqBD2B;+IAWrBrsCiB;yhBAhGD8sCwC;+cAkEAV0B;oDAAAAsC;AAgG6CAkC;AAAnBUyF;8DAoB3B9sCmC;sYAaiBioDiF;ocAaAgB2D;qEAElBgE2GAWM7T6E,A;wgBAmBL/MkB;yGAEA+MgI;AACAvMuB;uGACAJU;ktCsDtyJAjDsB;sCAIP/bI;QAAAA0B;sLAMoB8gBO3EnIUwb6B,A;uL2EyIVxbO3EzIUwbmC,A;yjB2EwJL/pDAxE+8BJAK,A;8CwE/8BIAAxE+8BJAAHlmCnBAAApBsBorCAAAAprCyG,A,A,A,A;4D2EwKtBisB8D;AAC2B+xBApEoQPh+C4B,oBAAAAmC,A;mtGiBjdd+vDqG;0FAINA8E;k+BAGsBAyC;AAAuBA8C;mCAC3B7gE0CWnBV2hE+B,A;AXkBiB1hEAkELO4yD4B,A;AlEKQnS8M;AAGxCmgB2C;AACIjOS;qCACAAS;+CACAAS;yGACEiOoG;4FAINAuD;2oCqDagCjfK;aAAAAA/F8P3B9wC8F,A;2E+F3PP+vD2B;AAAKjO2E;4iBpD6HYxT4B;gOAKAA4B;sNAOAA4B;oPAMbyTuB;sQAIiBAiE;iiBqD7LZ/hDkCAMgCyhDkF,A;+BAL3CxPwB;uBAAAAgH;8zCAuC4B6LwBAuKYEyBvE0QhBh+CqG,A,A;AuEjbIs/CK;AACIhWmB;AADJgWwH;AACrBAK;iBAAAAW;yFAMqB1BwBAyJYIyBvEiRhBh+CqG,A,A;AuE1aIs/CK;AANIhWmB;AAMJgWwH;AACrBAK;iBAAAAW;kUAQiCP+B;AAAmBAmF;4hEAgD3B3xBmChGoCNzOA0G2FuB3e2G,A,A;AV/HzCowCsD;AAAAhoB0D;4PACY2nC4I;oGAUE/vDAAyBqBysD+C,AAICC+C,AACAF8D,A;4wCAlB1C7cmBnEwPO3vCS,A;AmExPgC4/CoB;AAAvCjQAnEwPO3vCiE,A;oCmExPPjhCgC;AACkBskC4D;ohCAqBH0sD2I;wEACctTqD;iCAAdz8C+C;AAAcy8CAvEsULz8C2E,A;AuEtUTAAHnJXAAAqP0DAAAzI/BykDAAAAzkDAxEmjCVAAHlmCnBAAApBsBorCAAAAprCoG,A,A,A,A,A,A,A,A;yC8E2GHg+CAvEkUCh+CoC,A;6EuE9TP+vDgE;6MAKAAgE;+RAMFzOyD;AACAFiD;i5BAYE2OiF;kOAIF5OyD;AACACkD;AACACsH;2EAGK0O2C;6WASMAuB;WAAAAa;kfAcxB/fAAlBkB8RqB,4C;oHAoBJxToC;oFACCAoC;oFACAAoC;+ZAEfmfgD;8PACAAwC;wXAlEU3LW;aAAgB4NAjFqwCxBp5Ce,kC;sJiFrvCmBtWyB;oTlDzKDsuC4B;iRAKAA4B;slBC6ECDkD;AAAsBckC;6CAI/BpwE0B;oCAAAAgI;glBAuKGghFA/C0hBa//C+D,A;gb+CpgBX8/CI;uCAAjBnQ4BzCoJ0B3vC+E,A;2GyCpJ1BjhC+B;AACMowEyE;AAGax0B4G;+RASN0zByC;AACuBc8G;AAKvBJA9C6FSNmB,A;wO8C1FH0NoC;AAGf6DAjC2NJ4NAA2BuB+E4B,A,A;oIiCnNRh4CiF;4DAEOmlCA/C9Ff9/CsC,A;A+C8FqB2+CAlCsJ1B8SqB,A;AkCtJoB3RA/C9Ff9/C8C,I;qC+C8FqB2+CiC;iRAqCbhkCgE;2WAwBLyNoD;cAAAA6C;6JAKwBgoB6C;yEACfhoBgD;UAAAAuC;k8BA2EC8mBAA9RWbuD,A;kEAgSTtvEuF;+CAGlBmwEAAnS2BbgD,A;AAmSPAmC;sCAMpBaAAzS2BbkC,A;AAySPcmC;qCAMpBDAA/S2BbkC,A;AA+SPAmC;wFAIL1zB4D;gCACAA4D;oEAEEo0BA/CuMCNe,A;8d+CxLEMA/CwLFNqC,A;kE+CvLDMA/CuLCNmB,A;wnB+C5KDMA/C4KCNe,A;8lB+CnKDAe;81BA4CIJkF;AACDAiE;ypCA8BnBaAAra0BboB,oC;i4JAskBE9vEiE;ioFA8P7B2wEAAp0B2BbsD,A;mEAu0BOtvE4B;0DAAAAwB;saAuCf65ByD;4VA9tB0Bm2CA9CkD3BNa,A;+0BgGjWbAe;4EACQ/wCmC;wgBjDyBTqxCAhDkoBcNuB,A;uRgD/nBTMAhD+nBSNkF,A;8MgD3nBPMAhD2nBONe,A;ufgD/mBLMAhD+mBKNqB,A;uQgDnmBjBJuB;6HAKQIsB;AAAYJuB;wNAQpBAa;0BAAuBImD;4IAOfqMK;8hCkDzGN/LAjG6XeNe,A;qRiGzXbMAjGyXaNe,A;8eiG5WThvB6D;sQAQIgvBuB;klBCzBRAe;yWAYAAe;y6BA4BFMAlGqVeNe,A;quBmGvXbAe;kRAMAAe;24CA8CyCmiB6C;2HAOvB9VyD;OAAhBr7B6D;4OAWsBqgCApGiK1B9/CgC,A;uDoGjK0B8/C+B;qXAkBdrR8D;6HAOSqMuD;kCAAEAoD;o6DjDrFNpLuE;yRAajB1vCmC;0pBE8CP2vCAqBtE0B3vC2F,A;oGrBsE1BjhC0B;mCAAAAiF;qlCAiCe0vEuB;uzCA0BWuNuI;4QAExBgEwC;uCASFAAvCgXA4NAA2BuB+EiB,A,A;4IuC7NFvqC2S;uDAEIA8E;+dAIDunCAgDnSflkCAArCc49ByC,2CAqDqBjZmB,A,8BAhBnC3kBAAgBWzrBAtFouCkB+jDgC,A,A,AsFtuCxCt4B8B,AAd0BmCApGmSC5tBwC,A,A;8FoDSSooBgD;AAAlBpoBwG;iEAGC+sCgD;mKAAAA8D;iEAEDgCArDqWMN+B,A;4BqDpWNzuCqD;iSAqBJujD4C;kDACc9T0D;iCACVzvCqF;AAEAujDkE;+MAKY9T4D;mEACb8T+C;oDACa9T4D;mEACX8TiD;oDACW9T4D;iCACVzvCkG;AAECujDsE;2LAKTvjDyG;6GAKE+uCArDqTUNuB,A;4BqDpTVzuC6C;qHA4EVAgH;wiBAiByCyuCuB;k/CAwClB6hB2KiDtc3BtwD4C,A;qVjD+cyBg8CuG;AAAfgES;iCAAAAS;4BAAAAS;uBAAAAS;wBAAAAS;6nBA0DahE8C;oNAkBAAiE;uiBAoBAh8C0E;ymBAyBVA4G;ipBAeJ++CkB;2pBgDtmBsB32BuD;4CAAAA8C;UAAAA8B;+IAIOAkD;cAAAA2D;21B7CGd4zBwF;+CAAsBmDwF;2sD+CZtBnDgE;+QnDiKC3RApDiChBrqC0D,I;gCoDjCgBqqCApDiChBrqC6C,A;6GoDpBA8wCApDmEA9wCyD,A;6BoD3EO8wCApD2EP9wCkD,I;kCoD3EO8wCApD2EP9wCyC,A;yCoDnEA8wCApDmEA9wC4C,A;qaoD/NEjhCiE;qNAgFmBgwEAnD4ONNa,A;mVmDvKIqCApD0EnB9wCkD,I;mCoD1EmB8wCApD0EnB9wCyC,A;oYoDlEmB8wCApDkEnB9wCqD,I;8CoDlEmB8wCApDkEnB9wC4C,A;gb2D5IK65CiC;kyBAoCC75CY;yJAIiBAoBCpNhBy/CiD,A;kBDwNGr3BAhDceujBgE,A;egDdfvjBAhDceujBa,A;iDgDdPmP2D;AAChBA+E;AAEK1yBAhDWkBujBiD,A;egDXlBvjBAhDWkBujB4B,A;qIgDTZvjBAhDSYujBmB,A;wDgDPRvjBAhDOQujBiD,A;0BgDPRvjBAhDOQujBwC,A;0FgDFrB3rCgC;6qBAcEAqB;OAAAA2C;+KA6BHooBAhDzCsBujBqF,A;iBgDyCtBvjBAhDzCsBujBa,A;4BgD8CpBvjBAhD9CoBujBqB,A;4BgD+CpBvjBAhD/CoBujBiB,A;qBgD+CZmPqE;AACHA4E;qBACAA8D;6BAKc1yBAhDtDCujB8C,A;mBgDsDDvjBAhDtDCujBe,A;kFgD0DrB3rCoBChSGy/C8C,A;2VD4POr3BAhDtBWujBoE,A;iBgDsBXvjBAhDtBWujBe,A;6GgD2Bf3rCY;6JAIoBAoBCrQvBy/CkD,A;4BDuQsBr3BAhDjCJujBgE,A;egDiCIvjBAhDjCJujBa,A;0DgDkCDvjBAhDlCCujBiD,A;egDkCDvjBAhDlCCujBa,A;sDgDmCJvjBAhDnCIujBiD,A;QgDqCjB3rCgB;AAFaooBAhDnCIujBW,A;4XgDiFF3rCoBCvThBy/CiD,A;kBDwTGr3BAhDlFeujBgE,A;egDkFfvjBAhDlFeujBa,A;iBgDkFPmP0D;AACO1yBAhDnFAujBiD,A;egDmFAvjBAhDnFAujBa,A;0DgDoFLvjBAhDpFKujBiD,A;egDoFLvjBAhDpFKujBa,A;6DgDwFrB3rCoC;AAHIyuC0D;wTAULrmBAhD/FsBujBoE,A;iBgD+FtBvjBAhD/FsBujBgC,A;kIgDoGAvjBAhDpGAujBmB,A;sFgDsGbvjBAhDtGaujB4C,A;qBgDsGbvjBAhDtGaujBa,A;gCgDyGOvjBAhDzGPujB8C,A;mBgDyGOvjBAhDzGPujBiB,A;uWgDmHfvjBAhDnHeujBmD,A;iBgDmHfvjBAhDnHeujBsC,A;uCgDmHmBvjBAhDnHnBujBqB,A;sEgDqHtBvjBAhDrHsBujBmD,A;iBgDqHtBvjBAhDrHsBujBoD,A;yCgDqHgCvjBAhDrHhCujBqB,A;+EgDsHnB3rCsC;qcAWI+uCA1D8CKN0B,A;A0D/CTzuCiB;OAAAA2C;kJAOAAE;6HAGFAoBChXGy/CiD,A;oZDwYAr3BAhDlKkBujBgE,A;egDkKlBvjBAhDlKkBujB0C,A;yDgDoKZvjBAhDpKYujBmB,A;+FgDwKU/yCgC;AAAzBsmDiB;AAAWvzBe;AAAc/yBAY2BfA4J,A;AZxBZwvBAhD3KiBujBiD,A;egD2KjBvjBAhD3KiBujBmC,A;mCgD2KmBvjBAhD3KnBujBmB,A;gEgD4KfvjBAhD5KeujBiD,A;egD4KfvjBAhD5KeujBmC,A;qCgD4KqBvjBAhD5KrBujBmB,A;kEgD6KIvjBAhD7KJujBiD,A;egD6KrB3rCiC;AAAyBooBAhD7KJujBI,A;ogB6FpNf3rCgB;s6B/C6DFooBkD;QAAAA2E;mHAKcpoBqC;oEACpBAgB;gFAOAAgC;oCAHGAgB;sNAWRwkDYAxEqBzlFyB,4D;wDAyEdilFoC;SAAAAqB;0GAAAAAAkFThkDiD,A;2SAvEEwkDYApFqBzlFyB,4D;iEAqFdilFoC;SAAAAqB;oHAAAAAAsEThkDyD,A;mWA7DEwkDYA9FqBzlFyB,4D;wEAgGdilFoC;SAAAAqB;sHAAAAAA2DThkDqE,A;6UAjDA8rCuD;0BADE0YYAzGqBzlFyB,8D;AA0GvB+sEoF;oJAMAA4F;kTAYEA4B;kCAAAAoF;AAEAA4F;oMASA0YYAvIqBzlFyB,4D;iGA2IVilFwEAgBbhkDqD,A;gEAdIooBiG;AAAmD47B4E;4BAAAAAAcvDhkDkE,A;qGAVmBAoF;8YA2BnBooBqH;sFAWKpoBK;s6EAKc08C2B;kBAAAA8C;yPAgCd18CW;4CAAAA6C;yII4EA8wCA7DZA9wCyD,A;6B6DSH8wCA7DTG9wCkD,I;kC6DSH8wCA7DTG9wCyC,A;yC6DYA8wCA7DZA9wC4C,A;8U6DvKmB+uCA5DoQJNa,A;qc4DlNYMA5DkNZNyC,A;wnC8DxYHAkD;mBAInBshB2B;AAAKjO+D;AAEsBhHkE;AACtBAsD;yDACAA2C;2DAIuBhKoE;6CAAAAyC;k/3DjE4sCmB9wC0E;+1BA4T/C+xDsK;CAAAAG;oWAYAC0K;CAAAAG;kWAYAC0G;CAAAAG;wXAYiBC8G;CAAAAG;q5BoChgCgCxC8C;g9BIM/BakB;iIyD/kBKvwDoBA4B4B+sDyB,AACFpIwB,A;4VxBqB7B5mDAxB5CYga4C,A;8DGAP/XiBgDMFo8C6B,AAEK1KiC,AAEV8J6B,A;kEhDLSx7CmBkDMJo8CmC,AAEK1KqC,AAEV8J6E,AAEQlB8C,A;0DlDJHt6CeiDPAo8C6B,AAEK1K+D,AAEV8J2D,AAEQlB6B,A;8Y/CPbt6Cc;moEKkBWAc;" + "frames": "uyTAoJewxGmC;+HAKAA6C;4CAKCVY;4CACeDE;sKAIlBAE;oBAGOF8B;8OAaAzwGAA8CgBCgEANK+EwG,A,oB;sgBATrC9EAAmB0BDgEAVW+E8E,A,AAUvCEiD,A;ooBGrJS6tGgBAsCwBuC6C,A;60RE5CtB5zDuH;eAEFwhDuF;u+BE8hCQgSkB;qDAAAAkB;yHEl3BjBxzDAAAAAwR,A;uPAwIWAsI;eAEFwhDwG;oSA6IExhDoG;eAEFwhDsE;iKAwFExhDAAmByC4iDkH,A;OAnBzC5iDAAmBFwhDgG,A;gBAjB4BoB8G;OAA5BpBkE;6DA2cwBxhD8B;0DAIHAoC;gxJRl9BV8zDsB;4LAmCL9EY;mrBAyLT5LmG;uzCAwJS/iGAW0fRCuB,A;uCX1fQDAW0fRCAAo5B6CguG6B,A,A;uMXv3C1BQ6C;+YAYbzuGAWudNCeAo5B6CguG6B,A,A;mOXt1CzC2EAARFnCsB,A;gTAyBWUyC;4gHAyuBoBjrC4C;mgBAoCnBA2C;uDASAA6C;8LA8CAvmB8F;0xDAuHdAkG;iuBAsPEA+S;u4BAkNAA2C;yxCA4DyBAkB;8oDAkCJAkB;4DAQ1BAoE;wDAKuBiuBkF;OAChBjuB0B;sJAOC0zDc;4BAIgB1zDoE;sOAUjBA0B;4NA8BmBA4B;6FAGtBA4C;ubAsEK8vDe;qJAEDDsB;AACEAyB;wrEAmQJ7vD+C;cAKAAgG;grIAyTEA0F;m7DA+F6BywDmK;AACH4BsK;wRAwIzBnvGAW16ENioGiD,sB;sPXg8EUnrDoG;iEACKoxDiC;uhCCtzFTUa;8BACcnuGAAsE3BDAFzIAFuI,A,A;aEmE2BGAAuEpBsrGE,A;8DAtEW6Ca;oGAKKluGAAzChBkuGa,A;yLA+CMAoB;kCACkBnuGAAyD/BDAFzIAF2I,A,A;aEgF+BGAA0DxBsrGE,A;sEAzDW6CoB;4GAGKluGAApDhBkuG0D,A;0QA0EEnuGAA+BTDAFzIAFuI,A,A;aE0GSGAAgCFsrGE,A;2NAvBEprGAA2BTHAF9IAFsB,A,oI;SEmHSKAA4BForGE,A;iRAbEprGAAYTHAF9IAFsB,A,oI;SEkISKAAaForGE,A;4KAMPvrGAFrJAFgE,A;27CEwNQEAFxNRFwN,A;iIEsO2BsuG8P;o2BAqFX1tG6E;ugDaxRPIAAnGFquGwC,A;wIAqGElmB4B;6GAGyBoCc;oDAsB9BvqFAA9HGquG8C,A;4TA4IWrVe;ydA2BP+U2D;AACFSoC;sCAAAAiC;kWAeMIyC;sFAIFDgD;8aA+BCN8C;uBASRruGAAnOCquGY,A;0FAoOIEiB;eAKJCiB;kDAAAAiC;wPAsCPrjBADdI3vC4B,uG;sCCcJjhCqG;AAC+Dy+EwC;AAA7DwCc;+EACAAI;uDACmBpWuB;AAErBoWc;kSAqEc6SuD;4JAONGiD;kDAA0BRgB;AAA1BQoC;klLG6jC+BjPuB;0FAa/BN+D;owEN1zCegGgB;AAFA8EsB;2BAGfvCyE;AAD0CxGAA6JlC8IoB,A;mEA/ECvIAAxBsBsIc,A;6EA0BECU;qGAsJzBEiB;gTAwLN3IAA/R8BYwC,A;AAkSxBxBmB;qDAGVqGqD;AAEWh0CAAhMDk3CyB,A;AAiMG0C8B;wGAIbzLAA/PU6IyB,A;AAmQT6C2B;0ZAmCQpLAA5ZwBsIc,A;8JAqabCqB;qRAUAAqB;mSAUWzIkB;kRAe3BDAAtYM4I6C,A;sCA0YGrJAA9XHmJqB,A;iGAgYQpJkB;kUAiBHqBAAvYILiC,A;AAwYJIkB;+QAUIIAA9XT4HqB,A;qHAqYiC/IkB;iZAqB5BGiC;AACDuImB;oGAODxIAAxZH6IqB,A;yTAqaI3IAA3ZJ0IqB,A;6EA+ZUN2B;0VAmBNEmE;uEAGDKa;kXAiBCLmE;2EAImBF4B;AACEAiC;AACtBOiB;4YAyB0B9HqL;AASAP8D;0GASbDoC;0PAYiB8HAAhZR9tDkD,A;AAiZrBksDkE;AAIAHkE;AAIADkC;gVA4CFwCoB;iLAaZzGsB;sMAuBFEiB;sCAIO2ImC;k4BAmFkB7IiE;kRAyBXkGe;uCAENhoGgE;wYA0EQ0BqCAlFlBogGuD,A;uHAsFc4G0B;aAELiCmC;OAAwB/J4B;iFAOMh/FAAI5Bq4CY,A;AAJFqlD2B;uBAA8B19FAAI5Bq4CAAkCbAAAAAAAACMurD2C,A,A,A,A;oEARmBxlGmD;wFA6DrB6lG4C;OACOjEmB;0OAWI5BAA7gCwBsIc,A;4UA+hCnBzIAA79BJ4ImB,A;WA89BM3I8C;AAWduGqD;wOAYCpkG+CA2BmBu+FAA1/BZiIkB,A,AA2/BMlIiB,yD;+JArBPPAA9jCwBsI6D,A;0YAmmC1B/BmlC;AAEF3KO;AADP0JmB;+XAiEO1DI;AADOtBAAlkCFiIqB,A;4JA4kCF1HiC;uBAKVmBiB;iRAsBO2ImC;gCACG9JiC;uBAKVmBiB;iPAkBEAmB;kBAOYnB0B;gOAwBZmBmB;kUA0BSJiC;sMAaWAmD;uKAQRnmCiC;yBADsBlhE+B;wTAUMAiG;mIAmBbAeA8VmBguGkG,A;6KAhVhC9sCiC;yGAgBTmmCO;AAAanCAAlwCR8IyB,A;yDAmwCR3GW;ijHAwKmBsGS;wDAGDK4B;6JAYA/HAAz8CViIsC,A;AA08CKlIc;0HAMG2He;AACFiFyD;AACEjF4B;8KAOGK8B;+CAELEsB;kdAgBMPiB;wrBAgBFK8B;AACjB7/FAAukEMs3FAA3pHwBsIkB,A,A;4RA6lDlB3HAAj/CCR0C,A;AAk/CeX6C;AACQiByE;AAGPyH8C;AACOhIyE;AAGPgIiC;AACNjIkC;AACPiIe;oNAWVK4B;uNAaEA8B;uNAaFHqB;6EAKEGsC;AAIFEuB;8XAsBAzIAA5qDwBsIc,A;sRAqrDVhIAAnlDbiImB,A;6FAqlDSvIAAvrDcsIgB,A;4JAgsDV7IAAzlDb8IgC,A;8DA8lDI1IAAnoDJ4IoB,A;gBA4oDM3IgB;gWAgBOJAAxmDb6I8B,A;AAymDG5IO;2CAUDCAAzmDIOsC,A;wQAinDF4NsB;2JAsLPjPAAHK8OG,oB;uDAKP9OAALO8OG,c;mJAWDtE6B;0IAKOhByB;AACP7EmE;uYAiBOmKW;oGAqCAtEW;iEAeH6BiC;AADP5B8C;+CAGF5E8E;AACHyG8B;qIASS7LmB;8CAGVqG+B;AAEauFiC;+CAETxGoF;AACHyG8B;+IAKSlMmB;8CAGVqG6D;AAEuBh0CAAx2Dfk3CyB,A;AAy2DK0C0C;sHAGXnLAA5hE6BsI2B,A;AA6hEdnJgC;AAKhBiMuC;6EAyCH9F8C;AACAO0C;iFAuGesFqC;AADP5BoB;+CAGsBlLAAIpB0JAAjhEP9tDsC,A,AAkhEH6rDwB,AACAL+B,yD;AANGjEAApGA4JQ,AAAO7BwB,A;0FAqHK4B8B;AAFN3OAA7DKjrCAAv9DJk3CiD,A,A;AAqhEFcoB;8HAGL/HAAvHA4JQ,AAAO7BwB,A;wKAqIOvJAAttEgBsImC,A;6LA2tEZ7IAApnEX8IoB,A;+GA0nEARAAzjEP9tDsC,A;AA0jEH6rDqB;AACAI4B;GACAT+B;oIAWe0F8B;AAFN9OAApGK9qCAAz9DJk3CiD,A,A;AA8jEFcoB;8HAGL/HAAhKA4JQ,AAAO7BwB,A;wJA8KOvJgB;+HAIV0D+D;oIAKGqEAAhmEP9tDsC,A;AAimEH6rDqB;AACAI4B;GACAT+B;sIAOe0FqE;AADP5BoB;+CAMVzLAASYiKAAxnEP9tDsC,A,AAynEH6rDsB,AACAI4B,AACAT+B,yD;AAfGjEAAnMA4JQ,AAAO7BwB,A;oHAwNMrBe;wFAEIKG;AACCh3CAA5nEXk3CyB,A;qIAqoEMPe;uFAGmBFiC;AACZIiE;AAIPGO;AACKh3CAA9oEXk3CiC,A;mJAyqEDlMAAjBO2LqB,qE;AAmBDiDgB;AADP5BkB;+CAMVxLAAUYgKAAlsEP9tDsC,A,AAmsEH6rDqB,AACAI4B,AACAEyC,AACgB8BwB,AAEdjC2B,AAA6B+Bc,AAE/BvC6B,yD;AArBGjEAA5QA4JQ,AAAO7BsB,A;oJA2TNvJAA54E6BsIsC,A;AA64ErBlJAA/zEFmJmB,A;AAg0EUNmB;AAChB9IkD;iEAIKjDaApBP3qCAA/sEQk3CyF,A,A;AAquEK0CgB;AADP5BoB;+CAMV5LAAUYoKAA5vEP9tDsC,A,AA6vEH6rDqB,AACAI8B,AACAEgC,AACAX+B,yD;AAjBGjEAAtUA4JQ,AAAO7BwB,A;4FA6WD9M2H;AAEM0OQ;AADP5BoB;+CAMVpLAAUY4JAAvyEP9tDsC,A,AAwyEH6rDsB,AACAIsC,AACAE0B,AACAX+B,yD;AAjBGjEAAjXA4JQ,AAAO7BwB,A;6FAgcDpNAArDbCoD,AADI7qC0D,AACJ6qCAAM6CqE2E,AAGPyHgD,AACOhI2E,AAGPgImC,AACNjIoC,AACPiI4F,iX,AAjBtBrDgC,A;AAyDgBsGgB;AADP5BoB;+CAMV1LAAUYkKAA13EP9tDsC,A,AA23EH6rDsB,AACAIiC,AACAE8B,AACAX+B,yD;AAjBGjEAApcA4JQ,AAAO7BwB,A;iHAyeDjNsCAZT/qCAA93EUk3C4F,A,A;AA44EK0CQ;AADP5BoB;qJAGL/HAA7eA4JQ,AAAO7BwB,A;2PAkgBQrBiB;8HAICKwB;AACXvIAAxlFyBsIkE,A;mYAknFvBPAA18EP9tDsC,A;AA28EH6rDsB;AACAIuC;AACAEuB;GACAX+B;iTA0KoB8G0B;AACJI0B;mCAGThEmC;6eAcHyDiC;0CAIAAgC;0CAIAAW;uBAES0BU;AAAkBzEI;AAAqBuC6B;0CAKhDQW;AAEEoBqD;AAA2BMI;AAA3BNAAgYDlF6B,A;0CA3XD8DW;AAAsB3IqC;AAAiBqK4B;0CAIvC1BW;AAAsB5IqC;AAAkBsK4B;2CAIxC1BW;AAAsBxIqC;AAAekK4B;0CAIrCzBAA0ERDiB,AAAYPmC,AACe3DuB,A;qQA/DX4FkB;AACR1BW;4DAIc/CI;AAAqBuCoB;AAC/B9foB;oDAMIgiBkB;AACR1BW;4DAIc/CI;AAAqBuCoB;AAC/B9foB;0CAMJsgB8B;AACACAAqCRDiB,AAAYPmC,AACe3DuB,A;4IA9BnBmEAA6BRDiB,AAAYPmC,AACe3DuB,A;0CA1BnBiCAAmMSlxCAA2CEkvC2B,AAAmB0DmB,wBACtBiCU,AAAkBzE0B,AACPfsC,A,AA5C3B8DiC,AACAA8B,A;2CAjMQCAAqBRDiB,AAAYPmC,AACe3DuB,A;2CAlBnBgCAAiMSpBAA4CEX2B,AAAmB0DmB,6BACjBiCU,AAAkBzE0B,AACZfsC,A,AA7C3B8DiC,AACAA8B,A;0CA/LYhCAAwMKyC4C,AAMjBTW,AAAmBhUyC,AACnBgU8B,AACACAAnMADiB,AAAYPmC,AACe3DuB,A,2B;2GANhB0D0B;8BACGkCU;AAAkBzES;gKAWrBVmC;oGAIXyDyB;yNAaWzDmC;sNAIyCiCsD;yEAM7BxS2C;oCAKjB0VgC;AACAzE2B;AAFQGAAz5BCxJAA3iEsBsIiD,A,AA6iEjBlJAA/9DNmJmB,A,6CAk+Da1IAA9+Db4IU,A,AAi/DYyCkB,oI;AA+4BxBkBW;AAEY5C8E;AAOZ4C0B;2GAMqB0B+E;AAEZlCmB;qCAGTQW;2HAE4B/C+B;AAChBrJAAz9FuBsIyC,A;AA29F/B8DW;wEAMItgBkB;sCAMJsgBW;2JA+BKRyE;AAnBYkCuF;oFAwBIlC8C;sCAIbAiC;sCAIRQ8B;oCAIJAwB;kEAKKR0B;2CAGIAuG;AAC0Bc+D;AACbAgB;8CACcrDqB;AACmBtBAAhzFlB9tD8D,A;AAizFfksD+D;AAIAH+D;AAIAD2B;AACpBqGW;gHAWAAW;uCAIW3D6C;qMA0CLmD8B;0BAERQW;AAAsBzIqC;AAAgBmKuB;gDAItC1BW;AAAsB7IqC;AAAcuKuB;qKAOnB3F+B;AAAmB0DW;wBACtBiCU;AAAkBzEkB;AACPf8B;iLAmBboEK;8QAUMxEe;8FAEAFU;gGAOAEe;iGAGAFU;mHAOLhIAArqGsBsIc,A;uEAuqGRlJAAzlGfmJS,A;qCA0lGYpJmC;AACP+IiB;gDAEDKW;yDAIEnJAAjmGNmJqC,A;AAkmGDvIAAhrGwBsIqB,A;gMAurGbxIwC;AACPoIiB;oBAEDKW;yLA0CDxIkG;AACGsI8B;yFAGX+CqC;yQA2BOpLAAnwGuBsIc,A;iGA0wGnC3NAAyZ0BqFAAnqHSsIsB,A,A;uHAgxGlBCE;AADH3IAA/oGF0IsC,A;4BAopGAtIAApxGuBsImF,A;mEA2xGM7IAAprG7B8IgB,A;0KA4rGoB9IAA5rGpB8IyB,A;oGAmsGgB9IAAnsGhB8IqC,A;kOAktGejIAAvtGfiIyB,A;wEAiuGwB9IAA5tGxB8I4B,A;0OA2uGwBjIAAhvGxBiIgB,A;+YAwwGI5I2B;AACAAiC;AACGuIwC;AACAAmB;sBAGkBD8D;AACAA8D;0DAGjBM+B;AACAAe;mMAShB7IAAxwGQ6IkB,A;AA0wGR7IAA1wGQ6IgB,A;u5BA4yGM5HAAtzGN4HkB,A;AAuzGM5HAAvzGN4H0B,A;mCA4zGsB/I6B;AACAA+C;AAEQiB6D;AAGAA2E;AAGPyH8D;AACAAe;+MAKOhI6D;AAGAA2E;AAGPgI8D;AACAAe;iOAOAFa;+CACbOgC;4GAOaPa;+CACbO4D;8GAUfPuC;+CAEeOgC;gDAMOtImC;AACAAoC;AACPiIoC;AACAAe;yFAIFOuC;8EAGEAoB;kGAGILwB;qIAKcJwB;uEAERAwB;kCACbO2C;yGAMVHwB;gMAaMvIAAt8GH4I4B,A;AAu8GG5IAAv8GH4IiB,A;iDAq9GO3JAAnnDL8OG,iB;2FAsnDCnFwB;0CAIMwCiB;sEAEH/CiB;AACWxqCoEA0LjBgvCc,A;6GAxLWjEc;qEAIT3Ia;0DAaFAqB;AACAAa;yHAgBIoIe;uEAUAKgB;AACAAsB;2HA8CAhI2B;AACAAgC;AACA2HqC;AACAAiB;yBAEF1HAA3iHFiIe,A;AA4iHEjIAA5iHFiImB,A;4FAgjHMFkB;AACAAsB;8EASPvIAAlpHwBsIwF,A;4FAspHQ7IAA/iH/B8IkB,A;uDAojHDvIAA3pHwBsIc,A;6IA8sH1BkDqE;AACEtDe;kDAEEOa;2IAUDiEI;2sEQhxHhBzyD+C;6GAmBA4kBwD;kEA0FO5kB2BApCSglDAAAAhlD0D,A,sC;iJAqDCorCQ;4yBA+DEprCgF;AAAAqsDqE;geAkCPttF0C;ikBIQHyxFgEHdTAAAAAA+B,A,A;uDGgJmCxwDkP;m+BAwFajwCsEH9iBRiwC+H,A;0NG4lBtBqzDAAwnBUrzDAHtoCxBAAAnCsBorCAAAAprC2G,A,A,6E,A;mvBApD1BotD8E;0GA2BgBruFoB;sTAYVquFsC;iKAMJA4F;OAEgB5LmC;uHAqSlB0SAASAAAARE7H+E,A,A;iNA+Rc3EyB;uBACIhFsD;kGAGhBdmCAyKwB5hDiB,A;AAxKRumB2F;8OAehBklCiF;uMAhBA7JAAyKwB5hD+B,A;AAxKRumBiB;6qBA4LO0gCuE;iFAGYvCwD;osBAkCVvYkB;iHACD0hByB;uDACErgBiG;4EAESkXwD;2RAwFpBzYkB;woBAkBTuQ8D;gGAMgBsLqC;AACFmDgL;AACZnImI;gNAcImImK;0FAEVoBoI;4BAGAXoG;0zBIl9BJzBgC;uPAcYmBoD;qGAUiBprD4E;oJAMjBorDoD;oYAoBcprD2E;2rBAiExBwtCM;iCAAAAgD;qLASCzuEsB;yHC0+EDihC0D;OAAAAuD;gGEvhFIA+F;mTAitBDjhCwD;wwBD/RFA6D;wOErYGA0E;ojFCtCkByuEM;sCAAAAmC;wrBAiCbyWkC;4DAIb4NkB;goBAmCO7xDqdR0UPAAAAAA+DA+BwBAE,iTAOKAE,gWAOCAE,qXAOTAE,wSA8BMAE,kK,A,A;4kWShkBZAwC;uCAAAAwD;6pBA8fwBAuF;uEAQ9BAqF;+TGnbMAqD;0CAEXwzDmE;2JAeAAqC;gBAAAAuB;WAAAAmD;AAGKzUkB;0pEClCA/+CuBAwBQ2qDAAAANoB,A,A;+VCITrqDAlBszC+B+jDuC,A;o4GmBziCjCkQ4N;cAAAAqK;cAAAAsJ;cAAAA4E;cAAAAoL;qDAAAA0E;uEAAAA6F;cAAAAqK;cAAAAuJ;cAAAA4E;cAAAAmM;cAAAA4E;cAAAAsI;2mLpB5JSRwD;qlCAiIwBlJAAN9B8GgBdxPwBuC4C,A,A;u1BckUtBhHsD;OAAAA0F;qIAKFDuIAwC+B8EkD,A;OAxC/B9EoC;ybAsEH3sDoG;+LAkEUyuCsC;AAEDkfc;uFAGFAc;yEAGEAkC;wvBA0JoBhhBuDHvkBciiBkB,A;mCG8kBnCllB8D;gKAIRwWAAzMgB7+BiI,A;+XPtdXyrCAOwMSmGAhBiPXnCsB,A,A;eSvbAxGiC;o5E6B9D2BtqDyB;0fvB80BlCwzDmD;gFAAAAqC;gBAAAAuB;WAAAAwC;AAOQvT8G;yPAwBcjgDkD;yBACtBwzDmD;qBAEEvTiG;UAFFuTqC;gBAAAAuB;WAAAA6F;AAQOzUkB;+qFwB3sBL/+C2G;+ECWEmoBwC;0FACgBioC8D;gLAGAC6F;wHCoNGVAAkwGD3vDiF,wJAcHowCyD,iFASJoRW,AAAEzCkB,A;iZA5xFCwN8C;UAAAA4J;+kFAAAAkE;gDAAAAyD;m7DAyOTvsD0B;mJAYGsxD2N;iDAAAAgTA6tBAmCmC,gQ;6BA7tBAnCyM;OAAAA4I;86GA4YGtxD2C;gFAQJAgE;+DAIAA0C;iBAMFAuE;mDAGAAuF;2XAUAA0E;6eAsEUAAxBhNkB+jD2D,A;olIwB0eX8IuB;gOAOI9dAtCzgDRN4D,A;8JsCghDpBoe+D;AASSpeqB;u7BA6KLxgB4D;mPAecyuB4H;AAApB/MAjC1kE0B3vC2F,A;AiC0kE1BjhC8B;mCAAAAiF;uDACMkvDoD;ggDA0DG6sBAtClnEoC8TqB,A;2esCknEpC9ToE;4UAAAAAtClnEoC8TmB,A;ovFsCg0EnBhQmD;6JAUR1oCiI;isBAyCPlW4P;kZAeIA2C;8TASXggDAzBr6DJ4NyC,A;0FyBy6Da1E6E;8FAGIlpD6C;uQAHJkpD4B;8dAqBGlpD6C;AAAJggDkG;gZAYLjBkB;wuBA4BQ/+C2C;4GAEgB4+CiF;2PAS3BoBAzBj/DJ4NyC,A;qGyBq/DalFoE;8FAGI1oD6C;2PAQJkoDoE;gkBAYkBtJyE;AACf5+C6C;AAAJggDkG;yXAUiBpByF;AAGtBGkB;slBAeA6JsF;8QAQyBhK8B;+yBAiCrB9NAvCnzEJ9wCwE,I;iCuCmzEI8wCAvCnzEJ9wC4C,A;mQuCk0EIyuCyB;2SAeAAqB;m1CAuGPsaqF;UAAAAkF;uBAIY1nCqG;2HAIA49Ba;gMAYFj/CAxBv1CuB+jDkE,A;kfwBu2CvB/jDAxBv2CuB+jDwC,A;2jEwBy7CDmE8E;orBAkBpBloD6C;AAAJggDiE;EAAAAAzB/1EZ4NuH,A;qXyB42EO7OkB;gnBA2EQhQAvChwEONmB,A;mIuCkwELA6B;6yBA4EDA4E;uUASAAuB;AAAkBAmE;AA4CvBAuB;sjCA+CyBpCwB;ygCAyQzB0CAtCt/FWNyB,A;AsCy/FlBuRAzBr3FJ4NAA2BuB+E4C,A,A;AyB61FvB1SiH;6zCA0KuCryBAtC9tGd5tBwB,A;qtBsCovGlBopCiC;gBAAAA6E;2OA6KL4WAzBruGF4NmC,A;u1DyBmsHepMuC;8VAkBXtBAzBhtHgB7+ByG,A;AyBktHhB6+BAzBltHgB7+BsF,A;4FyBmtHhB6+BAzBntHgB7+BqC,A;mEyBotHhB6+BAzBptHgB7+BqC,A;87OyB6sIZonCuF;AAAmBpc0B;+xNE9sJHrsCuF;ijEE+FtB8wCA3C4LK9wCuD,A;A2C5LA2+CArCwFL8SqB,A;AqCxFA3gBA3C4LK9wCuD,I;0C2C5LA2+C8D;0FAMwCoRuC;mBACjCxOmC;2JATPS+G;wfAyFWhEAlByRIh+CoC,4BAAAAgC,A;6DkB3QJAAtBo9BGAAHlmCnBAAApBsBorCAAAAprCgG,A,A,A,A;gCyBkKNAAtBo9BGAwE,A;AsB18BjB+kDsX;AATJhDqC;87DEzO2B/hD0B;+HCsBTqzDAzBytCQrzDAHtoCxBAAAnCsBorCAAAAprCmE,A,A,A,A;+J4BhDNqzDAzBytCQrzDsD,A;8FyBrsCIwpC8E;maCHfgY+C;0eAmkCCxhD0C;AAChBggDkCjC3kBA4NyB,A;AiC4kBcxPyC/CjyBPp+CyGMvFTAyC,A,yB;AyCy3BO8wCAzCv7BH9wC4E,I;mCyCu7BG8wCAzCv7BH9wCyD,A;gCyCs7BFggDAjC5kBA4NgC,A;AiCglBA5NAjChlBA4N6F,A;6+BkChfS7eA/C4WaNe,A;60B+CvVJ+SgD;mnDGlDXxhDqC;AAAiB8wCAnD4SjB9wCoD,I;qEmD5SiB8wCAnD4SjB9wCyD,A;6HmDnSiB+/CAtCiQI//CwB,A;AsCjQX8wCAnDmSV9wCqD,I;mEmDnSU8wCAnDmSV9wCkF,A;gHmDpPF86CwD;2JAIFCAlDjBIuCqC,A;AkDeJxCyC;mDAEACAlDjBIuCO,O;+FkDmBJxCoD;+CAMAAoD;uDAEAAoD;2EAKACAlDhCIuCgC,A;AkD6BJxCyC;2CAGACAlDhCIuCO,O;2pCoDKoB/7B+BA2BK6nCyB,AAGEnGyB,AAIC2GqD,AAGrCroCyE,A;uKA8OkB6GmF;aAAAAwG;wBACaA0D;gCACEAsC;6GACNAkF;kBACRA2C;iRALnB7GuD;siDiDnPAvhB6C;iT/ChCOqxCwD;mxCC1BPrxCAAAAAqX,A;uYJiDaA8DK5CG2iDAAAA3iDc3CqDUmpD+G,A,A,A;gPsCMFrKAKzCM9+CyB,iO;kGL6GFAS;AAAhByuCuB;mBAAgBzuCyB;yPAEjBAqC;AAEF8wCA9CoRL0QqB,A;A8CrRK1BApD6FA9/C8C,I;oCoD7FA8/CApD6FA9/CwD,A;AoD5FA8wCI;4CAAAAA9CoRL0QqD,A;iF8CjRoCxhDqC;gGAE/BAqC;AAAY8wCApD0IZ9wCyB,A;2DoD1IY8wCgC;sqFOwQV9wCoBCtbKy/CgD,A;ywGCwGPz/CgB;2IAUKyuC2B;i3CAsBgBzuCkC;qQAQvB8/CA7DqHE9/CoB,A;gB6DvHF86CwC;oCAEAgF+B;4CAGKrRiD;uDAIG2PwC;yBAAAAiE;AAAMtN6E;4CAAAA8C;AAAuB6NAhDkWxC8S8B,kD;gNgDpVW/U4C;wFACAC+E;kFAHT38C8B;AAOS8wCwE;4CAAAA0C;oEAMT9wCkC;AAGS8wCAvD0QX0QqB,A;AuD3QW1BA7DmFN9/CoB,A;0D6DnFM8/C+B;iEACAhPgC;yKAYT9wCkC;AAIS8wCAvD0PX0QqB,A;AuD3PW1BA7DmEN9/CoB,A;qF6DnEM8/C+B;kEACAhPgC;uSA4BCrC2D;AAMGqCAvDwNf0QqB,A;AuD1Ne1BA7DkCV9/CoB,A;qF6DlCU8/C+B;mEAEAhPgC;4FAPb9wCsD;2yDExNY+vDqD;AAGU7xFAIFP4jFyB,A;AJEEiOuB;AAAK7xFAIFP4jF8D,AACDrTiG,A;sCJwBGshBiB;AAARAc;AAAPAwB;AAAOAS;AAAQA8D;AAA6CthB6D;wEAGpEshBuB;AAAKjOwD;qCAkBciOsD;mCACFA6F;6RAOQA6F;ypBAmCcAiB;AAARAc;AAAPAwB;AAAOAS;AAAQA0B;AAA2BAiB;AAARAc;AAAPAwB;AAAOAS;AAAQAqB;AAE3C7xFAI3FF4jFyB,A;AJ2FHiOuB;AAAK7xFAI3FF4jF4D,AACDrTmD,A;0OJgGYvwEAIjGX4jFyB,A;AJiGMiOuB;AAAK7xFAIjGX4jFgF,AACDrTmD,A;AJoGKvwEAIrGJ4jFyB,A;AJqGDiOuB;AAAK7xFAIrGJ4jFiE,AACDrTmD,A;AJqGQvwEAItGP4jFyB,A;AJsGEiOuB;AAAK7xFAItGP4jFuE,AACDrTmD,A;AJyGMvwEAI1GL4jFyB,A;AJ0GAiOuB;AAAK7xFAI1GL4jFmE,AACDrTmD,A;AJ6GEvwEAI9GD4jFyB,A;AJ8GJiOuB;AAAK7xFAI9GD4jF0D,AACDrTmD,A;AJ8GSvwEAI/GR4jFyB,A;AJ+GGiOuB;AAAK7xFAI/GR4jFyE,AACDrT8G,A;8WJgIWshBY;AAARAc;AAAPAwB;AAAOAS;AAAQAqC;AAIIjmBiClCrGK9pC4D,A;+JkCqGL8wCmL;wVAmBnCifuB;AAAKjO4C;6zCInJgBA2D;iBACDrTgB;+0BAgClBqTyE;qnBAIEDkP;2UAsBFC8B;eACAiOuC;2JCjCiCjO6C;AAAAsE4B;AAAoB2JkC;qJAEpCAwB;AAAK7O+C;4LAiBtBY4B;4yDIhCSlDmC;wVCxBFnQuB;q1B5EkVuB+iB2C;sDAqB5BxByD;0+CG1MsBrxCA0G2FuB3eoC,A;sF1G3FvB2eA0G2FuB3eqD,A;2G1GzF/CstBwE;mFAKAAgG;4QASAA8F;4SASAAoF;gfAqBAAiG;4PAgEAAiF;8oBA2COttBkE;QAAAAkE;ugDA6JPutBuE;qrCA6P4BwjCmD;2DAGf7DAAINmEyBA9mBwBuCmB,A,uC;iJAqnBL5zD+C;+BAAAA4B;+nCA4HFwxDyE;6uC2EpnBjBzK4M;sBAAAAwD;yBAAAAqH;u+F1EjOA/DiF;OAAAA0B;mMAcA5/EAWwCF48BwD,A;4pBX1BEAkC;khBAoDEt8BAW/DJ2tFgBZmF0BuC8C,A,A;wFCnBUjwFAU5EWqjF8I,A;AVyEpD2HoB;yBAKSjrFAWlEJ2tFgBZmF0BuCsB,A,A;AClBpBpBsC;otHA+QFKgC;2DAIQpDwD;iCACqBjSa;8qBAsB7BsVoC;gtCCnYiB9yDkD;mGAAAA6B;onDAwKPAqC;oDAAAA8D;qEAmFSAoC;8GAAAA4B;qpDI3NFAmD;uBAAAAwC;0fAiHXyuCyB;6QASXuR0B;2RASAAU;2WAYFhgD2E;gBAAAA+E;mnFAkHOA0D;olCAuBemvDyC;4mCAoEEnvD+C;qHAAAA+B;m8BA6DAA8C;8FAAAAqC;+CAIxBwhDyB;iFAAAA8D;6UA6BwBxhD+C;gGAAAAAASWqkDkB,wC;qzBAyC9BrkDa;mHAAAA2B;uvBA0F0C4iDoH;OAA1CpBuB;sEAAAA2B;qCAIAxhDa;mHAAAA2B;oRAsBQ4iDoH;OAFRpBsC;saAqCAxhDkD;kGAAAAyC;+1BAgFqCAmD;6ZAkIlBAkD;4EAAAAyC;s8BuEr2BnBg8CoC;AAAqBAgC;gFAEmBAmD;sEAM/BqR2D;4jE/Ek2DY5ewC;mlDAmiCCuemB;AAAeAiB;8IAOQAiB;4DAOlC7CuC;AACAqHgC;6I+Bz4FIxxD8C;8IAAAAwC;yCAEEAwC;sBAAAA0C;0IAQfwjDAA+PiBsDa,A;oXAhOEA+C;+MAKAAe;8QAUf1BaAgLNyB6C,A;ywBA/JL1Y4LAQW0YgB,gV;uoBA0EaCa;kPA2BD9mDwB;wOASzBkqD+D;8nCA+GOlqDa;4EAAAAyD;8zBAyDAAa;8EAAAA2D;gvBAsDAAa;8EAAAA6D;kfA0BMwhDK;mFAAAAkD;4uBlB9aXgHsB;gFAAAA8B;AAEAMY;AACAda;uKAWAQsB;kFAAAA8B;AAEAMY;AACAda;wKAuEAcyC;iMAaK9oD6B;4LAmBAA8C;gYAQAAiC;iTAQAAiC;4ZAsCJw9Ce;SAAAAc;0DAY6B7R0E;iBAAAAO;0XA2C9B3rCoD;guBA6BYw9C2C;8BAIIhOAAlHEsZkD,A;8YAqHVD6F;oYCpRiBld2E;WAAAAQ;kFAuCzB3rC0D;+cAwBU6yDkC;mKAOD7yDK;8cGtEYwmBAAy5CjBi9BiE,A;4KAviCGzjD+C;+kBAqEMwsBwD;w9CA6efq2BoE;oRA2BAAoE;sMAWAAuE;+xFAseOvsCe;kfNl3CA60C+B;uIAMyBDsD;uDAiiCb5qGoC;sCAAAAAAytB+BguGY,A;okCQ7tD9CjH6B;oRAoBAA6B;k4CAyEFlE0BC2fmBnjD6C,A;ADzfnB4hD+BC2kBwB5hD8B,A;uRD5fgBAoC;4yBIsNpCmjDK;gCAAAAAHoNenjD+E,A;oHG9MfmjDK;gCAAAAAH8MenjDuC,A;+/BG9KXmjDK;gCAAAAAH8KWnjDuC,A;iNGxGJuuCOHpiBawb6B,A;mRGwiBbxbOHxiBawb6B,A;4JATlBA6B;uVAgBAA6B;6YAeAA6B;gXAkHPvd4B;8BACEqhB2B;AAA6BjJAAzB7BmPmC,sB;yRAyCIlGqB;qdAUL1hB+B;shBAyIkBptE2C;ycAqBJihC6G;oBACPu+CsH;sOASOv+CyE;oBACPszDsH;8LAaO5QsE;AACFgFwC;mKAiCE1nDwE;yGAIP6/C2F;uXAoDTiKe;kOAQiBpHmF;AACLoFmC;+bAgBZgCe;qeAiBiBpHmF;AACLoFmC;ujCA8IduEyG;0OASFA2D;4JAMWpFyC;2CAAczZqF;mgBAiBJxtC0C;41DAuKIgsCmBA7nBlB6hBsB,AAAULAAjEVuG6B,gE,A;0FAgsBkCrPS;qDAAAAoB;uDACDAE;gEAAAAiD;gEAEP1kDkF;2MAKqB8nDkD;AAC3Bb8D;AACqBvCE;2DAAAAkC;mKAWrB0FAAiGzBhK2C,qC;6xBA3F4CpgD6B;yRAUf+rCgB;wBAAAAE;0BAAAAAAttBxB8hB2B,AAA+BpDoBA3B/BsJM,2E,A;oJAmvBwB/zD6E;4RAOQ0kD8C;OAAAAyD;6DAElBnYAAxuBdieoC,A;gPA6uBsB9FsC;OAAAAoC;mMAGI1kDkF;oPKoYXAyF;mxBE/yBjBwnD4B;uVAUAA4C;iDAGmBxnDc;wDAAAAuC;wQAOIAc;iCAAAAwC;uIAWxBwnD4B;oNAYKxnDS;AADLsuC4B;wEAIGtuC0D;2KAKF6pDe;0GAC2B2GoEP1OlCAAAAAAmC,A,A;oDO4OMxwDAAoYFAAAzDkBAkE,8K,AAoDtBAAAAAAAAMiBivCAA3cbvCe,+CAA4B4b6C,A,oB,A,K;8DAsE1BtoDkF;0IAmBcynDmD;AAAmCznD0D;sIAIhD6pDsB;qJAMAAsB;uSAkBDvbe;4JAIJyUiL;mLAiBIrWe;qIAGyB1sC+D;uIAKzB0sCe;gJAGyB1sC6C;2OAU7B+tBqD;iSAWKs6B4B;0FAGqCroDAAqLxCAADjvBgBjhCoH,AAAXo1FAAWKpJgD,A,A,A;uBCijB8B/qDAAqLxCAADjvBKm0D8E,A,4DCivBLn0DADjvBKm0DAAaKnJyG,A,A,iD;oOC4jBV3P+D;4cAsBEmM4B;wiBAsBWxnD0E;AAAA4hD+GPsEW5hDuC,A;s9BO5Da+pD6B;ucAgGT9ckD;ykBAyB9B4dAA1GIrD4B,iEAEF/NkC,+B;4JA4GFqRAAtGItD4B,iEAEFnMmC,gC;+kCDjoBiB5M0C;gKAyDfgZe;yLAMYv6BAA4bZkiB6B,2B;+JAvbAqYe;6EAEFnD4B;4yBAwEQp3B2B;8QAoBNu6Be;+HAIcznD2F;4DAKlBotDqG;AACI3Fe;2IAIcznD6C;8DAMdynDe;yaAiCuBznDe;wDAAAAkE;0CAEtBknDe;mUAciBoBoB;mSAWAA+G;o5BAiEAAoB;+PAiBlBpB4C;qJAEoB8CwFAhM2Bvb8E,A;oPA2M5B6ZwC;wlBA1FjBbe;snBAqCC8Fe;gbAoF8BpJuG;ipCA0HjC/Ue;swBAWFvDQ;6BAAAAkM;wJsD5nBFvjB2B;gDAAAAAAmDIs/B4B,0H;+EA/CJr/BAA2DIq/B4B,4I;2DAvDJp8BAAmEIo8B4B,wH;upBA2BFuF8H;iJAEA5kC6EAzCEq/B8B,8I;8IAkDAr/ByG;AAHF4kC8H;uMAGE5kCAAlDAq/BgC,qJ;AAoDAr/BmEApDAq/BgC,qI;4IA4DFuF8H;4IAEA5kC6EA9DEq/B8B,8I;wSAuGA5nDAApIFAAtD8EgBjhC6H,AAAXo1FAAWKpJgD,A,A,A;kBsD2CR/qDAApIFAAtD8EKm0D8E,A,gEsD9ELn0DAtD8EKm0DAAaKnJyG,A,A,0EsDpGdhrDAAAAAAAUEmtD0F,I,A,A;oBAmIIntDAA7INAAAAAAAAU4BAmF,iC,A,A;iCAmItBAAA7INAAAAAAwG,A,A;u9C3DueiDAa;wgBAsG7C8rCyF;qTAQAAyF;wYAQAAyF;ivNA6N4C9rCU;yJAEZukDAAFYvkDU,gC;4fAoB5C8rCyE;2aAYAAyE;qgBAYAAyE;m0ISnzBK9rCuC;wIAAAAkC;kCAIqB+vCsC;uCAAAAAAJrB/vCuE,A;sRAU8BonDa;4JAGHAa;q+IAyL7BAiE;s0BAuGqBmJuD;6gBAmEnBvwDa;mFAAAA2C;86B8ChamBAyC;uDAAAA2B;yBAAAAoC;siBA2IUA2E;QAAAA2E;kXAkIZ2eAgChDuB3eyB,A;yBhCgDvB2eAgChDuB3e8D,A;gOhC0FnCyxDqB;yzDAiMOVmD;w2B3CrbK/wDkC;sBAAAAsD;4TAmBpBggDqB;AACAAAjBqaJ4NgD,A;AiBpaI5N2C;gMAkHsBhgDa;4DAAAAoG;2jBC3GtBgpDmB;mCACKsEqB;8FAIMnHe;yHAMC6C0B;AAAcsEM;AAAalduB;6EAMvC4Y+B;AAAiCjZAH1Gf/vCa,A;AG0GEstDgB;2CAAavdoBH1Gf/vCwC,A;uBG2GfA+B;uEAIHgpD+B;AAAiCpJAH7Gb5/CU,A;AG6GAstDgB;6CAAa1NoBH7Gb5/C0C,A;0MGiJpBgpD6B;WAAoBsEyB;eAEjBnGyC;4JA+BH6B6B;YAAoBsEsB;iJAOVnHe;6FAEqBAuB;6VAiClByNgB;4GAmCZzM8C;6FAC+BhBc;kXAgCrB6C6B;8SASAA+B;wHAEcrZAhCgZH3vCwC,yBAAAA4C,A;uRgCnXL++CoB;AACrBvxBiC;mtBgDjViCmcmC;yQAwCpB3pCAjEw2CwB+jDmD,A;8fiEl1CoB/jDuF;OAFlDAwC;grBA6CU4tBA/EuNQ5tBoC,A;qE+ErNvBytBkB;+1B9CjCWikCwD;cAAAA8I;cAAAAwH;srBAqBmBthBqE;oVAQdpwC+C;AAAJggDuE;mFAAAEApB0ZM7+BqH,A;mRoBrYP+uBiB;sWAUP4PApBsXN4NAA2BuB+E6B,6B,A;sDoB7YkB5ToB;i2BA6FhC/+CiCA2OIA4B,A;uBAzONAoCAsNMAyC,A;eAtK6BAAnBunCL+jDiD,A;04BmB/+BZ/jDAnB++BY+jDa,A;0DmB5+BpBv9BkB;43EkD/ZVgpCA7DwiBAxvDuB,A;6I6DxiBAwvDA7DwiBAxvDiC,A;4C6DtiBeAiD;4DAAAAI;+NC+KMouB8B;kBAAAAkB;oKrDyIrBpuBwD;kEAAAAAAa2CAuB,A;esDlS3CwvDA/DmgBAxvDuC,A;0R+DjgBuBAmCAgKDA+B,A;8qBAvG3B6rBK;eAAAAyB;qCAEF4BK;eAAAA+B;2MAuBE5ByE;qfAAAA4B;qKAaEA4B;qLAOA61B4DAmB6B1hDkB,0DACf+uCArFkNIN6E,A,0G;gJqF/LZMArF+LYNuB,A;mIqFvLtBjhBuB;yYC3LOxtB0BA8OAwhDAAMMxhD0C,A,AANEAuB,A;uWA7GXkgDAzE0XgB7+BqC,A;oSyE7WbrhB6BAiEMA8C,A;6PArBX6rBuB;gBAAAAqC;AAEAAY;4EAEU4BkB;sZAkCMYa;qWAyBN0gBAoBhNUNAAJJ2B2B,A,A;2BpBoNNrBAoBhNUNAAJJ2BkF,A,A;ApBsNhB5iByB;8RAYYaiD;4JACF0gBAoB/NUNAAJJ2BgF,A,A;qFpBsOhB5iByB;4WpDjNsBxtBApBg1Ca+jDiB,A;QoB70CViQAAyCfrQAAG8B3jDApBiyCL+jDoC,A,A,wC;0YoBxzCoB/jDuF;OADlDA2BAoHTAAAHIAAA/FkBg0DAAGRrQAAG8B3jDApBiyCL+jDqB,A,A,A,A,A,A;8uBoB7wCxBb0F;+nDAqCAqFiC;4qGA6IXvoDyC;oEAAAsuBkB;qNAWkCtuBsC;8kEAkNlCkgDArBjBkB7+BgG,A;0JqB4BQrhBwkB;2vBAatBkgDArBzCc7+BgG,A;kPqBkDR6+BArBlDQ7+B8G,A;sDqBuDR6+BArBvDQ7+B8G,A;+EqB8DR6+BArB9DQ7+BwE,A;AqB+DR6+BArB/DZ0NgE,A;ypCqB2FQ1NArB3FY7+B0C,A;yYqBuGhB6+BArBvGgB7+BgH,A;iLqBgHb09BkB;ugF5BhIiB3Q6C;8rJMnEWK0D;0aA8CjCgjBqDCzJqC3M+DAoBhC17DATnUMgoEuB,A,A,A;0pBQglB8BpxD6D;WAAAA4C;u9CC7kBbwxDuC;m2ByB4uDNlKwBA8oDbvYAtCzhGWNiD,A,AsC6hGlBpCyC,sCAGF2TAzB55FF4NAA2BuB+EoC,A,A,AyBk4FrBjF4BA/BY3eAtClgGQN2B,A,AsCogGpBuRAzBh4FF4NAA2BuB+E8B,A,A,qByBu2FJ3SAzBl4FnB4NAA2BuB+E8B,A,A,8CyB02FrB3S8E,A,oEA4BAAAzBj6FF4NAA2BuB+EsC,A,A,8CyB04FrB3SAzBr6FF4NAA2BuB+EyC,A,A,A;kSyB+uCctPAAihBrBtUAtC/5DMNiB,A,iF;YsC84Ce4UgMAohBjB5UiB,uCAGAqCAvClgEb9wCyB,A,+DuCkgEa8wCkC,wG;8tCAzUb2RU;gfAqRSpWc;4CAEI0CAtCn3DEN8E,A;kEsCm4DyBAkC;m1DAy4B1BMAtC5wFCNuB,A;2nCsC80FLnCAA+FWmC6B,A;iEA7FN3BAAmFKiCAtCn6FLNuC,A,A;4RsC81FH3BAAqEQiCAtCn6FLN6B,A,A;AsC81FoCrCmG;0uBA+E9BqCa;8VA4BxBuLe;yHAKAhPkB;+GAKeie2D;4DAAyCgESAIxD5gBqD,8LAWJ4T8B,AADI7T6I,A;yVAkFACyD;SACAsTmD;6LAIA9SkE;0FACAmN+B;kEACAvN6E;otBAuaiB6W+E;oBAAAAgUAwBdtjDU,A;sDAxBcsjD2F;0hCAqqBjB6E4F;qBACAC8E;sBACAHuE;qBACAQgF;+mBAaANgG;iBACAC8E;+/CA2EC3bgD;AACEzsCY;AADFysCiB;0aA2BckcoH;qcAyBC5ZAtCtxIENsE,A;gKsCsyIkBAkC;05BA8DhC3BmB;8CACATmB;+BACISqB;2CAEDmb6G;AACS3b8C;AACF6bwE;wDAEACkF;yFAQPpoDiB;sVAeHssC+C;uCACEOyB;4FAKC7sCiB;2OAWDysC+C;AAKCzsCS;gVAaHosCmG;kNAQCpsCiB;yQAWAssCsF;AAAqBD2B;+IAWrBrsCiB;yhBAhGD8sCwC;+cAkEAV0B;oDAAAAsC;AAgG6CAkC;AAAnBUyF;8DAoB3B9sCmC;sYAaiBioDiF;ocAaAgB2D;qEAElBgE2GAWM7T6E,A;wgBAmBL/MkB;yGAEA+MgI;AACAvMuB;uGACAJU;ktCsDtyJAjDsB;sCAIP/bI;QAAAA0B;sLAMoB8gBO3EnIUwb6B,A;uL2EyIVxbO3EzIUwbmC,A;yjB2EwJL/pDAxE+8BJAK,A;8CwE/8BIAAxE+8BJAAHlmCnBAAApBsBorCAAAAprCyG,A,A,A,A;4D2EwKtBisB8D;AAC2B+xBApEoQPh+C4B,oBAAAAmC,A;mtGiBjdd+vDqG;0FAINA8E;k+BAGsBAyC;AAAuBA8C;mCAC3B7gE0CWnBV2hE+B,A;AXkBiB1hEAkELO4yD4B,A;AlEKQnS8M;AAGxCmgB2C;AACIjOS;qCACAAS;+CACAAS;yGACEiOoG;4FAINAuD;2oCqDagCjfK;aAAAAA/F8P3B9wC8F,A;2E+F3PP+vD2B;AAAKjO2E;4iBpD+HYxT4B;gOAKAA4B;sNAOAA4B;oPAMbyTuB;sQAIiBAiE;iiBqD/LZ/hDkCAMgCyhDkF,A;+BAL3CxPwB;uBAAAAgH;8zCAuC4B6LwBAuKYEyBvE0QhBh+CqG,A,A;AuEjbIs/CK;AACIhWmB;AADJgWwH;AACrBAK;iBAAAAW;yFAMqB1BwBAyJYIyBvEiRhBh+CqG,A,A;AuE1aIs/CK;AANIhWmB;AAMJgWwH;AACrBAK;iBAAAAW;kUAQiCP+B;AAAmBAmF;4hEAgD3B3xBmChGoCNzOA0G2FuB3e2G,A,A;AV/HzCowCsD;AAAAhoB0D;4PACY2nC4I;oGAUE/vDAAyBqBysD+C,AAICC+C,AACAF8D,A;4wCAlB1C7cmBnEwPO3vCS,A;AmExPgC4/CoB;AAAvCjQAnEwPO3vCiE,A;oCmExPPjhCgC;AACkBskC4D;ohCAqBH0sD2I;wEACctTqD;iCAAdz8C+C;AAAcy8CAvEsULz8C2E,A;AuEtUTAAHnJXAAAqP0DAAAzI/BykDAAAAzkDAxEmjCVAAHlmCnBAAApBsBorCAAAAprCoG,A,A,A,A,A,A,A,A;yC8E2GHg+CAvEkUCh+CoC,A;6EuE9TP+vDgE;6MAKAAgE;+RAMFzOyD;AACAFiD;i5BAYE2OiF;kOAIF5OyD;AACACkD;AACACsH;2EAGK0O2C;6WASMAuB;WAAAAa;kfAcxB/fAAlBkB8RqB,4C;oHAoBJxToC;oFACCAoC;oFACAAoC;+ZAEfmfgD;8PACAAwC;wXAlEU3LW;aAAgB4NAjFqwCxBp5Ce,kC;sJiFrvCmBtWyB;oTlDzKDsuC4B;iRAKAA4B;slBC6ECDkD;AAAsBckC;6CAI/BpwE0B;oCAAAAgI;glBAuKGghFA/C0hBa//C+D,A;gb+CpgBX8/CI;uCAAjBnQ4BzCoJ0B3vC+E,A;2GyCpJ1BjhC+B;AACMowEyE;AAGax0B4G;+RASN0zByC;AACuBc8G;AAKvBJA9C6FSNmB,A;wO8C1FH0NoC;AAGf6DAjC2NJ4NAA2BuB+E4B,A,A;oIiCnNRh4CiF;4DAEOmlCA/C9Ff9/CsC,A;A+C8FqB2+CAlCsJ1B8SqB,A;AkCtJoB3RA/C9Ff9/C8C,I;qC+C8FqB2+CiC;iRAqCbhkCgE;2WAwBLyNoD;cAAAA6C;6JAKwBgoB6C;yEACfhoBgD;UAAAAuC;k8BA2EC8mBAA9RWbuD,A;kEAgSTtvEuF;+CAGlBmwEAAnS2BbgD,A;AAmSPAmC;sCAMpBaAAzS2BbkC,A;AAySPcmC;qCAMpBDAA/S2BbkC,A;AA+SPAmC;wFAIL1zB4D;gCACAA4D;oEAEEo0BA/CuMCNe,A;8d+CxLEMA/CwLFNqC,A;kE+CvLDMA/CuLCNmB,A;wnB+C5KDMA/C4KCNe,A;8lB+CnKDAe;81BA4CIJkF;AACDAiE;ypCA8BnBaAAra0BboB,oC;i4JAskBE9vEiE;ioFA8P7B2wEAAp0B2BbsD,A;mEAu0BOtvE4B;0DAAAAwB;saAuCf65ByD;4VA9tB0Bm2CA9CkD3BNa,A;+0BgGjWbAe;4EACQ/wCmC;wgBjDyBTqxCAhDkoBcNuB,A;uRgD/nBTMAhD+nBSNkF,A;8MgD3nBPMAhD2nBONe,A;ufgD/mBLMAhD+mBKNqB,A;uQgDnmBjBJuB;6HAKQIsB;AAAYJuB;wNAQpBAa;0BAAuBImD;4IAOfqMK;8hCkDzGN/LAjG6XeNe,A;qRiGzXbMAjGyXaNe,A;8eiG5WThvB6D;sQAQIgvBuB;klBCzBRAe;yWAYAAe;y6BA4BFMAlGqVeNe,A;quBmGvXbAe;kRAMAAe;24CA8CyCmiB6C;2HAOvB9VyD;OAAhBr7B6D;4OAWsBqgCApGiK1B9/CgC,A;uDoGjK0B8/C+B;qXAkBdrR8D;6HAOSqMuD;kCAAEAoD;o6DjDrFNpLuE;yRAajB1vCmC;0pBE8CP2vCAqBtE0B3vC2F,A;oGrBsE1BjhC0B;mCAAAAiF;qlCAiCe0vEuB;uzCA0BWuNuI;4QAExBgEwC;uCASFAAvCgXA4NAA2BuB+EiB,A,A;4IuC7NFvqC2S;uDAEIA8E;+dAIDunCAgDnSflkCAArCc49ByC,2CAqDqBjZmB,A,8BAhBnC3kBAAgBWzrBAtFouCkB+jDgC,A,A,AsFtuCxCt4B8B,AAd0BmCApGmSC5tBwC,A,A;8FoDSSooBgD;AAAlBpoBwG;iEAGC+sCgD;mKAAAA8D;iEAEDgCArDqWMN+B,A;4BqDpWNzuCqD;iSAqBJujD4C;kDACc9T0D;iCACVzvCqF;AAEAujDkE;+MAKY9T4D;mEACb8T+C;oDACa9T4D;mEACX8TiD;oDACW9T4D;iCACVzvCkG;AAECujDsE;2LAKTvjDyG;6GAKE+uCArDqTUNuB,A;4BqDpTVzuC6C;qHA4EVAgH;wiBAiByCyuCuB;k/CAwClB6hB2KiDtc3BtwD4C,A;qVjD+cyBg8CuG;AAAfgES;iCAAAAS;4BAAAAS;uBAAAAS;wBAAAAS;6nBA0DahE8C;oNAkBAAiE;uiBAoBAh8C0E;ymBAyBVA4G;ipBAeJ++CkB;2pBgDtmBsB32BuD;4CAAAA8C;UAAAA8B;+IAIOAkD;cAAAA2D;21B7CGd4zBwF;+CAAsBmDwF;2sD+CZtBnDgE;+QnDiKC3RApDiChBrqC0D,I;gCoDjCgBqqCApDiChBrqC6C,A;6GoDpBA8wCApDmEA9wCyD,A;6BoD3EO8wCApD2EP9wCkD,I;kCoD3EO8wCApD2EP9wCyC,A;yCoDnEA8wCApDmEA9wC4C,A;qaoD/NEjhCiE;qNAgFmBgwEAnD4ONNa,A;mVmDvKIqCApD0EnB9wCkD,I;mCoD1EmB8wCApD0EnB9wCyC,A;oYoDlEmB8wCApDkEnB9wCqD,I;8CoDlEmB8wCApDkEnB9wC4C,A;gb2D5IK65CiC;kyBAoCC75CY;yJAIiBAoBCpNhBy/CiD,A;kBDwNGr3BAhDceujBgE,A;egDdfvjBAhDceujBa,A;iDgDdPmP2D;AAChBA+E;AAEK1yBAhDWkBujBiD,A;egDXlBvjBAhDWkBujB4B,A;qIgDTZvjBAhDSYujBmB,A;wDgDPRvjBAhDOQujBiD,A;0BgDPRvjBAhDOQujBwC,A;0FgDFrB3rCgC;6qBAcEAqB;OAAAA2C;+KA6BHooBAhDzCsBujBqF,A;iBgDyCtBvjBAhDzCsBujBa,A;4BgD8CpBvjBAhD9CoBujBqB,A;4BgD+CpBvjBAhD/CoBujBiB,A;qBgD+CZmPqE;AACHA4E;qBACAA8D;6BAKc1yBAhDtDCujB8C,A;mBgDsDDvjBAhDtDCujBe,A;kFgD0DrB3rCoBChSGy/C8C,A;2VD4POr3BAhDtBWujBoE,A;iBgDsBXvjBAhDtBWujBe,A;6GgD2Bf3rCY;6JAIoBAoBCrQvBy/CkD,A;4BDuQsBr3BAhDjCJujBgE,A;egDiCIvjBAhDjCJujBa,A;0DgDkCDvjBAhDlCCujBiD,A;egDkCDvjBAhDlCCujBa,A;sDgDmCJvjBAhDnCIujBiD,A;QgDqCjB3rCgB;AAFaooBAhDnCIujBW,A;4XgDiFF3rCoBCvThBy/CiD,A;kBDwTGr3BAhDlFeujBgE,A;egDkFfvjBAhDlFeujBa,A;iBgDkFPmP0D;AACO1yBAhDnFAujBiD,A;egDmFAvjBAhDnFAujBa,A;0DgDoFLvjBAhDpFKujBiD,A;egDoFLvjBAhDpFKujBa,A;6DgDwFrB3rCoC;AAHIyuC0D;wTAULrmBAhD/FsBujBoE,A;iBgD+FtBvjBAhD/FsBujBgC,A;kIgDoGAvjBAhDpGAujBmB,A;sFgDsGbvjBAhDtGaujB4C,A;qBgDsGbvjBAhDtGaujBa,A;gCgDyGOvjBAhDzGPujB8C,A;mBgDyGOvjBAhDzGPujBiB,A;uWgDmHfvjBAhDnHeujBmD,A;iBgDmHfvjBAhDnHeujBsC,A;uCgDmHmBvjBAhDnHnBujBqB,A;sEgDqHtBvjBAhDrHsBujBmD,A;iBgDqHtBvjBAhDrHsBujBoD,A;yCgDqHgCvjBAhDrHhCujBqB,A;+EgDsHnB3rCsC;qcAWI+uCA1D8CKN0B,A;A0D/CTzuCiB;OAAAA2C;kJAOAAE;6HAGFAoBChXGy/CiD,A;oZDwYAr3BAhDlKkBujBgE,A;egDkKlBvjBAhDlKkBujB0C,A;yDgDoKZvjBAhDpKYujBmB,A;+FgDwKU/yCgC;AAAzBsmDiB;AAAWvzBe;AAAc/yBAY2BfA4J,A;AZxBZwvBAhD3KiBujBiD,A;egD2KjBvjBAhD3KiBujBmC,A;mCgD2KmBvjBAhD3KnBujBmB,A;gEgD4KfvjBAhD5KeujBiD,A;egD4KfvjBAhD5KeujBmC,A;qCgD4KqBvjBAhD5KrBujBmB,A;kEgD6KIvjBAhD7KJujBiD,A;egD6KrB3rCiC;AAAyBooBAhD7KJujBI,A;ogB6FpNf3rCgB;s6B/C6DFooBkD;QAAAA2E;mHAKcpoBqC;oEACpBAgB;gFAOAAgC;oCAHGAgB;sNAWRwkDYAxEqBzlFyB,4D;wDAyEdilFoC;SAAAAqB;0GAAAAAAkFThkDiD,A;2SAvEEwkDYApFqBzlFyB,4D;iEAqFdilFoC;SAAAAqB;oHAAAAAAsEThkDyD,A;mWA7DEwkDYA9FqBzlFyB,4D;wEAgGdilFoC;SAAAAqB;sHAAAAAA2DThkDqE,A;6UAjDA8rCuD;0BADE0YYAzGqBzlFyB,8D;AA0GvB+sEoF;oJAMAA4F;kTAYEA4B;kCAAAAoF;AAEAA4F;oMASA0YYAvIqBzlFyB,4D;iGA2IVilFwEAgBbhkDqD,A;gEAdIooBiG;AAAmD47B4E;4BAAAAAAcvDhkDkE,A;qGAVmBAoF;8YA2BnBooBqH;sFAWKpoBK;s6EAKc08C2B;kBAAAA8C;yPAgCd18CW;4CAAAA6C;yII4EA8wCA7DZA9wCyD,A;6B6DSH8wCA7DTG9wCkD,I;kC6DSH8wCA7DTG9wCyC,A;yC6DYA8wCA7DZA9wC4C,A;8U6DvKmB+uCA5DoQJNa,A;qc4DlNYMA5DkNZNyC,A;wnC8DxYHAkD;mBAInBshB2B;AAAKjO+D;AAEsBhHkE;AACtBAsD;yDACAA2C;2DAIuBhKoE;6CAAAAyC;k/3DjE4sCmB9wC0E;+1BA4T/C+xDsK;CAAAAG;oWAYAC0K;CAAAAG;kWAYAC0G;CAAAAG;wXAYiBC8G;CAAAAG;q5BoChgCgCxC8C;g9BIM/BakB;iIyD/kBKvwDoBA4B4B+sDyB,AACFpIwB,A;4VxBqB7B5mDAxB5CYga4C,A;8DGAP/XiBgDMFo8C6B,AAEK1KiC,AAEV8J6B,A;kEhDLSx7CmBkDMJo8CmC,AAEK1KqC,AAEV8J6E,AAEQlB8C,A;0DlDJHt6CeiDPAo8C6B,AAEK1K+D,AAEV8J2D,AAEQlB6B,A;8Y/CPbt6Cc;moEKkBWAc;" } } diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml index d10b57be857..fe14b7e0da0 100644 --- a/.github/dependabot.yaml +++ b/.github/dependabot.yaml @@ -1097,6 +1097,9 @@ updates: built_value: patterns: - "built_value" + http: + patterns: + - "http" json_annotation: patterns: - "json_annotation" @@ -1924,6 +1927,34 @@ updates: test: patterns: - "test" + - package-ecosystem: "pub" + directory: "packages/worker_bee/worker_bee/example" + schedule: + interval: "daily" + ignore: + # Ignore patch version bumps + - dependency-name: "*" + update-types: + - "version-update:semver-patch" + # Ignore all repo packages + - dependency-name: "worker_bee" + - dependency-name: "aws_common" + - dependency-name: "amplify_lints" + - dependency-name: "worker_bee_builder" + # Group dependencies which have a constraint set in the global "pubspec.yaml" + groups: + built_value: + patterns: + - "built_value" + build_runner: + patterns: + - "build_runner" + build_web_compilers: + patterns: + - "build_web_compilers" + built_value_generator: + patterns: + - "built_value_generator" - package-ecosystem: "pub" directory: "packages/worker_bee/worker_bee_builder" schedule: @@ -1996,6 +2027,53 @@ updates: test: patterns: - "test" + - package-ecosystem: "pub" + directory: "packages/amplify_foundation/amplify_foundation_dart" + schedule: + interval: "daily" + ignore: + # Ignore patch version bumps + - dependency-name: "*" + update-types: + - "version-update:semver-patch" + # Ignore all repo packages + - dependency-name: "amplify_lints" + # Group dependencies which have a constraint set in the global "pubspec.yaml" + groups: + json_annotation: + patterns: + - "json_annotation" + build_runner: + patterns: + - "build_runner" + build_web_compilers: + patterns: + - "build_web_compilers" + json_serializable: + patterns: + - "json_serializable" + test: + patterns: + - "test" + - package-ecosystem: "pub" + directory: "packages/amplify_foundation/amplify_foundation_dart_bridge" + schedule: + interval: "daily" + ignore: + # Ignore patch version bumps + - dependency-name: "*" + update-types: + - "version-update:semver-patch" + # Ignore all repo packages + - dependency-name: "amplify_foundation_dart" + - dependency-name: "amplify_lints" + - dependency-name: "aws_common" + - dependency-name: "aws_signature_v4" + # Group dependencies which have a constraint set in the global "pubspec.yaml" + groups: + test: + patterns: + - "test" - package-ecosystem: "pub" directory: "packages/auth/amplify_auth_cognito_test" schedule: @@ -2133,6 +2211,98 @@ updates: build_web_compilers: patterns: - "build_web_compilers" + - package-ecosystem: "pub" + directory: "packages/kinesis/amplify_kinesis" + schedule: + interval: "daily" + ignore: + # Ignore patch version bumps + - dependency-name: "*" + update-types: + - "version-update:semver-patch" + # Ignore all repo packages + - dependency-name: "amplify_foundation_dart" + - dependency-name: "amplify_lints" + - dependency-name: "amplify_kinesis_dart" + - dependency-name: "amplify_core" + - dependency-name: "aws_common" + - dependency-name: "aws_signature_v4" + - dependency-name: "amplify_db_common_dart" + - dependency-name: "amplify_foundation_dart_bridge" + - dependency-name: "smithy" + - dependency-name: "smithy_aws" + - package-ecosystem: "pub" + directory: "packages/kinesis/amplify_kinesis/example" + schedule: + interval: "daily" + ignore: + # Ignore patch version bumps + - dependency-name: "*" + update-types: + - "version-update:semver-patch" + # Ignore all repo packages + - dependency-name: "amplify_auth_cognito" + - dependency-name: "amplify_analytics_pinpoint" + - dependency-name: "amplify_analytics_pinpoint_dart" + - dependency-name: "amplify_core" + - dependency-name: "aws_common" + - dependency-name: "amplify_lints" + - dependency-name: "aws_signature_v4" + - dependency-name: "amplify_db_common_dart" + - dependency-name: "amplify_secure_storage_dart" + - dependency-name: "worker_bee" + - dependency-name: "worker_bee_builder" + - dependency-name: "smithy" + - dependency-name: "smithy_aws" + - dependency-name: "amplify_db_common" + - dependency-name: "amplify_secure_storage" + - dependency-name: "amplify_auth_cognito_dart" + - dependency-name: "smithy_codegen" + - dependency-name: "amplify_flutter" + - dependency-name: "amplify_authenticator" + - dependency-name: "amplify_foundation_dart" + - dependency-name: "amplify_foundation_dart_bridge" + - dependency-name: "amplify_kinesis" + - dependency-name: "amplify_kinesis_dart" + - package-ecosystem: "pub" + directory: "packages/kinesis/amplify_kinesis_dart" + schedule: + interval: "daily" + ignore: + # Ignore patch version bumps + - dependency-name: "*" + update-types: + - "version-update:semver-patch" + # Ignore all repo packages + - dependency-name: "amplify_core" + - dependency-name: "aws_common" + - dependency-name: "amplify_lints" + - dependency-name: "aws_signature_v4" + - dependency-name: "amplify_db_common_dart" + - dependency-name: "amplify_foundation_dart" + - dependency-name: "amplify_foundation_dart_bridge" + - dependency-name: "smithy" + - dependency-name: "smithy_aws" + # Group dependencies which have a constraint set in the global "pubspec.yaml" + groups: + built_value: + patterns: + - "built_value" + drift: + patterns: + - "drift" + build_runner: + patterns: + - "build_runner" + built_value_generator: + patterns: + - "built_value_generator" + drift_dev: + patterns: + - "drift_dev" + test: + patterns: + - "test" - package-ecosystem: "pub" directory: "packages/secure_storage/amplify_secure_storage_test" schedule: @@ -2905,8 +3075,3 @@ updates: - dependency-name: "*" update-types: - "version-update:semver-patch" - - - package-ecosystem: "pip" - directory: "packages/worker_bee/worker_bee/example/tool/example_web_tester" - schedule: - interval: "weekly" diff --git a/.github/workflows/amplify_foundation_dart_bridge.yaml b/.github/workflows/amplify_foundation_dart_bridge.yaml index 9c45cebd01f..4f89f523ec8 100644 --- a/.github/workflows/amplify_foundation_dart_bridge.yaml +++ b/.github/workflows/amplify_foundation_dart_bridge.yaml @@ -19,6 +19,8 @@ on: - 'packages/amplify_lints/pubspec.yaml' - 'packages/aws_common/lib/**/*.dart' - 'packages/aws_common/pubspec.yaml' + - 'packages/aws_signature_v4/lib/**/*.dart' + - 'packages/aws_signature_v4/pubspec.yaml' pull_request: paths: - '.github/workflows/amplify_foundation_dart_bridge.yaml' @@ -34,6 +36,8 @@ on: - 'packages/amplify_lints/pubspec.yaml' - 'packages/aws_common/lib/**/*.dart' - 'packages/aws_common/pubspec.yaml' + - 'packages/aws_signature_v4/lib/**/*.dart' + - 'packages/aws_signature_v4/pubspec.yaml' schedule: - cron: "0 13 * * 1" # Every Monday at 06:00 PST workflow_dispatch: diff --git a/.github/workflows/amplify_kinesis.yaml b/.github/workflows/amplify_kinesis.yaml new file mode 100644 index 00000000000..3c71abc57cb --- /dev/null +++ b/.github/workflows/amplify_kinesis.yaml @@ -0,0 +1,88 @@ +# Generated with aft. To update, run: `aft generate workflows` +name: amplify_kinesis +on: + push: + branches: + - main + - stable + paths: + - '.github/workflows/amplify_kinesis.yaml' + - '.github/workflows/flutter_vm.yaml' + - 'packages/amplify_core/lib/**/*.dart' + - 'packages/amplify_core/pubspec.yaml' + - 'packages/amplify_foundation/amplify_foundation_dart/lib/**/*.dart' + - 'packages/amplify_foundation/amplify_foundation_dart/pubspec.yaml' + - 'packages/amplify_foundation/amplify_foundation_dart_bridge/lib/**/*.dart' + - 'packages/amplify_foundation/amplify_foundation_dart_bridge/pubspec.yaml' + - 'packages/amplify_lints/lib/**/*.yaml' + - 'packages/amplify_lints/pubspec.yaml' + - 'packages/aws_common/lib/**/*.dart' + - 'packages/aws_common/pubspec.yaml' + - 'packages/aws_signature_v4/lib/**/*.dart' + - 'packages/aws_signature_v4/pubspec.yaml' + - 'packages/common/amplify_db_common_dart/lib/**/*.dart' + - 'packages/common/amplify_db_common_dart/pubspec.yaml' + - 'packages/kinesis/amplify_kinesis/**/*.dart' + - 'packages/kinesis/amplify_kinesis/**/*.yaml' + - 'packages/kinesis/amplify_kinesis/lib/**/*' + - 'packages/kinesis/amplify_kinesis/test/**/*' + - 'packages/kinesis/amplify_kinesis_dart/lib/**/*.dart' + - 'packages/kinesis/amplify_kinesis_dart/pubspec.yaml' + - 'packages/smithy/smithy/lib/**/*.dart' + - 'packages/smithy/smithy/pubspec.yaml' + - 'packages/smithy/smithy_aws/lib/**/*.dart' + - 'packages/smithy/smithy_aws/pubspec.yaml' + pull_request: + paths: + - '.github/workflows/amplify_kinesis.yaml' + - '.github/workflows/flutter_vm.yaml' + - 'packages/amplify_core/lib/**/*.dart' + - 'packages/amplify_core/pubspec.yaml' + - 'packages/amplify_foundation/amplify_foundation_dart/lib/**/*.dart' + - 'packages/amplify_foundation/amplify_foundation_dart/pubspec.yaml' + - 'packages/amplify_foundation/amplify_foundation_dart_bridge/lib/**/*.dart' + - 'packages/amplify_foundation/amplify_foundation_dart_bridge/pubspec.yaml' + - 'packages/amplify_lints/lib/**/*.yaml' + - 'packages/amplify_lints/pubspec.yaml' + - 'packages/aws_common/lib/**/*.dart' + - 'packages/aws_common/pubspec.yaml' + - 'packages/aws_signature_v4/lib/**/*.dart' + - 'packages/aws_signature_v4/pubspec.yaml' + - 'packages/common/amplify_db_common_dart/lib/**/*.dart' + - 'packages/common/amplify_db_common_dart/pubspec.yaml' + - 'packages/kinesis/amplify_kinesis/**/*.dart' + - 'packages/kinesis/amplify_kinesis/**/*.yaml' + - 'packages/kinesis/amplify_kinesis/lib/**/*' + - 'packages/kinesis/amplify_kinesis/test/**/*' + - 'packages/kinesis/amplify_kinesis_dart/lib/**/*.dart' + - 'packages/kinesis/amplify_kinesis_dart/pubspec.yaml' + - 'packages/smithy/smithy/lib/**/*.dart' + - 'packages/smithy/smithy/pubspec.yaml' + - 'packages/smithy/smithy_aws/lib/**/*.dart' + - 'packages/smithy/smithy_aws/pubspec.yaml' + schedule: + - cron: "0 13 * * 1" # Every Monday at 06:00 PST + workflow_dispatch: +defaults: + run: + shell: bash + +# These permissions are needed to interact with GitHub's OIDC Token endpoint. +permissions: + id-token: write + contents: read + +# Cancels in-progress job when there is another push to same ref. +# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-only-cancel-in-progress-jobs-or-runs-for-the-current-workflow +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + test: + uses: ./.github/workflows/flutter_vm.yaml + secrets: inherit + with: + package-name: amplify_kinesis + working-directory: packages/kinesis/amplify_kinesis + has-goldens: false diff --git a/.github/workflows/amplify_kinesis_dart.yaml b/.github/workflows/amplify_kinesis_dart.yaml new file mode 100644 index 00000000000..baaa6e452e2 --- /dev/null +++ b/.github/workflows/amplify_kinesis_dart.yaml @@ -0,0 +1,92 @@ +# Generated with aft. To update, run: `aft generate workflows` +name: amplify_kinesis_dart +on: + push: + branches: + - main + - stable + paths: + - '.github/workflows/amplify_kinesis_dart.yaml' + - '.github/workflows/dart_native.yaml' + - '.github/workflows/dart_vm.yaml' + - 'packages/amplify_core/lib/**/*.dart' + - 'packages/amplify_core/pubspec.yaml' + - 'packages/amplify_foundation/amplify_foundation_dart/lib/**/*.dart' + - 'packages/amplify_foundation/amplify_foundation_dart/pubspec.yaml' + - 'packages/amplify_foundation/amplify_foundation_dart_bridge/lib/**/*.dart' + - 'packages/amplify_foundation/amplify_foundation_dart_bridge/pubspec.yaml' + - 'packages/amplify_lints/lib/**/*.yaml' + - 'packages/amplify_lints/pubspec.yaml' + - 'packages/aws_common/lib/**/*.dart' + - 'packages/aws_common/pubspec.yaml' + - 'packages/aws_signature_v4/lib/**/*.dart' + - 'packages/aws_signature_v4/pubspec.yaml' + - 'packages/common/amplify_db_common_dart/lib/**/*.dart' + - 'packages/common/amplify_db_common_dart/pubspec.yaml' + - 'packages/kinesis/amplify_kinesis_dart/**/*.dart' + - 'packages/kinesis/amplify_kinesis_dart/**/*.yaml' + - 'packages/kinesis/amplify_kinesis_dart/lib/**/*' + - 'packages/kinesis/amplify_kinesis_dart/test/**/*' + - 'packages/smithy/smithy/lib/**/*.dart' + - 'packages/smithy/smithy/pubspec.yaml' + - 'packages/smithy/smithy_aws/lib/**/*.dart' + - 'packages/smithy/smithy_aws/pubspec.yaml' + pull_request: + paths: + - '.github/workflows/amplify_kinesis_dart.yaml' + - '.github/workflows/dart_native.yaml' + - '.github/workflows/dart_vm.yaml' + - 'packages/amplify_core/lib/**/*.dart' + - 'packages/amplify_core/pubspec.yaml' + - 'packages/amplify_foundation/amplify_foundation_dart/lib/**/*.dart' + - 'packages/amplify_foundation/amplify_foundation_dart/pubspec.yaml' + - 'packages/amplify_foundation/amplify_foundation_dart_bridge/lib/**/*.dart' + - 'packages/amplify_foundation/amplify_foundation_dart_bridge/pubspec.yaml' + - 'packages/amplify_lints/lib/**/*.yaml' + - 'packages/amplify_lints/pubspec.yaml' + - 'packages/aws_common/lib/**/*.dart' + - 'packages/aws_common/pubspec.yaml' + - 'packages/aws_signature_v4/lib/**/*.dart' + - 'packages/aws_signature_v4/pubspec.yaml' + - 'packages/common/amplify_db_common_dart/lib/**/*.dart' + - 'packages/common/amplify_db_common_dart/pubspec.yaml' + - 'packages/kinesis/amplify_kinesis_dart/**/*.dart' + - 'packages/kinesis/amplify_kinesis_dart/**/*.yaml' + - 'packages/kinesis/amplify_kinesis_dart/lib/**/*' + - 'packages/kinesis/amplify_kinesis_dart/test/**/*' + - 'packages/smithy/smithy/lib/**/*.dart' + - 'packages/smithy/smithy/pubspec.yaml' + - 'packages/smithy/smithy_aws/lib/**/*.dart' + - 'packages/smithy/smithy_aws/pubspec.yaml' + schedule: + - cron: "0 13 * * 1" # Every Monday at 06:00 PST + workflow_dispatch: +defaults: + run: + shell: bash + +# These permissions are needed to interact with GitHub's OIDC Token endpoint. +permissions: + id-token: write + contents: read + +# Cancels in-progress job when there is another push to same ref. +# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-only-cancel-in-progress-jobs-or-runs-for-the-current-workflow +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + test: + uses: ./.github/workflows/dart_vm.yaml + secrets: inherit + with: + package-name: amplify_kinesis_dart + working-directory: packages/kinesis/amplify_kinesis_dart + native_test: + needs: test + uses: ./.github/workflows/dart_native.yaml + secrets: inherit + with: + package-name: amplify_kinesis_dart + working-directory: packages/kinesis/amplify_kinesis_dart diff --git a/.github/workflows/amplify_kinesis_example.yaml b/.github/workflows/amplify_kinesis_example.yaml new file mode 100644 index 00000000000..160ac0b1731 --- /dev/null +++ b/.github/workflows/amplify_kinesis_example.yaml @@ -0,0 +1,212 @@ +# Generated with aft. To update, run: `aft generate workflows` +name: amplify_kinesis_example +on: + push: + branches: + - main + - stable + paths: + - '.github/workflows/amplify_kinesis_example.yaml' + - '.github/workflows/e2e_android.yaml' + - '.github/workflows/e2e_ios.yaml' + - '.github/workflows/e2e_linux.yaml' + - '.github/workflows/e2e_web.yaml' + - '.github/workflows/e2e_windows.yaml' + - '.github/workflows/flutter_vm.yaml' + - 'packages/amplify/amplify_flutter/lib/**/*.dart' + - 'packages/amplify/amplify_flutter/pubspec.yaml' + - 'packages/amplify_core/lib/**/*.dart' + - 'packages/amplify_core/pubspec.yaml' + - 'packages/amplify_foundation/amplify_foundation_dart/lib/**/*.dart' + - 'packages/amplify_foundation/amplify_foundation_dart/pubspec.yaml' + - 'packages/amplify_foundation/amplify_foundation_dart_bridge/lib/**/*.dart' + - 'packages/amplify_foundation/amplify_foundation_dart_bridge/pubspec.yaml' + - 'packages/amplify_lints/lib/**/*.yaml' + - 'packages/amplify_lints/pubspec.yaml' + - 'packages/analytics/amplify_analytics_pinpoint/android/**/*' + - 'packages/analytics/amplify_analytics_pinpoint/lib/**/*.dart' + - 'packages/analytics/amplify_analytics_pinpoint/pubspec.yaml' + - 'packages/analytics/amplify_analytics_pinpoint_dart/lib/**/*.dart' + - 'packages/analytics/amplify_analytics_pinpoint_dart/pubspec.yaml' + - 'packages/auth/amplify_auth_cognito/android/**/*' + - 'packages/auth/amplify_auth_cognito/darwin/**/*' + - 'packages/auth/amplify_auth_cognito/lib/**/*.dart' + - 'packages/auth/amplify_auth_cognito/pubspec.yaml' + - 'packages/auth/amplify_auth_cognito_dart/lib/**/*.dart' + - 'packages/auth/amplify_auth_cognito_dart/pubspec.yaml' + - 'packages/authenticator/amplify_authenticator/lib/**/*.dart' + - 'packages/authenticator/amplify_authenticator/pubspec.yaml' + - 'packages/aws_common/lib/**/*.dart' + - 'packages/aws_common/pubspec.yaml' + - 'packages/aws_signature_v4/lib/**/*.dart' + - 'packages/aws_signature_v4/pubspec.yaml' + - 'packages/common/amplify_db_common/android/**/*' + - 'packages/common/amplify_db_common/ios/**/*' + - 'packages/common/amplify_db_common/lib/**/*.dart' + - 'packages/common/amplify_db_common/linux/**/*' + - 'packages/common/amplify_db_common/macos/**/*' + - 'packages/common/amplify_db_common/pubspec.yaml' + - 'packages/common/amplify_db_common/windows/**/*' + - 'packages/common/amplify_db_common_dart/lib/**/*.dart' + - 'packages/common/amplify_db_common_dart/pubspec.yaml' + - 'packages/kinesis/amplify_kinesis/example/**/*.dart' + - 'packages/kinesis/amplify_kinesis/example/**/*.yaml' + - 'packages/kinesis/amplify_kinesis/example/lib/**/*' + - 'packages/kinesis/amplify_kinesis/example/test/**/*' + - 'packages/kinesis/amplify_kinesis/lib/**/*.dart' + - 'packages/kinesis/amplify_kinesis/pubspec.yaml' + - 'packages/kinesis/amplify_kinesis_dart/lib/**/*.dart' + - 'packages/kinesis/amplify_kinesis_dart/pubspec.yaml' + - 'packages/secure_storage/amplify_secure_storage/android/**/*' + - 'packages/secure_storage/amplify_secure_storage/ios/**/*' + - 'packages/secure_storage/amplify_secure_storage/lib/**/*.dart' + - 'packages/secure_storage/amplify_secure_storage/macos/**/*' + - 'packages/secure_storage/amplify_secure_storage/pubspec.yaml' + - 'packages/secure_storage/amplify_secure_storage_dart/lib/**/*.dart' + - 'packages/secure_storage/amplify_secure_storage_dart/pubspec.yaml' + - 'packages/smithy/smithy/lib/**/*.dart' + - 'packages/smithy/smithy/pubspec.yaml' + - 'packages/smithy/smithy_aws/lib/**/*.dart' + - 'packages/smithy/smithy_aws/pubspec.yaml' + - 'packages/smithy/smithy_codegen/lib/**/*.dart' + - 'packages/smithy/smithy_codegen/pubspec.yaml' + - 'packages/worker_bee/worker_bee/lib/**/*.dart' + - 'packages/worker_bee/worker_bee/pubspec.yaml' + - 'packages/worker_bee/worker_bee_builder/lib/**/*.dart' + - 'packages/worker_bee/worker_bee_builder/pubspec.yaml' + pull_request: + paths: + - '.github/workflows/amplify_kinesis_example.yaml' + - '.github/workflows/e2e_android.yaml' + - '.github/workflows/e2e_ios.yaml' + - '.github/workflows/e2e_linux.yaml' + - '.github/workflows/e2e_web.yaml' + - '.github/workflows/e2e_windows.yaml' + - '.github/workflows/flutter_vm.yaml' + - 'packages/amplify/amplify_flutter/lib/**/*.dart' + - 'packages/amplify/amplify_flutter/pubspec.yaml' + - 'packages/amplify_core/lib/**/*.dart' + - 'packages/amplify_core/pubspec.yaml' + - 'packages/amplify_foundation/amplify_foundation_dart/lib/**/*.dart' + - 'packages/amplify_foundation/amplify_foundation_dart/pubspec.yaml' + - 'packages/amplify_foundation/amplify_foundation_dart_bridge/lib/**/*.dart' + - 'packages/amplify_foundation/amplify_foundation_dart_bridge/pubspec.yaml' + - 'packages/amplify_lints/lib/**/*.yaml' + - 'packages/amplify_lints/pubspec.yaml' + - 'packages/analytics/amplify_analytics_pinpoint/android/**/*' + - 'packages/analytics/amplify_analytics_pinpoint/lib/**/*.dart' + - 'packages/analytics/amplify_analytics_pinpoint/pubspec.yaml' + - 'packages/analytics/amplify_analytics_pinpoint_dart/lib/**/*.dart' + - 'packages/analytics/amplify_analytics_pinpoint_dart/pubspec.yaml' + - 'packages/auth/amplify_auth_cognito/android/**/*' + - 'packages/auth/amplify_auth_cognito/darwin/**/*' + - 'packages/auth/amplify_auth_cognito/lib/**/*.dart' + - 'packages/auth/amplify_auth_cognito/pubspec.yaml' + - 'packages/auth/amplify_auth_cognito_dart/lib/**/*.dart' + - 'packages/auth/amplify_auth_cognito_dart/pubspec.yaml' + - 'packages/authenticator/amplify_authenticator/lib/**/*.dart' + - 'packages/authenticator/amplify_authenticator/pubspec.yaml' + - 'packages/aws_common/lib/**/*.dart' + - 'packages/aws_common/pubspec.yaml' + - 'packages/aws_signature_v4/lib/**/*.dart' + - 'packages/aws_signature_v4/pubspec.yaml' + - 'packages/common/amplify_db_common/android/**/*' + - 'packages/common/amplify_db_common/ios/**/*' + - 'packages/common/amplify_db_common/lib/**/*.dart' + - 'packages/common/amplify_db_common/linux/**/*' + - 'packages/common/amplify_db_common/macos/**/*' + - 'packages/common/amplify_db_common/pubspec.yaml' + - 'packages/common/amplify_db_common/windows/**/*' + - 'packages/common/amplify_db_common_dart/lib/**/*.dart' + - 'packages/common/amplify_db_common_dart/pubspec.yaml' + - 'packages/kinesis/amplify_kinesis/example/**/*.dart' + - 'packages/kinesis/amplify_kinesis/example/**/*.yaml' + - 'packages/kinesis/amplify_kinesis/example/lib/**/*' + - 'packages/kinesis/amplify_kinesis/example/test/**/*' + - 'packages/kinesis/amplify_kinesis/lib/**/*.dart' + - 'packages/kinesis/amplify_kinesis/pubspec.yaml' + - 'packages/kinesis/amplify_kinesis_dart/lib/**/*.dart' + - 'packages/kinesis/amplify_kinesis_dart/pubspec.yaml' + - 'packages/secure_storage/amplify_secure_storage/android/**/*' + - 'packages/secure_storage/amplify_secure_storage/ios/**/*' + - 'packages/secure_storage/amplify_secure_storage/lib/**/*.dart' + - 'packages/secure_storage/amplify_secure_storage/macos/**/*' + - 'packages/secure_storage/amplify_secure_storage/pubspec.yaml' + - 'packages/secure_storage/amplify_secure_storage_dart/lib/**/*.dart' + - 'packages/secure_storage/amplify_secure_storage_dart/pubspec.yaml' + - 'packages/smithy/smithy/lib/**/*.dart' + - 'packages/smithy/smithy/pubspec.yaml' + - 'packages/smithy/smithy_aws/lib/**/*.dart' + - 'packages/smithy/smithy_aws/pubspec.yaml' + - 'packages/smithy/smithy_codegen/lib/**/*.dart' + - 'packages/smithy/smithy_codegen/pubspec.yaml' + - 'packages/worker_bee/worker_bee/lib/**/*.dart' + - 'packages/worker_bee/worker_bee/pubspec.yaml' + - 'packages/worker_bee/worker_bee_builder/lib/**/*.dart' + - 'packages/worker_bee/worker_bee_builder/pubspec.yaml' + schedule: + - cron: "0 13 * * 1" # Every Monday at 06:00 PST + workflow_dispatch: +defaults: + run: + shell: bash + +# These permissions are needed to interact with GitHub's OIDC Token endpoint. +permissions: + id-token: write + contents: read + +# Cancels in-progress job when there is another push to same ref. +# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-only-cancel-in-progress-jobs-or-runs-for-the-current-workflow +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + test: + uses: ./.github/workflows/flutter_vm.yaml + secrets: inherit + with: + package-name: amplify_kinesis_example + working-directory: packages/kinesis/amplify_kinesis/example + has-goldens: false + e2e_android_test: + needs: [test] + uses: ./.github/workflows/e2e_android.yaml + secrets: inherit + with: + package-name: amplify_kinesis_example + working-directory: packages/kinesis/amplify_kinesis/example + needs-aws-config: true + e2e_ios_test: + needs: [test] + uses: ./.github/workflows/e2e_ios.yaml + secrets: inherit + with: + package-name: amplify_kinesis_example + working-directory: packages/kinesis/amplify_kinesis/example + needs-aws-config: true + e2e_web_test: + needs: [test] + uses: ./.github/workflows/e2e_web.yaml + secrets: inherit + with: + package-name: amplify_kinesis_example + working-directory: packages/kinesis/amplify_kinesis/example + needs-aws-config: true + e2e_linux_test: + needs: [test] + uses: ./.github/workflows/e2e_linux.yaml + secrets: inherit + with: + package-name: amplify_kinesis_example + working-directory: packages/kinesis/amplify_kinesis/example + needs-aws-config: true + e2e_windows_test: + needs: [test] + uses: ./.github/workflows/e2e_windows.yaml + secrets: inherit + with: + package-name: amplify_kinesis_example + working-directory: packages/kinesis/amplify_kinesis/example + needs-aws-config: true diff --git a/actions/bin/log_cw_metric.dart b/actions/bin/log_cw_metric.dart index f35421f0974..dcd9155d1e6 100644 --- a/actions/bin/log_cw_metric.dart +++ b/actions/bin/log_cw_metric.dart @@ -54,8 +54,8 @@ Future logMetric() async { final runId = '${github.context.runId}'; // Temporarily disable. - // Cloudwatch metrics are identified uniquely by dimension key and value. - // Since failingStep value can vary, it causes multiple metrics to be created from the same job, confusing our data. + // Cloudwatch metrics are identified uniquely by dimension key and value. + // Since failingStep value can vary, it causes multiple metrics to be created from the same job, confusing our data. final failingStep = isFailed ? await getFailingStep(jobIdentifier, githubToken, repo, runId) : ''; @@ -93,6 +93,7 @@ Future logMetric() async { 'amplify_foundation_dart', 'amplify_lints', 'amplify_native_legacy_wrapper', + 'kinesis', 'pub_server', ]; diff --git a/infra-gen2/backends/kinesis/main/.amplify/artifacts/cdk.out/asset.8283a09efbff5efd7f3c00c39b418c1417e1f0b85f855707e94c5225c11a117f/index.mjs b/infra-gen2/backends/kinesis/main/.amplify/artifacts/cdk.out/asset.8283a09efbff5efd7f3c00c39b418c1417e1f0b85f855707e94c5225c11a117f/index.mjs new file mode 100644 index 00000000000..658f223bfe1 --- /dev/null +++ b/infra-gen2/backends/kinesis/main/.amplify/artifacts/cdk.out/asset.8283a09efbff5efd7f3c00c39b418c1417e1f0b85f855707e94c5225c11a117f/index.mjs @@ -0,0 +1,3 @@ +/** * Reads SSM environment context from a known Amplify environment variable, * fetches values from SSM and places those values in the corresponding environment variables */export const internalAmplifyFunctionResolveSsmParams = async (client) => { const envPathObject = JSON.parse(process.env.AMPLIFY_SSM_ENV_CONFIG ?? '{}'); const paths = Object.values(envPathObject).map((paths) => paths.path); if (paths.length === 0) { return; } let actualSsmClient; if (client) { actualSsmClient = client; } else { const ssmSdk = await import('@aws-sdk/client-ssm'); actualSsmClient = new ssmSdk.SSM(); } const chunkArray = (array, chunkSize) => { const chunks = []; for (let i = 0; i < array.length; i += chunkSize) { chunks.push(array.slice(i, i + chunkSize)); } return chunks; }; const resolveSecrets = async (paths) => { const response = (await Promise.all(chunkArray(paths, 10).map(async (chunkedPaths) => await actualSsmClient.getParameters({ Names: chunkedPaths, WithDecryption: true, })))).reduce((accumulator, res) => { accumulator.Parameters?.push(...(res.Parameters ?? [])); accumulator.InvalidParameters?.push(...(res.InvalidParameters ?? [])); return accumulator; }, { Parameters: [], InvalidParameters: [], }); if (response.Parameters && response.Parameters.length > 0) { for (const parameter of response.Parameters) { if (parameter.Name) { const envKey = Object.keys(envPathObject).find((key) => envPathObject[key].sharedPath === parameter.Name || envPathObject[key].path === parameter.Name); if (envKey) { process.env[envKey] = parameter.Value; } } } } return response; }; const response = await resolveSecrets(paths); const sharedPaths = (response?.InvalidParameters || []) .map((invalidParam) => Object.values(envPathObject).find((paths) => paths.path === invalidParam)?.sharedPath) .filter((sharedParam) => !!sharedParam); if (sharedPaths.length > 0) { await resolveSecrets(sharedPaths); }};await internalAmplifyFunctionResolveSsmParams();const SSM_PARAMETER_REFRESH_MS = 1000 * 60;setInterval(async () => { try { await internalAmplifyFunctionResolveSsmParams(); } catch (error) { try { console.debug(error); } catch { } }}, SSM_PARAMETER_REFRESH_MS);export {}; +import{createRequire as e}from"node:module";import o from"node:path";import i from"node:url";global.require=e(import.meta.url);global.__filename=i.fileURLToPath(import.meta.url);global.__dirname=o.dirname(__filename);var l=async r=>(console.log(`Got event: ${JSON.stringify(r,null,2)}`),r.triggerSource!=="PreSignUp_SignUp"?(console.warn(`Not handling request of type: ${r.triggerSource}`),r):(r.response.autoConfirmUser=!0,r.request.userAttributes.hasOwnProperty("email")&&(r.response.autoVerifyEmail=!0),r.request.userAttributes.hasOwnProperty("phone_number")&&(r.response.autoVerifyPhone=!0),r));export{l as handler}; +//# sourceMappingURL=index.mjs.map diff --git a/infra-gen2/backends/kinesis/main/.amplify/artifacts/cdk.out/asset.8283a09efbff5efd7f3c00c39b418c1417e1f0b85f855707e94c5225c11a117f/index.mjs.map b/infra-gen2/backends/kinesis/main/.amplify/artifacts/cdk.out/asset.8283a09efbff5efd7f3c00c39b418c1417e1f0b85f855707e94c5225c11a117f/index.mjs.map new file mode 100644 index 00000000000..0bee8dde681 --- /dev/null +++ b/infra-gen2/backends/kinesis/main/.amplify/artifacts/cdk.out/asset.8283a09efbff5efd7f3c00c39b418c1417e1f0b85f855707e94c5225c11a117f/index.mjs.map @@ -0,0 +1,7 @@ +{ + "version": 3, + "sources": ["../../../../../../../node_modules/@aws-amplify/backend-function/src/lambda-shims/cjs_shim.ts", "../../../../amplify/auth/pre-sign-up-handler.ts"], + "sourcesContent": ["import { createRequire } from 'node:module';\nimport path from 'node:path';\nimport url from 'node:url';\nglobal.require = createRequire(import.meta.url);\nglobal.__filename = url.fileURLToPath(import.meta.url);\nglobal.__dirname = path.dirname(__filename);\n", "import { PreSignUpTriggerHandler } from \"aws-lambda\";\n\nexport const handler: PreSignUpTriggerHandler = async (event) => {\n console.log(`Got event: ${JSON.stringify(event, null, 2)}`);\n\n if (event.triggerSource !== \"PreSignUp_SignUp\") {\n console.warn(`Not handling request of type: ${event.triggerSource}`);\n return event;\n }\n\n event.response.autoConfirmUser = true;\n\n if (event.request.userAttributes.hasOwnProperty(\"email\")) {\n event.response.autoVerifyEmail = true;\n }\n\n if (event.request.userAttributes.hasOwnProperty(\"phone_number\")) {\n event.response.autoVerifyPhone = true;\n }\n\n return event;\n};\n"], + "mappings": ";AAAA,OAAS,iBAAAA,MAAqB,cAC9B,OAAOC,MAAU,YACjB,OAAOC,MAAS,WAChB,OAAO,QAAUF,EAAc,YAAY,GAAG,EAC9C,OAAO,WAAaE,EAAI,cAAc,YAAY,GAAG,EACrD,OAAO,UAAYD,EAAK,QAAQ,UAAU,ECHnC,IAAME,EAAmC,MAAOC,IACrD,QAAQ,IAAI,cAAc,KAAK,UAAUA,EAAO,KAAM,CAAC,CAAC,EAAE,EAEtDA,EAAM,gBAAkB,oBAC1B,QAAQ,KAAK,iCAAiCA,EAAM,aAAa,EAAE,EAC5DA,IAGTA,EAAM,SAAS,gBAAkB,GAE7BA,EAAM,QAAQ,eAAe,eAAe,OAAO,IACrDA,EAAM,SAAS,gBAAkB,IAG/BA,EAAM,QAAQ,eAAe,eAAe,cAAc,IAC5DA,EAAM,SAAS,gBAAkB,IAG5BA", + "names": ["createRequire", "path", "url", "handler", "event"] +} diff --git a/infra-gen2/backends/kinesis/main/.amplify/generated/env/pre-sign-up.ts b/infra-gen2/backends/kinesis/main/.amplify/generated/env/pre-sign-up.ts new file mode 100644 index 00000000000..fdaa92daba1 --- /dev/null +++ b/infra-gen2/backends/kinesis/main/.amplify/generated/env/pre-sign-up.ts @@ -0,0 +1,85 @@ +// This file is auto-generated by Amplify. Edits will be overwritten. +export const env = process.env as unknown as LambdaProvidedEnvVars & AmplifyBackendEnvVars; + +/** Lambda runtime environment variables, see https://docs.aws.amazon.com/lambda/latest/dg/configuration-envvars.html#configuration-envvars-runtime */ +type LambdaProvidedEnvVars = { + /** The handler location configured on the function. */ + _HANDLER: string; + + /** The X-Ray tracing header. This environment variable changes with each invocation. */ + _X_AMZN_TRACE_ID: string; + + /** The default AWS Region where the Lambda function is executed. */ + AWS_DEFAULT_REGION: string; + + /** The AWS Region where the Lambda function is executed. If defined, this value overrides the AWS_DEFAULT_REGION. */ + AWS_REGION: string; + + /** The runtime identifier, prefixed by AWS_Lambda_ (for example, AWS_Lambda_java8). */ + AWS_EXECUTION_ENV: string; + + /** The name of the function. */ + AWS_LAMBDA_FUNCTION_NAME: string; + + /** The amount of memory available to the function in MB. */ + AWS_LAMBDA_FUNCTION_MEMORY_SIZE: string; + + /** The version of the function being executed. */ + AWS_LAMBDA_FUNCTION_VERSION: string; + + /** The initialization type of the function, which is on-demand, provisioned-concurrency, or snap-start. */ + AWS_LAMBDA_INITIALIZATION_TYPE: string; + + /** The name of the Amazon CloudWatch Logs group for the function. */ + AWS_LAMBDA_LOG_GROUP_NAME: string; + + /** The name of the Amazon CloudWatch Logs stream for the function. */ + AWS_LAMBDA_LOG_STREAM_NAME: string; + + /** AWS access key. */ + AWS_ACCESS_KEY: string; + + /** AWS access key ID. */ + AWS_ACCESS_KEY_ID: string; + + /** AWS secret access key. */ + AWS_SECRET_ACCESS_KEY: string; + + /** AWS Session token. */ + AWS_SESSION_TOKEN: string; + + /** The host and port of the runtime API. */ + AWS_LAMBDA_RUNTIME_API: string; + + /** The path to your Lambda function code. */ + LAMBDA_TASK_ROOT: string; + + /** The path to runtime libraries. */ + LAMBDA_RUNTIME_DIR: string; + + /** The locale of the runtime. */ + LANG: string; + + /** The execution path. */ + PATH: string; + + /** The system library path. */ + LD_LIBRARY_PATH: string; + + /** The Node.js library path. */ + NODE_PATH: string; + + /** For X-Ray tracing, Lambda sets this to LOG_ERROR to avoid throwing runtime errors from the X-Ray SDK. */ + AWS_XRAY_CONTEXT_MISSING: string; + + /** For X-Ray tracing, the IP address and port of the X-Ray daemon. */ + AWS_XRAY_DAEMON_ADDRESS: string; + + /** The environment's time zone. */ + TZ: string; + +}; + +/** Amplify backend environment variables available at runtime, this includes environment variables defined in `defineFunction` and by cross resource mechanisms */ +type AmplifyBackendEnvVars = { +}; diff --git a/infra-gen2/backends/kinesis/main/.gitignore b/infra-gen2/backends/kinesis/main/.gitignore new file mode 100644 index 00000000000..03d4668c654 --- /dev/null +++ b/infra-gen2/backends/kinesis/main/.gitignore @@ -0,0 +1,5 @@ +# amplify +node_modules +.amplify +amplify_outputs* +amplifyconfiguration* diff --git a/infra-gen2/backends/kinesis/main/amplify/auth/pre-sign-up-handler.ts b/infra-gen2/backends/kinesis/main/amplify/auth/pre-sign-up-handler.ts new file mode 100644 index 00000000000..ddf9e2d8912 --- /dev/null +++ b/infra-gen2/backends/kinesis/main/amplify/auth/pre-sign-up-handler.ts @@ -0,0 +1,4 @@ +import { PreSignUpTriggerHandler } from "aws-lambda"; +import { preSignUpTriggerHandler } from "infra-common"; + +export const handler: PreSignUpTriggerHandler = preSignUpTriggerHandler; diff --git a/infra-gen2/backends/kinesis/main/amplify/auth/resource.ts b/infra-gen2/backends/kinesis/main/amplify/auth/resource.ts new file mode 100644 index 00000000000..4f3709e0d95 --- /dev/null +++ b/infra-gen2/backends/kinesis/main/amplify/auth/resource.ts @@ -0,0 +1,15 @@ +import { defineAuth, defineFunction } from "@aws-amplify/backend"; + +export const preSignUp = defineFunction({ + name: "pre-sign-up", + entry: "./pre-sign-up-handler.ts", +}); + +export const auth = defineAuth({ + loginWith: { + email: true, + }, + triggers: { + preSignUp, + }, +}); diff --git a/infra-gen2/backends/kinesis/main/amplify/backend.ts b/infra-gen2/backends/kinesis/main/amplify/backend.ts new file mode 100644 index 00000000000..7cf7baeec5f --- /dev/null +++ b/infra-gen2/backends/kinesis/main/amplify/backend.ts @@ -0,0 +1,29 @@ +import { defineBackend } from '@aws-amplify/backend'; +import { auth } from './auth/resource'; +import * as kinesis from 'aws-cdk-lib/aws-kinesis'; +import { Duration } from 'aws-cdk-lib'; +import { PolicyStatement } from 'aws-cdk-lib/aws-iam'; + +const backend = defineBackend({ + auth, +}); + +const kinesisStack = backend.createStack('KinesisStack'); + +const stream = new kinesis.Stream(kinesisStack, 'TestStream', { + streamName: 'amplify-kinesis-test-stream', + shardCount: 1, + retentionPeriod: Duration.hours(24), +}); + +// Grant authenticated users permission to put records +backend.auth.resources.authenticatedUserIamRole.addToPrincipalPolicy( + new PolicyStatement({ + actions: [ + 'kinesis:PutRecord', + 'kinesis:PutRecords', + 'kinesis:DescribeStream', + ], + resources: [stream.streamArn], + }) +); diff --git a/infra-gen2/backends/kinesis/main/amplify/package.json b/infra-gen2/backends/kinesis/main/amplify/package.json new file mode 100644 index 00000000000..3dbc1ca591c --- /dev/null +++ b/infra-gen2/backends/kinesis/main/amplify/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/infra-gen2/backends/kinesis/main/amplify/tsconfig.json b/infra-gen2/backends/kinesis/main/amplify/tsconfig.json new file mode 100644 index 00000000000..ff3843f49e5 --- /dev/null +++ b/infra-gen2/backends/kinesis/main/amplify/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "es2022", + "module": "es2022", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "paths": { + "$amplify/*": [ + "../.amplify/generated/*" + ] + } + } +} diff --git a/infra-gen2/backends/kinesis/main/package.json b/infra-gen2/backends/kinesis/main/package.json new file mode 100644 index 00000000000..a75d792bccd --- /dev/null +++ b/infra-gen2/backends/kinesis/main/package.json @@ -0,0 +1,5 @@ +{ + "name": "kinesis-main", + "version": "1.0.0", + "main": "index.js" +} diff --git a/infra-gen2/package-lock.json b/infra-gen2/package-lock.json index a1dcc0a50eb..07143a41edb 100644 --- a/infra-gen2/package-lock.json +++ b/infra-gen2/package-lock.json @@ -10,6 +10,7 @@ "backends/analytics/*", "backends/api/*", "backends/auth/*", + "backends/kinesis/*", "backends/storage/*" ], "dependencies": { @@ -75,6 +76,10 @@ "backends/auth/username-login-mfa": { "version": "1.0.0" }, + "backends/kinesis/main": { + "name": "kinesis-main", + "version": "1.0.0" + }, "backends/storage/dots-in-name": { "version": "1.0.0" }, @@ -38933,6 +38938,10 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/kinesis-main": { + "resolved": "backends/kinesis/main", + "link": true + }, "node_modules/kleur": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", diff --git a/infra-gen2/package.json b/infra-gen2/package.json index 16951fcf1c2..38adbf69020 100644 --- a/infra-gen2/package.json +++ b/infra-gen2/package.json @@ -9,6 +9,7 @@ "backends/analytics/*", "backends/api/*", "backends/auth/*", + "backends/kinesis/*", "backends/storage/*" ], "dependencies": { diff --git a/infra-gen2/tool/deploy_gen2.dart b/infra-gen2/tool/deploy_gen2.dart index 51232d65cc8..8982aea1492 100644 --- a/infra-gen2/tool/deploy_gen2.dart +++ b/infra-gen2/tool/deploy_gen2.dart @@ -7,7 +7,7 @@ import 'dart:convert'; import 'dart:io'; -import 'package:amplify_core/amplify_core.dart'; +import 'package:amplify_core/amplify_core.dart' show UUID; import 'package:args/args.dart'; import 'package:path/path.dart' as p; @@ -20,7 +20,7 @@ import 'package:path/path.dart' as p; /// 4. Run `dart tool/deploy_gen2.dart` to deploy the backend const List infraConfig = [ AmplifyBackendGroup( - category: Category.api, + category: 'API', defaultOutput: 'packages/api/amplify_api/example/lib', backends: [ AmplifyBackend( @@ -31,7 +31,7 @@ const List infraConfig = [ ], ), AmplifyBackendGroup( - category: Category.auth, + category: 'Auth', defaultOutput: 'packages/auth/amplify_auth_cognito/example/lib', sharedOutputs: [ 'packages/auth/amplify_auth_cognito_dart/example/lib', @@ -96,7 +96,7 @@ const List infraConfig = [ ], ), AmplifyBackendGroup( - category: Category.storage, + category: 'Storage', defaultOutput: 'packages/storage/amplify_storage_s3/example/lib', backends: [ AmplifyBackend( @@ -112,7 +112,7 @@ const List infraConfig = [ ], ), AmplifyBackendGroup( - category: Category.analytics, + category: 'Analytics', defaultOutput: 'packages/analytics/amplify_analytics_pinpoint/example/lib', backends: [ AmplifyBackend( @@ -132,6 +132,17 @@ const List infraConfig = [ ), ], ), + AmplifyBackendGroup( + category: 'Kinesis', + defaultOutput: 'packages/kinesis/amplify_kinesis_dart/lib', + backends: [ + AmplifyBackend( + name: 'main', + identifier: 'main', + pathToSource: 'infra-gen2/backends/kinesis/main', + ), + ], + ), ]; const pathToBackends = 'infra-gen2/backends'; @@ -148,8 +159,7 @@ void main(List arguments) async { print('🚀 Deploying Gen 2 backends!'); for (final backendGroup in infraConfig) { - if (categoryToDeploy != null && - backendGroup.category.name != categoryToDeploy) { + if (categoryToDeploy != null && backendGroup.category != categoryToDeploy) { continue; } // TODO(equartey): Could be removed when all backends are defined. @@ -158,7 +168,7 @@ void main(List arguments) async { } var gen2Environments = {}; var gen1Environments = {}; - final categoryName = backendGroup.category.name; + final categoryName = backendGroup.category; final outputPath = p.join(repoRoot.path, backendGroup.defaultOutput); final amplifyOutputs = File(p.join(outputPath, 'amplify_outputs.dart')); final amplifyConfiguration = File( @@ -256,7 +266,7 @@ ArgResults _parseArgs(List args) { 'category', abbr: 'c', help: 'Specify the category to deploy.', - allowed: Category.values.map((e) => e.name).toList(), + allowed: infraConfig.map((e) => e.category).toList(), defaultsTo: null, ); @@ -265,14 +275,12 @@ ArgResults _parseArgs(List args) { /// Deploy Sandbox for a given backend backend Future _deployBackend( - Category category, + String category, AmplifyBackend backend, String outputPath, bool verbose, ) async { - print( - '🏖️ Deploying ${category.name} ${backend.name}, this may take a while...', - ); + print('🏖️ Deploying $category ${backend.name}, this may take a while...'); final outputFile = File(p.join(outputPath, 'amplify_outputs.dart')); if (outputFile.existsSync()) { @@ -318,7 +326,6 @@ Future _deployBackend( in process.stdout .transform(utf8.decoder) .transform(const LineSplitter())) { - if (!line.startsWith(' at ') && line.trim().isNotEmpty) { // This line does not belong to a cdk build error postingBackendBuildError = false; @@ -358,22 +365,24 @@ Future _deployBackend( if (exitCode != 0) { throw Exception( - '❌ Error deploying ${category.name} ${backend.identifier} sandbox', + '❌ Error deploying $category ${backend.identifier} sandbox', ); - } else if (postedDeploymentError && postedDeploymentErrorReason && postedDeploymentUpdateFailed) { + } else if (postedDeploymentError && + postedDeploymentErrorReason && + postedDeploymentUpdateFailed) { throw Exception( - '❌ Error deploying ${category.name} ${backend.identifier} sandbox: Update failed', + '❌ Error deploying $category ${backend.identifier} sandbox: Update failed', ); } else if (postedBackendBuildError) { throw Exception( - '❌ Error deploying ${category.name} ${backend.identifier} sandbox - CDK build failed', + '❌ Error deploying $category ${backend.identifier} sandbox - CDK build failed', ); } else if (!outputFile.existsSync()) { throw Exception( - '❌ Error deploying ${category.name} ${backend.identifier} sandbox - Output file not generated', + '❌ Error deploying $category ${backend.identifier} sandbox - Output file not generated', ); } else { - print('👍 ${category.name} ${backend.identifier} sandbox deployed'); + print('👍 $category ${backend.identifier} sandbox deployed'); return stackID; } } @@ -450,7 +459,7 @@ void _copyConfigFile(List outputPaths, List configFiles) { /// Create a unique bucket name String _createBucketName(String base) { - final uniqueShort = uuid().substring(0, 8); + final uniqueShort = UUID.getUUID().substring(0, 8); return '${base.toLowerCase()}-gen2-integ-$uniqueShort'; } @@ -549,14 +558,12 @@ void _uploadConfigFileToS3(String bucketName, List configFiles) { /// Generates gen 1 amplifyconfiguration.dart file void _generateGen1Config( - Category category, + String category, AmplifyBackend backend, String outputPath, String stack, ) { - print( - '📁 Generating gen 1 config file for ${category.name} ${backend.name}...', - ); + print('📁 Generating gen 1 config file for $category ${backend.name}...'); final outputFile = File(p.join(outputPath, 'amplifyconfiguration.dart')); if (outputFile.existsSync()) { @@ -583,16 +590,14 @@ void _generateGen1Config( if (process.exitCode != 0) { throw Exception( - '❌ Error generating gen 1 config file for ${category.name} ${backend.name}:: ${process.stdout}', + '❌ Error generating gen 1 config file for $category ${backend.name}:: ${process.stdout}', ); - } else if(!outputFile.existsSync()) { + } else if (!outputFile.existsSync()) { throw Exception( - '❌ Error generating gen 1 config file for ${category.name} ${backend.identifier} - Output file not generated', + '❌ Error generating gen 1 config file for $category ${backend.identifier} - Output file not generated', ); } else { - print( - '👍 Gen 1 config file for ${category.name} ${backend.name} generated', - ); + print('👍 Gen 1 config file for $category ${backend.name} generated'); } } @@ -605,7 +610,7 @@ class AmplifyBackendGroup { }); /// This is the category of the integration group - final Category category; + final String category; /// This is the list of backends for the group final List backends; diff --git a/packages/amplify_foundation/amplify_foundation_dart/lib/amplify_foundation_dart.dart b/packages/amplify_foundation/amplify_foundation_dart/lib/amplify_foundation_dart.dart index 1cce9230241..d38aa707a02 100644 --- a/packages/amplify_foundation/amplify_foundation_dart/lib/amplify_foundation_dart.dart +++ b/packages/amplify_foundation/amplify_foundation_dart/lib/amplify_foundation_dart.dart @@ -22,3 +22,5 @@ export 'package:amplify_foundation_dart/src/result/result.dart'; // Utils export 'package:amplify_foundation_dart/src/util/globals.dart'; export 'package:amplify_foundation_dart/src/util/print.dart'; +// Version +export 'package:amplify_foundation_dart/src/version.dart'; diff --git a/packages/amplify_foundation/amplify_foundation_dart/lib/src/version.dart b/packages/amplify_foundation/amplify_foundation_dart/lib/src/version.dart new file mode 100644 index 00000000000..cfd2fd61dfb --- /dev/null +++ b/packages/amplify_foundation/amplify_foundation_dart/lib/src/version.dart @@ -0,0 +1,5 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// The current package version. +const packageVersion = '2.10.0'; diff --git a/packages/amplify_foundation/amplify_foundation_dart/pubspec.yaml b/packages/amplify_foundation/amplify_foundation_dart/pubspec.yaml index b99a0c28d18..bdd28fbb7ee 100644 --- a/packages/amplify_foundation/amplify_foundation_dart/pubspec.yaml +++ b/packages/amplify_foundation/amplify_foundation_dart/pubspec.yaml @@ -1,6 +1,6 @@ name: amplify_foundation_dart description: Common types and utilities used across Amplify packages. -version: 1.0.0 +version: 2.10.0 homepage: https://docs.amplify.aws/flutter/ repository: https://github.com/aws-amplify/amplify-flutter/tree/main/packages/amplify_foundation/amplify_foundation_dart issue_tracker: https://github.com/aws-amplify/amplify-flutter/issues diff --git a/packages/amplify_foundation/amplify_foundation_dart_bridge/lib/amplify_foundation_dart_bridge.dart b/packages/amplify_foundation/amplify_foundation_dart_bridge/lib/amplify_foundation_dart_bridge.dart index f024d046bd6..8c22da8aa1c 100644 --- a/packages/amplify_foundation/amplify_foundation_dart_bridge/lib/amplify_foundation_dart_bridge.dart +++ b/packages/amplify_foundation/amplify_foundation_dart_bridge/lib/amplify_foundation_dart_bridge.dart @@ -1,7 +1,9 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -/// Bridges `aws_common` credential types to `amplify_foundation_dart` types. +/// Bridges `aws_common` and `amplify_foundation_dart` credential types +/// to each other and to Smithy SDK types. library; export 'package:amplify_foundation_dart_bridge/src/aws_common_credentials_provider_bridge.dart'; +export 'package:amplify_foundation_dart_bridge/src/smithy_credentials_provider_bridge.dart'; diff --git a/packages/amplify_foundation/amplify_foundation_dart_bridge/lib/src/smithy_credentials_provider_bridge.dart b/packages/amplify_foundation/amplify_foundation_dart_bridge/lib/src/smithy_credentials_provider_bridge.dart new file mode 100644 index 00000000000..74187fa60e2 --- /dev/null +++ b/packages/amplify_foundation/amplify_foundation_dart_bridge/lib/src/smithy_credentials_provider_bridge.dart @@ -0,0 +1,53 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'package:amplify_foundation_dart/amplify_foundation_dart.dart' + as foundation; +import 'package:aws_signature_v4/aws_signature_v4.dart' as sig_v4; + +/// {@template amplify_foundation_dart_bridge.smithy_credentials_provider_bridge} +/// Bridges a [foundation.AWSCredentialsProvider] (from +/// `amplify_foundation_dart`) to a [sig_v4.AWSCredentialsProvider] (from +/// `aws_signature_v4`) expected by Smithy-generated SDK clients. +/// +/// This allows `amplify_foundation_dart` clients to pass their credentials +/// to Smithy SDK operations without manual conversion. +/// +/// ## Usage +/// +/// ```dart +/// import 'package:amplify_foundation_dart_bridge/amplify_foundation_dart_bridge.dart'; +/// +/// final foundationProvider = MyFoundationCredentialsProvider(); +/// final smithyProvider = SmithyCredentialsProviderBridge(foundationProvider); +/// +/// final kinesisClient = KinesisClient( +/// region: 'us-east-1', +/// credentialsProvider: smithyProvider, +/// ); +/// ``` +/// {@endtemplate} +final class SmithyCredentialsProviderBridge + implements sig_v4.AWSCredentialsProvider { + /// {@macro amplify_foundation_dart_bridge.smithy_credentials_provider_bridge} + const SmithyCredentialsProviderBridge(this._provider); + + final foundation.AWSCredentialsProvider _provider; + + @override + String get runtimeTypeName => 'SmithyCredentialsProviderBridge'; + + @override + Future retrieve() async { + final creds = await _provider.resolve(); + if (creds is foundation.TemporaryCredentials) { + return sig_v4.AWSCredentials( + creds.accessKeyId, + creds.secretAccessKey, + creds.sessionToken, + creds.expiration, + ); + } + return sig_v4.AWSCredentials(creds.accessKeyId, creds.secretAccessKey); + } +} diff --git a/packages/amplify_foundation/amplify_foundation_dart_bridge/pubspec.yaml b/packages/amplify_foundation/amplify_foundation_dart_bridge/pubspec.yaml index 3d3e8954591..0140909e3c0 100644 --- a/packages/amplify_foundation/amplify_foundation_dart_bridge/pubspec.yaml +++ b/packages/amplify_foundation/amplify_foundation_dart_bridge/pubspec.yaml @@ -1,6 +1,6 @@ name: amplify_foundation_dart_bridge description: Bridges aws_common credential types to amplify_foundation_dart types. -version: 1.0.0 +version: 2.10.0 homepage: https://docs.amplify.aws/flutter/ repository: https://github.com/aws-amplify/amplify-flutter/tree/main/packages/amplify_foundation/amplify_foundation_dart_bridge issue_tracker: https://github.com/aws-amplify/amplify-flutter/issues @@ -9,8 +9,9 @@ environment: sdk: ^3.9.0 dependencies: - amplify_foundation_dart: ">=1.0.0 <1.1.0" + amplify_foundation_dart: ">=2.10.0 <2.11.0" aws_common: ">=0.7.12 <0.8.0" + aws_signature_v4: ">=0.6.9 <0.7.0" dev_dependencies: amplify_lints: ">=3.1.4 <3.2.0" diff --git a/packages/common/amplify_db_common_dart/lib/src/connect_html.dart b/packages/common/amplify_db_common_dart/lib/src/connect_html.dart index d1ac4adc4e4..bb5e66d066a 100644 --- a/packages/common/amplify_db_common_dart/lib/src/connect_html.dart +++ b/packages/common/amplify_db_common_dart/lib/src/connect_html.dart @@ -14,6 +14,9 @@ import 'package:web/web.dart'; final _sqlite3Memo = AsyncMemoizer(); +/// WebAssembly binary magic number: `\0asm` (§5.5.1 of the Wasm spec). +const _wasmMagicBytes = [0x00, 0x61, 0x73, 0x6d]; + const _loadSqlRecoveryMessage = 'sqlite3.wasm needs to be included in your /web dir. ' 'See Amplify Platform Setup docs for more info: ' @@ -62,7 +65,21 @@ Future loadSqlite3([ '$_loadSqlRecoveryMessage', ); } - return (await response.bodyBytes) as Uint8List; + final bytes = (await response.bodyBytes) as Uint8List; + if (bytes.length < _wasmMagicBytes.length || + bytes[0] != _wasmMagicBytes[0] || + bytes[1] != _wasmMagicBytes[1] || + bytes[2] != _wasmMagicBytes[2] || + bytes[3] != _wasmMagicBytes[3]) { + throw AWSHttpException( + request, + 'The response from sqlite3.wasm is not a valid WebAssembly binary. ' + 'This usually means the server returned an HTML fallback page ' + 'instead of the .wasm file.\n\n' + '$_loadSqlRecoveryMessage', + ); + } + return bytes; } on Object catch (e) { if (e is AmplifyException) rethrow; throw AWSHttpException( diff --git a/packages/kinesis/amplify_kinesis/CHANGELOG.md b/packages/kinesis/amplify_kinesis/CHANGELOG.md new file mode 100644 index 00000000000..969553b35f0 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/CHANGELOG.md @@ -0,0 +1,3 @@ +## 2.10.0 + +- Initial release \ No newline at end of file diff --git a/packages/kinesis/amplify_kinesis/LICENSE b/packages/kinesis/amplify_kinesis/LICENSE new file mode 100644 index 00000000000..67db8588217 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/LICENSE @@ -0,0 +1,175 @@ + + 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. diff --git a/packages/kinesis/amplify_kinesis/README.md b/packages/kinesis/amplify_kinesis/README.md new file mode 100644 index 00000000000..3c19c5810ac --- /dev/null +++ b/packages/kinesis/amplify_kinesis/README.md @@ -0,0 +1,13 @@ +# amplify_kinesis + +A Flutter implementation for streaming data to Amazon Kinesis Data Streams with offline support. + +## Category / Platform Support + +| Category | Android | iOS | Web | Windows | MacOS | Linux | +| -------------- | :-----: | :-: | :-: | :-----: | :---: | :---: | +| Kinesis | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | + +## Getting Started + +### Visit our [Web Site](https://docs.amplify.aws/) to learn more about AWS Amplify. diff --git a/packages/kinesis/amplify_kinesis/analysis_options.yaml b/packages/kinesis/amplify_kinesis/analysis_options.yaml new file mode 100644 index 00000000000..765d9f7e9e5 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/analysis_options.yaml @@ -0,0 +1,6 @@ +include: package:amplify_lints/library.yaml + +analyzer: + exclude: + - '**/*.g.dart' + - 'lib/src/sdk/src/**' diff --git a/packages/kinesis/amplify_kinesis/example/.gitignore b/packages/kinesis/amplify_kinesis/example/.gitignore new file mode 100644 index 00000000000..c6c6cdb0c25 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/.gitignore @@ -0,0 +1,48 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# 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/ +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Web related +lib/generated_plugin_registrant.dart + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Exceptions to above rules. +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages +!**/.idea/ +!**/.idea/codeStyles/ +!**/.idea/codeStyles/* + +amplify_outputs.dart diff --git a/packages/kinesis/amplify_kinesis/example/.metadata b/packages/kinesis/amplify_kinesis/example/.metadata new file mode 100644 index 00000000000..c0fe0189a6d --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/.metadata @@ -0,0 +1,45 @@ +# 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 and should not be manually edited. + +version: + revision: "90673a4eef275d1a6692c26ac80d6d746d41a73a" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a + base_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a + - platform: android + create_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a + base_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a + - platform: ios + create_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a + base_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a + - platform: linux + create_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a + base_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a + - platform: macos + create_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a + base_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a + - platform: web + create_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a + base_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a + - platform: windows + create_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a + base_revision: 90673a4eef275d1a6692c26ac80d6d746d41a73a + + # 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/kinesis/amplify_kinesis/example/README.md b/packages/kinesis/amplify_kinesis/example/README.md new file mode 100644 index 00000000000..70be2f75f04 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/README.md @@ -0,0 +1,30 @@ +# amplify_kinesis example + +Example app and integration test host for the `amplify_kinesis` Flutter package. + +## Running the Example App + +```bash +cd packages/kinesis/amplify_kinesis/example +flutter run +``` + +## Running Integration Tests + +Integration tests require a pre-provisioned Kinesis Data Stream backend with Cognito authentication. + +### Setup + +1. Pull the test backend configuration: + +```bash +./tool/pull_test_backend.sh +``` + +2. Or manually place an `amplify_outputs.dart` file in `lib/`. + +### Run + +```bash +flutter test integration_test/main_test.dart +``` diff --git a/packages/kinesis/amplify_kinesis/example/analysis_options.yaml b/packages/kinesis/amplify_kinesis/example/analysis_options.yaml new file mode 100644 index 00000000000..49f9f5a9a43 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/analysis_options.yaml @@ -0,0 +1 @@ +include: package:amplify_lints/app.yaml diff --git a/packages/kinesis/amplify_kinesis/example/android/.gitignore b/packages/kinesis/amplify_kinesis/example/android/.gitignore new file mode 100644 index 00000000000..be3943c96d8 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/android/.gitignore @@ -0,0 +1,14 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java +.cxx/ + +# Remember to never publicly share your keystore. +# See https://flutter.dev/to/reference-keystore +key.properties +**/*.keystore +**/*.jks diff --git a/packages/kinesis/amplify_kinesis/example/android/app/build.gradle.kts b/packages/kinesis/amplify_kinesis/example/android/app/build.gradle.kts new file mode 100644 index 00000000000..24e0d94e137 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/android/app/build.gradle.kts @@ -0,0 +1,44 @@ +plugins { + id("com.android.application") + id("kotlin-android") + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id("dev.flutter.flutter-gradle-plugin") +} + +android { + namespace = "com.amazonaws.amplify.amplify_kinesis_example" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_17.toString() + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "com.amazonaws.amplify.amplify_kinesis_example" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = flutter.minSdkVersion + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + } + + 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.getByName("debug") + } + } +} + +flutter { + source = "../.." +} diff --git a/packages/kinesis/amplify_kinesis/example/android/app/src/debug/AndroidManifest.xml b/packages/kinesis/amplify_kinesis/example/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 00000000000..399f6981d5d --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/packages/kinesis/amplify_kinesis/example/android/app/src/main/AndroidManifest.xml b/packages/kinesis/amplify_kinesis/example/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000000..a10bb201f28 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/kinesis/amplify_kinesis/example/android/app/src/main/kotlin/com/amazonaws/amplify/aws_kinesis_datastreams_example/MainActivity.kt b/packages/kinesis/amplify_kinesis/example/android/app/src/main/kotlin/com/amazonaws/amplify/aws_kinesis_datastreams_example/MainActivity.kt new file mode 100644 index 00000000000..377cfc59ce9 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/android/app/src/main/kotlin/com/amazonaws/amplify/aws_kinesis_datastreams_example/MainActivity.kt @@ -0,0 +1,5 @@ +package com.amazonaws.amplify.amplify_kinesis_example + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity : FlutterActivity() diff --git a/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 00000000000..f74085f3f6a --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/drawable/launch_background.xml b/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 00000000000..304732f8842 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 00000000000..db77bb4b7b0 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 00000000000..17987b79bb8 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 00000000000..09d4391482b Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 00000000000..d5f1c8d34e7 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 00000000000..4d6372eebdb Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/values-night/styles.xml b/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 00000000000..06952be745f --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/values/styles.xml b/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/values/styles.xml new file mode 100644 index 00000000000..cb1ef88056e --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/packages/kinesis/amplify_kinesis/example/android/app/src/profile/AndroidManifest.xml b/packages/kinesis/amplify_kinesis/example/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 00000000000..399f6981d5d --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/packages/kinesis/amplify_kinesis/example/android/build.gradle.kts b/packages/kinesis/amplify_kinesis/example/android/build.gradle.kts new file mode 100644 index 00000000000..dbee657bb5b --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/android/build.gradle.kts @@ -0,0 +1,24 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() +rootProject.layout.buildDirectory.value(newBuildDir) + +subprojects { + val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) + project.layout.buildDirectory.value(newSubprojectBuildDir) +} +subprojects { + project.evaluationDependsOn(":app") +} + +tasks.register("clean") { + delete(rootProject.layout.buildDirectory) +} diff --git a/packages/kinesis/amplify_kinesis/example/android/gradle.properties b/packages/kinesis/amplify_kinesis/example/android/gradle.properties new file mode 100644 index 00000000000..fbee1d8cdaf --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/android/gradle.properties @@ -0,0 +1,2 @@ +org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError +android.useAndroidX=true diff --git a/packages/kinesis/amplify_kinesis/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/kinesis/amplify_kinesis/example/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000000..e4ef43fb98d --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-all.zip diff --git a/packages/kinesis/amplify_kinesis/example/android/settings.gradle.kts b/packages/kinesis/amplify_kinesis/example/android/settings.gradle.kts new file mode 100644 index 00000000000..ca7fe065c16 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/android/settings.gradle.kts @@ -0,0 +1,26 @@ +pluginManagement { + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id("dev.flutter.flutter-plugin-loader") version "1.0.0" + id("com.android.application") version "8.11.1" apply false + id("org.jetbrains.kotlin.android") version "2.2.20" apply false +} + +include(":app") diff --git a/packages/kinesis/amplify_kinesis/example/integration_test/kinesis_integration_test.dart b/packages/kinesis/amplify_kinesis/example/integration_test/kinesis_integration_test.dart new file mode 100644 index 00000000000..6d1f1e3cb7b --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/integration_test/kinesis_integration_test.dart @@ -0,0 +1,657 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// Integration tests for AmplifyKinesisClient (Flutter) against a real +/// Kinesis Data Stream using pre-provisioned backend. +library; + +import 'dart:convert'; +import 'dart:typed_data'; + +import 'package:amplify_foundation_dart/amplify_foundation_dart.dart'; +import 'package:amplify_kinesis/amplify_kinesis.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'utils/setup_utils.dart'; + +void main() { + late AmplifyKinesisClient client; + late AmplifyAuthCredentialsProvider credentialsProvider; + + setUpAll(() async { + if (!isConfigured) { + fail( + 'Test backend not configured. Run tool/pull_test_backend.sh or ' + 'place amplify_outputs.dart in lib/.', + ); + } + + await configureAmplify(); + credentialsProvider = await signInNewUser(); + }); + + setUp(() async { + client = await AmplifyKinesisClient.create( + region: testRegion, + credentialsProvider: credentialsProvider, + options: const AmplifyKinesisClientOptions( + maxRetries: 3, + flushStrategy: FlushNone(), + ), + ); + }); + + tearDown(() async { + if (!client.isClosed) { + await client.clearCache(); + await client.close(); + } + }); + + // ----------------------------------------------------------------- + // Core happy path + // ----------------------------------------------------------------- + + group('Core happy path', () { + testWidgets('record and flush', (tester) async { + final recordResult = await client.record( + data: Uint8List.fromList(utf8.encode('test-record')), + partitionKey: 'partition-1', + streamName: testStreamName, + ); + expect(recordResult, isA>()); + + final flushResult = await client.flush(); + expect(flushResult, isA>()); + final flushed = (flushResult as Ok).value.recordsFlushed; + expect(flushed, greaterThan(0)); + }); + + testWidgets('flush when empty returns zero', (tester) async { + final flushResult = await client.flush(); + expect(flushResult, isA>()); + final data = (flushResult as Ok).value; + expect(data.recordsFlushed, equals(0)); + expect(data.flushInProgress, isFalse); + }); + + testWidgets('record while disabled drops records', (tester) async { + client.disable(); + + final result = await client.record( + data: Uint8List.fromList(utf8.encode('dropped-record')), + partitionKey: 'partition-1', + streamName: testStreamName, + ); + expect(result, isA>()); + + client.enable(); + final flushResult = await client.flush(); + expect(flushResult, isA>()); + expect((flushResult as Ok).value.recordsFlushed, equals(0)); + }); + + testWidgets('enable/disable lifecycle', (tester) async { + // Record while enabled + await client.record( + data: Uint8List.fromList(utf8.encode('before-disable')), + partitionKey: 'partition-1', + streamName: testStreamName, + ); + + client.disable(); + + // Record while disabled — should be dropped + await client.record( + data: Uint8List.fromList(utf8.encode('while-disabled')), + partitionKey: 'partition-1', + streamName: testStreamName, + ); + + client.enable(); + + final flushResult = await client.flush(); + expect(flushResult, isA>()); + expect((flushResult as Ok).value.recordsFlushed, equals(1)); + }); + + testWidgets('concurrent flush returns in-progress', (tester) async { + // Seed some records so the flush has work to do + for (var i = 0; i < 10; i++) { + await client.record( + data: Uint8List.fromList(utf8.encode('record-$i')), + partitionKey: 'partition-1', + streamName: testStreamName, + ); + } + + final results = await Future.wait([client.flush(), client.flush()]); + + final successes = results.whereType>().toList(); + expect(successes.length, equals(2)); + + final flushDatas = successes.map((r) => r.value).toList(); + // At least one should have done actual work, and one may report + // flushInProgress + final anyFlushed = flushDatas.any((d) => d.recordsFlushed > 0); + final anyInProgress = flushDatas.any((d) => d.flushInProgress); + expect(anyFlushed || anyInProgress, isTrue); + }); + }); + + // ----------------------------------------------------------------- + // Cache behavior + // ----------------------------------------------------------------- + + group('Cache behavior', () { + testWidgets('cache limit exceeded returns error', (tester) async { + final smallCacheClient = await AmplifyKinesisClient.create( + region: testRegion, + credentialsProvider: credentialsProvider, + options: const AmplifyKinesisClientOptions( + cacheMaxBytes: 100, + flushStrategy: FlushNone(), + ), + ); + + try { + final bigData = Uint8List(60); + await smallCacheClient.record( + data: bigData, + partitionKey: 'partition-1', + streamName: testStreamName, + ); + + // This should exceed the 100-byte limit + final result = await smallCacheClient.record( + data: bigData, + partitionKey: 'partition-1', + streamName: testStreamName, + ); + + expect(result, isA>()); + expect( + (result as Error).error, + isA(), + ); + } finally { + await smallCacheClient.clearCache(); + await smallCacheClient.close(); + } + }); + + testWidgets('clear cache removes all pending records', (tester) async { + await client.record( + data: Uint8List.fromList(utf8.encode('to-be-cleared')), + partitionKey: 'partition-1', + streamName: testStreamName, + ); + + final clearResult = await client.clearCache(); + expect(clearResult, isA>()); + final cleared = (clearResult as Ok).value.recordsCleared; + expect(cleared, greaterThan(0)); + + final flushResult = await client.flush(); + expect(flushResult, isA>()); + expect((flushResult as Ok).value.recordsFlushed, equals(0)); + }); + }); + + // ----------------------------------------------------------------- + // Error paths + // ----------------------------------------------------------------- + + group('Error paths', () { + testWidgets('flush with nonexistent stream does not block valid stream', ( + tester, + ) async { + await client.record( + data: Uint8List.fromList(utf8.encode('wrong-stream-record')), + partitionKey: 'partition-1', + streamName: 'nonexistent-stream-name', + ); + await client.record( + data: Uint8List.fromList(utf8.encode('valid-stream-record')), + partitionKey: 'partition-1', + streamName: testStreamName, + ); + + final flushResult = await client.flush(); + expect(flushResult, isA>()); + expect((flushResult as Ok).value.recordsFlushed, equals(1)); + + final clearResult = await client.clearCache(); + expect(clearResult, isA>()); + expect( + (clearResult as Ok).value.recordsCleared, + equals(1), + ); + }); + + testWidgets( + 'flush with invalid credentials returns success with zero flushed', + (tester) async { + final badCredentials = _StaticCredentialsProvider(); + final badClient = await AmplifyKinesisClient.create( + region: testRegion, + credentialsProvider: badCredentials, + options: const AmplifyKinesisClientOptions( + flushStrategy: FlushNone(), + ), + ); + + try { + await badClient.record( + data: Uint8List.fromList(utf8.encode('bad-creds-record')), + partitionKey: 'partition-1', + streamName: testStreamName, + ); + + // SDK exceptions are handled silently — flush returns success + final flushResult = await badClient.flush(); + expect(flushResult, isA>()); + expect( + (flushResult as Ok).value.recordsFlushed, + equals(0), + ); + } finally { + await badClient.clearCache(); + await badClient.close(); + } + }, + ); + + testWidgets('oversized record is rejected and flush still works', ( + tester, + ) async { + final largePartitionKey = 'k' * 256; + final oversizedData = Uint8List(10 * 1024 * 1024); // 10 MiB + + final oversizedResult = await client.record( + data: oversizedData, + partitionKey: largePartitionKey, + streamName: testStreamName, + ); + expect(oversizedResult, isA>()); + expect( + (oversizedResult as Error).error, + isA(), + ); + + // Client should still work after rejection + final validResult = await client.record( + data: Uint8List.fromList(utf8.encode('still-works')), + partitionKey: 'partition-1', + streamName: testStreamName, + ); + expect(validResult, isA>()); + + final flushResult = await client.flush(); + expect(flushResult, isA>()); + expect((flushResult as Ok).value.recordsFlushed, equals(1)); + }); + }); + + // ----------------------------------------------------------------- + // Retry exhaustion + // ----------------------------------------------------------------- + + group('Retry exhaustion', () { + testWidgets('invalid stream record is dropped after maxRetries', ( + tester, + ) async { + const maxRetries = 5; + final retryClient = await AmplifyKinesisClient.create( + region: testRegion, + credentialsProvider: credentialsProvider, + options: const AmplifyKinesisClientOptions( + maxRetries: maxRetries, + flushStrategy: FlushNone(), + ), + ); + + try { + await retryClient.clearCache(); + + await retryClient.record( + data: Uint8List.fromList(utf8.encode('invalid-stream-record')), + partitionKey: 'partition-1', + streamName: 'nonexistent-stream-name', + ); + await retryClient.record( + data: Uint8List.fromList(utf8.encode('valid-stream-record')), + partitionKey: 'partition-1', + streamName: testStreamName, + ); + + // First flush: valid record flushed, invalid stays + final firstFlush = await retryClient.flush(); + expect(firstFlush, isA>()); + expect((firstFlush as Ok).value.recordsFlushed, equals(1)); + + // Flush maxRetries more times to exhaust retries + for (var i = 0; i < maxRetries; i++) { + final result = await retryClient.flush(); + expect(result, isA>()); + expect((result as Ok).value.recordsFlushed, equals(0)); + } + + // Final flush: invalid record should have been evicted + final finalFlush = await retryClient.flush(); + expect(finalFlush, isA>()); + expect((finalFlush as Ok).value.recordsFlushed, equals(0)); + + // Confirm cache is truly empty + final clearResult = await retryClient.clearCache(); + expect(clearResult, isA>()); + expect( + (clearResult as Ok).value.recordsCleared, + equals(0), + ); + } finally { + await retryClient.clearCache(); + await retryClient.close(); + } + }); + }); + + // ----------------------------------------------------------------- + // Stress tests + // ----------------------------------------------------------------- + + group('Stress tests', () { + testWidgets('high volume record and flush', (tester) async { + const count = 50; + for (var i = 0; i < count; i++) { + final result = await client.record( + data: Uint8List.fromList(utf8.encode('stress-record-$i')), + partitionKey: 'partition-${i % 5}', + streamName: testStreamName, + ); + expect(result, isA>()); + } + + final flushResult = await client.flush(); + expect(flushResult, isA>()); + expect( + (flushResult as Ok).value.recordsFlushed, + equals(count), + ); + }); + + testWidgets('repeated flush cycles', (tester) async { + const cycles = 5; + const recordsPerCycle = 5; + var totalFlushed = 0; + + for (var cycle = 0; cycle < cycles; cycle++) { + for (var i = 0; i < recordsPerCycle; i++) { + await client.record( + data: Uint8List.fromList(utf8.encode('cycle-$cycle-record-$i')), + partitionKey: 'partition-1', + streamName: testStreamName, + ); + } + final flushResult = await client.flush(); + expect(flushResult, isA>()); + totalFlushed += (flushResult as Ok).value.recordsFlushed; + } + + expect(totalFlushed, equals(cycles * recordsPerCycle)); + }); + + testWidgets('concurrent record and flush stress', (tester) async { + const producers = 5; + const recordsPerProducer = 20; + const totalExpected = producers * recordsPerProducer; + var totalFlushed = 0; + var producersDone = false; + + // Flusher: calls flush() every 500ms until all producers are done + final flusher = () async { + while (!producersDone) { + final result = await client.flush(); + if (result case Ok(:final value)) { + totalFlushed += value.recordsFlushed; + } + await Future.delayed(const Duration(milliseconds: 500)); + } + }(); + + // Producers: each records M events concurrently + final producerFutures = List.generate(producers, (p) async { + for (var i = 0; i < recordsPerProducer; i++) { + await client.record( + data: Uint8List.fromList(utf8.encode('stress-p$p-r$i')), + partitionKey: 'partition-${p % 3}', + streamName: testStreamName, + ); + } + }); + + await Future.wait(producerFutures); + producersDone = true; + await flusher; + + // Final drain flush + final drainResult = await client.flush(); + expect(drainResult, isA>()); + totalFlushed += (drainResult as Ok).value.recordsFlushed; + + // Second drain to confirm nothing is left + final finalResult = await client.flush(); + expect(finalResult, isA>()); + expect((finalResult as Ok).value.recordsFlushed, equals(0)); + + expect(totalFlushed, equals(totalExpected)); + }); + }); + + // ----------------------------------------------------------------- + // Auto-flush + // ----------------------------------------------------------------- + + group('Auto-flush', () { + testWidgets('default config auto-starts scheduler', (tester) async { + // Default options use a long interval. We override to a short interval + // to verify the scheduler auto-starts without an explicit enable() call. + final defaultClient = await AmplifyKinesisClient.create( + region: testRegion, + credentialsProvider: credentialsProvider, + options: const AmplifyKinesisClientOptions( + flushStrategy: FlushInterval(interval: Duration(seconds: 3)), + ), + ); + // Note: no explicit enable() call — scheduler should auto-start + + try { + await defaultClient.record( + data: Uint8List.fromList(utf8.encode('auto-start-record')), + partitionKey: 'partition-1', + streamName: testStreamName, + ); + + // Wait for auto-flush to trigger (3s interval + buffer) + await tester.binding.delayed(const Duration(seconds: 6)); + + // After auto-flush, a manual flush should find nothing left + final flushResult = await defaultClient.flush(); + expect(flushResult, isA>()); + expect((flushResult as Ok).value.recordsFlushed, equals(0)); + } finally { + await defaultClient.clearCache(); + await defaultClient.close(); + } + }); + + testWidgets('auto-flush triggers and drains records', (tester) async { + final autoFlushClient = await AmplifyKinesisClient.create( + region: testRegion, + credentialsProvider: credentialsProvider, + options: const AmplifyKinesisClientOptions( + flushStrategy: FlushInterval(interval: Duration(seconds: 5)), + ), + ); + + try { + await autoFlushClient.record( + data: Uint8List.fromList(utf8.encode('auto-flush-record')), + partitionKey: 'partition-1', + streamName: testStreamName, + ); + + // Wait for auto-flush to trigger (5s interval + buffer) + await tester.binding.delayed(const Duration(seconds: 8)); + + // After auto-flush, a manual flush should find nothing left + final flushResult = await autoFlushClient.flush(); + expect(flushResult, isA>()); + expect((flushResult as Ok).value.recordsFlushed, equals(0)); + } finally { + await autoFlushClient.clearCache(); + await autoFlushClient.close(); + } + }); + }); + + // ----------------------------------------------------------------- + // Partition key validation + // ----------------------------------------------------------------- + + group('Partition key validation', () { + testWidgets('record with max 256 emoji code points and flush', ( + tester, + ) async { + // Each emoji (😀) is 1 Unicode code point but 4 bytes in UTF-8. + const emoji = '😀'; + final emojiPartitionKey = emoji * 256; + + expect(emojiPartitionKey.runes.length, equals(256)); + expect(utf8.encode(emojiPartitionKey).length, equals(1024)); + + final result = await client.record( + data: Uint8List.fromList( + utf8.encode('test-data-with-emoji-partition-key'), + ), + partitionKey: emojiPartitionKey, + streamName: testStreamName, + ); + expect(result, isA>()); + + final flushResult = await client.flush(); + expect(flushResult, isA>()); + expect((flushResult as Ok).value.recordsFlushed, equals(1)); + }); + }); + + // ----------------------------------------------------------------- + // PutRecords size limits + // ----------------------------------------------------------------- + + group('PutRecords size limits', () { + testWidgets('flush large payload with large partition keys', ( + tester, + ) async { + final largeClient = await AmplifyKinesisClient.create( + region: testRegion, + credentialsProvider: credentialsProvider, + options: const AmplifyKinesisClientOptions( + cacheMaxBytes: 12 * 1024 * 1024, // 12 MB + flushStrategy: FlushNone(), + ), + ); + + try { + // Each record: ~50 KB data + ~200-char partition key ≈ 51 KB + // 210 records ≈ 10.5 MB total (exceeds 10 MiB PutRecords limit) + const recordDataSize = 50 * 1024; + const recordCount = 210; + + for (var i = 0; i < recordCount; i++) { + final partitionKey = '${'k' * 200}-$i'; + final data = Uint8List(recordDataSize); + final result = await largeClient.record( + data: data, + partitionKey: partitionKey, + streamName: testStreamName, + ); + expect(result, isA>()); + } + + // First flush: sends up to 10 MiB worth of records + final flush1 = await largeClient.flush(); + expect(flush1, isA>()); + final flushed1 = (flush1 as Ok).value.recordsFlushed; + expect(flushed1, greaterThan(0)); + + // Second flush: sends the remaining records + final flush2 = await largeClient.flush(); + expect(flush2, isA>()); + final flushed2 = (flush2 as Ok).value.recordsFlushed; + + expect(flushed1 + flushed2, equals(recordCount)); + + // Third flush: nothing left + final flush3 = await largeClient.flush(); + expect(flush3, isA>()); + expect((flush3 as Ok).value.recordsFlushed, equals(0)); + } finally { + await largeClient.clearCache(); + await largeClient.close(); + } + }); + }); + + // ----------------------------------------------------------------- + // Persistence + // ----------------------------------------------------------------- + + group('Persistence', () { + testWidgets('records persist across client instances', (tester) async { + await client.record( + data: Uint8List.fromList(utf8.encode('persist-test')), + partitionKey: 'persistence-test', + streamName: testStreamName, + ); + + await client.close(); + + final newClient = await AmplifyKinesisClient.create( + region: testRegion, + credentialsProvider: credentialsProvider, + options: const AmplifyKinesisClientOptions(flushStrategy: FlushNone()), + ); + + try { + final flushResult = await newClient.flush(); + expect(flushResult, isA>()); + expect( + (flushResult as Ok).value.recordsFlushed, + greaterThan(0), + ); + } finally { + await newClient.close(); + } + }); + }); + + // ----------------------------------------------------------------- + // Escape hatch + // ----------------------------------------------------------------- + + group('Escape hatch', () { + testWidgets('kinesisClient is accessible', (tester) async { + expect(client.kinesisClient, isNotNull); + }); + }); +} + +/// Static credentials provider with fake keys for testing error paths. +class _StaticCredentialsProvider implements AWSCredentialsProvider { + @override + Future resolve() async => const StaticCredentials( + 'AKIAIOSFODNN7EXAMPLE', + 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY', + ); +} diff --git a/packages/kinesis/amplify_kinesis/example/integration_test/main_test.dart b/packages/kinesis/amplify_kinesis/example/integration_test/main_test.dart new file mode 100644 index 00000000000..788ec76f529 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/integration_test/main_test.dart @@ -0,0 +1,13 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'package:flutter_test/flutter_test.dart'; +import 'package:integration_test/integration_test.dart'; + +import 'kinesis_integration_test.dart' as kinesis_integration_tests; + +void main() { + IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + + group('amplify_kinesis', kinesis_integration_tests.main); +} diff --git a/packages/kinesis/amplify_kinesis/example/integration_test/utils/setup_utils.dart b/packages/kinesis/amplify_kinesis/example/integration_test/utils/setup_utils.dart new file mode 100644 index 00000000000..de0d130bd8a --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/integration_test/utils/setup_utils.dart @@ -0,0 +1,117 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// Setup utilities for Kinesis integration tests. +/// +/// Configures Amplify with the Auth plugin, signs up and signs in a +/// test user, and provides credentials for the Kinesis client. +/// +/// This follows the same pattern used by the storage and analytics +/// integration tests — using the Amplify Auth SDK rather than raw +/// Cognito HTTP calls. +library; + +import 'dart:convert'; + +import 'package:amplify_auth_cognito/amplify_auth_cognito.dart'; +import 'package:amplify_flutter/amplify_flutter.dart' + hide AWSCredentialsProvider; +import 'package:amplify_foundation_dart/amplify_foundation_dart.dart' + show AWSCredentialsProvider, TemporaryCredentials; +import 'package:amplify_kinesis_example/amplify_outputs.dart'; +import 'package:amplify_test/amplify_test.dart'; +import 'package:flutter_test/flutter_test.dart'; + +/// The Amplify config string from the example app. +String get testAmplifyConfig => amplifyConfig; + +/// AWS Region parsed from the Amplify config. +String get testRegion { + final config = jsonDecode(amplifyConfig) as Map; + final auth = config['auth'] as Map; + return auth['aws_region'] as String; +} + +/// Name of the Kinesis Data Stream to use for testing. +/// +/// Defaults to the stream name provisioned by the infra-gen2 backend. +String get testStreamName => + const String.fromEnvironment('TEST_STREAM_NAME').isNotEmpty + ? const String.fromEnvironment('TEST_STREAM_NAME') + : 'amplify-kinesis-test-stream'; + +/// Whether the test environment is configured. +/// +/// True when amplify_outputs.dart has valid auth config. +bool get isConfigured { + try { + final config = jsonDecode(amplifyConfig) as Map; + return config.containsKey('auth'); + } on Object { + return false; + } +} + +/// Configures Amplify with the Auth Cognito plugin. +/// +/// Adds a tearDown to reset Amplify after each test group. +Future configureAmplify() async { + final authPlugin = AmplifyAuthCognito( + secureStorageFactory: AmplifySecureStorage.factoryFrom( + macOSOptions: MacOSSecureStorageOptions(useDataProtection: false), + ), + ); + + await Amplify.addPlugins([authPlugin]); + await Amplify.configure(amplifyConfig); + addTearDown(Amplify.reset); +} + +/// Signs up and signs in a new test user using Amplify Auth. +/// +/// Returns a [AWSCredentialsProvider] backed by the authenticated session. +/// +/// Adds a tearDown to delete the user and sign out after the test completes. +/// This follows the same pattern used by the storage integration tests. +Future signInNewUser() async { + final password = generatePassword(); + final email = generateEmail(); + + await Amplify.Auth.signUp(username: email, password: password); + await Amplify.Auth.signIn(username: email, password: password); + + addTearDown(() async { + try { + await Amplify.Auth.deleteUser(); + } on Object { + // Best-effort delete — also handles sign-out. + } + }); + + return const AmplifyAuthCredentialsProvider(); +} + +/// An [AWSCredentialsProvider] that fetches credentials from +/// Amplify Auth's current authenticated session. +/// +/// This is the same approach used by the example app's main.dart. +class AmplifyAuthCredentialsProvider implements AWSCredentialsProvider { + const AmplifyAuthCredentialsProvider(); + + @override + Future resolve() async { + final session = + await Amplify.Auth.fetchAuthSession( + options: const FetchAuthSessionOptions(forceRefresh: false), + ) + as CognitoAuthSession; + + final credentials = session.credentialsResult.value; + return TemporaryCredentials( + credentials.accessKeyId, + credentials.secretAccessKey, + credentials.sessionToken!, + credentials.expiration!, + ); + } +} diff --git a/packages/kinesis/amplify_kinesis/example/ios/.gitignore b/packages/kinesis/amplify_kinesis/example/ios/.gitignore new file mode 100644 index 00000000000..7a7f9873ad7 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/.gitignore @@ -0,0 +1,34 @@ +**/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/kinesis/amplify_kinesis/example/ios/Flutter/AppFrameworkInfo.plist b/packages/kinesis/amplify_kinesis/example/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 00000000000..391a902b2be --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + + diff --git a/packages/kinesis/amplify_kinesis/example/ios/Flutter/Debug.xcconfig b/packages/kinesis/amplify_kinesis/example/ios/Flutter/Debug.xcconfig new file mode 100644 index 00000000000..ec97fc6f302 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/packages/kinesis/amplify_kinesis/example/ios/Flutter/Release.xcconfig b/packages/kinesis/amplify_kinesis/example/ios/Flutter/Release.xcconfig new file mode 100644 index 00000000000..c4855bfe200 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/packages/kinesis/amplify_kinesis/example/ios/Podfile b/packages/kinesis/amplify_kinesis/example/ios/Podfile new file mode 100644 index 00000000000..620e46eba60 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Podfile @@ -0,0 +1,43 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '13.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! + + 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/kinesis/amplify_kinesis/example/ios/Runner.xcodeproj/project.pbxproj b/packages/kinesis/amplify_kinesis/example/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..99063fd1ae6 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,735 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 45CE0DA57DE586104B9045FD /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56A350607CCD8E64F232BDEA /* Pods_RunnerTests.framework */; }; + 60150AEBE1650449ACAB9AF7 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52FCCF02DCC4AB4E095731F8 /* Pods_Runner.framework */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 7884E8682EC3CC0700C636F2 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7884E8672EC3CC0400C636F2 /* SceneDelegate.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 */; }; +/* 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 */ + 068339E0A7578047B864DE53 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + 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 = ""; }; + 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; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 3E8190A5E0862F94728B52A7 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 4195DB0A74186890742E11D7 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + 4EB50E02454720C91D24BCD7 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 52FCCF02DCC4AB4E095731F8 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 56A350607CCD8E64F232BDEA /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 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 = ""; }; + 7884E8672EC3CC0400C636F2 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.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 = ""; }; + 9B409CC94448BDC4F1382D1E /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + CE189337DA12D93240187F96 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1F7C2B0FE4702932BDA8D2AB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 45CE0DA57DE586104B9045FD /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 60150AEBE1650449ACAB9AF7 /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 5B4F17353836CC05F8DD90CF /* Pods */ = { + isa = PBXGroup; + children = ( + 4EB50E02454720C91D24BCD7 /* Pods-Runner.debug.xcconfig */, + 3E8190A5E0862F94728B52A7 /* Pods-Runner.release.xcconfig */, + CE189337DA12D93240187F96 /* Pods-Runner.profile.xcconfig */, + 068339E0A7578047B864DE53 /* Pods-RunnerTests.debug.xcconfig */, + 9B409CC94448BDC4F1382D1E /* Pods-RunnerTests.release.xcconfig */, + 4195DB0A74186890742E11D7 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + 5B4F17353836CC05F8DD90CF /* Pods */, + 9F63F3D5F7A9F950112A81CB /* Frameworks */, + ); + 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 */, + 7884E8672EC3CC0400C636F2 /* SceneDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; + 9F63F3D5F7A9F950112A81CB /* Frameworks */ = { + isa = PBXGroup; + children = ( + 52FCCF02DCC4AB4E095731F8 /* Pods_Runner.framework */, + 56A350607CCD8E64F232BDEA /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 042A3BAC0A3A483B25DF4DA5 /* [CP] Check Pods Manifest.lock */, + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + 1F7C2B0FE4702932BDA8D2AB /* Frameworks */, + ); + 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 = ( + 5DE1F74F7ED2A88038FFC80F /* [CP] Check Pods Manifest.lock */, + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + D9E18B69C84F7F0DD96A7B60 /* [CP] Embed Pods Frameworks */, + ); + 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 = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + 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 */ + 042A3BAC0A3A483B25DF4DA5 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 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"; + }; + 5DE1F74F7ED2A88038FFC80F /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 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"; + }; + D9E18B69C84F7F0DD96A7B60 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* 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 */, + 7884E8682EC3CC0700C636F2 /* SceneDelegate.swift 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; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + 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 = 13.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)"; + DEVELOPMENT_TEAM = ANY62A66KW; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.amazonaws.amplify.awsKinesisDatastreamsExample; + 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 = 068339E0A7578047B864DE53 /* 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.amazonaws.amplify.awsKinesisDatastreamsExample.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 = 9B409CC94448BDC4F1382D1E /* 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.amazonaws.amplify.awsKinesisDatastreamsExample.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 = 4195DB0A74186890742E11D7 /* 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.amazonaws.amplify.awsKinesisDatastreamsExample.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; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + 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 = 13.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; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + 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; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + 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 = 13.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)"; + DEVELOPMENT_TEAM = ANY62A66KW; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.amazonaws.amplify.awsKinesisDatastreamsExample; + 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)"; + DEVELOPMENT_TEAM = ANY62A66KW; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.amazonaws.amplify.awsKinesisDatastreamsExample; + 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/kinesis/amplify_kinesis/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/kinesis/amplify_kinesis/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..919434a6254 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/kinesis/amplify_kinesis/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000000..18d981003d6 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/kinesis/amplify_kinesis/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000000..f9b0d7c5ea1 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/kinesis/amplify_kinesis/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000000..e3773d42e24 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/kinesis/amplify_kinesis/example/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..21a3cc14c74 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/kinesis/amplify_kinesis/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000000..18d981003d6 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/kinesis/amplify_kinesis/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000000..f9b0d7c5ea1 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/AppDelegate.swift b/packages/kinesis/amplify_kinesis/example/ios/Runner/AppDelegate.swift new file mode 100644 index 00000000000..c30b367ec0a --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Runner/AppDelegate.swift @@ -0,0 +1,16 @@ +import Flutter +import UIKit + +@main +@objc class AppDelegate: FlutterAppDelegate, FlutterImplicitEngineDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } + + func didInitializeImplicitFlutterEngine(_ engineBridge: FlutterImplicitEngineBridge) { + GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry) + } +} diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000000..d36b1fab2d9 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "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/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 00000000000..dc9ada4725e Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 00000000000..7353c41ecf9 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 00000000000..797d452e458 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 00000000000..6ed2d933e11 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 00000000000..4cd7b0099ca Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 00000000000..fe730945a01 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 00000000000..321773cd857 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 00000000000..797d452e458 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 00000000000..502f463a9bc Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 00000000000..0ec30343922 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 00000000000..0ec30343922 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 00000000000..e9f5fea27c7 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 00000000000..84ac32ae7d9 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 00000000000..8953cba0906 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 00000000000..0467bf12aa4 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 00000000000..0bedcf2fd46 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "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/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 00000000000..9da19eacad3 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 00000000000..9da19eacad3 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 00000000000..9da19eacad3 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 00000000000..89c2725b70f --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# 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/kinesis/amplify_kinesis/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/kinesis/amplify_kinesis/example/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000000..f2e259c7c93 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Base.lproj/Main.storyboard b/packages/kinesis/amplify_kinesis/example/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 00000000000..f3c28516fb3 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Info.plist b/packages/kinesis/amplify_kinesis/example/ios/Runner/Info.plist new file mode 100644 index 00000000000..f29d02a6f52 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Runner/Info.plist @@ -0,0 +1,70 @@ + + + + + CADisableMinimumFrameDurationOnPhone + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Aws Kinesis Datastreams Example + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + amplify_kinesis_example + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneClassName + UIWindowScene + UISceneConfigurationName + flutter + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + UIApplicationSupportsIndirectInputEvents + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/Runner-Bridging-Header.h b/packages/kinesis/amplify_kinesis/example/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 00000000000..308a2a560b4 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/packages/kinesis/amplify_kinesis/example/ios/Runner/SceneDelegate.swift b/packages/kinesis/amplify_kinesis/example/ios/Runner/SceneDelegate.swift new file mode 100644 index 00000000000..b9ce8ea2b2a --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/Runner/SceneDelegate.swift @@ -0,0 +1,6 @@ +import Flutter +import UIKit + +class SceneDelegate: FlutterSceneDelegate { + +} diff --git a/packages/kinesis/amplify_kinesis/example/ios/RunnerTests/RunnerTests.swift b/packages/kinesis/amplify_kinesis/example/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 00000000000..86a7c3b1b61 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +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/kinesis/amplify_kinesis/example/lib/main.dart b/packages/kinesis/amplify_kinesis/example/lib/main.dart new file mode 100644 index 00000000000..aef28d6563d --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/lib/main.dart @@ -0,0 +1,415 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'dart:convert'; +import 'dart:typed_data'; + +import 'package:amplify_auth_cognito/amplify_auth_cognito.dart'; +import 'package:amplify_authenticator/amplify_authenticator.dart'; +import 'package:amplify_flutter/amplify_flutter.dart' hide LogLevel; +import 'package:amplify_foundation_dart/amplify_foundation_dart.dart' + as foundation + show AWSCredentialsProvider, TemporaryCredentials; +import 'package:amplify_foundation_dart/amplify_foundation_dart.dart' + show AmplifyLogging, AmplifySimplePrinterLogSink, Error, LogLevel, Ok; +import 'package:amplify_kinesis/amplify_kinesis.dart'; +import 'package:flutter/material.dart'; + +import 'amplify_outputs.dart'; + +void main() { + WidgetsFlutterBinding.ensureInitialized(); + + // Register a verbose log sink so all Kinesis internal logs are visible. + AmplifyLogging.addSink( + AmplifySimplePrinterLogSink(logLevel: LogLevel.verbose), + ); + + runApp(const KinesisExampleApp()); +} + +/// An [foundation.AWSCredentialsProvider] that fetches credentials from +/// Amplify Auth's current session. +class _AmplifyAuthCredentialsProvider + implements foundation.AWSCredentialsProvider { + @override + Future resolve() async { + final session = + await Amplify.Auth.fetchAuthSession( + options: const FetchAuthSessionOptions(forceRefresh: false), + ) + as CognitoAuthSession; + + final credentials = session.credentialsResult.value; + return foundation.TemporaryCredentials( + credentials.accessKeyId, + credentials.secretAccessKey, + credentials.sessionToken!, + credentials.expiration!, + ); + } +} + +class KinesisExampleApp extends StatefulWidget { + const KinesisExampleApp({super.key}); + + @override + State createState() => _KinesisExampleAppState(); +} + +class _KinesisExampleAppState extends State { + bool _amplifyConfigured = false; + String _configError = ''; + + @override + void initState() { + super.initState(); + _configureAmplify(); + } + + Future _configureAmplify() async { + if (!mounted) return; + + try { + // FIXME: In your app, make sure to remove this line and set up + /// Keychain Sharing in Xcode as described in the docs: + /// https://docs.amplify.aws/lib/project-setup/platform-setup/q/platform/flutter/#enable-keychain + final storageFactory = AmplifySecureStorage.factoryFrom( + // ignore: invalid_use_of_visible_for_testing_member + macOSOptions: MacOSSecureStorageOptions(useDataProtection: false), + ); + + await Amplify.addPlugins([ + AmplifyAuthCognito(secureStorageFactory: storageFactory), + ]); + await Amplify.configure(amplifyConfig); + + setState(() { + _amplifyConfigured = true; + }); + } on Exception catch (e) { + setState(() { + _configError = 'Amplify configuration failed: $e'; + }); + } + } + + @override + Widget build(BuildContext context) { + if (!_amplifyConfigured) { + return MaterialApp( + home: Scaffold( + body: Center( + child: _configError.isNotEmpty + ? Text(_configError, style: const TextStyle(color: Colors.red)) + : const CircularProgressIndicator(), + ), + ), + ); + } + + return Authenticator( + child: MaterialApp( + builder: Authenticator.builder(), + home: const _KinesisHomePage(), + ), + ); + } +} + +class _KinesisHomePage extends StatefulWidget { + const _KinesisHomePage(); + + @override + State<_KinesisHomePage> createState() => _KinesisHomePageState(); +} + +class _KinesisHomePageState extends State<_KinesisHomePage> { + AmplifyKinesisClient? _client; + bool _isEnabled = true; + String _statusMessage = 'Initializing client...'; + String _streamName = 'amplify-kinesis-test-stream'; + String _partitionKey = 'partition-1'; + String _recordData = ''; + + late final TextEditingController _streamNameController; + late final TextEditingController _partitionKeyController; + + @override + void initState() { + super.initState(); + _streamNameController = TextEditingController(text: _streamName); + _partitionKeyController = TextEditingController(text: _partitionKey); + _initializeClient(); + } + + @override + void dispose() { + _streamNameController.dispose(); + _partitionKeyController.dispose(); + _client?.close(); + super.dispose(); + } + + Future _initializeClient() async { + try { + final region = _parseRegionFromConfig(); + final client = await AmplifyKinesisClient.create( + region: region, + credentialsProvider: _AmplifyAuthCredentialsProvider(), + ); + + setState(() { + _client = client; + _statusMessage = 'Client ready (region: $region).'; + }); + } on Exception catch (e) { + setState(() { + _statusMessage = 'Client initialization failed: $e'; + }); + } + } + + String _parseRegionFromConfig() { + final config = jsonDecode(amplifyConfig) as Map; + final auth = config['auth'] as Map; + return auth['aws_region'] as String; + } + + void _updateStatus(String message) { + setState(() { + _statusMessage = message; + }); + } + + Future _recordEvent() async { + final client = _client; + if (client == null) { + _updateStatus('Client not initialized.'); + return; + } + if (_streamName.isEmpty || _recordData.isEmpty) { + _updateStatus('Stream name and record data are required.'); + return; + } + + final result = await client.record( + data: Uint8List.fromList(utf8.encode(_recordData)), + partitionKey: _partitionKey, + streamName: _streamName, + ); + + if (result is Ok) { + _updateStatus('Record queued successfully.'); + } else if (result is Error) { + _updateStatus('Record failed: ${result.error}'); + } + } + + Future _flushEvents() async { + final client = _client; + if (client == null) { + _updateStatus('Client not initialized.'); + return; + } + + final result = await client.flush(); + if (result is Ok) { + _updateStatus('Flushed ${result.value.recordsFlushed} records.'); + } else if (result is Error) { + _updateStatus('Flush failed: ${result.error}'); + } + } + + Future _clearCache() async { + final client = _client; + if (client == null) { + _updateStatus('Client not initialized.'); + return; + } + + final result = await client.clearCache(); + if (result is Ok) { + _updateStatus( + 'Cleared ${result.value.recordsCleared} records ' + 'from cache.', + ); + } else if (result is Error) { + _updateStatus('Clear cache failed: ${result.error}'); + } + } + + void _toggleEnabled() { + final client = _client; + if (client == null) { + _updateStatus('Client not initialized.'); + return; + } + + setState(() { + _isEnabled = !_isEnabled; + if (_isEnabled) { + client.enable(); + } else { + client.disable(); + } + }); + _updateStatus('Client ${_isEnabled ? 'enabled' : 'disabled'}.'); + } + + Future _closeClient() async { + final client = _client; + if (client == null) { + _updateStatus('Client not initialized.'); + return; + } + + await client.close(); + setState(() { + _client = null; + }); + _updateStatus('Client closed.'); + } + + Future _signOut() async { + final client = _client; + if (client != null && !client.isClosed) { + await client.close(); + } + setState(() { + _client = null; + }); + await Amplify.Auth.signOut(); + } + + @override + Widget build(BuildContext context) { + final isClientReady = _client != null; + + return Scaffold( + appBar: AppBar( + title: const Text('Kinesis Data Streams Example'), + actions: [ + IconButton( + onPressed: _signOut, + icon: const Icon(Icons.logout), + tooltip: 'Sign Out', + ), + ], + ), + body: ListView( + padding: const EdgeInsets.all(16), + children: [ + // Status section + Card( + child: Padding( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text( + 'Status', + style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), + ), + const SizedBox(height: 8), + Text(_statusMessage), + const SizedBox(height: 4), + Text( + 'Client: ${isClientReady ? 'initialized' : 'not initialized'}', + ), + if (isClientReady) Text('Enabled: $_isEnabled'), + ], + ), + ), + ), + const SizedBox(height: 16), + + // Record section + Card( + child: Padding( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text( + 'Record', + style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), + ), + const SizedBox(height: 8), + TextField( + decoration: const InputDecoration( + labelText: 'Stream Name', + hintText: 'Enter Kinesis stream name', + ), + controller: _streamNameController, + onChanged: (text) => _streamName = text, + ), + TextField( + decoration: const InputDecoration( + labelText: 'Partition Key', + hintText: 'Enter partition key', + ), + controller: _partitionKeyController, + onChanged: (text) => _partitionKey = text, + ), + TextField( + decoration: const InputDecoration( + labelText: 'Record Data', + hintText: 'Enter data to record', + ), + onChanged: (text) => _recordData = text, + ), + const SizedBox(height: 8), + ElevatedButton( + onPressed: isClientReady ? _recordEvent : null, + child: const Text('Record'), + ), + ], + ), + ), + ), + const SizedBox(height: 16), + + // Actions section + Card( + child: Padding( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text( + 'Actions', + style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold), + ), + const SizedBox(height: 8), + Wrap( + spacing: 8, + runSpacing: 8, + children: [ + ElevatedButton( + onPressed: isClientReady ? _flushEvents : null, + child: const Text('Flush'), + ), + ElevatedButton( + onPressed: isClientReady ? _clearCache : null, + child: const Text('Clear Cache'), + ), + ElevatedButton( + onPressed: isClientReady ? _toggleEnabled : null, + child: Text(_isEnabled ? 'Disable' : 'Enable'), + ), + ElevatedButton( + onPressed: isClientReady ? _closeClient : null, + child: const Text('Close Client'), + ), + ], + ), + ], + ), + ), + ), + ], + ), + ); + } +} diff --git a/packages/kinesis/amplify_kinesis/example/linux/.gitignore b/packages/kinesis/amplify_kinesis/example/linux/.gitignore new file mode 100644 index 00000000000..d3896c98444 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/linux/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/packages/kinesis/amplify_kinesis/example/linux/CMakeLists.txt b/packages/kinesis/amplify_kinesis/example/linux/CMakeLists.txt new file mode 100644 index 00000000000..e8f4cfb5eed --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/linux/CMakeLists.txt @@ -0,0 +1,128 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.13) +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 "amplify_kinesis_example") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID +set(APPLICATION_ID "com.amazonaws.amplify.amplify_kinesis_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) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + +# 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) + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# 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/kinesis/amplify_kinesis/example/linux/flutter/CMakeLists.txt b/packages/kinesis/amplify_kinesis/example/linux/flutter/CMakeLists.txt new file mode 100644 index 00000000000..d5bd01648a9 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/linux/flutter/CMakeLists.txt @@ -0,0 +1,88 @@ +# 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/kinesis/amplify_kinesis/example/linux/flutter/generated_plugin_registrant.cc b/packages/kinesis/amplify_kinesis/example/linux/flutter/generated_plugin_registrant.cc new file mode 100644 index 00000000000..a66c59350ad --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,19 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include +#include + +void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) amplify_db_common_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "AmplifyDbCommonPlugin"); + amplify_db_common_plugin_register_with_registrar(amplify_db_common_registrar); + g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); + url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); +} diff --git a/packages/kinesis/amplify_kinesis/example/linux/flutter/generated_plugin_registrant.h b/packages/kinesis/amplify_kinesis/example/linux/flutter/generated_plugin_registrant.h new file mode 100644 index 00000000000..e0f0a47bc08 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/linux/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// 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/kinesis/amplify_kinesis/example/linux/flutter/generated_plugins.cmake b/packages/kinesis/amplify_kinesis/example/linux/flutter/generated_plugins.cmake new file mode 100644 index 00000000000..a7fd6afb7ca --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/linux/flutter/generated_plugins.cmake @@ -0,0 +1,25 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + amplify_db_common + url_launcher_linux +) + +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/kinesis/amplify_kinesis/example/linux/runner/CMakeLists.txt b/packages/kinesis/amplify_kinesis/example/linux/runner/CMakeLists.txt new file mode 100644 index 00000000000..e97dabc7028 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/linux/runner/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.13) +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} + "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 preprocessor definitions for the application ID. +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") + +# Add dependency libraries. Add any application-specific dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") diff --git a/packages/kinesis/amplify_kinesis/example/linux/runner/main.cc b/packages/kinesis/amplify_kinesis/example/linux/runner/main.cc new file mode 100644 index 00000000000..e7c5c543703 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/linux/runner/main.cc @@ -0,0 +1,6 @@ +#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/kinesis/amplify_kinesis/example/linux/runner/my_application.cc b/packages/kinesis/amplify_kinesis/example/linux/runner/my_application.cc new file mode 100644 index 00000000000..f9daa295af3 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/linux/runner/my_application.cc @@ -0,0 +1,148 @@ +#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) + +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView* view) { + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + +// 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, "amplify_kinesis_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, "amplify_kinesis_example"); + } + + gtk_window_set_default_size(window, 1280, 720); + + 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); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 + // for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); + gtk_widget_show(GTK_WIDGET(view)); + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), + self); + gtk_widget_realize(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 GApplication::startup. +static void my_application_startup(GApplication* application) { + // MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application startup. + + G_APPLICATION_CLASS(my_application_parent_class)->startup(application); +} + +// Implements GApplication::shutdown. +static void my_application_shutdown(GApplication* application) { + // MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application shutdown. + + G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application); +} + +// 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_APPLICATION_CLASS(klass)->startup = my_application_startup; + G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown; + G_OBJECT_CLASS(klass)->dispose = my_application_dispose; +} + +static void my_application_init(MyApplication* self) {} + +MyApplication* my_application_new() { + // Set the program name to the application ID, which helps various systems + // like GTK and desktop environments map this running application to its + // corresponding .desktop file. This ensures better integration by allowing + // the application to be recognized beyond its binary name. + g_set_prgname(APPLICATION_ID); + + return MY_APPLICATION(g_object_new(my_application_get_type(), + "application-id", APPLICATION_ID, "flags", + G_APPLICATION_NON_UNIQUE, nullptr)); +} diff --git a/packages/kinesis/amplify_kinesis/example/linux/runner/my_application.h b/packages/kinesis/amplify_kinesis/example/linux/runner/my_application.h new file mode 100644 index 00000000000..db16367a77d --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/linux/runner/my_application.h @@ -0,0 +1,21 @@ +#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/kinesis/amplify_kinesis/example/macos/.gitignore b/packages/kinesis/amplify_kinesis/example/macos/.gitignore new file mode 100644 index 00000000000..746adbb6b9e --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/packages/kinesis/amplify_kinesis/example/macos/Flutter/Flutter-Debug.xcconfig b/packages/kinesis/amplify_kinesis/example/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 00000000000..4b81f9b2d20 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/packages/kinesis/amplify_kinesis/example/macos/Flutter/Flutter-Release.xcconfig b/packages/kinesis/amplify_kinesis/example/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 00000000000..5caa9d1579e --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/packages/kinesis/amplify_kinesis/example/macos/Flutter/GeneratedPluginRegistrant.swift b/packages/kinesis/amplify_kinesis/example/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 00000000000..8cc61276c97 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,20 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import amplify_auth_cognito +import amplify_secure_storage +import device_info_plus +import package_info_plus +import url_launcher_macos + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AmplifyAuthCognitoPlugin.register(with: registry.registrar(forPlugin: "AmplifyAuthCognitoPlugin")) + AmplifySecureStoragePlugin.register(with: registry.registrar(forPlugin: "AmplifySecureStoragePlugin")) + DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) + FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) +} diff --git a/packages/kinesis/amplify_kinesis/example/macos/Podfile b/packages/kinesis/amplify_kinesis/example/macos/Podfile new file mode 100644 index 00000000000..ff5ddb3b8bd --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Podfile @@ -0,0 +1,42 @@ +platform :osx, '10.15' + +# 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! + + 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/kinesis/amplify_kinesis/example/macos/Runner.xcodeproj/project.pbxproj b/packages/kinesis/amplify_kinesis/example/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..1fb440a0431 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,801 @@ +// !$*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 */ + 21B72441998221856085F308 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FADE230C48384DB0B6185F11 /* Pods_RunnerTests.framework */; }; + 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 */; }; + 81698BBFA1180F784953E388 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D75FC7C9212922960210247C /* Pods_Runner.framework */; }; +/* 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 */ + 10F12B993710D9CC2343E13F /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 20132A9F0AB7650477E04035 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 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 /* amplify_kinesis_example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = amplify_kinesis_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 = ""; }; + 5E5BDA1C95613DB774ECBD75 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.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 = ""; }; + A394A0B045011065E89C1865 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + D4A670E2A9D568C9CF32EFBA /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + D75FC7C9212922960210247C /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EC10618A10C5D5EFAC634343 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + FADE230C48384DB0B6185F11 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 331C80D2294CF70F00263BE5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 21B72441998221856085F308 /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 81698BBFA1180F784953E388 /* Pods_Runner.framework in Frameworks */, + ); + 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 */, + 8FC67C1E005860A9E4A4C280 /* Pods */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* amplify_kinesis_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 = ""; + }; + 8FC67C1E005860A9E4A4C280 /* Pods */ = { + isa = PBXGroup; + children = ( + 10F12B993710D9CC2343E13F /* Pods-Runner.debug.xcconfig */, + 20132A9F0AB7650477E04035 /* Pods-Runner.release.xcconfig */, + 5E5BDA1C95613DB774ECBD75 /* Pods-Runner.profile.xcconfig */, + D4A670E2A9D568C9CF32EFBA /* Pods-RunnerTests.debug.xcconfig */, + EC10618A10C5D5EFAC634343 /* Pods-RunnerTests.release.xcconfig */, + A394A0B045011065E89C1865 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + D75FC7C9212922960210247C /* Pods_Runner.framework */, + FADE230C48384DB0B6185F11 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C80D4294CF70F00263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + BD1D67684ACF34E40A896CD2 /* [CP] Check Pods Manifest.lock */, + 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 = ( + 9008F0AD778106FC1DF759C2 /* [CP] Check Pods Manifest.lock */, + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + 82E20294E6EABC78D73C320F /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* amplify_kinesis_example.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1510; + 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"; + }; + 82E20294E6EABC78D73C320F /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 9008F0AD778106FC1DF759C2 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + BD1D67684ACF34E40A896CD2 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* 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; + baseConfigurationReference = D4A670E2A9D568C9CF32EFBA /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.amazonaws.amplify.awsKinesisDatastreamsExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/amplify_kinesis_example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/amplify_kinesis_example"; + }; + name = Debug; + }; + 331C80DC294CF71000263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = EC10618A10C5D5EFAC634343 /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.amazonaws.amplify.awsKinesisDatastreamsExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/amplify_kinesis_example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/amplify_kinesis_example"; + }; + name = Release; + }; + 331C80DD294CF71000263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A394A0B045011065E89C1865 /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.amazonaws.amplify.awsKinesisDatastreamsExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/amplify_kinesis_example.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/amplify_kinesis_example"; + }; + name = Profile; + }; + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + 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; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + 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.15; + 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; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + 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; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + 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.15; + 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; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + 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; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + 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.15; + 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/kinesis/amplify_kinesis/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/kinesis/amplify_kinesis/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000000..18d981003d6 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/kinesis/amplify_kinesis/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/kinesis/amplify_kinesis/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000000..5c99f12e6da --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/kinesis/amplify_kinesis/example/macos/Runner.xcworkspace/contents.xcworkspacedata b/packages/kinesis/amplify_kinesis/example/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..21a3cc14c74 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/packages/kinesis/amplify_kinesis/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/kinesis/amplify_kinesis/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000000..18d981003d6 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/kinesis/amplify_kinesis/example/macos/Runner/AppDelegate.swift b/packages/kinesis/amplify_kinesis/example/macos/Runner/AppDelegate.swift new file mode 100644 index 00000000000..b3c17614122 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Cocoa +import FlutterMacOS + +@main +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } + + override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool { + return true + } +} diff --git a/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000000..a2ec33f19f1 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "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/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 00000000000..82b6f9d9a33 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png differ diff --git a/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 00000000000..13b35eba55c Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png differ diff --git a/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 00000000000..0a3f5fa40fb Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png differ diff --git a/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png new file mode 100644 index 00000000000..bdb57226d5f Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png differ diff --git a/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png new file mode 100644 index 00000000000..f083318e09c Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png differ diff --git a/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png new file mode 100644 index 00000000000..326c0e72c9d Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png differ diff --git a/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 00000000000..2f1632cfddf Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png differ diff --git a/packages/kinesis/amplify_kinesis/example/macos/Runner/Base.lproj/MainMenu.xib b/packages/kinesis/amplify_kinesis/example/macos/Runner/Base.lproj/MainMenu.xib new file mode 100644 index 00000000000..80e867a4e06 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Runner/Base.lproj/MainMenu.xib @@ -0,0 +1,343 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/kinesis/amplify_kinesis/example/macos/Runner/Configs/AppInfo.xcconfig b/packages/kinesis/amplify_kinesis/example/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 00000000000..d68c99cb96f --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// 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 = amplify_kinesis_example + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = com.amazonaws.amplify.awsKinesisDatastreamsExample + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2026 com.amazonaws.amplify. All rights reserved. diff --git a/packages/kinesis/amplify_kinesis/example/macos/Runner/Configs/Debug.xcconfig b/packages/kinesis/amplify_kinesis/example/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 00000000000..36b0fd9464f --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/packages/kinesis/amplify_kinesis/example/macos/Runner/Configs/Release.xcconfig b/packages/kinesis/amplify_kinesis/example/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 00000000000..dff4f49561c --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/packages/kinesis/amplify_kinesis/example/macos/Runner/Configs/Warnings.xcconfig b/packages/kinesis/amplify_kinesis/example/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 00000000000..42bcbf4780b --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +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/kinesis/amplify_kinesis/example/macos/Runner/DebugProfile.entitlements b/packages/kinesis/amplify_kinesis/example/macos/Runner/DebugProfile.entitlements new file mode 100644 index 00000000000..dddb8a30c85 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + + diff --git a/packages/kinesis/amplify_kinesis/example/macos/Runner/Info.plist b/packages/kinesis/amplify_kinesis/example/macos/Runner/Info.plist new file mode 100644 index 00000000000..4789daa6a44 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + 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/kinesis/amplify_kinesis/example/macos/Runner/MainFlutterWindow.swift b/packages/kinesis/amplify_kinesis/example/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 00000000000..3cc05eb2349 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +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/kinesis/amplify_kinesis/example/macos/Runner/Release.entitlements b/packages/kinesis/amplify_kinesis/example/macos/Runner/Release.entitlements new file mode 100644 index 00000000000..852fa1a4728 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/packages/kinesis/amplify_kinesis/example/macos/RunnerTests/RunnerTests.swift b/packages/kinesis/amplify_kinesis/example/macos/RunnerTests/RunnerTests.swift new file mode 100644 index 00000000000..61f3bd1fc50 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/macos/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Cocoa +import FlutterMacOS +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/kinesis/amplify_kinesis/example/pubspec.yaml b/packages/kinesis/amplify_kinesis/example/pubspec.yaml new file mode 100644 index 00000000000..cdc64b1c0d4 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/pubspec.yaml @@ -0,0 +1,34 @@ +name: amplify_kinesis_example +description: Demonstrates how to use the amplify_kinesis plugin. +version: 0.1.0 + +publish_to: "none" + +environment: + sdk: ^3.9.0 + flutter: ">=3.35.0" + +dependencies: + amplify_auth_cognito: ">=1.0.0-next.8 <1.0.0-next.9" + amplify_authenticator: ">=2.5.0 <3.0.0" + amplify_flutter: ">=1.0.0-next.8 <1.0.0-next.9" + amplify_foundation_dart: ">=2.10.0 <2.11.0" + amplify_foundation_dart_bridge: ">=2.10.0 <2.11.0" + amplify_kinesis: + path: ../ + aws_common: ">=0.7.12 <0.8.0" + flutter: + sdk: flutter + +dev_dependencies: + amplify_lints: + path: ../../../amplify_lints + amplify_test: + path: ../../../test/amplify_test + flutter_test: + sdk: flutter + integration_test: + sdk: flutter + +flutter: + uses-material-design: true diff --git a/packages/kinesis/amplify_kinesis/example/test_driver/integration_test.dart b/packages/kinesis/amplify_kinesis/example/test_driver/integration_test.dart new file mode 100644 index 00000000000..6f595528bae --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/test_driver/integration_test.dart @@ -0,0 +1,8 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'package:integration_test/integration_test_driver.dart'; + +// Required for running integration tests in the browser +// https://docs.flutter.dev/cookbook/testing/integration/introduction#5b-web +Future main() => integrationDriver(); diff --git a/packages/kinesis/amplify_kinesis/example/tool/pull_test_backend.sh b/packages/kinesis/amplify_kinesis/example/tool/pull_test_backend.sh new file mode 100755 index 00000000000..4e534d2ea0a --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/tool/pull_test_backend.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +set -e + +aws s3 cp s3://$AFS_KINESIS_GEN2_BUCKET_NAME/amplify_outputs.dart lib/amplify_outputs.dart diff --git a/packages/kinesis/amplify_kinesis/example/web/favicon.png b/packages/kinesis/amplify_kinesis/example/web/favicon.png new file mode 100644 index 00000000000..8aaa46ac1ae Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/web/favicon.png differ diff --git a/packages/kinesis/amplify_kinesis/example/web/icons/Icon-192.png b/packages/kinesis/amplify_kinesis/example/web/icons/Icon-192.png new file mode 100644 index 00000000000..b749bfef074 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/web/icons/Icon-192.png differ diff --git a/packages/kinesis/amplify_kinesis/example/web/icons/Icon-512.png b/packages/kinesis/amplify_kinesis/example/web/icons/Icon-512.png new file mode 100644 index 00000000000..88cfd48dff1 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/web/icons/Icon-512.png differ diff --git a/packages/kinesis/amplify_kinesis/example/web/icons/Icon-maskable-192.png b/packages/kinesis/amplify_kinesis/example/web/icons/Icon-maskable-192.png new file mode 100644 index 00000000000..eb9b4d76e52 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/web/icons/Icon-maskable-192.png differ diff --git a/packages/kinesis/amplify_kinesis/example/web/icons/Icon-maskable-512.png b/packages/kinesis/amplify_kinesis/example/web/icons/Icon-maskable-512.png new file mode 100644 index 00000000000..d69c56691fb Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/web/icons/Icon-maskable-512.png differ diff --git a/packages/kinesis/amplify_kinesis/example/web/index.html b/packages/kinesis/amplify_kinesis/example/web/index.html new file mode 100644 index 00000000000..980ede851fe --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/web/index.html @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + amplify_kinesis_example + + + + + + + diff --git a/packages/kinesis/amplify_kinesis/example/web/manifest.json b/packages/kinesis/amplify_kinesis/example/web/manifest.json new file mode 100644 index 00000000000..14bccb8fa8c --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "amplify_kinesis_example", + "short_name": "amplify_kinesis_example", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A new Flutter project.", + "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/kinesis/amplify_kinesis/example/windows/.gitignore b/packages/kinesis/amplify_kinesis/example/windows/.gitignore new file mode 100644 index 00000000000..d492d0d98c8 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/windows/.gitignore @@ -0,0 +1,17 @@ +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/kinesis/amplify_kinesis/example/windows/CMakeLists.txt b/packages/kinesis/amplify_kinesis/example/windows/CMakeLists.txt new file mode 100644 index 00000000000..7ae47a340a3 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/windows/CMakeLists.txt @@ -0,0 +1,108 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(amplify_kinesis_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 "amplify_kinesis_example") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(VERSION 3.14...3.25) + +# 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() + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/windows/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# 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/kinesis/amplify_kinesis/example/windows/flutter/CMakeLists.txt b/packages/kinesis/amplify_kinesis/example/windows/flutter/CMakeLists.txt new file mode 100644 index 00000000000..903f4899d6f --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/windows/flutter/CMakeLists.txt @@ -0,0 +1,109 @@ +# 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") + +# Set fallback configurations for older versions of the flutter tool. +if (NOT DEFINED FLUTTER_TARGET_PLATFORM) + set(FLUTTER_TARGET_PLATFORM "windows-x64") +endif() + +# === 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" + ${FLUTTER_TARGET_PLATFORM} $ + 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/kinesis/amplify_kinesis/example/windows/flutter/generated_plugin_registrant.cc b/packages/kinesis/amplify_kinesis/example/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 00000000000..e24dd12e40a --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,17 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include +#include + +void RegisterPlugins(flutter::PluginRegistry* registry) { + AmplifyDbCommonPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("AmplifyDbCommonPlugin")); + UrlLauncherWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("UrlLauncherWindows")); +} diff --git a/packages/kinesis/amplify_kinesis/example/windows/flutter/generated_plugin_registrant.h b/packages/kinesis/amplify_kinesis/example/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 00000000000..dc139d85a93 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// 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/kinesis/amplify_kinesis/example/windows/flutter/generated_plugins.cmake b/packages/kinesis/amplify_kinesis/example/windows/flutter/generated_plugins.cmake new file mode 100644 index 00000000000..92239a91a8c --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/windows/flutter/generated_plugins.cmake @@ -0,0 +1,25 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + amplify_db_common + url_launcher_windows +) + +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/kinesis/amplify_kinesis/example/windows/runner/CMakeLists.txt b/packages/kinesis/amplify_kinesis/example/windows/runner/CMakeLists.txt new file mode 100644 index 00000000000..394917c053a --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/windows/runner/CMakeLists.txt @@ -0,0 +1,40 @@ +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/kinesis/amplify_kinesis/example/windows/runner/Runner.rc b/packages/kinesis/amplify_kinesis/example/windows/runner/Runner.rc new file mode 100644 index 00000000000..5f74181dc94 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// 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.amazonaws.amplify" "\0" + VALUE "FileDescription", "amplify_kinesis_example" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "amplify_kinesis_example" "\0" + VALUE "LegalCopyright", "Copyright (C) 2026 com.amazonaws.amplify. All rights reserved." "\0" + VALUE "OriginalFilename", "amplify_kinesis_example.exe" "\0" + VALUE "ProductName", "amplify_kinesis_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/kinesis/amplify_kinesis/example/windows/runner/flutter_window.cpp b/packages/kinesis/amplify_kinesis/example/windows/runner/flutter_window.cpp new file mode 100644 index 00000000000..955ee3038f9 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/windows/runner/flutter_window.cpp @@ -0,0 +1,71 @@ +#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(); + }); + + // Flutter can complete the first frame before the "show window" callback is + // registered. The following call ensures a frame is pending to ensure the + // window is shown. It is a no-op if the first frame hasn't completed yet. + flutter_controller_->ForceRedraw(); + + 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/kinesis/amplify_kinesis/example/windows/runner/flutter_window.h b/packages/kinesis/amplify_kinesis/example/windows/runner/flutter_window.h new file mode 100644 index 00000000000..6da0652f05f --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#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/kinesis/amplify_kinesis/example/windows/runner/main.cpp b/packages/kinesis/amplify_kinesis/example/windows/runner/main.cpp new file mode 100644 index 00000000000..0d22bfcae21 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#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"amplify_kinesis_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/kinesis/amplify_kinesis/example/windows/runner/resource.h b/packages/kinesis/amplify_kinesis/example/windows/runner/resource.h new file mode 100644 index 00000000000..66a65d1e4a7 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/windows/runner/resource.h @@ -0,0 +1,16 @@ +//{{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/kinesis/amplify_kinesis/example/windows/runner/resources/app_icon.ico b/packages/kinesis/amplify_kinesis/example/windows/runner/resources/app_icon.ico new file mode 100644 index 00000000000..c04e20caf63 Binary files /dev/null and b/packages/kinesis/amplify_kinesis/example/windows/runner/resources/app_icon.ico differ diff --git a/packages/kinesis/amplify_kinesis/example/windows/runner/runner.exe.manifest b/packages/kinesis/amplify_kinesis/example/windows/runner/runner.exe.manifest new file mode 100644 index 00000000000..153653e8d67 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/windows/runner/runner.exe.manifest @@ -0,0 +1,14 @@ + + + + + PerMonitorV2 + + + + + + + + + diff --git a/packages/kinesis/amplify_kinesis/example/windows/runner/utils.cpp b/packages/kinesis/amplify_kinesis/example/windows/runner/utils.cpp new file mode 100644 index 00000000000..3a0b46511a7 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/windows/runner/utils.cpp @@ -0,0 +1,65 @@ +#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(); + } + unsigned 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/kinesis/amplify_kinesis/example/windows/runner/utils.h b/packages/kinesis/amplify_kinesis/example/windows/runner/utils.h new file mode 100644 index 00000000000..3879d547557 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/windows/runner/utils.h @@ -0,0 +1,19 @@ +#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/kinesis/amplify_kinesis/example/windows/runner/win32_window.cpp b/packages/kinesis/amplify_kinesis/example/windows/runner/win32_window.cpp new file mode 100644 index 00000000000..60608d0fe5b --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/windows/runner/win32_window.cpp @@ -0,0 +1,288 @@ +#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/kinesis/amplify_kinesis/example/windows/runner/win32_window.h b/packages/kinesis/amplify_kinesis/example/windows/runner/win32_window.h new file mode 100644 index 00000000000..e901dde684e --- /dev/null +++ b/packages/kinesis/amplify_kinesis/example/windows/runner/win32_window.h @@ -0,0 +1,102 @@ +#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/kinesis/amplify_kinesis/lib/amplify_kinesis.dart b/packages/kinesis/amplify_kinesis/lib/amplify_kinesis.dart new file mode 100644 index 00000000000..7097d6393ef --- /dev/null +++ b/packages/kinesis/amplify_kinesis/lib/amplify_kinesis.dart @@ -0,0 +1,12 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// Amplify Kinesis Data Streams client for Flutter. +library; + +// Re-export everything from the Dart package except the Dart client. +export 'package:amplify_kinesis_dart/amplify_kinesis_dart.dart' + hide AmplifyKinesisClient; + +// Export the Flutter wrapper client. +export 'src/amplify_kinesis_client_flutter.dart'; diff --git a/packages/kinesis/amplify_kinesis/lib/src/amplify_kinesis_client_flutter.dart b/packages/kinesis/amplify_kinesis/lib/src/amplify_kinesis_client_flutter.dart new file mode 100644 index 00000000000..8ceaf2b3585 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/lib/src/amplify_kinesis_client_flutter.dart @@ -0,0 +1,159 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'dart:typed_data'; + +import 'package:amplify_foundation_dart/amplify_foundation_dart.dart' + show AWSCredentialsProvider, Result; +import 'package:amplify_kinesis/src/flutter_path_provider/flutter_path_provider.dart'; +import 'package:amplify_kinesis_dart/amplify_kinesis_dart.dart' + as dart_client + show AmplifyKinesisClient; +import 'package:amplify_kinesis_dart/amplify_kinesis_dart.dart'; + +/// {@template amplify_kinesis.amplify_kinesis_client} +/// Client for recording and streaming data to Amazon Kinesis Data Streams. +/// +/// Provides offline-capable data streaming with: +/// - Local persistence for offline support (SQLite on native, IndexedDB on web, +/// with in-memory fallback) +/// - Automatic retry for failed records +/// - Batching (up to 500 records or 5MB per batch) +/// - Interval-based automatic flushing +/// +/// The storage path is resolved automatically using the platform's +/// application support directory. The [region] is used as the database +/// identifier. +/// +/// ## Usage +/// +/// ```dart +/// final client = await AmplifyKinesisClient.create( +/// region: 'us-east-1', +/// credentialsProvider: myCredentialsProvider, +/// ); +/// +/// await client.record( +/// data: Uint8List.fromList(utf8.encode('{"event": "click"}')), +/// partitionKey: 'user-123', +/// streamName: 'my-stream', +/// ); +/// +/// switch (await client.flush()) { +/// case Ok(:final value): +/// print('Flushed ${value.recordsFlushed} records'); +/// case Error(:final error): +/// print('Flush failed: $error'); +/// } +/// +/// await client.close(); +/// ``` +/// {@endtemplate} +class AmplifyKinesisClient { + AmplifyKinesisClient._(this._delegate); + + /// {@macro amplify_kinesis.amplify_kinesis_client} + /// + /// The storage path is resolved automatically via `path_provider`. + /// On IO platforms, this uses `getApplicationSupportDirectory()`. + /// On web, the path is unused (IndexedDB storage is used instead, + /// with an in-memory fallback). + static Future create({ + required String region, + required AWSCredentialsProvider credentialsProvider, + AmplifyKinesisClientOptions? options, + }) async { + final storagePath = await getStoragePath() ?? ''; + final delegate = await dart_client.AmplifyKinesisClient.create( + region: region, + credentialsProvider: credentialsProvider, + storagePath: storagePath, + options: options, + ); + return AmplifyKinesisClient._(delegate); + } + + final dart_client.AmplifyKinesisClient _delegate; + + /// The AWS region for this client. + String get region => _delegate.region; + + /// The configuration options for this client. + AmplifyKinesisClientOptions get options => _delegate.options; + + /// Whether the client is currently enabled. + bool get isEnabled => _delegate.isEnabled; + + /// Whether the client has been closed. + bool get isClosed => _delegate.isClosed; + + /// Direct access to the underlying Kinesis SDK client. + KinesisClient get kinesisClient => _delegate.kinesisClient; + + /// Records data to be sent to a Kinesis Data Stream. + /// + /// The record is persisted to local storage and will be sent during + /// the next flush operation (automatic or manual). + /// + /// Returns [Result.ok] with [RecordData] on success, or [Result.error] with: + /// - [KinesisValidationException] for invalid input (e.g. oversized record, + /// empty or too-long partition key) + /// - [KinesisLimitExceededException] if the cache is full + /// - [KinesisStorageException] for database errors + /// + /// Returns [Result.ok] silently if the client is disabled. + Future> record({ + required Uint8List data, + required String partitionKey, + required String streamName, + }) => _delegate.record( + data: data, + partitionKey: partitionKey, + streamName: streamName, + ); + + /// Flushes cached records to their respective Kinesis streams. + /// + /// Each invocation sends at most one batch per stream, limited by the Kinesis + /// `PutRecords` constraints (up to 500 records or 5 MB per stream). If the + /// cache contains more records than a single batch can hold, the remaining + /// records are sent on subsequent flush invocations — either manually or via + /// the auto-flush scheduler. + /// + /// Records that fail within a batch are marked for retry on the next flush. + /// Records that exceed [AmplifyKinesisClientOptions.maxRetries] are removed + /// from the cache. + /// + /// SDK Kinesis errors (throttling, invalid stream, etc.) are logged and + /// skipped so other streams can still flush. Non-SDK errors (e.g. network, + /// storage) abort the flush and are returned as [Result.error]. + /// + /// If a flush is already in progress, the call returns immediately with + /// `FlushData(recordsFlushed: 0, flushInProgress: true)`. + /// + /// Manual flushes are allowed even when the client is disabled, so that + /// callers can drain cached records without re-enabling collection. + Future> flush() => _delegate.flush(); + + /// Clears all cached records from local storage. + /// + /// Returns [Result.ok] with [ClearCacheData] containing the count of + /// records cleared, or [Result.error] with: + /// - [KinesisStorageException] for database errors + Future> clearCache() => _delegate.clearCache(); + + /// Enables the client to accept and flush records. + void enable() => _delegate.enable(); + + /// Disables record collection and automatic flushing. + /// + /// Records submitted while disabled are silently dropped. Already-cached + /// records remain in storage and will be sent on the next flush after + /// re-enabling. + void disable() => _delegate.disable(); + + /// Closes the client and releases all resources. + /// + /// The client cannot be reused after closing. + Future close() => _delegate.close(); +} diff --git a/packages/kinesis/amplify_kinesis/lib/src/flutter_path_provider/flutter_path_provider.dart b/packages/kinesis/amplify_kinesis/lib/src/flutter_path_provider/flutter_path_provider.dart new file mode 100644 index 00000000000..8f80aa869f8 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/lib/src/flutter_path_provider/flutter_path_provider.dart @@ -0,0 +1,6 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +export 'flutter_path_provider_stub.dart' + if (dart.library.js_interop) 'flutter_path_provider_html.dart' + if (dart.library.io) 'flutter_path_provider_io.dart'; diff --git a/packages/kinesis/amplify_kinesis/lib/src/flutter_path_provider/flutter_path_provider_html.dart b/packages/kinesis/amplify_kinesis/lib/src/flutter_path_provider/flutter_path_provider_html.dart new file mode 100644 index 00000000000..c3836e88497 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/lib/src/flutter_path_provider/flutter_path_provider_html.dart @@ -0,0 +1,5 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// On web, the path is unused — Drift uses IndexedDB. +Future getStoragePath() async => null; diff --git a/packages/kinesis/amplify_kinesis/lib/src/flutter_path_provider/flutter_path_provider_io.dart b/packages/kinesis/amplify_kinesis/lib/src/flutter_path_provider/flutter_path_provider_io.dart new file mode 100644 index 00000000000..dfdb2c245c6 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/lib/src/flutter_path_provider/flutter_path_provider_io.dart @@ -0,0 +1,10 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'package:path_provider/path_provider.dart'; + +/// Returns the application support directory path on IO platforms. +Future getStoragePath() async { + final dir = await getApplicationSupportDirectory(); + return dir.path; +} diff --git a/packages/kinesis/amplify_kinesis/lib/src/flutter_path_provider/flutter_path_provider_stub.dart b/packages/kinesis/amplify_kinesis/lib/src/flutter_path_provider/flutter_path_provider_stub.dart new file mode 100644 index 00000000000..bbf2c7463d8 --- /dev/null +++ b/packages/kinesis/amplify_kinesis/lib/src/flutter_path_provider/flutter_path_provider_stub.dart @@ -0,0 +1,9 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// Stub implementation — throws on unsupported platforms. +Future getStoragePath() { + throw UnsupportedError( + 'getStoragePath has not been implemented for this platform.', + ); +} diff --git a/packages/kinesis/amplify_kinesis/pubspec.yaml b/packages/kinesis/amplify_kinesis/pubspec.yaml new file mode 100644 index 00000000000..1473c52805d --- /dev/null +++ b/packages/kinesis/amplify_kinesis/pubspec.yaml @@ -0,0 +1,38 @@ +name: amplify_kinesis +description: A Flutter implementation for streaming data to Amazon Kinesis Data Streams with offline support. +version: 2.10.0 +homepage: https://docs.amplify.aws/lib/q/platform/flutter/ +repository: https://github.com/aws-amplify/amplify-flutter/tree/main/packages/kinesis/amplify_kinesis +issue_tracker: https://github.com/aws-amplify/amplify-flutter/issues + +topics: + - aws + - kinesis + - streaming + - analytics + - aws-amplify + +environment: + sdk: ^3.9.0 + flutter: ">=3.35.0" + +# Helps `pana` since we do not use Flutter plugins for most platforms +platforms: + ios: + android: + macos: + windows: + linux: + web: + +dependencies: + amplify_foundation_dart: ">=2.10.0 <2.11.0" + amplify_kinesis_dart: ">=0.1.0 <0.1.1" + flutter: + sdk: flutter + path_provider: ^2.1.0 + +dev_dependencies: + amplify_lints: ">=3.1.4 <3.2.0" + flutter_test: + sdk: flutter diff --git a/packages/kinesis/amplify_kinesis_dart/.gitignore b/packages/kinesis/amplify_kinesis_dart/.gitignore new file mode 100644 index 00000000000..575b61652f2 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/.gitignore @@ -0,0 +1,2 @@ +# Local E2E test runner scripts +test/e2e/run_e2e.sh diff --git a/packages/kinesis/amplify_kinesis_dart/CHANGELOG.md b/packages/kinesis/amplify_kinesis_dart/CHANGELOG.md new file mode 100644 index 00000000000..5282a3943bd --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/CHANGELOG.md @@ -0,0 +1,4 @@ +## 0.1.0 + + - Initial release + diff --git a/packages/kinesis/amplify_kinesis_dart/LICENSE b/packages/kinesis/amplify_kinesis_dart/LICENSE new file mode 100644 index 00000000000..67db8588217 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/LICENSE @@ -0,0 +1,175 @@ + + 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. diff --git a/packages/kinesis/amplify_kinesis_dart/README.md b/packages/kinesis/amplify_kinesis_dart/README.md new file mode 100644 index 00000000000..f4aebc8297c --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/README.md @@ -0,0 +1,3 @@ +# AWS Kinesis Data Streams for Dart + +Dart-only implementation for streaming data to Amazon Kinesis Data Streams. For internal use in the `amplify_kinesis` Flutter library. diff --git a/packages/kinesis/amplify_kinesis_dart/analysis_options.yaml b/packages/kinesis/amplify_kinesis_dart/analysis_options.yaml new file mode 100644 index 00000000000..765d9f7e9e5 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/analysis_options.yaml @@ -0,0 +1,6 @@ +include: package:amplify_lints/library.yaml + +analyzer: + exclude: + - '**/*.g.dart' + - 'lib/src/sdk/src/**' diff --git a/packages/kinesis/amplify_kinesis_dart/dart_test.yaml b/packages/kinesis/amplify_kinesis_dart/dart_test.yaml new file mode 100644 index 00000000000..fe6f97158a7 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/dart_test.yaml @@ -0,0 +1,3 @@ +tags: + e2e: + skip: "E2E tests require backend configuration" diff --git a/packages/kinesis/amplify_kinesis_dart/lib/amplify_kinesis_dart.dart b/packages/kinesis/amplify_kinesis_dart/lib/amplify_kinesis_dart.dart new file mode 100644 index 00000000000..761db258e44 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/amplify_kinesis_dart.dart @@ -0,0 +1,26 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// Amplify Kinesis Data Streams client for Dart. +library; + +// Main client +export 'src/amplify_kinesis_client.dart'; +// Options +export 'src/amplify_kinesis_client_options.dart'; +// Exceptions +export 'src/exception/amplify_kinesis_exception.dart'; +// Flush strategies +export 'src/flush_strategy/flush_strategy.dart'; +// Return types +export 'src/model/clear_cache_data.dart'; +export 'src/model/flush_data.dart'; +export 'src/model/record_data.dart'; +// SDK client (for escape hatch) +export 'src/sdk/kinesis.dart' + show + KinesisClient, + PutRecordsRequest, + PutRecordsRequestEntry, + PutRecordsResponse, + PutRecordsResultEntry; diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/amplify_kinesis_client.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/amplify_kinesis_client.dart new file mode 100644 index 00000000000..638edab1483 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/amplify_kinesis_client.dart @@ -0,0 +1,299 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'dart:async'; +import 'dart:typed_data'; + +import 'package:amplify_foundation_dart/amplify_foundation_dart.dart' + as foundation + show packageVersion; +import 'package:amplify_foundation_dart/amplify_foundation_dart.dart' + hide packageVersion; +import 'package:amplify_foundation_dart_bridge/amplify_foundation_dart_bridge.dart'; +import 'package:amplify_kinesis_dart/src/amplify_kinesis_client_options.dart'; +import 'package:amplify_kinesis_dart/src/exception/amplify_kinesis_exception.dart'; +import 'package:amplify_kinesis_dart/src/flush_strategy/flush_strategy.dart'; +import 'package:amplify_kinesis_dart/src/impl/auto_flush_scheduler.dart'; +import 'package:amplify_kinesis_dart/src/impl/kinesis_record.dart'; +import 'package:amplify_kinesis_dart/src/impl/kinesis_sender.dart'; +import 'package:amplify_kinesis_dart/src/impl/record_client.dart'; +import 'package:amplify_kinesis_dart/src/impl/storage/platform/record_storage_platform.dart'; +import 'package:amplify_kinesis_dart/src/model/clear_cache_data.dart'; +import 'package:amplify_kinesis_dart/src/model/flush_data.dart'; +import 'package:amplify_kinesis_dart/src/model/record_data.dart'; +import 'package:amplify_kinesis_dart/src/sdk/kinesis.dart'; +import 'package:amplify_kinesis_dart/src/version.dart'; +import 'package:smithy/smithy.dart' show WithUserAgent; + +/// User agent component identifying this library. +const _userAgentComponent = + 'md/amplify-kinesis#$packageVersion lib/amplify-flutter#${foundation.packageVersion}'; + +/// {@template amplify_kinesis.amplify_kinesis_client} +/// Client for recording and streaming data to Amazon Kinesis Data Streams. +/// +/// Provides offline-capable data streaming with: +/// - Local persistence for offline support (SQLite on VM, IndexedDB on web) +/// - Automatic retry for failed records +/// - Configurable batching (up to 500 records or 5MB per batch) +/// - Interval-based automatic flushing +/// +/// This is the Dart-only implementation. For Flutter apps, use the +/// `amplify_kinesis` package which resolves the storage path +/// automatically via `path_provider`. +/// +/// ## Usage +/// +/// ```dart +/// final client = await AmplifyKinesisClient.create( +/// region: 'us-east-1', +/// credentialsProvider: myCredentialsProvider, +/// storagePath: '/path/to/app/support', +/// ); +/// +/// await client.record( +/// data: Uint8List.fromList(utf8.encode('{"event": "click"}')), +/// partitionKey: 'user-123', +/// streamName: 'my-stream', +/// ); +/// +/// switch (await client.flush()) { +/// case Ok(:final value): +/// print('Flushed ${value.recordsFlushed} records'); +/// case Error(:final error): +/// print('Flush failed: $error'); +/// } +/// +/// await client.close(); +/// ``` +/// {@endtemplate} +class AmplifyKinesisClient { + /// Private constructor — use [create] or + /// [AmplifyKinesisClient.withRecordClient] instead. + AmplifyKinesisClient._({ + required String region, + required AmplifyKinesisClientOptions options, + required RecordClient recordClient, + required KinesisClient kinesisClient, + AutoFlushScheduler? scheduler, + }) : _region = region, + _options = options, + _recordClient = recordClient, + _kinesisClient = kinesisClient, + _scheduler = scheduler, + _logger = AmplifyLogging.logger('AmplifyKinesisClient'); + + /// Creates a client with a pre-configured [RecordClient] (for testing). + AmplifyKinesisClient.withRecordClient({ + required RecordClient recordClient, + String region = 'us-east-1', + AmplifyKinesisClientOptions? options, + }) : _region = region, + _options = options ?? const AmplifyKinesisClientOptions(), + _recordClient = recordClient, + _kinesisClient = null, + _scheduler = null, + _logger = AmplifyLogging.logger('AmplifyKinesisClient'); + + /// {@macro amplify_kinesis.amplify_kinesis_client} + /// + /// [storagePath] is the directory path for the database file on IO + /// platforms. On web, pass `null` (the path is unused; IndexedDB storage + /// is used instead, with an in-memory fallback). + /// The [region] is used as the database identifier to namespace + /// the database file (e.g. `kinesis_records_us-east-1`). + static Future create({ + required String region, + required AWSCredentialsProvider credentialsProvider, + required FutureOr? storagePath, + AmplifyKinesisClientOptions? options, + }) async { + final opts = options ?? const AmplifyKinesisClientOptions(); + + final storage = await createPlatformRecordStorage( + identifier: region, + storagePath: storagePath, + maxCacheBytes: opts.cacheMaxBytes, + ); + + final kinesisClient = KinesisClient( + region: region, + credentialsProvider: SmithyCredentialsProviderBridge(credentialsProvider), + requestInterceptors: [const WithUserAgent(_userAgentComponent)], + ); + + final recordClient = RecordClient( + storage: storage, + sender: KinesisSender( + kinesisClient: kinesisClient, + maxRetries: opts.maxRetries, + ), + maxRetries: opts.maxRetries, + ); + + final scheduler = switch (opts.flushStrategy) { + FlushInterval(:final interval) => AutoFlushScheduler( + interval: interval, + client: recordClient, + )..start(), + FlushNone() => null, + }; + + return AmplifyKinesisClient._( + region: region, + options: opts, + recordClient: recordClient, + kinesisClient: kinesisClient, + scheduler: scheduler, + ); + } + + final String _region; + final AmplifyKinesisClientOptions _options; + final RecordClient _recordClient; + final KinesisClient? _kinesisClient; + final Logger _logger; + final AutoFlushScheduler? _scheduler; + bool _enabled = true; + bool _closed = false; + + /// The AWS region for this client. + String get region => _region; + + /// The configuration options for this client. + AmplifyKinesisClientOptions get options => _options; + + /// Whether the client is currently enabled. + bool get isEnabled => _enabled; + + /// Whether the client has been closed. + bool get isClosed => _closed; + + /// Direct access to the underlying Kinesis SDK client. + /// + /// Use this for advanced operations not covered by this client's API. + /// + /// Note: This getter is only available when the client was created with + /// [create] (not [AmplifyKinesisClient.withRecordClient]). + KinesisClient get kinesisClient { + final client = _kinesisClient; + if (client == null) { + throw StateError( + 'kinesisClient is not available on clients created with ' + 'withRecordClient.', + ); + } + return client; + } + + /// Records data to be sent to a Kinesis Data Stream. + /// + /// The record is persisted to local storage and will be sent during + /// the next flush operation (automatic or manual). + /// + /// Returns [Result.ok] with [RecordData] on success, or [Result.error] with: + /// - [KinesisValidationException] for invalid input (e.g. oversized record, + /// empty or too-long partition key) + /// - [KinesisLimitExceededException] if the cache is full + /// - [KinesisStorageException] for database errors + /// + /// Returns [Result.ok] silently if the client is disabled. + Future> record({ + required Uint8List data, + required String partitionKey, + required String streamName, + }) async { + if (_closed) return const Result.error(ClientClosedException()); + if (!isEnabled) { + _logger.debug('Record collection is disabled, dropping record'); + return const Result.ok(RecordData()); + } + _logger.verbose('Recording to stream: $streamName'); + final kinesisRecord = RecordInput.now( + data: data, + partitionKey: partitionKey, + streamName: streamName, + ); + return _wrapError(() => _recordClient.record(kinesisRecord)); + } + + /// Flushes cached records to their respective Kinesis streams. + /// + /// Each invocation sends at most one batch per stream, limited by the Kinesis + /// `PutRecords` constraints (up to 500 records or 5 MB per stream). If the + /// cache contains more records than a single batch can hold, the remaining + /// records are sent on subsequent flush invocations — either manually or via + /// the auto-flush scheduler. + /// + /// Records that fail within a batch are marked for retry on the next flush. + /// Records that exceed [AmplifyKinesisClientOptions.maxRetries] are removed + /// from the cache. + /// + /// SDK Kinesis errors (throttling, invalid stream, etc.) are logged and + /// skipped so other streams can still flush. Non-SDK errors (e.g. network, + /// storage) abort the flush and are returned as [Result.error]. + /// + /// If a flush is already in progress, the call returns immediately with + /// `FlushData(recordsFlushed: 0, flushInProgress: true)`. + /// + /// Manual flushes are allowed even when the client is disabled, so that + /// callers can drain cached records without re-enabling collection. + /// Only the automatic flush scheduler is paused when disabled. + Future> flush() async { + if (_closed) return const Result.error(ClientClosedException()); + _logger.verbose('Starting flush'); + return _wrapError(_recordClient.flush); + } + + /// Clears all cached records from local storage. + /// + /// Returns [Result.ok] with [ClearCacheData] containing the count of + /// records cleared, or [Result.error] with: + /// - [KinesisStorageException] for database errors + Future> clearCache() async { + if (_closed) return const Result.error(ClientClosedException()); + _logger.verbose('Clearing cache'); + return _wrapError(_recordClient.clearCache); + } + + /// Enables the client to accept and flush records. + void enable() { + _logger.info('Enabling record collection and automatic flushing'); + _enabled = true; + _scheduler?.start(); + } + + /// Disables record collection and automatic flushing. + /// + /// Records submitted while disabled are silently dropped. Already-cached + /// records remain in storage and will be sent on the next flush after + /// re-enabling. + void disable() { + _logger.info('Disabling record collection and automatic flushing'); + _enabled = false; + _scheduler?.stop(); + } + + /// Closes the client and releases all resources. + /// + /// The client cannot be reused after closing. + Future close() async { + _closed = true; + _scheduler?.stop(); + await _recordClient.close(); + } + + /// Wraps an async operation, catching any exceptions and returning them + /// as [Result.error] with the appropriate [AmplifyKinesisException] + /// subtype. + Future> _wrapError(Future Function() operation) async { + try { + final value = await operation(); + return Result.ok(value); + } on Object catch (e) { + final wrapped = AmplifyKinesisException.from(e); + _logger.warn('Operation failed: ${wrapped.message}', e); + return Result.error(wrapped); + } + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/amplify_kinesis_client_options.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/amplify_kinesis_client_options.dart new file mode 100644 index 00000000000..c2b896be47f --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/amplify_kinesis_client_options.dart @@ -0,0 +1,33 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'package:amplify_kinesis_dart/src/amplify_kinesis_client.dart' + show AmplifyKinesisClient; +import 'package:amplify_kinesis_dart/src/flush_strategy/flush_strategy.dart'; + +/// {@template amplify_kinesis.amplify_kinesis_client_options} +/// Configuration options for [AmplifyKinesisClient]. +/// {@endtemplate} +final class AmplifyKinesisClientOptions { + /// {@macro amplify_kinesis.amplify_kinesis_client_options} + const AmplifyKinesisClientOptions({ + this.cacheMaxBytes = 5 * 1024 * 1024, + this.maxRetries = 5, + this.flushStrategy = const FlushInterval(), + }); + + /// Maximum size of the local cache in bytes. + /// + /// Defaults to 5 MB. + final int cacheMaxBytes; + + /// Maximum number of retry attempts for failed records. + /// + /// Defaults to 5. + final int maxRetries; + + /// Strategy for automatic flushing of cached records. + /// + /// Defaults to [FlushInterval] with a 30-second interval. + final FlushStrategy flushStrategy; +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/db/kinesis_record_database.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/db/kinesis_record_database.dart new file mode 100644 index 00000000000..3f72a6da0b2 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/db/kinesis_record_database.dart @@ -0,0 +1,84 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'dart:async'; + +import 'package:amplify_db_common_dart/amplify_db_common_dart.dart'; +import 'package:drift/drift.dart'; + +part 'kinesis_record_database.g.dart'; + +/// Schema of the KinesisRecords table in SQLite. +/// +/// When updating this schema, please bump [KinesisRecordDatabase.schemaVersion]. +@DataClassName('DriftStoredRecord') +class KinesisRecords extends Table { + /// Auto-incrementing primary key. + IntColumn get id => integer().autoIncrement()(); + + /// The name of the Kinesis Data Stream. + TextColumn get streamName => text()(); + + /// The partition key for the record. + TextColumn get partitionKey => text()(); + + /// The data blob to send to Kinesis. + BlobColumn get data => blob()(); + + /// The size of the data blob in bytes. + IntColumn get dataSize => integer()(); + + /// The number of times this record has been retried. + IntColumn get retryCount => integer().withDefault(const Constant(0))(); + + /// Unix timestamp of when the record was created. + IntColumn get createdAt => integer()(); +} + +/// {@template amplify_kinesis.kinesis_record_database} +/// Drift database for managing stored Kinesis records. +/// {@endtemplate} +@DriftDatabase(tables: [KinesisRecords]) +class KinesisRecordDatabase extends _$KinesisRecordDatabase { + /// {@macro amplify_kinesis.kinesis_record_database} + /// + /// [identifier] is used to namespace the database (typically the AWS region). + /// [storagePath] is the directory path for the database file + factory KinesisRecordDatabase({ + required String identifier, + required FutureOr? storagePath, + }) { + final driftQueryExecutor = connect( + name: 'kinesis_records_$identifier', + path: storagePath, + ); + return KinesisRecordDatabase._(driftQueryExecutor); + } + + /// Creates a database with a custom query executor (for testing). + KinesisRecordDatabase.forTesting(super.executor); + + KinesisRecordDatabase._(super.driftQueryExecutor); + + // Bump this number whenever you change or add a table definition. + @override + int get schemaVersion => 1; + + @override + MigrationStrategy get migration { + return MigrationStrategy( + onCreate: (Migrator m) async { + await m.createAll(); + // Indices matching the Android schema. + await customStatement( + 'CREATE INDEX IF NOT EXISTS idx_stream_id ' + 'ON kinesis_records(stream_name, id)', + ); + await customStatement( + 'CREATE INDEX IF NOT EXISTS idx_data_size ' + 'ON kinesis_records(data_size)', + ); + }, + ); + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/db/kinesis_record_database.g.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/db/kinesis_record_database.g.dart new file mode 100644 index 00000000000..e76bbb21b87 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/db/kinesis_record_database.g.dart @@ -0,0 +1,745 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'kinesis_record_database.dart'; + +// ignore_for_file: type=lint +class $KinesisRecordsTable extends KinesisRecords + with TableInfo<$KinesisRecordsTable, DriftStoredRecord> { + @override + final GeneratedDatabase attachedDatabase; + final String? _alias; + $KinesisRecordsTable(this.attachedDatabase, [this._alias]); + static const VerificationMeta _idMeta = const VerificationMeta('id'); + @override + late final GeneratedColumn id = GeneratedColumn( + 'id', + aliasedName, + false, + hasAutoIncrement: true, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultConstraints: GeneratedColumn.constraintIsAlways( + 'PRIMARY KEY AUTOINCREMENT', + ), + ); + static const VerificationMeta _streamNameMeta = const VerificationMeta( + 'streamName', + ); + @override + late final GeneratedColumn streamName = GeneratedColumn( + 'stream_name', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _partitionKeyMeta = const VerificationMeta( + 'partitionKey', + ); + @override + late final GeneratedColumn partitionKey = GeneratedColumn( + 'partition_key', + aliasedName, + false, + type: DriftSqlType.string, + requiredDuringInsert: true, + ); + static const VerificationMeta _dataMeta = const VerificationMeta('data'); + @override + late final GeneratedColumn data = GeneratedColumn( + 'data', + aliasedName, + false, + type: DriftSqlType.blob, + requiredDuringInsert: true, + ); + static const VerificationMeta _dataSizeMeta = const VerificationMeta( + 'dataSize', + ); + @override + late final GeneratedColumn dataSize = GeneratedColumn( + 'data_size', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: true, + ); + static const VerificationMeta _retryCountMeta = const VerificationMeta( + 'retryCount', + ); + @override + late final GeneratedColumn retryCount = GeneratedColumn( + 'retry_count', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: false, + defaultValue: const Constant(0), + ); + static const VerificationMeta _createdAtMeta = const VerificationMeta( + 'createdAt', + ); + @override + late final GeneratedColumn createdAt = GeneratedColumn( + 'created_at', + aliasedName, + false, + type: DriftSqlType.int, + requiredDuringInsert: true, + ); + @override + List get $columns => [ + id, + streamName, + partitionKey, + data, + dataSize, + retryCount, + createdAt, + ]; + @override + String get aliasedName => _alias ?? actualTableName; + @override + String get actualTableName => $name; + static const String $name = 'kinesis_records'; + @override + VerificationContext validateIntegrity( + Insertable instance, { + bool isInserting = false, + }) { + final context = VerificationContext(); + final data = instance.toColumns(true); + if (data.containsKey('id')) { + context.handle(_idMeta, id.isAcceptableOrUnknown(data['id']!, _idMeta)); + } + if (data.containsKey('stream_name')) { + context.handle( + _streamNameMeta, + streamName.isAcceptableOrUnknown(data['stream_name']!, _streamNameMeta), + ); + } else if (isInserting) { + context.missing(_streamNameMeta); + } + if (data.containsKey('partition_key')) { + context.handle( + _partitionKeyMeta, + partitionKey.isAcceptableOrUnknown( + data['partition_key']!, + _partitionKeyMeta, + ), + ); + } else if (isInserting) { + context.missing(_partitionKeyMeta); + } + if (data.containsKey('data')) { + context.handle( + _dataMeta, + this.data.isAcceptableOrUnknown(data['data']!, _dataMeta), + ); + } else if (isInserting) { + context.missing(_dataMeta); + } + if (data.containsKey('data_size')) { + context.handle( + _dataSizeMeta, + dataSize.isAcceptableOrUnknown(data['data_size']!, _dataSizeMeta), + ); + } else if (isInserting) { + context.missing(_dataSizeMeta); + } + if (data.containsKey('retry_count')) { + context.handle( + _retryCountMeta, + retryCount.isAcceptableOrUnknown(data['retry_count']!, _retryCountMeta), + ); + } + if (data.containsKey('created_at')) { + context.handle( + _createdAtMeta, + createdAt.isAcceptableOrUnknown(data['created_at']!, _createdAtMeta), + ); + } else if (isInserting) { + context.missing(_createdAtMeta); + } + return context; + } + + @override + Set get $primaryKey => {id}; + @override + DriftStoredRecord map(Map data, {String? tablePrefix}) { + final effectivePrefix = tablePrefix != null ? '$tablePrefix.' : ''; + return DriftStoredRecord( + id: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}id'], + )!, + streamName: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}stream_name'], + )!, + partitionKey: attachedDatabase.typeMapping.read( + DriftSqlType.string, + data['${effectivePrefix}partition_key'], + )!, + data: attachedDatabase.typeMapping.read( + DriftSqlType.blob, + data['${effectivePrefix}data'], + )!, + dataSize: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}data_size'], + )!, + retryCount: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}retry_count'], + )!, + createdAt: attachedDatabase.typeMapping.read( + DriftSqlType.int, + data['${effectivePrefix}created_at'], + )!, + ); + } + + @override + $KinesisRecordsTable createAlias(String alias) { + return $KinesisRecordsTable(attachedDatabase, alias); + } +} + +class DriftStoredRecord extends DataClass + implements Insertable { + /// Auto-incrementing primary key. + final int id; + + /// The name of the Kinesis Data Stream. + final String streamName; + + /// The partition key for the record. + final String partitionKey; + + /// The data blob to send to Kinesis. + final Uint8List data; + + /// The size of the data blob in bytes. + final int dataSize; + + /// The number of times this record has been retried. + final int retryCount; + + /// Unix timestamp of when the record was created. + final int createdAt; + const DriftStoredRecord({ + required this.id, + required this.streamName, + required this.partitionKey, + required this.data, + required this.dataSize, + required this.retryCount, + required this.createdAt, + }); + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + map['id'] = Variable(id); + map['stream_name'] = Variable(streamName); + map['partition_key'] = Variable(partitionKey); + map['data'] = Variable(data); + map['data_size'] = Variable(dataSize); + map['retry_count'] = Variable(retryCount); + map['created_at'] = Variable(createdAt); + return map; + } + + KinesisRecordsCompanion toCompanion(bool nullToAbsent) { + return KinesisRecordsCompanion( + id: Value(id), + streamName: Value(streamName), + partitionKey: Value(partitionKey), + data: Value(data), + dataSize: Value(dataSize), + retryCount: Value(retryCount), + createdAt: Value(createdAt), + ); + } + + factory DriftStoredRecord.fromJson( + Map json, { + ValueSerializer? serializer, + }) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return DriftStoredRecord( + id: serializer.fromJson(json['id']), + streamName: serializer.fromJson(json['streamName']), + partitionKey: serializer.fromJson(json['partitionKey']), + data: serializer.fromJson(json['data']), + dataSize: serializer.fromJson(json['dataSize']), + retryCount: serializer.fromJson(json['retryCount']), + createdAt: serializer.fromJson(json['createdAt']), + ); + } + @override + Map toJson({ValueSerializer? serializer}) { + serializer ??= driftRuntimeOptions.defaultSerializer; + return { + 'id': serializer.toJson(id), + 'streamName': serializer.toJson(streamName), + 'partitionKey': serializer.toJson(partitionKey), + 'data': serializer.toJson(data), + 'dataSize': serializer.toJson(dataSize), + 'retryCount': serializer.toJson(retryCount), + 'createdAt': serializer.toJson(createdAt), + }; + } + + DriftStoredRecord copyWith({ + int? id, + String? streamName, + String? partitionKey, + Uint8List? data, + int? dataSize, + int? retryCount, + int? createdAt, + }) => DriftStoredRecord( + id: id ?? this.id, + streamName: streamName ?? this.streamName, + partitionKey: partitionKey ?? this.partitionKey, + data: data ?? this.data, + dataSize: dataSize ?? this.dataSize, + retryCount: retryCount ?? this.retryCount, + createdAt: createdAt ?? this.createdAt, + ); + DriftStoredRecord copyWithCompanion(KinesisRecordsCompanion data) { + return DriftStoredRecord( + id: data.id.present ? data.id.value : this.id, + streamName: data.streamName.present + ? data.streamName.value + : this.streamName, + partitionKey: data.partitionKey.present + ? data.partitionKey.value + : this.partitionKey, + data: data.data.present ? data.data.value : this.data, + dataSize: data.dataSize.present ? data.dataSize.value : this.dataSize, + retryCount: data.retryCount.present + ? data.retryCount.value + : this.retryCount, + createdAt: data.createdAt.present ? data.createdAt.value : this.createdAt, + ); + } + + @override + String toString() { + return (StringBuffer('DriftStoredRecord(') + ..write('id: $id, ') + ..write('streamName: $streamName, ') + ..write('partitionKey: $partitionKey, ') + ..write('data: $data, ') + ..write('dataSize: $dataSize, ') + ..write('retryCount: $retryCount, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } + + @override + int get hashCode => Object.hash( + id, + streamName, + partitionKey, + $driftBlobEquality.hash(data), + dataSize, + retryCount, + createdAt, + ); + @override + bool operator ==(Object other) => + identical(this, other) || + (other is DriftStoredRecord && + other.id == this.id && + other.streamName == this.streamName && + other.partitionKey == this.partitionKey && + $driftBlobEquality.equals(other.data, this.data) && + other.dataSize == this.dataSize && + other.retryCount == this.retryCount && + other.createdAt == this.createdAt); +} + +class KinesisRecordsCompanion extends UpdateCompanion { + final Value id; + final Value streamName; + final Value partitionKey; + final Value data; + final Value dataSize; + final Value retryCount; + final Value createdAt; + const KinesisRecordsCompanion({ + this.id = const Value.absent(), + this.streamName = const Value.absent(), + this.partitionKey = const Value.absent(), + this.data = const Value.absent(), + this.dataSize = const Value.absent(), + this.retryCount = const Value.absent(), + this.createdAt = const Value.absent(), + }); + KinesisRecordsCompanion.insert({ + this.id = const Value.absent(), + required String streamName, + required String partitionKey, + required Uint8List data, + required int dataSize, + this.retryCount = const Value.absent(), + required int createdAt, + }) : streamName = Value(streamName), + partitionKey = Value(partitionKey), + data = Value(data), + dataSize = Value(dataSize), + createdAt = Value(createdAt); + static Insertable custom({ + Expression? id, + Expression? streamName, + Expression? partitionKey, + Expression? data, + Expression? dataSize, + Expression? retryCount, + Expression? createdAt, + }) { + return RawValuesInsertable({ + if (id != null) 'id': id, + if (streamName != null) 'stream_name': streamName, + if (partitionKey != null) 'partition_key': partitionKey, + if (data != null) 'data': data, + if (dataSize != null) 'data_size': dataSize, + if (retryCount != null) 'retry_count': retryCount, + if (createdAt != null) 'created_at': createdAt, + }); + } + + KinesisRecordsCompanion copyWith({ + Value? id, + Value? streamName, + Value? partitionKey, + Value? data, + Value? dataSize, + Value? retryCount, + Value? createdAt, + }) { + return KinesisRecordsCompanion( + id: id ?? this.id, + streamName: streamName ?? this.streamName, + partitionKey: partitionKey ?? this.partitionKey, + data: data ?? this.data, + dataSize: dataSize ?? this.dataSize, + retryCount: retryCount ?? this.retryCount, + createdAt: createdAt ?? this.createdAt, + ); + } + + @override + Map toColumns(bool nullToAbsent) { + final map = {}; + if (id.present) { + map['id'] = Variable(id.value); + } + if (streamName.present) { + map['stream_name'] = Variable(streamName.value); + } + if (partitionKey.present) { + map['partition_key'] = Variable(partitionKey.value); + } + if (data.present) { + map['data'] = Variable(data.value); + } + if (dataSize.present) { + map['data_size'] = Variable(dataSize.value); + } + if (retryCount.present) { + map['retry_count'] = Variable(retryCount.value); + } + if (createdAt.present) { + map['created_at'] = Variable(createdAt.value); + } + return map; + } + + @override + String toString() { + return (StringBuffer('KinesisRecordsCompanion(') + ..write('id: $id, ') + ..write('streamName: $streamName, ') + ..write('partitionKey: $partitionKey, ') + ..write('data: $data, ') + ..write('dataSize: $dataSize, ') + ..write('retryCount: $retryCount, ') + ..write('createdAt: $createdAt') + ..write(')')) + .toString(); + } +} + +abstract class _$KinesisRecordDatabase extends GeneratedDatabase { + _$KinesisRecordDatabase(QueryExecutor e) : super(e); + $KinesisRecordDatabaseManager get managers => + $KinesisRecordDatabaseManager(this); + late final $KinesisRecordsTable kinesisRecords = $KinesisRecordsTable(this); + @override + Iterable> get allTables => + allSchemaEntities.whereType>(); + @override + List get allSchemaEntities => [kinesisRecords]; +} + +typedef $$KinesisRecordsTableCreateCompanionBuilder = + KinesisRecordsCompanion Function({ + Value id, + required String streamName, + required String partitionKey, + required Uint8List data, + required int dataSize, + Value retryCount, + required int createdAt, + }); +typedef $$KinesisRecordsTableUpdateCompanionBuilder = + KinesisRecordsCompanion Function({ + Value id, + Value streamName, + Value partitionKey, + Value data, + Value dataSize, + Value retryCount, + Value createdAt, + }); + +class $$KinesisRecordsTableFilterComposer + extends Composer<_$KinesisRecordDatabase, $KinesisRecordsTable> { + $$KinesisRecordsTableFilterComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnFilters get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get streamName => $composableBuilder( + column: $table.streamName, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get partitionKey => $composableBuilder( + column: $table.partitionKey, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get data => $composableBuilder( + column: $table.data, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get dataSize => $composableBuilder( + column: $table.dataSize, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get retryCount => $composableBuilder( + column: $table.retryCount, + builder: (column) => ColumnFilters(column), + ); + + ColumnFilters get createdAt => $composableBuilder( + column: $table.createdAt, + builder: (column) => ColumnFilters(column), + ); +} + +class $$KinesisRecordsTableOrderingComposer + extends Composer<_$KinesisRecordDatabase, $KinesisRecordsTable> { + $$KinesisRecordsTableOrderingComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + ColumnOrderings get id => $composableBuilder( + column: $table.id, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get streamName => $composableBuilder( + column: $table.streamName, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get partitionKey => $composableBuilder( + column: $table.partitionKey, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get data => $composableBuilder( + column: $table.data, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get dataSize => $composableBuilder( + column: $table.dataSize, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get retryCount => $composableBuilder( + column: $table.retryCount, + builder: (column) => ColumnOrderings(column), + ); + + ColumnOrderings get createdAt => $composableBuilder( + column: $table.createdAt, + builder: (column) => ColumnOrderings(column), + ); +} + +class $$KinesisRecordsTableAnnotationComposer + extends Composer<_$KinesisRecordDatabase, $KinesisRecordsTable> { + $$KinesisRecordsTableAnnotationComposer({ + required super.$db, + required super.$table, + super.joinBuilder, + super.$addJoinBuilderToRootComposer, + super.$removeJoinBuilderFromRootComposer, + }); + GeneratedColumn get id => + $composableBuilder(column: $table.id, builder: (column) => column); + + GeneratedColumn get streamName => $composableBuilder( + column: $table.streamName, + builder: (column) => column, + ); + + GeneratedColumn get partitionKey => $composableBuilder( + column: $table.partitionKey, + builder: (column) => column, + ); + + GeneratedColumn get data => + $composableBuilder(column: $table.data, builder: (column) => column); + + GeneratedColumn get dataSize => + $composableBuilder(column: $table.dataSize, builder: (column) => column); + + GeneratedColumn get retryCount => $composableBuilder( + column: $table.retryCount, + builder: (column) => column, + ); + + GeneratedColumn get createdAt => + $composableBuilder(column: $table.createdAt, builder: (column) => column); +} + +class $$KinesisRecordsTableTableManager + extends + RootTableManager< + _$KinesisRecordDatabase, + $KinesisRecordsTable, + DriftStoredRecord, + $$KinesisRecordsTableFilterComposer, + $$KinesisRecordsTableOrderingComposer, + $$KinesisRecordsTableAnnotationComposer, + $$KinesisRecordsTableCreateCompanionBuilder, + $$KinesisRecordsTableUpdateCompanionBuilder, + ( + DriftStoredRecord, + BaseReferences< + _$KinesisRecordDatabase, + $KinesisRecordsTable, + DriftStoredRecord + >, + ), + DriftStoredRecord, + PrefetchHooks Function() + > { + $$KinesisRecordsTableTableManager( + _$KinesisRecordDatabase db, + $KinesisRecordsTable table, + ) : super( + TableManagerState( + db: db, + table: table, + createFilteringComposer: () => + $$KinesisRecordsTableFilterComposer($db: db, $table: table), + createOrderingComposer: () => + $$KinesisRecordsTableOrderingComposer($db: db, $table: table), + createComputedFieldComposer: () => + $$KinesisRecordsTableAnnotationComposer($db: db, $table: table), + updateCompanionCallback: + ({ + Value id = const Value.absent(), + Value streamName = const Value.absent(), + Value partitionKey = const Value.absent(), + Value data = const Value.absent(), + Value dataSize = const Value.absent(), + Value retryCount = const Value.absent(), + Value createdAt = const Value.absent(), + }) => KinesisRecordsCompanion( + id: id, + streamName: streamName, + partitionKey: partitionKey, + data: data, + dataSize: dataSize, + retryCount: retryCount, + createdAt: createdAt, + ), + createCompanionCallback: + ({ + Value id = const Value.absent(), + required String streamName, + required String partitionKey, + required Uint8List data, + required int dataSize, + Value retryCount = const Value.absent(), + required int createdAt, + }) => KinesisRecordsCompanion.insert( + id: id, + streamName: streamName, + partitionKey: partitionKey, + data: data, + dataSize: dataSize, + retryCount: retryCount, + createdAt: createdAt, + ), + withReferenceMapper: (p0) => p0 + .map((e) => (e.readTable(table), BaseReferences(db, table, e))) + .toList(), + prefetchHooksCallback: null, + ), + ); +} + +typedef $$KinesisRecordsTableProcessedTableManager = + ProcessedTableManager< + _$KinesisRecordDatabase, + $KinesisRecordsTable, + DriftStoredRecord, + $$KinesisRecordsTableFilterComposer, + $$KinesisRecordsTableOrderingComposer, + $$KinesisRecordsTableAnnotationComposer, + $$KinesisRecordsTableCreateCompanionBuilder, + $$KinesisRecordsTableUpdateCompanionBuilder, + ( + DriftStoredRecord, + BaseReferences< + _$KinesisRecordDatabase, + $KinesisRecordsTable, + DriftStoredRecord + >, + ), + DriftStoredRecord, + PrefetchHooks Function() + >; + +class $KinesisRecordDatabaseManager { + final _$KinesisRecordDatabase _db; + $KinesisRecordDatabaseManager(this._db); + $$KinesisRecordsTableTableManager get kinesisRecords => + $$KinesisRecordsTableTableManager(_db, _db.kinesisRecords); +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/exception/amplify_kinesis_exception.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/exception/amplify_kinesis_exception.dart new file mode 100644 index 00000000000..815649bca50 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/exception/amplify_kinesis_exception.dart @@ -0,0 +1,118 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'package:amplify_core/amplify_core.dart'; +import 'package:amplify_kinesis_dart/src/exception/record_cache_exception.dart'; + +/// Default recovery suggestion for errors. +const String defaultRecoverySuggestion = + 'Inspect the underlying error for more details.'; + +/// {@template amplify_kinesis.amplify_kinesis_exception} +/// Base exception for Amplify Kinesis Data Streams errors. +/// {@endtemplate} +sealed class AmplifyKinesisException extends AmplifyException { + /// {@macro amplify_kinesis.amplify_kinesis_exception} + const AmplifyKinesisException( + super.message, { + super.recoverySuggestion, + super.underlyingException, + }); + + /// Maps an arbitrary error into the appropriate [AmplifyKinesisException] + /// subtype. If [error] is already an [AmplifyKinesisException], it is + /// returned as-is. [RecordCacheException] subtypes are mapped to their + /// corresponding public exception types. + static AmplifyKinesisException from(Object error) => switch (error) { + final AmplifyKinesisException e => e, + final RecordCacheValidationException e => KinesisValidationException( + e.message, + recoverySuggestion: e.recoverySuggestion, + ), + final RecordCacheLimitExceededException e => KinesisLimitExceededException( + message: e.message, + recoverySuggestion: e.recoverySuggestion, + ), + final RecordCacheDatabaseException e => KinesisStorageException( + e.message, + recoverySuggestion: e.recoverySuggestion, + underlyingException: e.cause, + ), + final Exception e => KinesisUnknownException( + e.toString(), + underlyingException: e, + ), + _ => KinesisUnknownException(error.toString()), + }; +} + +/// {@template amplify_kinesis.kinesis_storage_exception} +/// Thrown when a local cache/database error occurs. +/// {@endtemplate} +final class KinesisStorageException extends AmplifyKinesisException { + /// {@macro amplify_kinesis.kinesis_storage_exception} + const KinesisStorageException( + super.message, { + super.recoverySuggestion, + super.underlyingException, + }); + + @override + String get runtimeTypeName => 'KinesisStorageException'; +} + +/// {@template amplify_kinesis.kinesis_limit_exceeded_exception} +/// Thrown when the local cache is full. +/// {@endtemplate} +final class KinesisLimitExceededException extends AmplifyKinesisException { + /// {@macro amplify_kinesis.kinesis_limit_exceeded_exception} + const KinesisLimitExceededException({ + String? message, + String? recoverySuggestion, + }) : super( + message ?? 'Cache is full', + recoverySuggestion: + recoverySuggestion ?? 'Call flush() or clearCache().', + ); + + @override + String get runtimeTypeName => 'KinesisLimitExceededException'; +} + +/// {@template amplify_kinesis.kinesis_validation_exception} +/// Thrown when record input validation fails (e.g. oversized record, +/// invalid partition key). +/// {@endtemplate} +final class KinesisValidationException extends AmplifyKinesisException { + /// {@macro amplify_kinesis.kinesis_validation_exception} + const KinesisValidationException(super.message, {super.recoverySuggestion}); + + @override + String get runtimeTypeName => 'KinesisValidationException'; +} + +/// {@template amplify_kinesis.kinesis_unknown_exception} +/// Catch-all for unexpected errors. +/// {@endtemplate} +final class KinesisUnknownException extends AmplifyKinesisException { + /// {@macro amplify_kinesis.kinesis_unknown_exception} + const KinesisUnknownException(super.message, {super.underlyingException}); + + @override + String get runtimeTypeName => 'KinesisUnknownException'; +} + +/// {@template amplify_kinesis.client_closed_exception} +/// Thrown when an operation is attempted on a closed client. +/// {@endtemplate} +final class ClientClosedException extends AmplifyKinesisException { + /// {@macro amplify_kinesis.client_closed_exception} + const ClientClosedException() + : super( + 'Client has been closed', + recoverySuggestion: 'Create a new AmplifyKinesisClient instance.', + ); + + @override + String get runtimeTypeName => 'ClientClosedException'; +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/exception/record_cache_exception.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/exception/record_cache_exception.dart new file mode 100644 index 00000000000..969cd892d2d --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/exception/record_cache_exception.dart @@ -0,0 +1,58 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// Internal error type used by RecordClient / RecordStorage. +/// +/// Mapped to the public AmplifyKinesisException hierarchy at the +/// AmplifyKinesisClient boundary via `AmplifyKinesisException.from`. +sealed class RecordCacheException implements Exception { + /// Creates a [RecordCacheException]. + RecordCacheException(this.message, this.recoverySuggestion, [this.cause]); + + /// A message describing the error. + final String message; + + /// A suggestion for how to recover from the error. + final String recoverySuggestion; + + /// The underlying cause of the error, if any. + final Object? cause; + + @override + String toString() { + final buf = StringBuffer('RecordCacheException: $message'); + if (cause != null) buf.write('\nCaused by: $cause'); + return buf.toString(); + } +} + +/// Database operation failed. +final class RecordCacheDatabaseException extends RecordCacheException { + /// Creates a [RecordCacheDatabaseException]. + RecordCacheDatabaseException( + super.message, + super.recoverySuggestion, [ + super.cause, + ]); +} + +/// Cache limit exceeded — no space for new records. +final class RecordCacheLimitExceededException extends RecordCacheException { + /// Creates a [RecordCacheLimitExceededException]. + RecordCacheLimitExceededException( + super.message, + super.recoverySuggestion, [ + super.cause, + ]); +} + +/// Record input validation failed (e.g. oversized record, invalid partition +/// key). +final class RecordCacheValidationException extends RecordCacheException { + /// Creates a [RecordCacheValidationException]. + RecordCacheValidationException( + super.message, + super.recoverySuggestion, [ + super.cause, + ]); +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/flush_strategy/flush_strategy.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/flush_strategy/flush_strategy.dart new file mode 100644 index 00000000000..63b0c62135d --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/flush_strategy/flush_strategy.dart @@ -0,0 +1,33 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// {@template amplify_kinesis.flush_strategy} +/// Determines when automatic flushing of cached records occurs. +/// +/// Available strategies: +/// - [FlushInterval]: Flush at a fixed time interval (default 30s) +/// - [FlushNone]: Disable automatic flushing entirely +/// {@endtemplate} +sealed class FlushStrategy { + /// {@macro amplify_kinesis.flush_strategy} + const FlushStrategy(); +} + +/// {@template amplify_kinesis.interval_flush_strategy} +/// A flush strategy that triggers automatic flushes at a fixed interval. +/// {@endtemplate} +final class FlushInterval extends FlushStrategy { + /// {@macro amplify_kinesis.interval_flush_strategy} + const FlushInterval({this.interval = const Duration(seconds: 30)}); + + /// The interval between automatic flush operations. + final Duration interval; +} + +/// {@template amplify_kinesis.none_flush_strategy} +/// A flush strategy that disables automatic flushing. +/// {@endtemplate} +final class FlushNone extends FlushStrategy { + /// {@macro amplify_kinesis.none_flush_strategy} + const FlushNone(); +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/impl/auto_flush_scheduler.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/auto_flush_scheduler.dart new file mode 100644 index 00000000000..3332abfa806 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/auto_flush_scheduler.dart @@ -0,0 +1,63 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'dart:async'; + +import 'package:amplify_foundation_dart/amplify_foundation_dart.dart'; +import 'package:amplify_kinesis_dart/src/impl/record_client.dart'; + +/// {@template amplify_kinesis.auto_flush_scheduler} +/// Manages automatic flush scheduling at a fixed interval. +/// +/// Takes a [Duration] interval and a [RecordClient]. +/// Has `start()` and `stop()` methods, and uses a delay-loop so the next +/// interval doesn't start until the current flush completes. +/// +/// Each call to [start] cancels any previously running loop before launching +/// a new one, preventing duplicate concurrent loops. +/// {@endtemplate} +final class AutoFlushScheduler { + /// {@macro amplify_kinesis.auto_flush_scheduler} + AutoFlushScheduler({required Duration interval, required RecordClient client}) + : _interval = interval, + _client = client; + + final Duration _interval; + final RecordClient _client; + final Logger _logger = AmplifyLogging.logger('AutoFlushScheduler'); + Completer? _cancellation; + + /// Starts the scheduler. If already running, cancels the previous loop + /// and starts a new one. + void start() { + _cancellation?.complete(); + final token = Completer(); + _cancellation = token; + unawaited(_run(token)); + } + + /// Stops the scheduler. + void stop() { + _cancellation?.complete(); + _cancellation = null; + } + + /// Delay-loop: wait for the interval, flush, repeat. + /// The next delay doesn't start until the flush completes. + /// The loop exits when [token] is completed. + Future _run(Completer token) async { + while (!token.isCompleted) { + await Future.any([Future.delayed(_interval), token.future]); + if (token.isCompleted) break; + try { + final result = await _client.flush(); + _logger.debug( + 'Auto-flush completed: ${result.recordsFlushed} records flushed', + ); + } on Object catch (e) { + // Defensive catch to prevent scheduler from crashing. + _logger.warn('Auto-flush failed', e); + } + } + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/impl/kinesis_record.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/kinesis_record.dart new file mode 100644 index 00000000000..e1bb025c2fe --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/kinesis_record.dart @@ -0,0 +1,49 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'dart:convert'; +import 'dart:typed_data'; + +/// Internal representation of a record to be sent to Kinesis. +final class RecordInput { + /// Creates a new Kinesis record. + RecordInput({ + required this.data, + required this.partitionKey, + required this.streamName, + required this.createdAt, + }) : dataSize = data.length + utf8.encode(partitionKey).length; + + /// Creates a Kinesis record with the current timestamp. + factory RecordInput.now({ + required Uint8List data, + required String partitionKey, + required String streamName, + }) { + return RecordInput( + data: data, + partitionKey: partitionKey, + streamName: streamName, + createdAt: DateTime.now(), + ); + } + + /// The data blob to send to Kinesis. + final Uint8List data; + + /// The partition key for the record. + final String partitionKey; + + /// The name of the Kinesis Data Stream. + final String streamName; + + /// The size of the record in bytes (data blob + partition key). + /// + /// Per AWS docs, the record size limit applies to the total size of the + /// partition key and data blob combined. Computed once at construction + /// to avoid repeated UTF-8 encoding of the partition key. + final int dataSize; + + /// Timestamp of when the record was created. + final DateTime createdAt; +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/impl/kinesis_sender.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/kinesis_sender.dart new file mode 100644 index 00000000000..a33eefb3fa1 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/kinesis_sender.dart @@ -0,0 +1,120 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'package:amplify_kinesis_dart/src/model/record.dart'; +import 'package:amplify_kinesis_dart/src/sdk/kinesis.dart'; + +/// Result of a PutRecords operation. +/// +/// Records are categorized into three buckets: +/// - [successfulIds]: records that were accepted by Kinesis. +/// - [retryableIds]: records that failed with any error code but have not +/// yet exceeded the retry limit. These will be retried in the next flush. +/// - [failedIds]: records that have exceeded the retry limit and should be +/// deleted from the cache. +final class PutRecordsResult { + /// Creates a new [PutRecordsResult]. + const PutRecordsResult({ + required this.successfulIds, + required this.retryableIds, + required this.failedIds, + }); + + /// IDs of records that were successfully sent. + final List successfulIds; + + /// IDs of records that failed but can be retried (retry count < max). + final List retryableIds; + + /// IDs of records that exceeded the retry limit and should be deleted. + final List failedIds; +} + +/// {@template amplify_kinesis.kinesis_sender} +/// Handles communication with AWS Kinesis Data Streams. +/// +/// Takes a pre-configured [KinesisClient] and owns the retry-count +/// categorization so that all error codes are treated as retryable +/// until the record exceeds `maxRetries`. +/// {@endtemplate} +class KinesisSender { + /// {@macro amplify_kinesis.kinesis_sender} + KinesisSender({required KinesisClient kinesisClient, required int maxRetries}) + : _kinesisClient = kinesisClient, + _maxRetries = maxRetries; + + final KinesisClient _kinesisClient; + final int _maxRetries; + + /// Sends records to a Kinesis stream and categorizes the response. + /// + /// Each record in the response is categorized as: + /// - successful: no error code + /// - failed: has an error code AND retry count >= [_maxRetries] + /// - retryable: has an error code AND retry count < [_maxRetries] + Future putRecords({ + required String streamName, + required List records, + }) async { + if (records.isEmpty) { + return const PutRecordsResult( + successfulIds: [], + retryableIds: [], + failedIds: [], + ); + } + + final requestEntries = records + .map( + (record) => PutRecordsRequestEntry( + data: record.data, + partitionKey: record.partitionKey, + ), + ) + .toList(); + + final request = PutRecordsRequest( + streamName: streamName, + records: requestEntries, + ); + + final response = await _kinesisClient.putRecords(request).result; + return _splitResponse(response, records); + } + + /// Splits the PutRecords response into successful, retryable, and failed + /// record IDs based on error codes and retry counts. + PutRecordsResult _splitResponse( + PutRecordsResponse response, + List records, + ) { + final successfulIds = []; + final retryableIds = []; + final failedIds = []; + + final resultEntries = response.records.toList(); + + for (var i = 0; i < resultEntries.length; i++) { + final entry = resultEntries[i]; + final recordId = records[i].id; + final retryCount = records[i].retryCount; + + if (entry.errorCode == null) { + successfulIds.add(recordId); + } else if (retryCount >= _maxRetries) { + failedIds.add(recordId); + } else { + // Error codes can be: ProvisionedThroughputExceededException or + // InternalFailure. All are treated as retryable until the retry + // limit is reached. + retryableIds.add(recordId); + } + } + + return PutRecordsResult( + successfulIds: successfulIds, + retryableIds: retryableIds, + failedIds: failedIds, + ); + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/impl/record_client.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/record_client.dart new file mode 100644 index 00000000000..873ce07d116 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/record_client.dart @@ -0,0 +1,156 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'package:amplify_foundation_dart/amplify_foundation_dart.dart'; +import 'package:amplify_kinesis_dart/src/impl/kinesis_record.dart'; +import 'package:amplify_kinesis_dart/src/impl/kinesis_sender.dart'; +import 'package:amplify_kinesis_dart/src/impl/storage/record_storage.dart'; +import 'package:amplify_kinesis_dart/src/model/clear_cache_data.dart'; +import 'package:amplify_kinesis_dart/src/model/flush_data.dart'; +import 'package:amplify_kinesis_dart/src/model/record_data.dart' + show RecordData; +import 'package:smithy/smithy.dart' + show SmithyHttpException, UnknownSmithyHttpException; + +/// {@template amplify_kinesis.record_client} +/// Orchestrates record operations: storage, sending, and retry logic. +/// +/// - `record()` delegates directly to `storage.addRecord()` (validation +/// and cache limit checks happen inside the storage layer). +/// - `flush()` is a single-pass operation that retrieves one batch per +/// stream and sends it. +/// {@endtemplate} +class RecordClient { + /// {@macro amplify_kinesis.record_client} + RecordClient({ + required RecordStorage storage, + required KinesisSender sender, + required int maxRetries, + }) : _storage = storage, + _sender = sender, + _maxRetries = maxRetries; + + final RecordStorage _storage; + final KinesisSender _sender; + final int _maxRetries; + final Logger _logger = AmplifyLogging.logger('RecordClient'); + + bool _flushing = false; + + /// Records data to the local cache. + /// + /// Delegates to [RecordStorage.addRecord] which handles validation + /// and cache limit checks. + /// + /// Returns [RecordData] with the size of the recorded entry. + Future record(RecordInput record) async { + await _storage.addRecord(record); + return const RecordData(); + } + + /// Flushes cached records to Kinesis. + /// + /// Single-pass: retrieves one batch of records per stream, sends each + /// batch, and returns. Records beyond the per-stream limit are picked + /// up in the next flush cycle. + Future flush() async { + if (_flushing) return const FlushData(flushInProgress: true); + _flushing = true; + + try { + final recordsByStream = await _storage.getRecordsByStream(); + _logger.debug( + 'Retrieved ${recordsByStream.length} stream(s) with records to flush', + ); + + var totalFlushed = 0; + for (final entry in recordsByStream.entries) { + final streamName = entry.key; + final records = entry.value; + _logger.verbose( + 'Flushing ${records.length} records to stream: $streamName', + ); + + try { + final flushed = await _sendStreamBatch(streamName, records); + totalFlushed += flushed; + } on SmithyHttpException catch (e) { + final details = e is UnknownSmithyHttpException + ? 'HTTP ${e.statusCode}: ${e.body}' + : e.message; + _logger.warn( + 'Kinesis SDK error flushing stream $streamName: $details. ' + 'Skipping', + ); + await _handleFailedRequest(records); + } catch (e) { + _logger.warn('Error flushing stream $streamName: $e. Aborting flush'); + await _handleFailedRequest(records); + rethrow; + } + } + + return FlushData(recordsFlushed: totalFlushed); + } finally { + _flushing = false; + } + } + + Future _sendStreamBatch(String streamName, List records) async { + final result = await _sender.putRecords( + streamName: streamName, + records: records, + ); + + await _storage.deleteRecords(result.successfulIds); + await _storage.deleteRecords(result.failedIds); + await _storage.incrementRetryCount(result.retryableIds); + + _logger.debug( + 'Stream $streamName: ${result.successfulIds.length} succeeded, ' + '${result.retryableIds.length} retryable, ' + '${result.failedIds.length} failed', + ); + + return result.successfulIds.length; + } + + Future _handleFailedRequest(List records) async { + try { + final idsToRetry = []; + final idsToDelete = []; + + for (final record in records) { + if (record.retryCount < _maxRetries) { + idsToRetry.add(record.id); + } else { + idsToDelete.add(record.id); + } + } + + await _storage.incrementRetryCount(idsToRetry); + await _storage.deleteRecords(idsToDelete); + + if (idsToDelete.isNotEmpty) { + _logger.warn( + 'Deleted ${idsToDelete.length} records that exceeded retry limit ' + 'of $_maxRetries', + ); + } + } on Object catch (e) { + _logger.error('Failed to update records for failed request: $e', e); + } + } + + /// Clears all cached records. + Future clearCache() async { + final count = await _storage.getRecordCount(); + await _storage.clearRecords(); + return ClearCacheData(recordsCleared: count); + } + + /// Closes the storage and releases resources. + Future close() async { + await _storage.close(); + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/platform/record_storage_platform.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/platform/record_storage_platform.dart new file mode 100644 index 00000000000..f1f5805f46f --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/platform/record_storage_platform.dart @@ -0,0 +1,6 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +export 'record_storage_platform_stub.dart' + if (dart.library.js_interop) 'record_storage_platform_web.dart' + if (dart.library.io) 'record_storage_platform_vm.dart'; diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/platform/record_storage_platform_stub.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/platform/record_storage_platform_stub.dart new file mode 100644 index 00000000000..2cbf1693390 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/platform/record_storage_platform_stub.dart @@ -0,0 +1,20 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'dart:async'; + +import 'package:amplify_kinesis_dart/src/impl/storage/record_storage.dart'; + +/// Creates a platform-specific [RecordStorage] instance. +/// +/// This stub throws [UnsupportedError] and should never be reached at +/// runtime — the conditional export selects the VM or web variant. +Future createPlatformRecordStorage({ + required String identifier, + required FutureOr? storagePath, + required int maxCacheBytes, +}) { + throw UnsupportedError( + 'Cannot create RecordStorage: no platform implementation available.', + ); +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/platform/record_storage_platform_vm.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/platform/record_storage_platform_vm.dart new file mode 100644 index 00000000000..273caba33af --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/platform/record_storage_platform_vm.dart @@ -0,0 +1,29 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'dart:async'; + +import 'package:amplify_foundation_dart/amplify_foundation_dart.dart'; +import 'package:amplify_kinesis_dart/src/db/kinesis_record_database.dart'; +import 'package:amplify_kinesis_dart/src/impl/storage/record_storage.dart'; +import 'package:amplify_kinesis_dart/src/impl/storage/record_storage_sqlite.dart'; + +/// Creates a [SqliteRecordStorage] for VM platforms. +Future createPlatformRecordStorage({ + required String identifier, + required FutureOr? storagePath, + required int maxCacheBytes, +}) async { + assert(storagePath != null, 'storagePath is required on VM platforms.'); + AmplifyLogging.logger( + 'RecordStorage', + ).info('Using SQLite storage (path: $storagePath)'); + final database = KinesisRecordDatabase( + identifier: identifier, + storagePath: storagePath, + ); + return SqliteRecordStorage.create( + database: database, + maxCacheBytes: maxCacheBytes, + ); +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/platform/record_storage_platform_web.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/platform/record_storage_platform_web.dart new file mode 100644 index 00000000000..8b96184e92c --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/platform/record_storage_platform_web.dart @@ -0,0 +1,34 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'dart:async'; + +import 'package:amplify_foundation_dart/amplify_foundation_dart.dart'; +import 'package:amplify_kinesis_dart/src/impl/storage/record_storage.dart'; +import 'package:amplify_kinesis_dart/src/impl/storage/record_storage_indexeddb.dart'; +import 'package:amplify_kinesis_dart/src/impl/storage/record_storage_memory.dart'; + +/// Creates a web [RecordStorage] instance. +/// +/// Uses [IndexedDbRecordStorage] when IndexedDB is available, falling back +/// to [InMemoryRecordStorage] otherwise (e.g. Firefox private browsing). +Future createPlatformRecordStorage({ + required String identifier, + required FutureOr? storagePath, + required int maxCacheBytes, +}) async { + final logger = AmplifyLogging.logger('RecordStorage'); + // storagePath is ignored on web. + if (await IndexedDbRecordStorage.checkIsSupported()) { + logger.info('Using IndexedDB storage'); + return IndexedDbRecordStorage.create( + identifier: identifier, + maxCacheBytes: maxCacheBytes, + ); + } + logger.warn( + 'IndexedDB is not available. Falling back to in-memory storage. ' + 'Records will be lost when the page is closed.', + ); + return InMemoryRecordStorage(maxCacheBytes: maxCacheBytes); +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/record_storage.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/record_storage.dart new file mode 100644 index 00000000000..5833c12d7d0 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/record_storage.dart @@ -0,0 +1,168 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'package:amplify_kinesis_dart/src/exception/amplify_kinesis_exception.dart' + show defaultRecoverySuggestion; +import 'package:amplify_kinesis_dart/src/exception/record_cache_exception.dart'; +import 'package:amplify_kinesis_dart/src/impl/kinesis_record.dart'; +import 'package:amplify_kinesis_dart/src/kinesis_limits.dart' as limits; +import 'package:amplify_kinesis_dart/src/model/record.dart'; +import 'package:meta/meta.dart'; + +export 'package:amplify_kinesis_dart/src/model/record.dart'; + +/// {@template amplify_kinesis.record_storage} +/// Abstract base class for record persistence. +/// +/// Implementations provide platform-specific storage (SQLite on VM, +/// IndexedDB on web, in-memory fallback). Validation of partition key +/// length, record size, and cache limits is handled here in [addRecord]; +/// subclasses implement [writeRecord] for the actual write. +/// +/// All public methods wrap unexpected errors as +/// [RecordCacheDatabaseException]. Subclasses throw +/// [RecordCacheException] subtypes for known errors; anything else is +/// caught and wrapped automatically. +/// {@endtemplate} +abstract class RecordStorage { + /// {@macro amplify_kinesis.record_storage} + RecordStorage({ + required int maxCacheBytes, + int maxRecordsPerStream = limits.maxRecordsPerStream, + int maxBytesPerStream = limits.maxPutRecordsSizeBytes, + int maxRecordSizeBytes = limits.maxRecordSizeBytes, + int maxPartitionKeyLength = limits.maxPartitionKeyLength, + int initialCachedSize = 0, + }) : _maxCacheBytes = maxCacheBytes, + _maxRecordsPerStream = maxRecordsPerStream, + _maxBytesPerStream = maxBytesPerStream, + _maxRecordSizeBytes = maxRecordSizeBytes, + _maxPartitionKeyLength = maxPartitionKeyLength, + cachedSize = initialCachedSize; + + final int _maxCacheBytes; + final int _maxRecordsPerStream; + final int _maxBytesPerStream; + final int _maxRecordSizeBytes; + final int _maxPartitionKeyLength; + + /// The current total cached size in bytes. + @protected + int cachedSize; + + /// The maximum cache size in bytes. + int get maxCacheBytes => _maxCacheBytes; + + /// Maximum number of records per stream in a single batch. + int get maxRecordsPerStream => _maxRecordsPerStream; + + /// Maximum total bytes per stream in a single batch. + int get maxBytesPerStream => _maxBytesPerStream; + + /// Validates and saves a record to storage. + /// Throws [RecordCacheValidationException] on invalid input. + /// Throws [RecordCacheLimitExceededException] if the cache is full. + /// Throws [RecordCacheDatabaseException] on storage errors. + Future addRecord(RecordInput record) => + _wrap('Failed to add record to cache', () async { + final codePoints = record.partitionKey.runes.length; + if (codePoints == 0 || codePoints > _maxPartitionKeyLength) { + throw RecordCacheValidationException( + 'Partition key length ($codePoints) is outside the allowed ' + 'range of 1-$_maxPartitionKeyLength characters.', + 'Use a partition key between 1 and ' + '$_maxPartitionKeyLength characters.', + ); + } + if (record.dataSize > _maxRecordSizeBytes) { + throw RecordCacheValidationException( + 'Record size (${record.dataSize} bytes) exceeds the maximum ' + 'of $_maxRecordSizeBytes bytes (partition key + data blob).', + 'Reduce the record payload size or use a shorter partition key.', + ); + } + if (cachedSize + record.dataSize > _maxCacheBytes) { + throw RecordCacheLimitExceededException( + 'Cache size limit exceeded: ' + '${cachedSize + record.dataSize} bytes > $_maxCacheBytes bytes', + 'Call flush() to send cached records or increase cache size limit.', + ); + } + await writeRecord(record); + cachedSize += record.dataSize; + }); + + /// Retrieves records grouped by stream. + Future>> getRecordsByStream() => + _wrap('Could not retrieve records from storage', doGetRecordsByStream); + + /// Deletes records by their IDs and refreshes [cachedSize]. + Future deleteRecords(Iterable ids) => + _wrap('Failed to delete records from cache', () async { + await doDeleteRecords(ids); + cachedSize = await doQueryCacheSize(); + }); + + /// Increments the retry count for the specified records. + Future incrementRetryCount(Iterable ids) => _wrap( + 'Failed to increment retry count', + () => doIncrementRetryCount(ids), + ); + + /// Returns the total number of cached records. + Future getRecordCount() => + _wrap('Failed to get record count', doGetRecordCount); + + /// Deletes all records and resets [cachedSize] to 0. + Future clearRecords() => _wrap('Failed to clear cache', () async { + await doClearRecords(); + cachedSize = 0; + }); + + /// Closes the storage and releases resources. + Future close() => _wrap('Failed to close storage', doClose); + + /// Writes a validated record to the underlying storage. + @protected + Future writeRecord(RecordInput record); + + /// Retrieves records grouped by stream name. + @protected + Future>> doGetRecordsByStream(); + + /// Deletes records by their IDs. + @protected + Future doDeleteRecords(Iterable ids); + + /// Increments the retry count for the specified records. + @protected + Future doIncrementRetryCount(Iterable ids); + + /// Returns the total number of cached records. + @protected + Future doGetRecordCount(); + + /// Deletes all records (without updating [cachedSize] — the base class + /// resets it to 0). + @protected + Future doClearRecords(); + + /// Returns the current total cache size in bytes from the underlying + /// storage. Called by the base class after deletions. + @protected + Future doQueryCacheSize(); + + /// Closes the storage and releases resources. + @protected + Future doClose(); + + Future _wrap(String message, Future Function() operation) async { + try { + return await operation(); + } on RecordCacheException { + rethrow; + } on Object catch (e) { + throw RecordCacheDatabaseException(message, defaultRecoverySuggestion, e); + } + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/record_storage_indexeddb.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/record_storage_indexeddb.dart new file mode 100644 index 00000000000..3b6a82fbe11 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/record_storage_indexeddb.dart @@ -0,0 +1,251 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'dart:async'; +import 'dart:js_interop'; +import 'dart:js_interop_unsafe'; + +import 'package:amplify_kinesis_dart/src/impl/kinesis_record.dart'; +import 'package:amplify_kinesis_dart/src/impl/storage/record_storage.dart'; +// ignore: implementation_imports +import 'package:aws_common/src/js/indexed_db.dart'; +import 'package:web/web.dart'; + +/// {@template amplify_kinesis.indexeddb_record_storage} +/// IndexedDB-backed [RecordStorage] implementation for web. +/// +/// Use [create] to open the database and eagerly compute the initial +/// cache size before constructing the storage. +/// {@endtemplate} +final class IndexedDbRecordStorage extends RecordStorage { + IndexedDbRecordStorage._({ + required super.maxCacheBytes, + required super.initialCachedSize, + required IDBDatabase database, + }) : _database = database; + + /// {@macro amplify_kinesis.indexeddb_record_storage} + /// + /// Opens the IndexedDB database and eagerly computes the initial + /// cache size. + static Future create({ + required int maxCacheBytes, + required String identifier, + }) async { + final database = await _openDatabase('amplify_kinesis_$identifier'); + final initialSize = await _computeCacheSize(database); + return IndexedDbRecordStorage._( + maxCacheBytes: maxCacheBytes, + initialCachedSize: initialSize, + database: database, + ); + } + + final IDBDatabase _database; + static const _storeName = 'kinesis_records'; + + /// Returns an object store handle within a new transaction. + IDBObjectStore _getStore([String mode = 'readwrite']) { + final tx = _database.transaction(_storeName.toJS, mode); + return tx.objectStore(_storeName); + } + + @override + Future writeRecord(RecordInput record) async { + final obj = JSObject() + ..setProperty('stream_name'.toJS, record.streamName.toJS) + ..setProperty('partition_key'.toJS, record.partitionKey.toJS) + ..setProperty('data'.toJS, record.data.toJS) + ..setProperty('data_size'.toJS, record.dataSize.toJS) + ..setProperty('retry_count'.toJS, 0.toJS) + ..setProperty( + 'created_at'.toJS, + record.createdAt.millisecondsSinceEpoch.toJS, + ); + await _getStore().add(obj).future; + } + + @override + Future>> doGetRecordsByStream() async { + final all = await _getAllRecords(); + all.sort((a, b) { + final cmp = a.streamName.compareTo(b.streamName); + if (cmp != 0) return cmp; + return a.id.compareTo(b.id); + }); + + final result = >{}; + final streamSizes = {}; + final streamCounts = {}; + + for (final record in all) { + final stream = record.streamName; + final count = streamCounts[stream] ?? 0; + final size = streamSizes[stream] ?? 0; + if (count >= maxRecordsPerStream) continue; + if (size + record.dataSize > maxBytesPerStream) continue; + + result.putIfAbsent(stream, () => []).add(record); + streamCounts[stream] = count + 1; + streamSizes[stream] = size + record.dataSize; + } + return result; + } + + @override + Future doDeleteRecords(Iterable ids) async { + if (ids.isEmpty) return; + final store = _getStore(); + final futures = >[]; + for (final id in ids) { + futures.add(store.delete(id.toJS).future); + } + await Future.wait(futures); + } + + @override + Future doQueryCacheSize() => _computeCacheSize(_database); + + @override + Future doIncrementRetryCount(Iterable ids) async { + if (ids.isEmpty) return; + final store = _getStore(); + for (final id in ids) { + final request = store.get(id.toJS); + await request.future; + final obj = request.result; + if (obj == null || obj.isUndefinedOrNull) continue; + final jsObj = obj as JSObject; + final current = jsObj.getProperty('retry_count'.toJS).toDartInt; + jsObj.setProperty('retry_count'.toJS, (current + 1).toJS); + await store.put(jsObj).future; + } + } + + @override + Future doGetRecordCount() async { + final store = _getStore(); + final request = store.count(); + await request.future; + final result = request.result; + if (result.isA()) { + return (result as JSNumber).toDartInt; + } + return 0; + } + + @override + Future doClearRecords() async { + await _getStore().clear().future; + } + + @override + Future doClose() async { + try { + _database.close(); + } on Object { + // Ignore close errors. + } + } + + /// Reads all records from the object store. + Future> _getAllRecords() async { + final store = _getStore(); + final request = store.getAll(); + await request.future; + final jsResult = request.result; + if (!jsResult.isA>()) return []; + + final jsArray = (jsResult as JSArray).toDart; + return jsArray.map(_jsToRecord).toList(); + } + + static Record _jsToRecord(JSObject obj) { + return Record( + id: obj.getProperty('id'.toJS).toDartInt, + streamName: obj.getProperty('stream_name'.toJS).toDart, + partitionKey: obj.getProperty('partition_key'.toJS).toDart, + data: (obj.getProperty('data'.toJS)).toDart, + dataSize: obj.getProperty('data_size'.toJS).toDartInt, + retryCount: obj.getProperty('retry_count'.toJS).toDartInt, + createdAt: obj.getProperty('created_at'.toJS).toDartInt, + ); + } + + /// Opens an IndexedDB database, creating the object store if needed. + static Future _openDatabase(String dbName) async { + final db = indexedDB; + if (db == null) { + throw StateError('IndexedDB is not available'); + } + + void onUpgradeNeeded(IDBVersionChangeEvent event) { + final database = event.target?.getProperty('result'.toJS); + final names = database?.objectStoreNames; + if (!(names?.contains(_storeName) ?? false)) { + database! + .createObjectStore( + _storeName, + IDBObjectStoreParameters(keyPath: 'id'.toJS, autoIncrement: true), + ) + .createIndex( + 'stream_name_idx', + 'stream_name'.toJS, + IDBIndexParameters(unique: false), + ); + } + } + + final request = db.open(dbName, 1)..onupgradeneeded = onUpgradeNeeded.toJS; + final result = await request.future; + if (result.isA()) { + return result as IDBDatabase; + } + throw StateError('Failed to open IndexedDB: $dbName'); + } + + /// Computes cache size from DB using a cursor. + static Future _computeCacheSize(IDBDatabase database) async { + final tx = database.transaction(_storeName.toJS, 'readonly'); + final store = tx.objectStore(_storeName); + final request = store.openCursor(); + final completer = Completer(); + var total = 0; + + request + ..onsuccess = ((Event event) { + final cursor = request.result; + if (cursor == null || cursor.isUndefinedOrNull) { + completer.complete(total); + return; + } + final idbCursor = cursor as IDBCursorWithValue; + final value = idbCursor.value; + if (!value.isUndefinedOrNull) { + total += (value as JSObject) + .getProperty('data_size'.toJS) + .toDartInt; + } + idbCursor.continue_(); + }).toJS + ..onerror = ((Event event) { + completer.completeError( + StateError('Failed to compute cache size from IndexedDB'), + ); + }).toJS; + + return completer.future; + } + + /// Checks whether IndexedDB is available and functional. + static Future checkIsSupported() async { + if (indexedDB == null) return false; + try { + final request = indexedDB!.open('kinesis_idb_test', 1); + await request.future; + return true; + } on Object { + return false; + } + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/record_storage_memory.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/record_storage_memory.dart new file mode 100644 index 00000000000..7131c6ae9a0 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/record_storage_memory.dart @@ -0,0 +1,112 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'dart:collection'; + +import 'package:amplify_kinesis_dart/src/impl/kinesis_record.dart'; +import 'package:amplify_kinesis_dart/src/impl/storage/record_storage.dart'; + +/// {@template amplify_kinesis.in_memory_record_storage} +/// In-memory [RecordStorage] fallback for web when IndexedDB is unavailable. +/// Records are not persisted. +/// {@endtemplate} +final class InMemoryRecordStorage extends RecordStorage { + /// {@macro amplify_kinesis.in_memory_record_storage} + InMemoryRecordStorage({ + required super.maxCacheBytes, + super.maxRecordsPerStream, + super.maxBytesPerStream, + super.maxRecordSizeBytes, + super.maxPartitionKeyLength, + }); + + int _nextId = 1; + final LinkedHashMap _records = LinkedHashMap(); + + @override + Future writeRecord(RecordInput record) async { + final id = _nextId++; + _records[id] = Record( + id: id, + streamName: record.streamName, + partitionKey: record.partitionKey, + data: record.data, + dataSize: record.dataSize, + retryCount: 0, + createdAt: record.createdAt.millisecondsSinceEpoch, + ); + } + + @override + Future>> doGetRecordsByStream() async { + final sorted = _records.values.toList() + ..sort((a, b) { + final cmp = a.streamName.compareTo(b.streamName); + if (cmp != 0) return cmp; + return a.id.compareTo(b.id); + }); + + final result = >{}; + final streamSizes = {}; + final streamCounts = {}; + + for (final record in sorted) { + final stream = record.streamName; + final count = streamCounts[stream] ?? 0; + final size = streamSizes[stream] ?? 0; + if (count >= maxRecordsPerStream) continue; + if (size + record.dataSize > maxBytesPerStream) continue; + + result.putIfAbsent(stream, () => []).add(record); + streamCounts[stream] = count + 1; + streamSizes[stream] = size + record.dataSize; + } + return result; + } + + @override + Future doDeleteRecords(Iterable ids) async { + for (final id in ids) { + _records.remove(id); + } + } + + @override + Future doQueryCacheSize() async { + var total = 0; + for (final record in _records.values) { + total += record.dataSize; + } + return total; + } + + @override + Future doIncrementRetryCount(Iterable ids) async { + for (final id in ids) { + final record = _records[id]; + if (record == null) continue; + _records[id] = Record( + id: record.id, + streamName: record.streamName, + partitionKey: record.partitionKey, + data: record.data, + dataSize: record.dataSize, + retryCount: record.retryCount + 1, + createdAt: record.createdAt, + ); + } + } + + @override + Future doGetRecordCount() async => _records.length; + + @override + Future doClearRecords() async { + _records.clear(); + } + + @override + Future doClose() async { + await clearRecords(); + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/record_storage_sqlite.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/record_storage_sqlite.dart new file mode 100644 index 00000000000..d3b5a88c9e3 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/impl/storage/record_storage_sqlite.dart @@ -0,0 +1,161 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'dart:async'; + +import 'package:amplify_kinesis_dart/src/db/kinesis_record_database.dart'; +import 'package:amplify_kinesis_dart/src/impl/kinesis_record.dart'; +import 'package:amplify_kinesis_dart/src/impl/storage/record_storage.dart'; +import 'package:drift/drift.dart'; +import 'package:meta/meta.dart'; + +/// {@template amplify_kinesis.sqlite_record_storage} +/// SQLite-backed [RecordStorage] implementation using Drift. +/// +/// Used on VM (iOS, macOS, Linux, Windows, Android) platforms. +/// {@endtemplate} +final class SqliteRecordStorage extends RecordStorage { + /// {@macro amplify_kinesis.sqlite_record_storage} + /// + /// Prefer [create] for production use — it eagerly queries the cache + /// size from the database. This constructor is available for tests + /// where the database starts empty. + SqliteRecordStorage({ + required KinesisRecordDatabase database, + required super.maxCacheBytes, + super.maxRecordsPerStream, + super.maxBytesPerStream, + super.maxRecordSizeBytes, + super.maxPartitionKeyLength, + super.initialCachedSize, + }) : _db = database; + + /// {@macro amplify_kinesis.sqlite_record_storage} + /// + /// Opens the database. + static Future create({ + required KinesisRecordDatabase database, + required int maxCacheBytes, + }) async { + final initialSize = await _queryCacheSize(database); + return SqliteRecordStorage( + database: database, + maxCacheBytes: maxCacheBytes, + initialCachedSize: initialSize, + ); + } + + final KinesisRecordDatabase _db; + + /// Provides access to the underlying database (for testing). + KinesisRecordDatabase get database => _db; + + /// Queries the current cache size from the database. + static Future _queryCacheSize(KinesisRecordDatabase db) async { + final query = db.selectOnly(db.kinesisRecords) + ..addColumns([db.kinesisRecords.dataSize.sum()]); + final result = await query.getSingleOrNull(); + if (result == null) return 0; + return result.read(db.kinesisRecords.dataSize.sum()) ?? 0; + } + + /// Returns the in-memory cached size directly (O(1), no DB query). + @visibleForTesting + int getCurrentCacheSize() => cachedSize; + + @override + Future writeRecord(RecordInput record) async { + await _db + .into(_db.kinesisRecords) + .insert( + KinesisRecordsCompanion.insert( + streamName: record.streamName, + partitionKey: record.partitionKey, + data: record.data, + dataSize: record.dataSize, + createdAt: record.createdAt.millisecondsSinceEpoch, + ), + ); + } + + @override + Future>> doGetRecordsByStream() async { + final results = await _db + .customSelect( + ''' + SELECT id, stream_name, partition_key, data, data_size, retry_count, created_at + FROM ( + SELECT *, + ROW_NUMBER() OVER (PARTITION BY stream_name ORDER BY id) as rn, + SUM(data_size) OVER (PARTITION BY stream_name ORDER BY id) as running_size + FROM kinesis_records + ) + WHERE rn <= ?1 AND running_size <= ?2 + ORDER BY stream_name, id + ''', + variables: [ + Variable.withInt(maxRecordsPerStream), + Variable.withInt(maxBytesPerStream), + ], + readsFrom: {_db.kinesisRecords}, + ) + .get(); + + final recordsByStream = >{}; + for (final row in results) { + final record = _rowToRecord(row); + recordsByStream.putIfAbsent(record.streamName, () => []).add(record); + } + return recordsByStream; + } + + @override + Future doDeleteRecords(Iterable ids) async { + if (ids.isEmpty) return; + await (_db.delete(_db.kinesisRecords)..where((t) => t.id.isIn(ids))).go(); + } + + @override + Future doQueryCacheSize() => _queryCacheSize(_db); + + @override + Future doIncrementRetryCount(Iterable ids) async { + if (ids.isEmpty) return; + await (_db.update(_db.kinesisRecords)..where((t) => t.id.isIn(ids))).write( + KinesisRecordsCompanion.custom( + retryCount: _db.kinesisRecords.retryCount + const Constant(1), + ), + ); + } + + @override + Future doGetRecordCount() async { + final query = _db.selectOnly(_db.kinesisRecords) + ..addColumns([_db.kinesisRecords.id.count()]); + final result = await query.getSingleOrNull(); + if (result == null) return 0; + return result.read(_db.kinesisRecords.id.count()) ?? 0; + } + + @override + Future doClearRecords() async { + await _db.delete(_db.kinesisRecords).go(); + } + + @override + Future doClose() async { + await _db.close(); + } + + Record _rowToRecord(QueryRow row) { + return Record( + id: row.read('id'), + streamName: row.read('stream_name'), + partitionKey: row.read('partition_key'), + data: row.read('data'), + dataSize: row.read('data_size'), + retryCount: row.read('retry_count'), + createdAt: row.read('created_at'), + ); + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/kinesis_limits.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/kinesis_limits.dart new file mode 100644 index 00000000000..628870b7397 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/kinesis_limits.dart @@ -0,0 +1,20 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// Kinesis PutRecords API limits. +/// +/// These are AWS service-imposed constants. They are internal to the +/// package and not exported from the public barrel file. +library; + +/// Maximum number of records per PutRecords request (500). +const int maxRecordsPerStream = 500; + +/// Maximum size of a single record (partition key + data blob) in bytes (10 MiB). +const int maxRecordSizeBytes = 10 * 1024 * 1024; + +/// Maximum total payload size per PutRecords request in bytes (10 MiB). +const int maxPutRecordsSizeBytes = 10 * 1024 * 1024; + +/// Maximum length of a partition key in Unicode code points (256). +const int maxPartitionKeyLength = 256; diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/model/clear_cache_data.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/model/clear_cache_data.dart new file mode 100644 index 00000000000..e0016ac18ef --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/model/clear_cache_data.dart @@ -0,0 +1,16 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// {@template amplify_kinesis.clear_cache_data} +/// Data returned from a clearCache operation. +/// {@endtemplate} +final class ClearCacheData { + /// {@macro amplify_kinesis.clear_cache_data} + const ClearCacheData({this.recordsCleared = 0}); + + /// The number of records that were cleared from the cache. + final int recordsCleared; + + @override + String toString() => 'ClearCacheData(recordsCleared: $recordsCleared)'; +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/model/flush_data.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/model/flush_data.dart new file mode 100644 index 00000000000..b908b88be8a --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/model/flush_data.dart @@ -0,0 +1,20 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// {@template amplify_kinesis.flush_data} +/// Data returned from a flush operation. +/// {@endtemplate} +final class FlushData { + /// {@macro amplify_kinesis.flush_data} + const FlushData({this.recordsFlushed = 0, this.flushInProgress = false}); + + /// The number of records successfully flushed. + final int recordsFlushed; + + /// Whether a flush was already in progress when this call was made. + final bool flushInProgress; + + @override + String toString() => + 'FlushData(recordsFlushed: $recordsFlushed, flushInProgress: $flushInProgress)'; +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/model/record.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/model/record.dart new file mode 100644 index 00000000000..77e89a89d11 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/model/record.dart @@ -0,0 +1,50 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'dart:typed_data'; + +/// {@template amplify_kinesis.record} +/// A record persisted in local storage, ready to be flushed to Kinesis. +/// +/// This is a plain Dart class with no ORM coupling, shared across all +/// storage backends (SQLite, IndexedDB, In-Memory). +/// {@endtemplate} +final class Record { + /// {@macro amplify_kinesis.record} + const Record({ + required this.id, + required this.streamName, + required this.partitionKey, + required this.data, + required this.dataSize, + required this.retryCount, + required this.createdAt, + }); + + /// Auto-incrementing primary key. + final int id; + + /// The name of the Kinesis Data Stream. + final String streamName; + + /// The partition key for the record. + final String partitionKey; + + /// The data blob to send to Kinesis. + final Uint8List data; + + /// The size of the data blob in bytes. + final int dataSize; + + /// The number of times this record has been retried. + final int retryCount; + + /// Unix timestamp (milliseconds) of when the record was created. + final int createdAt; + + @override + String toString() => + 'Record(id: $id, streamName: $streamName, ' + 'partitionKey: $partitionKey, dataSize: $dataSize, ' + 'retryCount: $retryCount)'; +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/model/record_data.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/model/record_data.dart new file mode 100644 index 00000000000..149c2302406 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/model/record_data.dart @@ -0,0 +1,13 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// {@template amplify_kinesis.record_data} +/// Data returned from a record operation. +/// {@endtemplate} +final class RecordData { + /// {@macro amplify_kinesis.record_data} + const RecordData(); + + @override + String toString() => 'RecordData()'; +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/kinesis.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/kinesis.dart new file mode 100644 index 00000000000..ce79f5ba85a --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/kinesis.dart @@ -0,0 +1,20 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// Generated with smithy-dart 0.3.2. DO NOT MODIFY. +// ignore_for_file: avoid_unused_constructor_parameters,deprecated_member_use_from_same_package,non_constant_identifier_names,unnecessary_library_name + +/// # Amazon Kinesis +/// +/// Amazon Kinesis Data Streams Service API Reference +library amplify_kinesis.kinesis; + +export 'package:amplify_kinesis_dart/src/sdk/src/kinesis/kinesis_client.dart'; +export 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/invalid_argument_exception.dart'; +export 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/kms_exception.dart'; +export 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/provisioned_throughput_exceeded_exception.dart'; +export 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/put_records_request.dart'; +export 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/put_records_request_entry.dart'; +export 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/put_records_response.dart'; +export 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/put_records_result_entry.dart'; +export 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/resource_not_found_exception.dart'; diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/common/endpoint_resolver.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/common/endpoint_resolver.dart new file mode 100644 index 00000000000..22cd4d60097 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/common/endpoint_resolver.dart @@ -0,0 +1,95 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// Generated with smithy-dart 0.3.2. DO NOT MODIFY. +// ignore_for_file: avoid_unused_constructor_parameters,deprecated_member_use_from_same_package,non_constant_identifier_names,unnecessary_library_name + +library amplify_kinesis.kinesis.common.endpoint_resolver; // ignore_for_file: no_leading_underscores_for_library_prefixes + +import 'package:meta/meta.dart' as _i2; +import 'package:smithy_aws/smithy_aws.dart' as _i1; + +final _partitions = [ + _i1.Partition( + id: 'aws', + regionRegex: RegExp(r'^(us|eu|ap|sa|ca|me|af|il)\-\w+\-\d+$'), + partitionEndpoint: null, + isRegionalized: true, + defaults: const _i1.EndpointDefinition( + hostname: 'kinesis.{region}.amazonaws.com', + protocols: ['https'], + signatureVersions: [_i1.AWSSignatureVersion.v4], + credentialScope: _i1.CredentialScope(), + variants: [], + ), + regions: const { + 'af-south-1', + 'ap-east-1', + 'ap-northeast-1', + 'ap-northeast-2', + 'ap-northeast-3', + 'ap-south-1', + 'ap-south-2', + 'ap-southeast-1', + 'ap-southeast-2', + 'ap-southeast-3', + 'ap-southeast-4', + 'ca-central-1', + 'eu-central-1', + 'eu-central-2', + 'eu-north-1', + 'eu-south-1', + 'eu-south-2', + 'eu-west-1', + 'eu-west-2', + 'eu-west-3', + 'il-central-1', + 'me-central-1', + 'me-south-1', + 'sa-east-1', + 'us-east-1', + 'us-east-2', + 'us-west-1', + 'us-west-2', + }, + endpoints: const {}, + ), + _i1.Partition( + id: 'aws-cn', + regionRegex: RegExp(r'^cn\-\w+\-\d+$'), + partitionEndpoint: null, + isRegionalized: true, + defaults: const _i1.EndpointDefinition( + hostname: 'kinesis.{region}.amazonaws.com.cn', + protocols: ['https'], + signatureVersions: [_i1.AWSSignatureVersion.v4], + credentialScope: _i1.CredentialScope(), + variants: [], + ), + regions: const {'cn-north-1', 'cn-northwest-1'}, + endpoints: const {}, + ), + _i1.Partition( + id: 'aws-us-gov', + regionRegex: RegExp(r'^us\-gov\-\w+\-\d+$'), + partitionEndpoint: null, + isRegionalized: true, + defaults: const _i1.EndpointDefinition( + hostname: 'kinesis.{region}.amazonaws.com', + protocols: ['https'], + signatureVersions: [_i1.AWSSignatureVersion.v4], + credentialScope: _i1.CredentialScope(), + variants: [], + ), + regions: const {'us-gov-east-1', 'us-gov-west-1'}, + endpoints: const {}, + ), +]; + +@_i2.internal +final _i1.AWSEndpointResolver endpointResolver = _i1.AWSEndpointResolver( + _partitions, +); + +@_i2.internal +const String sdkId = 'Kinesis'; diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/common/serializers.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/common/serializers.dart new file mode 100644 index 00000000000..de0ff113157 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/common/serializers.dart @@ -0,0 +1,37 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// Generated with smithy-dart 0.3.2. DO NOT MODIFY. +// ignore_for_file: avoid_unused_constructor_parameters,deprecated_member_use_from_same_package,non_constant_identifier_names,unnecessary_library_name + +library amplify_kinesis.kinesis.common.serializers; // ignore_for_file: no_leading_underscores_for_library_prefixes + +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/invalid_argument_exception.dart'; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/kms_exception.dart'; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/provisioned_throughput_exceeded_exception.dart'; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/put_records_request.dart'; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/put_records_request_entry.dart'; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/put_records_response.dart'; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/put_records_result_entry.dart'; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/resource_not_found_exception.dart'; +import 'package:built_collection/built_collection.dart' as _i2; +import 'package:built_value/serializer.dart'; +import 'package:smithy/smithy.dart' as _i1; + +const List<_i1.SmithySerializer> serializers = [ + ...PutRecordsRequest.serializers, + ...PutRecordsRequestEntry.serializers, + ...PutRecordsResponse.serializers, + ...PutRecordsResultEntry.serializers, + ...InvalidArgumentException.serializers, + ...ProvisionedThroughputExceededException.serializers, + ...ResourceNotFoundException.serializers, + ...KmsException.serializers, +]; + +final Map builderFactories = { + const FullType(_i2.BuiltList, [FullType(PutRecordsRequestEntry)]): + _i2.ListBuilder.new, + const FullType(_i2.BuiltList, [FullType(PutRecordsResultEntry)]): + _i2.ListBuilder.new, +}; diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/kinesis_client.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/kinesis_client.dart new file mode 100644 index 00000000000..da00f6f3971 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/kinesis_client.dart @@ -0,0 +1,61 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// Generated with smithy-dart 0.3.2. DO NOT MODIFY. +// ignore_for_file: avoid_unused_constructor_parameters,deprecated_member_use_from_same_package,non_constant_identifier_names,unnecessary_library_name + +library amplify_kinesis.kinesis.kinesis_client; // ignore_for_file: no_leading_underscores_for_library_prefixes + +import 'package:aws_common/aws_common.dart' as _i1; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/put_records_request.dart'; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/put_records_response.dart'; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/operation/put_records_operation.dart'; +import 'package:aws_signature_v4/aws_signature_v4.dart' as _i2; +import 'package:smithy/smithy.dart' as _i3; + +/// Amazon Kinesis Data Streams Service API Reference +class KinesisClient { + /// Amazon Kinesis Data Streams Service API Reference + const KinesisClient({ + _i1.AWSHttpClient? client, + required String region, + Uri? baseUri, + _i2.AWSCredentialsProvider credentialsProvider = + const _i2.AWSCredentialsProvider.defaultChain(), + List<_i3.HttpRequestInterceptor> requestInterceptors = const [], + List<_i3.HttpResponseInterceptor> responseInterceptors = const [], + }) : _client = client, + _region = region, + _baseUri = baseUri, + _credentialsProvider = credentialsProvider, + _requestInterceptors = requestInterceptors, + _responseInterceptors = responseInterceptors; + + final _i1.AWSHttpClient? _client; + + final String _region; + + final Uri? _baseUri; + + final _i2.AWSCredentialsProvider _credentialsProvider; + + final List<_i3.HttpRequestInterceptor> _requestInterceptors; + + final List<_i3.HttpResponseInterceptor> _responseInterceptors; + + /// Writes multiple data records into a Kinesis data stream in a single call + /// (also referred to as a PutRecords request). + _i3.SmithyOperation putRecords( + PutRecordsRequest input, { + _i1.AWSHttpClient? client, + _i2.AWSCredentialsProvider? credentialsProvider, + }) { + return PutRecordsOperation( + region: _region, + baseUri: _baseUri, + credentialsProvider: credentialsProvider ?? _credentialsProvider, + requestInterceptors: _requestInterceptors, + responseInterceptors: _responseInterceptors, + ).run(input, client: client ?? _client); + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/invalid_argument_exception.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/invalid_argument_exception.dart new file mode 100644 index 00000000000..42f46c4a2c4 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/invalid_argument_exception.dart @@ -0,0 +1,143 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// Generated with smithy-dart 0.3.2. DO NOT MODIFY. +// ignore_for_file: avoid_unused_constructor_parameters,deprecated_member_use_from_same_package,non_constant_identifier_names,unnecessary_library_name + +library amplify_kinesis.kinesis.model.invalid_argument_exception; // ignore_for_file: no_leading_underscores_for_library_prefixes + +import 'package:aws_common/aws_common.dart' as _i1; +import 'package:built_value/built_value.dart'; +import 'package:built_value/serializer.dart'; +import 'package:smithy/smithy.dart' as _i2; + +part 'invalid_argument_exception.g.dart'; + +/// A specified parameter exceeds its restrictions, is not supported, or can't be used. +abstract class InvalidArgumentException + with _i1.AWSEquatable + implements + Built, + _i2.SmithyHttpException { + /// A specified parameter exceeds its restrictions, is not supported, or can't be used. + factory InvalidArgumentException({String? message}) { + return _$InvalidArgumentException._(message: message); + } + + /// A specified parameter exceeds its restrictions, is not supported, or can't be used. + factory InvalidArgumentException.build([ + void Function(InvalidArgumentExceptionBuilder) updates, + ]) = _$InvalidArgumentException; + + const InvalidArgumentException._(); + + /// Constructs a [InvalidArgumentException] from a [payload] and [response]. + factory InvalidArgumentException.fromResponse( + InvalidArgumentException payload, + _i1.AWSBaseHttpResponse response, + ) => payload.rebuild((b) { + b.statusCode = response.statusCode; + b.headers = response.headers; + }); + + static const List<_i2.SmithySerializer> + serializers = [InvalidArgumentExceptionAwsJson11Serializer()]; + + @override + String? get message; + + @override + _i2.ShapeId get shapeId => const _i2.ShapeId( + namespace: 'com.amazonaws.kinesis', + shape: 'InvalidArgumentException', + ); + + @override + _i2.RetryConfig? get retryConfig => null; + + @override + @BuiltValueField(compare: false) + int? get statusCode; + + @override + @BuiltValueField(compare: false) + Map? get headers; + + @override + Exception? get underlyingException => null; + + @override + List get props => [message]; + + @override + String toString() { + final helper = newBuiltValueToStringHelper('InvalidArgumentException') + ..add('message', message); + return helper.toString(); + } +} + +class InvalidArgumentExceptionAwsJson11Serializer + extends _i2.StructuredSmithySerializer { + const InvalidArgumentExceptionAwsJson11Serializer() + : super('InvalidArgumentException'); + + @override + Iterable get types => const [ + InvalidArgumentException, + _$InvalidArgumentException, + ]; + + @override + Iterable<_i2.ShapeId> get supportedProtocols => const [ + _i2.ShapeId(namespace: 'aws.protocols', shape: 'awsJson1_1'), + ]; + + @override + InvalidArgumentException deserialize( + Serializers serializers, + Iterable serialized, { + FullType specifiedType = FullType.unspecified, + }) { + final result = InvalidArgumentExceptionBuilder(); + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final value = iterator.current; + if (value == null) { + continue; + } + switch (key) { + case 'message': + result.message = + (serializers.deserialize( + value, + specifiedType: const FullType(String), + ) + as String); + } + } + return result.build(); + } + + @override + Iterable serialize( + Serializers serializers, + InvalidArgumentException object, { + FullType specifiedType = FullType.unspecified, + }) { + final result = []; + if (object.message != null) { + result + ..add('message') + ..add( + serializers.serialize( + object.message, + specifiedType: const FullType(String), + ), + ); + } + return result; + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/invalid_argument_exception.g.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/invalid_argument_exception.g.dart new file mode 100644 index 00000000000..84b29263deb --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/invalid_argument_exception.g.dart @@ -0,0 +1,103 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'invalid_argument_exception.dart'; + +// ************************************************************************** +// BuiltValueGenerator +// ************************************************************************** + +class _$InvalidArgumentException extends InvalidArgumentException { + @override + final String? message; + @override + final int? statusCode; + @override + final Map? headers; + + factory _$InvalidArgumentException([ + void Function(InvalidArgumentExceptionBuilder)? updates, + ]) => (InvalidArgumentExceptionBuilder()..update(updates))._build(); + + _$InvalidArgumentException._({this.message, this.statusCode, this.headers}) + : super._(); + @override + InvalidArgumentException rebuild( + void Function(InvalidArgumentExceptionBuilder) updates, + ) => (toBuilder()..update(updates)).build(); + + @override + InvalidArgumentExceptionBuilder toBuilder() => + InvalidArgumentExceptionBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is InvalidArgumentException && message == other.message; + } + + @override + int get hashCode { + var _$hash = 0; + _$hash = $jc(_$hash, message.hashCode); + _$hash = $jf(_$hash); + return _$hash; + } +} + +class InvalidArgumentExceptionBuilder + implements + Builder { + _$InvalidArgumentException? _$v; + + String? _message; + String? get message => _$this._message; + set message(String? message) => _$this._message = message; + + int? _statusCode; + int? get statusCode => _$this._statusCode; + set statusCode(int? statusCode) => _$this._statusCode = statusCode; + + Map? _headers; + Map? get headers => _$this._headers; + set headers(Map? headers) => _$this._headers = headers; + + InvalidArgumentExceptionBuilder(); + + InvalidArgumentExceptionBuilder get _$this { + final $v = _$v; + if ($v != null) { + _message = $v.message; + _statusCode = $v.statusCode; + _headers = $v.headers; + _$v = null; + } + return this; + } + + @override + void replace(InvalidArgumentException other) { + _$v = other as _$InvalidArgumentException; + } + + @override + void update(void Function(InvalidArgumentExceptionBuilder)? updates) { + if (updates != null) updates(this); + } + + @override + InvalidArgumentException build() => _build(); + + _$InvalidArgumentException _build() { + final _$result = + _$v ?? + _$InvalidArgumentException._( + message: message, + statusCode: statusCode, + headers: headers, + ); + replace(_$result); + return _$result; + } +} + +// ignore_for_file: deprecated_member_use_from_same_package,type=lint diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/kms_exception.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/kms_exception.dart new file mode 100644 index 00000000000..71da42d6687 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/kms_exception.dart @@ -0,0 +1,139 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// Generated with smithy-dart 0.3.2. DO NOT MODIFY. +// ignore_for_file: avoid_unused_constructor_parameters,deprecated_member_use_from_same_package,non_constant_identifier_names,unnecessary_library_name + +library amplify_kinesis.kinesis.model.kms_exception; // ignore_for_file: no_leading_underscores_for_library_prefixes + +import 'package:aws_common/aws_common.dart' as _i1; +import 'package:built_value/built_value.dart'; +import 'package:built_value/serializer.dart'; +import 'package:smithy/smithy.dart' as _i2; + +part 'kms_exception.g.dart'; + +/// A KMS exception. +abstract class KmsException + with _i1.AWSEquatable + implements + Built, + _i2.SmithyHttpException { + /// A KMS exception. + factory KmsException({String? message}) { + return _$KmsException._(message: message); + } + + /// A KMS exception. + factory KmsException.build([void Function(KmsExceptionBuilder) updates]) = + _$KmsException; + + const KmsException._(); + + /// Constructs a [KmsException] from a [payload] and [response]. + factory KmsException.fromResponse( + KmsException payload, + _i1.AWSBaseHttpResponse response, + ) => payload.rebuild((b) { + b.statusCode = response.statusCode; + b.headers = response.headers; + }); + + static const List<_i2.SmithySerializer> serializers = [ + KmsExceptionAwsJson11Serializer(), + ]; + + @override + String? get message; + + @override + _i2.ShapeId get shapeId => const _i2.ShapeId( + namespace: 'com.amazonaws.kinesis', + shape: 'KMSException', + ); + + @override + _i2.RetryConfig? get retryConfig => null; + + @override + @BuiltValueField(compare: false) + int? get statusCode; + + @override + @BuiltValueField(compare: false) + Map? get headers; + + @override + Exception? get underlyingException => null; + + @override + List get props => [message]; + + @override + String toString() { + final helper = newBuiltValueToStringHelper('KmsException') + ..add('message', message); + return helper.toString(); + } +} + +class KmsExceptionAwsJson11Serializer + extends _i2.StructuredSmithySerializer { + const KmsExceptionAwsJson11Serializer() : super('KmsException'); + + @override + Iterable get types => const [KmsException, _$KmsException]; + + @override + Iterable<_i2.ShapeId> get supportedProtocols => const [ + _i2.ShapeId(namespace: 'aws.protocols', shape: 'awsJson1_1'), + ]; + + @override + KmsException deserialize( + Serializers serializers, + Iterable serialized, { + FullType specifiedType = FullType.unspecified, + }) { + final result = KmsExceptionBuilder(); + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final value = iterator.current; + if (value == null) { + continue; + } + switch (key) { + case 'message': + result.message = + (serializers.deserialize( + value, + specifiedType: const FullType(String), + ) + as String); + } + } + return result.build(); + } + + @override + Iterable serialize( + Serializers serializers, + KmsException object, { + FullType specifiedType = FullType.unspecified, + }) { + final result = []; + if (object.message != null) { + result + ..add('message') + ..add( + serializers.serialize( + object.message, + specifiedType: const FullType(String), + ), + ); + } + return result; + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/kms_exception.g.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/kms_exception.g.dart new file mode 100644 index 00000000000..244f449b08d --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/kms_exception.g.dart @@ -0,0 +1,98 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'kms_exception.dart'; + +// ************************************************************************** +// BuiltValueGenerator +// ************************************************************************** + +class _$KmsException extends KmsException { + @override + final String? message; + @override + final int? statusCode; + @override + final Map? headers; + + factory _$KmsException([void Function(KmsExceptionBuilder)? updates]) => + (KmsExceptionBuilder()..update(updates))._build(); + + _$KmsException._({this.message, this.statusCode, this.headers}) : super._(); + @override + KmsException rebuild(void Function(KmsExceptionBuilder) updates) => + (toBuilder()..update(updates)).build(); + + @override + KmsExceptionBuilder toBuilder() => KmsExceptionBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is KmsException && message == other.message; + } + + @override + int get hashCode { + var _$hash = 0; + _$hash = $jc(_$hash, message.hashCode); + _$hash = $jf(_$hash); + return _$hash; + } +} + +class KmsExceptionBuilder + implements Builder { + _$KmsException? _$v; + + String? _message; + String? get message => _$this._message; + set message(String? message) => _$this._message = message; + + int? _statusCode; + int? get statusCode => _$this._statusCode; + set statusCode(int? statusCode) => _$this._statusCode = statusCode; + + Map? _headers; + Map? get headers => _$this._headers; + set headers(Map? headers) => _$this._headers = headers; + + KmsExceptionBuilder(); + + KmsExceptionBuilder get _$this { + final $v = _$v; + if ($v != null) { + _message = $v.message; + _statusCode = $v.statusCode; + _headers = $v.headers; + _$v = null; + } + return this; + } + + @override + void replace(KmsException other) { + _$v = other as _$KmsException; + } + + @override + void update(void Function(KmsExceptionBuilder)? updates) { + if (updates != null) updates(this); + } + + @override + KmsException build() => _build(); + + _$KmsException _build() { + final _$result = + _$v ?? + _$KmsException._( + message: message, + statusCode: statusCode, + headers: headers, + ); + replace(_$result); + return _$result; + } +} + +// ignore_for_file: deprecated_member_use_from_same_package,type=lint diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/provisioned_throughput_exceeded_exception.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/provisioned_throughput_exceeded_exception.dart new file mode 100644 index 00000000000..b6f8836d491 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/provisioned_throughput_exceeded_exception.dart @@ -0,0 +1,154 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// Generated with smithy-dart 0.3.2. DO NOT MODIFY. +// ignore_for_file: avoid_unused_constructor_parameters,deprecated_member_use_from_same_package,non_constant_identifier_names,unnecessary_library_name + +library amplify_kinesis.kinesis.model.provisioned_throughput_exceeded_exception; // ignore_for_file: no_leading_underscores_for_library_prefixes + +import 'package:aws_common/aws_common.dart' as _i1; +import 'package:built_value/built_value.dart'; +import 'package:built_value/serializer.dart'; +import 'package:smithy/smithy.dart' as _i2; + +part 'provisioned_throughput_exceeded_exception.g.dart'; + +/// The request rate for the stream is too high, or the requested data is too +/// large for the available throughput. +abstract class ProvisionedThroughputExceededException + with _i1.AWSEquatable + implements + Built< + ProvisionedThroughputExceededException, + ProvisionedThroughputExceededExceptionBuilder + >, + _i2.SmithyHttpException { + /// The request rate for the stream is too high, or the requested data is too + /// large for the available throughput. + factory ProvisionedThroughputExceededException({String? message}) { + return _$ProvisionedThroughputExceededException._(message: message); + } + + /// The request rate for the stream is too high, or the requested data is too + /// large for the available throughput. + factory ProvisionedThroughputExceededException.build([ + void Function(ProvisionedThroughputExceededExceptionBuilder) updates, + ]) = _$ProvisionedThroughputExceededException; + + const ProvisionedThroughputExceededException._(); + + /// Constructs a [ProvisionedThroughputExceededException] from a [payload] and [response]. + factory ProvisionedThroughputExceededException.fromResponse( + ProvisionedThroughputExceededException payload, + _i1.AWSBaseHttpResponse response, + ) => payload.rebuild((b) { + b.statusCode = response.statusCode; + b.headers = response.headers; + }); + + static const List< + _i2.SmithySerializer + > + serializers = [ProvisionedThroughputExceededExceptionAwsJson11Serializer()]; + + @override + String? get message; + + @override + _i2.ShapeId get shapeId => const _i2.ShapeId( + namespace: 'com.amazonaws.kinesis', + shape: 'ProvisionedThroughputExceededException', + ); + + @override + _i2.RetryConfig? get retryConfig => + const _i2.RetryConfig(isThrottlingError: true); + + @override + @BuiltValueField(compare: false) + int? get statusCode; + + @override + @BuiltValueField(compare: false) + Map? get headers; + + @override + Exception? get underlyingException => null; + + @override + List get props => [message]; + + @override + String toString() { + final helper = newBuiltValueToStringHelper( + 'ProvisionedThroughputExceededException', + )..add('message', message); + return helper.toString(); + } +} + +class ProvisionedThroughputExceededExceptionAwsJson11Serializer + extends + _i2.StructuredSmithySerializer { + const ProvisionedThroughputExceededExceptionAwsJson11Serializer() + : super('ProvisionedThroughputExceededException'); + + @override + Iterable get types => const [ + ProvisionedThroughputExceededException, + _$ProvisionedThroughputExceededException, + ]; + + @override + Iterable<_i2.ShapeId> get supportedProtocols => const [ + _i2.ShapeId(namespace: 'aws.protocols', shape: 'awsJson1_1'), + ]; + + @override + ProvisionedThroughputExceededException deserialize( + Serializers serializers, + Iterable serialized, { + FullType specifiedType = FullType.unspecified, + }) { + final result = ProvisionedThroughputExceededExceptionBuilder(); + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final value = iterator.current; + if (value == null) { + continue; + } + switch (key) { + case 'message': + result.message = + (serializers.deserialize( + value, + specifiedType: const FullType(String), + ) + as String); + } + } + return result.build(); + } + + @override + Iterable serialize( + Serializers serializers, + ProvisionedThroughputExceededException object, { + FullType specifiedType = FullType.unspecified, + }) { + final result = []; + if (object.message != null) { + result + ..add('message') + ..add( + serializers.serialize( + object.message, + specifiedType: const FullType(String), + ), + ); + } + return result; + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/provisioned_throughput_exceeded_exception.g.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/provisioned_throughput_exceeded_exception.g.dart new file mode 100644 index 00000000000..e02f0cc8e45 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/provisioned_throughput_exceeded_exception.g.dart @@ -0,0 +1,114 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'provisioned_throughput_exceeded_exception.dart'; + +// ************************************************************************** +// BuiltValueGenerator +// ************************************************************************** + +class _$ProvisionedThroughputExceededException + extends ProvisionedThroughputExceededException { + @override + final String? message; + @override + final int? statusCode; + @override + final Map? headers; + + factory _$ProvisionedThroughputExceededException([ + void Function(ProvisionedThroughputExceededExceptionBuilder)? updates, + ]) => (ProvisionedThroughputExceededExceptionBuilder()..update(updates)) + ._build(); + + _$ProvisionedThroughputExceededException._({ + this.message, + this.statusCode, + this.headers, + }) : super._(); + @override + ProvisionedThroughputExceededException rebuild( + void Function(ProvisionedThroughputExceededExceptionBuilder) updates, + ) => (toBuilder()..update(updates)).build(); + + @override + ProvisionedThroughputExceededExceptionBuilder toBuilder() => + ProvisionedThroughputExceededExceptionBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is ProvisionedThroughputExceededException && + message == other.message; + } + + @override + int get hashCode { + var _$hash = 0; + _$hash = $jc(_$hash, message.hashCode); + _$hash = $jf(_$hash); + return _$hash; + } +} + +class ProvisionedThroughputExceededExceptionBuilder + implements + Builder< + ProvisionedThroughputExceededException, + ProvisionedThroughputExceededExceptionBuilder + > { + _$ProvisionedThroughputExceededException? _$v; + + String? _message; + String? get message => _$this._message; + set message(String? message) => _$this._message = message; + + int? _statusCode; + int? get statusCode => _$this._statusCode; + set statusCode(int? statusCode) => _$this._statusCode = statusCode; + + Map? _headers; + Map? get headers => _$this._headers; + set headers(Map? headers) => _$this._headers = headers; + + ProvisionedThroughputExceededExceptionBuilder(); + + ProvisionedThroughputExceededExceptionBuilder get _$this { + final $v = _$v; + if ($v != null) { + _message = $v.message; + _statusCode = $v.statusCode; + _headers = $v.headers; + _$v = null; + } + return this; + } + + @override + void replace(ProvisionedThroughputExceededException other) { + _$v = other as _$ProvisionedThroughputExceededException; + } + + @override + void update( + void Function(ProvisionedThroughputExceededExceptionBuilder)? updates, + ) { + if (updates != null) updates(this); + } + + @override + ProvisionedThroughputExceededException build() => _build(); + + _$ProvisionedThroughputExceededException _build() { + final _$result = + _$v ?? + _$ProvisionedThroughputExceededException._( + message: message, + statusCode: statusCode, + headers: headers, + ); + replace(_$result); + return _$result; + } +} + +// ignore_for_file: deprecated_member_use_from_same_package,type=lint diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_request.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_request.dart new file mode 100644 index 00000000000..3bdb4c64bb8 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_request.dart @@ -0,0 +1,165 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// Generated with smithy-dart 0.3.2. DO NOT MODIFY. +// ignore_for_file: avoid_unused_constructor_parameters,deprecated_member_use_from_same_package,non_constant_identifier_names,unnecessary_library_name + +library amplify_kinesis.kinesis.model.put_records_request; // ignore_for_file: no_leading_underscores_for_library_prefixes + +import 'package:aws_common/aws_common.dart' as _i2; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/put_records_request_entry.dart'; +import 'package:built_collection/built_collection.dart' as _i3; +import 'package:built_value/built_value.dart'; +import 'package:built_value/serializer.dart'; +import 'package:smithy/smithy.dart' as _i1; + +part 'put_records_request.g.dart'; + +/// A PutRecords request. +abstract class PutRecordsRequest + with _i1.HttpInput, _i2.AWSEquatable + implements Built { + /// A PutRecords request. + factory PutRecordsRequest({ + required List records, + required String streamName, + String? streamArn, + }) { + return _$PutRecordsRequest._( + records: _i3.BuiltList(records), + streamName: streamName, + streamArn: streamArn, + ); + } + + /// A PutRecords request. + factory PutRecordsRequest.build([ + void Function(PutRecordsRequestBuilder) updates, + ]) = _$PutRecordsRequest; + + const PutRecordsRequest._(); + + factory PutRecordsRequest.fromRequest( + PutRecordsRequest payload, + _i2.AWSBaseHttpRequest request, + ) => payload; + + static const List<_i1.SmithySerializer> serializers = [ + PutRecordsRequestAwsJson11Serializer(), + ]; + + /// The records associated with the request. + _i3.BuiltList get records; + + /// The stream name associated with the request. + String get streamName; + + /// The ARN of the stream. + String? get streamArn; + + @override + PutRecordsRequest getPayload() => this; + + @override + List get props => [records, streamName, streamArn]; + + @override + String toString() { + final helper = newBuiltValueToStringHelper('PutRecordsRequest') + ..add('records', records) + ..add('streamName', streamName) + ..add('streamArn', streamArn); + return helper.toString(); + } +} + +class PutRecordsRequestAwsJson11Serializer + extends _i1.StructuredSmithySerializer { + const PutRecordsRequestAwsJson11Serializer() : super('PutRecordsRequest'); + + @override + Iterable get types => const [PutRecordsRequest, _$PutRecordsRequest]; + + @override + Iterable<_i1.ShapeId> get supportedProtocols => const [ + _i1.ShapeId(namespace: 'aws.protocols', shape: 'awsJson1_1'), + ]; + + @override + PutRecordsRequest deserialize( + Serializers serializers, + Iterable serialized, { + FullType specifiedType = FullType.unspecified, + }) { + final result = PutRecordsRequestBuilder(); + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final value = iterator.current; + if (value == null) { + continue; + } + switch (key) { + case 'Records': + result.records.replace( + (serializers.deserialize( + value, + specifiedType: const FullType(_i3.BuiltList, [ + FullType(PutRecordsRequestEntry), + ]), + ) + as _i3.BuiltList), + ); + case 'StreamName': + result.streamName = + (serializers.deserialize( + value, + specifiedType: const FullType(String), + ) + as String); + case 'StreamARN': + result.streamArn = + (serializers.deserialize( + value, + specifiedType: const FullType(String), + ) + as String); + } + } + return result.build(); + } + + @override + Iterable serialize( + Serializers serializers, + PutRecordsRequest object, { + FullType specifiedType = FullType.unspecified, + }) { + final result = [ + 'Records', + serializers.serialize( + object.records, + specifiedType: const FullType(_i3.BuiltList, [ + FullType(PutRecordsRequestEntry), + ]), + ), + 'StreamName', + serializers.serialize( + object.streamName, + specifiedType: const FullType(String), + ), + ]; + if (object.streamArn != null) { + result + ..add('StreamARN') + ..add( + serializers.serialize( + object.streamArn, + specifiedType: const FullType(String), + ), + ); + } + return result; + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_request.g.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_request.g.dart new file mode 100644 index 00000000000..750e5f7589d --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_request.g.dart @@ -0,0 +1,131 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'put_records_request.dart'; + +// ************************************************************************** +// BuiltValueGenerator +// ************************************************************************** + +class _$PutRecordsRequest extends PutRecordsRequest { + @override + final _i3.BuiltList records; + @override + final String streamName; + @override + final String? streamArn; + + factory _$PutRecordsRequest([ + void Function(PutRecordsRequestBuilder)? updates, + ]) => (PutRecordsRequestBuilder()..update(updates))._build(); + + _$PutRecordsRequest._({ + required this.records, + required this.streamName, + this.streamArn, + }) : super._(); + @override + PutRecordsRequest rebuild(void Function(PutRecordsRequestBuilder) updates) => + (toBuilder()..update(updates)).build(); + + @override + PutRecordsRequestBuilder toBuilder() => + PutRecordsRequestBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is PutRecordsRequest && + records == other.records && + streamName == other.streamName && + streamArn == other.streamArn; + } + + @override + int get hashCode { + var _$hash = 0; + _$hash = $jc(_$hash, records.hashCode); + _$hash = $jc(_$hash, streamName.hashCode); + _$hash = $jc(_$hash, streamArn.hashCode); + _$hash = $jf(_$hash); + return _$hash; + } +} + +class PutRecordsRequestBuilder + implements Builder { + _$PutRecordsRequest? _$v; + + _i3.ListBuilder? _records; + _i3.ListBuilder get records => + _$this._records ??= _i3.ListBuilder(); + set records(_i3.ListBuilder? records) => + _$this._records = records; + + String? _streamName; + String? get streamName => _$this._streamName; + set streamName(String? streamName) => _$this._streamName = streamName; + + String? _streamArn; + String? get streamArn => _$this._streamArn; + set streamArn(String? streamArn) => _$this._streamArn = streamArn; + + PutRecordsRequestBuilder(); + + PutRecordsRequestBuilder get _$this { + final $v = _$v; + if ($v != null) { + _records = $v.records.toBuilder(); + _streamName = $v.streamName; + _streamArn = $v.streamArn; + _$v = null; + } + return this; + } + + @override + void replace(PutRecordsRequest other) { + _$v = other as _$PutRecordsRequest; + } + + @override + void update(void Function(PutRecordsRequestBuilder)? updates) { + if (updates != null) updates(this); + } + + @override + PutRecordsRequest build() => _build(); + + _$PutRecordsRequest _build() { + _$PutRecordsRequest _$result; + try { + _$result = + _$v ?? + _$PutRecordsRequest._( + records: records.build(), + streamName: BuiltValueNullFieldError.checkNotNull( + streamName, + r'PutRecordsRequest', + 'streamName', + ), + streamArn: streamArn, + ); + } catch (_) { + late String _$failedField; + try { + _$failedField = 'records'; + records.build(); + } catch (e) { + throw BuiltValueNestedFieldError( + r'PutRecordsRequest', + _$failedField, + e.toString(), + ); + } + rethrow; + } + replace(_$result); + return _$result; + } +} + +// ignore_for_file: deprecated_member_use_from_same_package,type=lint diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_request_entry.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_request_entry.dart new file mode 100644 index 00000000000..50272410aa7 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_request_entry.dart @@ -0,0 +1,157 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// Generated with smithy-dart 0.3.2. DO NOT MODIFY. +// ignore_for_file: avoid_unused_constructor_parameters,deprecated_member_use_from_same_package,non_constant_identifier_names,unnecessary_library_name + +library amplify_kinesis.kinesis.model.put_records_request_entry; // ignore_for_file: no_leading_underscores_for_library_prefixes + +import 'dart:typed_data' as _i3; + +import 'package:aws_common/aws_common.dart' as _i1; +import 'package:built_value/built_value.dart'; +import 'package:built_value/serializer.dart'; +import 'package:smithy/smithy.dart' as _i2; + +part 'put_records_request_entry.g.dart'; + +/// Represents the output for PutRecords. +abstract class PutRecordsRequestEntry + with _i1.AWSEquatable + implements Built { + /// Represents the output for PutRecords. + factory PutRecordsRequestEntry({ + required _i3.Uint8List data, + String? explicitHashKey, + required String partitionKey, + }) { + return _$PutRecordsRequestEntry._( + data: data, + explicitHashKey: explicitHashKey, + partitionKey: partitionKey, + ); + } + + /// Represents the output for PutRecords. + factory PutRecordsRequestEntry.build([ + void Function(PutRecordsRequestEntryBuilder) updates, + ]) = _$PutRecordsRequestEntry; + + const PutRecordsRequestEntry._(); + + static const List<_i2.SmithySerializer> serializers = + [PutRecordsRequestEntryAwsJson11Serializer()]; + + /// The data blob to put into the record, which is base64-encoded when the + /// blob is serialized. + _i3.Uint8List get data; + + /// The hash value used to determine explicitly the shard that the data + /// record is assigned to by overriding the partition key hash. + String? get explicitHashKey; + + /// Determines which shard in the stream the data record is assigned to. + String get partitionKey; + + @override + List get props => [data, explicitHashKey, partitionKey]; + + @override + String toString() { + final helper = newBuiltValueToStringHelper('PutRecordsRequestEntry') + ..add('data', data) + ..add('explicitHashKey', explicitHashKey) + ..add('partitionKey', partitionKey); + return helper.toString(); + } +} + +class PutRecordsRequestEntryAwsJson11Serializer + extends _i2.StructuredSmithySerializer { + const PutRecordsRequestEntryAwsJson11Serializer() + : super('PutRecordsRequestEntry'); + + @override + Iterable get types => const [ + PutRecordsRequestEntry, + _$PutRecordsRequestEntry, + ]; + + @override + Iterable<_i2.ShapeId> get supportedProtocols => const [ + _i2.ShapeId(namespace: 'aws.protocols', shape: 'awsJson1_1'), + ]; + + @override + PutRecordsRequestEntry deserialize( + Serializers serializers, + Iterable serialized, { + FullType specifiedType = FullType.unspecified, + }) { + final result = PutRecordsRequestEntryBuilder(); + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final value = iterator.current; + if (value == null) { + continue; + } + switch (key) { + case 'Data': + result.data = + (serializers.deserialize( + value, + specifiedType: const FullType(_i3.Uint8List), + ) + as _i3.Uint8List); + case 'ExplicitHashKey': + result.explicitHashKey = + (serializers.deserialize( + value, + specifiedType: const FullType(String), + ) + as String); + case 'PartitionKey': + result.partitionKey = + (serializers.deserialize( + value, + specifiedType: const FullType(String), + ) + as String); + } + } + return result.build(); + } + + @override + Iterable serialize( + Serializers serializers, + PutRecordsRequestEntry object, { + FullType specifiedType = FullType.unspecified, + }) { + final result = [ + 'Data', + serializers.serialize( + object.data, + specifiedType: const FullType(_i3.Uint8List), + ), + 'PartitionKey', + serializers.serialize( + object.partitionKey, + specifiedType: const FullType(String), + ), + ]; + if (object.explicitHashKey != null) { + result + ..add('ExplicitHashKey') + ..add( + serializers.serialize( + object.explicitHashKey, + specifiedType: const FullType(String), + ), + ); + } + return result; + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_request_entry.g.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_request_entry.g.dart new file mode 100644 index 00000000000..4fd2705d466 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_request_entry.g.dart @@ -0,0 +1,119 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'put_records_request_entry.dart'; + +// ************************************************************************** +// BuiltValueGenerator +// ************************************************************************** + +class _$PutRecordsRequestEntry extends PutRecordsRequestEntry { + @override + final _i3.Uint8List data; + @override + final String? explicitHashKey; + @override + final String partitionKey; + + factory _$PutRecordsRequestEntry([ + void Function(PutRecordsRequestEntryBuilder)? updates, + ]) => (PutRecordsRequestEntryBuilder()..update(updates))._build(); + + _$PutRecordsRequestEntry._({ + required this.data, + this.explicitHashKey, + required this.partitionKey, + }) : super._(); + @override + PutRecordsRequestEntry rebuild( + void Function(PutRecordsRequestEntryBuilder) updates, + ) => (toBuilder()..update(updates)).build(); + + @override + PutRecordsRequestEntryBuilder toBuilder() => + PutRecordsRequestEntryBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is PutRecordsRequestEntry && + data == other.data && + explicitHashKey == other.explicitHashKey && + partitionKey == other.partitionKey; + } + + @override + int get hashCode { + var _$hash = 0; + _$hash = $jc(_$hash, data.hashCode); + _$hash = $jc(_$hash, explicitHashKey.hashCode); + _$hash = $jc(_$hash, partitionKey.hashCode); + _$hash = $jf(_$hash); + return _$hash; + } +} + +class PutRecordsRequestEntryBuilder + implements Builder { + _$PutRecordsRequestEntry? _$v; + + _i3.Uint8List? _data; + _i3.Uint8List? get data => _$this._data; + set data(_i3.Uint8List? data) => _$this._data = data; + + String? _explicitHashKey; + String? get explicitHashKey => _$this._explicitHashKey; + set explicitHashKey(String? explicitHashKey) => + _$this._explicitHashKey = explicitHashKey; + + String? _partitionKey; + String? get partitionKey => _$this._partitionKey; + set partitionKey(String? partitionKey) => _$this._partitionKey = partitionKey; + + PutRecordsRequestEntryBuilder(); + + PutRecordsRequestEntryBuilder get _$this { + final $v = _$v; + if ($v != null) { + _data = $v.data; + _explicitHashKey = $v.explicitHashKey; + _partitionKey = $v.partitionKey; + _$v = null; + } + return this; + } + + @override + void replace(PutRecordsRequestEntry other) { + _$v = other as _$PutRecordsRequestEntry; + } + + @override + void update(void Function(PutRecordsRequestEntryBuilder)? updates) { + if (updates != null) updates(this); + } + + @override + PutRecordsRequestEntry build() => _build(); + + _$PutRecordsRequestEntry _build() { + final _$result = + _$v ?? + _$PutRecordsRequestEntry._( + data: BuiltValueNullFieldError.checkNotNull( + data, + r'PutRecordsRequestEntry', + 'data', + ), + explicitHashKey: explicitHashKey, + partitionKey: BuiltValueNullFieldError.checkNotNull( + partitionKey, + r'PutRecordsRequestEntry', + 'partitionKey', + ), + ); + replace(_$result); + return _$result; + } +} + +// ignore_for_file: deprecated_member_use_from_same_package,type=lint diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_response.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_response.dart new file mode 100644 index 00000000000..005ead8e369 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_response.dart @@ -0,0 +1,168 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// Generated with smithy-dart 0.3.2. DO NOT MODIFY. +// ignore_for_file: avoid_unused_constructor_parameters,deprecated_member_use_from_same_package,non_constant_identifier_names,unnecessary_library_name + +library amplify_kinesis.kinesis.model.put_records_response; // ignore_for_file: no_leading_underscores_for_library_prefixes + +import 'package:aws_common/aws_common.dart' as _i1; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/put_records_result_entry.dart'; +import 'package:built_collection/built_collection.dart' as _i3; +import 'package:built_value/built_value.dart'; +import 'package:built_value/serializer.dart'; +import 'package:smithy/smithy.dart' as _i2; + +part 'put_records_response.g.dart'; + +/// PutRecords results. +abstract class PutRecordsResponse + with _i1.AWSEquatable + implements Built { + /// PutRecords results. + factory PutRecordsResponse({ + int? failedRecordCount, + required List records, + String? encryptionType, + }) { + return _$PutRecordsResponse._( + failedRecordCount: failedRecordCount, + records: _i3.BuiltList(records), + encryptionType: encryptionType, + ); + } + + /// PutRecords results. + factory PutRecordsResponse.build([ + void Function(PutRecordsResponseBuilder) updates, + ]) = _$PutRecordsResponse; + + const PutRecordsResponse._(); + + /// Constructs a [PutRecordsResponse] from a [payload] and [response]. + factory PutRecordsResponse.fromResponse( + PutRecordsResponse payload, + _i1.AWSBaseHttpResponse response, + ) => payload; + + static const List<_i2.SmithySerializer> serializers = [ + PutRecordsResponseAwsJson11Serializer(), + ]; + + /// The number of unsuccessfully processed records in a PutRecords request. + int? get failedRecordCount; + + /// An array of successfully and unsuccessfully processed record results. + _i3.BuiltList get records; + + /// The encryption type used on the records. + String? get encryptionType; + + @override + List get props => [failedRecordCount, records, encryptionType]; + + @override + String toString() { + final helper = newBuiltValueToStringHelper('PutRecordsResponse') + ..add('failedRecordCount', failedRecordCount) + ..add('records', records) + ..add('encryptionType', encryptionType); + return helper.toString(); + } +} + +class PutRecordsResponseAwsJson11Serializer + extends _i2.StructuredSmithySerializer { + const PutRecordsResponseAwsJson11Serializer() : super('PutRecordsResponse'); + + @override + Iterable get types => const [PutRecordsResponse, _$PutRecordsResponse]; + + @override + Iterable<_i2.ShapeId> get supportedProtocols => const [ + _i2.ShapeId(namespace: 'aws.protocols', shape: 'awsJson1_1'), + ]; + + @override + PutRecordsResponse deserialize( + Serializers serializers, + Iterable serialized, { + FullType specifiedType = FullType.unspecified, + }) { + final result = PutRecordsResponseBuilder(); + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final value = iterator.current; + if (value == null) { + continue; + } + switch (key) { + case 'FailedRecordCount': + result.failedRecordCount = + (serializers.deserialize( + value, + specifiedType: const FullType(int), + ) + as int); + case 'Records': + result.records.replace( + (serializers.deserialize( + value, + specifiedType: const FullType(_i3.BuiltList, [ + FullType(PutRecordsResultEntry), + ]), + ) + as _i3.BuiltList), + ); + case 'EncryptionType': + result.encryptionType = + (serializers.deserialize( + value, + specifiedType: const FullType(String), + ) + as String); + } + } + return result.build(); + } + + @override + Iterable serialize( + Serializers serializers, + PutRecordsResponse object, { + FullType specifiedType = FullType.unspecified, + }) { + final result = [ + 'Records', + serializers.serialize( + object.records, + specifiedType: const FullType(_i3.BuiltList, [ + FullType(PutRecordsResultEntry), + ]), + ), + ]; + if (object.failedRecordCount != null) { + result + ..add('FailedRecordCount') + ..add( + serializers.serialize( + object.failedRecordCount, + specifiedType: const FullType(int), + ), + ); + } + if (object.encryptionType != null) { + result + ..add('EncryptionType') + ..add( + serializers.serialize( + object.encryptionType, + specifiedType: const FullType(String), + ), + ); + } + return result; + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_response.g.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_response.g.dart new file mode 100644 index 00000000000..c70cb3dd415 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_response.g.dart @@ -0,0 +1,130 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'put_records_response.dart'; + +// ************************************************************************** +// BuiltValueGenerator +// ************************************************************************** + +class _$PutRecordsResponse extends PutRecordsResponse { + @override + final int? failedRecordCount; + @override + final _i3.BuiltList records; + @override + final String? encryptionType; + + factory _$PutRecordsResponse([ + void Function(PutRecordsResponseBuilder)? updates, + ]) => (PutRecordsResponseBuilder()..update(updates))._build(); + + _$PutRecordsResponse._({ + this.failedRecordCount, + required this.records, + this.encryptionType, + }) : super._(); + @override + PutRecordsResponse rebuild( + void Function(PutRecordsResponseBuilder) updates, + ) => (toBuilder()..update(updates)).build(); + + @override + PutRecordsResponseBuilder toBuilder() => + PutRecordsResponseBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is PutRecordsResponse && + failedRecordCount == other.failedRecordCount && + records == other.records && + encryptionType == other.encryptionType; + } + + @override + int get hashCode { + var _$hash = 0; + _$hash = $jc(_$hash, failedRecordCount.hashCode); + _$hash = $jc(_$hash, records.hashCode); + _$hash = $jc(_$hash, encryptionType.hashCode); + _$hash = $jf(_$hash); + return _$hash; + } +} + +class PutRecordsResponseBuilder + implements Builder { + _$PutRecordsResponse? _$v; + + int? _failedRecordCount; + int? get failedRecordCount => _$this._failedRecordCount; + set failedRecordCount(int? failedRecordCount) => + _$this._failedRecordCount = failedRecordCount; + + _i3.ListBuilder? _records; + _i3.ListBuilder get records => + _$this._records ??= _i3.ListBuilder(); + set records(_i3.ListBuilder? records) => + _$this._records = records; + + String? _encryptionType; + String? get encryptionType => _$this._encryptionType; + set encryptionType(String? encryptionType) => + _$this._encryptionType = encryptionType; + + PutRecordsResponseBuilder(); + + PutRecordsResponseBuilder get _$this { + final $v = _$v; + if ($v != null) { + _failedRecordCount = $v.failedRecordCount; + _records = $v.records.toBuilder(); + _encryptionType = $v.encryptionType; + _$v = null; + } + return this; + } + + @override + void replace(PutRecordsResponse other) { + _$v = other as _$PutRecordsResponse; + } + + @override + void update(void Function(PutRecordsResponseBuilder)? updates) { + if (updates != null) updates(this); + } + + @override + PutRecordsResponse build() => _build(); + + _$PutRecordsResponse _build() { + _$PutRecordsResponse _$result; + try { + _$result = + _$v ?? + _$PutRecordsResponse._( + failedRecordCount: failedRecordCount, + records: records.build(), + encryptionType: encryptionType, + ); + } catch (_) { + late String _$failedField; + try { + _$failedField = 'records'; + records.build(); + } catch (e) { + throw BuiltValueNestedFieldError( + r'PutRecordsResponse', + _$failedField, + e.toString(), + ); + } + rethrow; + } + replace(_$result); + return _$result; + } +} + +// ignore_for_file: deprecated_member_use_from_same_package,type=lint diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_result_entry.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_result_entry.dart new file mode 100644 index 00000000000..4c047c2720d --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_result_entry.dart @@ -0,0 +1,188 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// Generated with smithy-dart 0.3.2. DO NOT MODIFY. +// ignore_for_file: avoid_unused_constructor_parameters,deprecated_member_use_from_same_package,non_constant_identifier_names,unnecessary_library_name + +library amplify_kinesis.kinesis.model.put_records_result_entry; // ignore_for_file: no_leading_underscores_for_library_prefixes + +import 'package:aws_common/aws_common.dart' as _i1; +import 'package:built_value/built_value.dart'; +import 'package:built_value/serializer.dart'; +import 'package:smithy/smithy.dart' as _i2; + +part 'put_records_result_entry.g.dart'; + +/// Represents the result of an individual record from a PutRecords request. +abstract class PutRecordsResultEntry + with _i1.AWSEquatable + implements Built { + /// Represents the result of an individual record from a PutRecords request. + factory PutRecordsResultEntry({ + String? sequenceNumber, + String? shardId, + String? errorCode, + String? errorMessage, + }) { + return _$PutRecordsResultEntry._( + sequenceNumber: sequenceNumber, + shardId: shardId, + errorCode: errorCode, + errorMessage: errorMessage, + ); + } + + /// Represents the result of an individual record from a PutRecords request. + factory PutRecordsResultEntry.build([ + void Function(PutRecordsResultEntryBuilder) updates, + ]) = _$PutRecordsResultEntry; + + const PutRecordsResultEntry._(); + + static const List<_i2.SmithySerializer> serializers = [ + PutRecordsResultEntryAwsJson11Serializer(), + ]; + + /// The sequence number for an individual record result. + String? get sequenceNumber; + + /// The shard ID for an individual record result. + String? get shardId; + + /// The error code for an individual record result. + /// `InternalFailure` and `ProvisionedThroughputExceededException` are + /// retryable errors. + String? get errorCode; + + /// The error message for an individual record result. + String? get errorMessage; + + @override + List get props => [sequenceNumber, shardId, errorCode, errorMessage]; + + @override + String toString() { + final helper = newBuiltValueToStringHelper('PutRecordsResultEntry') + ..add('sequenceNumber', sequenceNumber) + ..add('shardId', shardId) + ..add('errorCode', errorCode) + ..add('errorMessage', errorMessage); + return helper.toString(); + } +} + +class PutRecordsResultEntryAwsJson11Serializer + extends _i2.StructuredSmithySerializer { + const PutRecordsResultEntryAwsJson11Serializer() + : super('PutRecordsResultEntry'); + + @override + Iterable get types => const [ + PutRecordsResultEntry, + _$PutRecordsResultEntry, + ]; + + @override + Iterable<_i2.ShapeId> get supportedProtocols => const [ + _i2.ShapeId(namespace: 'aws.protocols', shape: 'awsJson1_1'), + ]; + + @override + PutRecordsResultEntry deserialize( + Serializers serializers, + Iterable serialized, { + FullType specifiedType = FullType.unspecified, + }) { + final result = PutRecordsResultEntryBuilder(); + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final value = iterator.current; + if (value == null) { + continue; + } + switch (key) { + case 'SequenceNumber': + result.sequenceNumber = + (serializers.deserialize( + value, + specifiedType: const FullType(String), + ) + as String); + case 'ShardId': + result.shardId = + (serializers.deserialize( + value, + specifiedType: const FullType(String), + ) + as String); + case 'ErrorCode': + result.errorCode = + (serializers.deserialize( + value, + specifiedType: const FullType(String), + ) + as String); + case 'ErrorMessage': + result.errorMessage = + (serializers.deserialize( + value, + specifiedType: const FullType(String), + ) + as String); + } + } + return result.build(); + } + + @override + Iterable serialize( + Serializers serializers, + PutRecordsResultEntry object, { + FullType specifiedType = FullType.unspecified, + }) { + final result = []; + if (object.sequenceNumber != null) { + result + ..add('SequenceNumber') + ..add( + serializers.serialize( + object.sequenceNumber, + specifiedType: const FullType(String), + ), + ); + } + if (object.shardId != null) { + result + ..add('ShardId') + ..add( + serializers.serialize( + object.shardId, + specifiedType: const FullType(String), + ), + ); + } + if (object.errorCode != null) { + result + ..add('ErrorCode') + ..add( + serializers.serialize( + object.errorCode, + specifiedType: const FullType(String), + ), + ); + } + if (object.errorMessage != null) { + result + ..add('ErrorMessage') + ..add( + serializers.serialize( + object.errorMessage, + specifiedType: const FullType(String), + ), + ); + } + return result; + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_result_entry.g.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_result_entry.g.dart new file mode 100644 index 00000000000..21c244b5211 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/put_records_result_entry.g.dart @@ -0,0 +1,122 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'put_records_result_entry.dart'; + +// ************************************************************************** +// BuiltValueGenerator +// ************************************************************************** + +class _$PutRecordsResultEntry extends PutRecordsResultEntry { + @override + final String? sequenceNumber; + @override + final String? shardId; + @override + final String? errorCode; + @override + final String? errorMessage; + + factory _$PutRecordsResultEntry([ + void Function(PutRecordsResultEntryBuilder)? updates, + ]) => (PutRecordsResultEntryBuilder()..update(updates))._build(); + + _$PutRecordsResultEntry._({ + this.sequenceNumber, + this.shardId, + this.errorCode, + this.errorMessage, + }) : super._(); + @override + PutRecordsResultEntry rebuild( + void Function(PutRecordsResultEntryBuilder) updates, + ) => (toBuilder()..update(updates)).build(); + + @override + PutRecordsResultEntryBuilder toBuilder() => + PutRecordsResultEntryBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is PutRecordsResultEntry && + sequenceNumber == other.sequenceNumber && + shardId == other.shardId && + errorCode == other.errorCode && + errorMessage == other.errorMessage; + } + + @override + int get hashCode { + var _$hash = 0; + _$hash = $jc(_$hash, sequenceNumber.hashCode); + _$hash = $jc(_$hash, shardId.hashCode); + _$hash = $jc(_$hash, errorCode.hashCode); + _$hash = $jc(_$hash, errorMessage.hashCode); + _$hash = $jf(_$hash); + return _$hash; + } +} + +class PutRecordsResultEntryBuilder + implements Builder { + _$PutRecordsResultEntry? _$v; + + String? _sequenceNumber; + String? get sequenceNumber => _$this._sequenceNumber; + set sequenceNumber(String? sequenceNumber) => + _$this._sequenceNumber = sequenceNumber; + + String? _shardId; + String? get shardId => _$this._shardId; + set shardId(String? shardId) => _$this._shardId = shardId; + + String? _errorCode; + String? get errorCode => _$this._errorCode; + set errorCode(String? errorCode) => _$this._errorCode = errorCode; + + String? _errorMessage; + String? get errorMessage => _$this._errorMessage; + set errorMessage(String? errorMessage) => _$this._errorMessage = errorMessage; + + PutRecordsResultEntryBuilder(); + + PutRecordsResultEntryBuilder get _$this { + final $v = _$v; + if ($v != null) { + _sequenceNumber = $v.sequenceNumber; + _shardId = $v.shardId; + _errorCode = $v.errorCode; + _errorMessage = $v.errorMessage; + _$v = null; + } + return this; + } + + @override + void replace(PutRecordsResultEntry other) { + _$v = other as _$PutRecordsResultEntry; + } + + @override + void update(void Function(PutRecordsResultEntryBuilder)? updates) { + if (updates != null) updates(this); + } + + @override + PutRecordsResultEntry build() => _build(); + + _$PutRecordsResultEntry _build() { + final _$result = + _$v ?? + _$PutRecordsResultEntry._( + sequenceNumber: sequenceNumber, + shardId: shardId, + errorCode: errorCode, + errorMessage: errorMessage, + ); + replace(_$result); + return _$result; + } +} + +// ignore_for_file: deprecated_member_use_from_same_package,type=lint diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/resource_not_found_exception.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/resource_not_found_exception.dart new file mode 100644 index 00000000000..824993edea5 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/resource_not_found_exception.dart @@ -0,0 +1,143 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// Generated with smithy-dart 0.3.2. DO NOT MODIFY. +// ignore_for_file: avoid_unused_constructor_parameters,deprecated_member_use_from_same_package,non_constant_identifier_names,unnecessary_library_name + +library amplify_kinesis.kinesis.model.resource_not_found_exception; // ignore_for_file: no_leading_underscores_for_library_prefixes + +import 'package:aws_common/aws_common.dart' as _i1; +import 'package:built_value/built_value.dart'; +import 'package:built_value/serializer.dart'; +import 'package:smithy/smithy.dart' as _i2; + +part 'resource_not_found_exception.g.dart'; + +/// The requested resource could not be found. +abstract class ResourceNotFoundException + with _i1.AWSEquatable + implements + Built, + _i2.SmithyHttpException { + /// The requested resource could not be found. + factory ResourceNotFoundException({String? message}) { + return _$ResourceNotFoundException._(message: message); + } + + /// The requested resource could not be found. + factory ResourceNotFoundException.build([ + void Function(ResourceNotFoundExceptionBuilder) updates, + ]) = _$ResourceNotFoundException; + + const ResourceNotFoundException._(); + + /// Constructs a [ResourceNotFoundException] from a [payload] and [response]. + factory ResourceNotFoundException.fromResponse( + ResourceNotFoundException payload, + _i1.AWSBaseHttpResponse response, + ) => payload.rebuild((b) { + b.statusCode = response.statusCode; + b.headers = response.headers; + }); + + static const List<_i2.SmithySerializer> + serializers = [ResourceNotFoundExceptionAwsJson11Serializer()]; + + @override + String? get message; + + @override + _i2.ShapeId get shapeId => const _i2.ShapeId( + namespace: 'com.amazonaws.kinesis', + shape: 'ResourceNotFoundException', + ); + + @override + _i2.RetryConfig? get retryConfig => null; + + @override + @BuiltValueField(compare: false) + int? get statusCode; + + @override + @BuiltValueField(compare: false) + Map? get headers; + + @override + Exception? get underlyingException => null; + + @override + List get props => [message]; + + @override + String toString() { + final helper = newBuiltValueToStringHelper('ResourceNotFoundException') + ..add('message', message); + return helper.toString(); + } +} + +class ResourceNotFoundExceptionAwsJson11Serializer + extends _i2.StructuredSmithySerializer { + const ResourceNotFoundExceptionAwsJson11Serializer() + : super('ResourceNotFoundException'); + + @override + Iterable get types => const [ + ResourceNotFoundException, + _$ResourceNotFoundException, + ]; + + @override + Iterable<_i2.ShapeId> get supportedProtocols => const [ + _i2.ShapeId(namespace: 'aws.protocols', shape: 'awsJson1_1'), + ]; + + @override + ResourceNotFoundException deserialize( + Serializers serializers, + Iterable serialized, { + FullType specifiedType = FullType.unspecified, + }) { + final result = ResourceNotFoundExceptionBuilder(); + final iterator = serialized.iterator; + while (iterator.moveNext()) { + final key = iterator.current as String; + iterator.moveNext(); + final value = iterator.current; + if (value == null) { + continue; + } + switch (key) { + case 'message': + result.message = + (serializers.deserialize( + value, + specifiedType: const FullType(String), + ) + as String); + } + } + return result.build(); + } + + @override + Iterable serialize( + Serializers serializers, + ResourceNotFoundException object, { + FullType specifiedType = FullType.unspecified, + }) { + final result = []; + if (object.message != null) { + result + ..add('message') + ..add( + serializers.serialize( + object.message, + specifiedType: const FullType(String), + ), + ); + } + return result; + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/resource_not_found_exception.g.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/resource_not_found_exception.g.dart new file mode 100644 index 00000000000..8eae04a44de --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/model/resource_not_found_exception.g.dart @@ -0,0 +1,103 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'resource_not_found_exception.dart'; + +// ************************************************************************** +// BuiltValueGenerator +// ************************************************************************** + +class _$ResourceNotFoundException extends ResourceNotFoundException { + @override + final String? message; + @override + final int? statusCode; + @override + final Map? headers; + + factory _$ResourceNotFoundException([ + void Function(ResourceNotFoundExceptionBuilder)? updates, + ]) => (ResourceNotFoundExceptionBuilder()..update(updates))._build(); + + _$ResourceNotFoundException._({this.message, this.statusCode, this.headers}) + : super._(); + @override + ResourceNotFoundException rebuild( + void Function(ResourceNotFoundExceptionBuilder) updates, + ) => (toBuilder()..update(updates)).build(); + + @override + ResourceNotFoundExceptionBuilder toBuilder() => + ResourceNotFoundExceptionBuilder()..replace(this); + + @override + bool operator ==(Object other) { + if (identical(other, this)) return true; + return other is ResourceNotFoundException && message == other.message; + } + + @override + int get hashCode { + var _$hash = 0; + _$hash = $jc(_$hash, message.hashCode); + _$hash = $jf(_$hash); + return _$hash; + } +} + +class ResourceNotFoundExceptionBuilder + implements + Builder { + _$ResourceNotFoundException? _$v; + + String? _message; + String? get message => _$this._message; + set message(String? message) => _$this._message = message; + + int? _statusCode; + int? get statusCode => _$this._statusCode; + set statusCode(int? statusCode) => _$this._statusCode = statusCode; + + Map? _headers; + Map? get headers => _$this._headers; + set headers(Map? headers) => _$this._headers = headers; + + ResourceNotFoundExceptionBuilder(); + + ResourceNotFoundExceptionBuilder get _$this { + final $v = _$v; + if ($v != null) { + _message = $v.message; + _statusCode = $v.statusCode; + _headers = $v.headers; + _$v = null; + } + return this; + } + + @override + void replace(ResourceNotFoundException other) { + _$v = other as _$ResourceNotFoundException; + } + + @override + void update(void Function(ResourceNotFoundExceptionBuilder)? updates) { + if (updates != null) updates(this); + } + + @override + ResourceNotFoundException build() => _build(); + + _$ResourceNotFoundException _build() { + final _$result = + _$v ?? + _$ResourceNotFoundException._( + message: message, + statusCode: statusCode, + headers: headers, + ); + replace(_$result); + return _$result; + } +} + +// ignore_for_file: deprecated_member_use_from_same_package,type=lint diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/operation/put_records_operation.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/operation/put_records_operation.dart new file mode 100644 index 00000000000..ec3f9af95be --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/sdk/src/kinesis/operation/put_records_operation.dart @@ -0,0 +1,180 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +// Generated with smithy-dart 0.3.2. DO NOT MODIFY. +// ignore_for_file: avoid_unused_constructor_parameters,deprecated_member_use_from_same_package,non_constant_identifier_names,unnecessary_library_name + +library amplify_kinesis.kinesis.operation.put_records_operation; // ignore_for_file: no_leading_underscores_for_library_prefixes + +import 'dart:async' as _i5; + +import 'package:aws_common/aws_common.dart' as _i4; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/common/endpoint_resolver.dart'; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/common/serializers.dart'; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/invalid_argument_exception.dart'; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/kms_exception.dart'; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/provisioned_throughput_exceeded_exception.dart'; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/put_records_request.dart'; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/put_records_response.dart'; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/model/resource_not_found_exception.dart'; +import 'package:aws_signature_v4/aws_signature_v4.dart' as _i2; +import 'package:smithy/smithy.dart' as _i1; +import 'package:smithy_aws/smithy_aws.dart' as _i3; + +/// Writes multiple data records into a Kinesis data stream in a single call. +class PutRecordsOperation + extends + _i1.HttpOperation< + PutRecordsRequest, + PutRecordsRequest, + PutRecordsResponse, + PutRecordsResponse + > { + /// Writes multiple data records into a Kinesis data stream in a single call. + PutRecordsOperation({ + required String region, + Uri? baseUri, + _i2.AWSCredentialsProvider credentialsProvider = + const _i2.AWSCredentialsProvider.defaultChain(), + List<_i1.HttpRequestInterceptor> requestInterceptors = const [], + List<_i1.HttpResponseInterceptor> responseInterceptors = const [], + }) : _region = region, + _baseUri = baseUri, + _credentialsProvider = credentialsProvider, + _requestInterceptors = requestInterceptors, + _responseInterceptors = responseInterceptors; + + @override + late final List< + _i1.HttpProtocol< + PutRecordsRequest, + PutRecordsRequest, + PutRecordsResponse, + PutRecordsResponse + > + > + protocols = [ + _i3.AwsJson1_1Protocol( + serializers: serializers, + builderFactories: builderFactories, + requestInterceptors: + <_i1.HttpRequestInterceptor>[ + const _i1.WithHost(), + const _i1.WithContentLength(), + const _i1.WithHeader('X-Amz-Target', 'Kinesis_20131202.PutRecords'), + _i3.WithSigV4( + region: _region, + service: _i4.AWSService.kinesis, + credentialsProvider: _credentialsProvider, + ), + const _i1.WithUserAgent('aws-sdk-dart/0.3.2'), + const _i3.WithSdkInvocationId(), + const _i3.WithSdkRequest(), + ] + + _requestInterceptors, + responseInterceptors: + <_i1.HttpResponseInterceptor>[] + _responseInterceptors, + ), + ]; + + late final _i3.AWSEndpoint _awsEndpoint = endpointResolver.resolve( + sdkId, + _region, + ); + + final String _region; + + final Uri? _baseUri; + + final _i2.AWSCredentialsProvider _credentialsProvider; + + final List<_i1.HttpRequestInterceptor> _requestInterceptors; + + final List<_i1.HttpResponseInterceptor> _responseInterceptors; + + @override + _i1.HttpRequest buildRequest(PutRecordsRequest input) => _i1.HttpRequest((b) { + b.method = 'POST'; + b.path = r'/'; + }); + + @override + int successCode([PutRecordsResponse? output]) => 200; + + @override + PutRecordsResponse buildOutput( + PutRecordsResponse payload, + _i4.AWSBaseHttpResponse response, + ) => PutRecordsResponse.fromResponse(payload, response); + + @override + List<_i1.SmithyError> get errorTypes => const [ + _i1.SmithyError( + _i1.ShapeId( + namespace: 'com.amazonaws.kinesis', + shape: 'InvalidArgumentException', + ), + _i1.ErrorKind.client, + InvalidArgumentException, + statusCode: 400, + builder: InvalidArgumentException.fromResponse, + ), + _i1.SmithyError< + ProvisionedThroughputExceededException, + ProvisionedThroughputExceededException + >( + _i1.ShapeId( + namespace: 'com.amazonaws.kinesis', + shape: 'ProvisionedThroughputExceededException', + ), + _i1.ErrorKind.client, + ProvisionedThroughputExceededException, + statusCode: 400, + builder: ProvisionedThroughputExceededException.fromResponse, + ), + _i1.SmithyError( + _i1.ShapeId( + namespace: 'com.amazonaws.kinesis', + shape: 'ResourceNotFoundException', + ), + _i1.ErrorKind.client, + ResourceNotFoundException, + statusCode: 400, + builder: ResourceNotFoundException.fromResponse, + ), + _i1.SmithyError( + _i1.ShapeId(namespace: 'com.amazonaws.kinesis', shape: 'KMSException'), + _i1.ErrorKind.client, + KmsException, + statusCode: 400, + builder: KmsException.fromResponse, + ), + ]; + + @override + String get runtimeTypeName => 'PutRecords'; + + @override + _i3.AWSRetryer get retryer => _i3.AWSRetryer(); + + @override + Uri get baseUri => _baseUri ?? endpoint.uri; + + @override + _i1.Endpoint get endpoint => _awsEndpoint.endpoint; + + @override + _i1.SmithyOperation run( + PutRecordsRequest input, { + _i4.AWSHttpClient? client, + _i1.ShapeId? useProtocol, + }) { + return _i5.runZoned( + () => super.run(input, client: client, useProtocol: useProtocol), + zoneValues: { + ...?_awsEndpoint.credentialScope?.zoneValues, + ...{_i4.AWSHeaders.sdkInvocationId: _i4.uuid(secure: true)}, + }, + ); + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/lib/src/version.dart b/packages/kinesis/amplify_kinesis_dart/lib/src/version.dart new file mode 100644 index 00000000000..455b52f65a8 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/lib/src/version.dart @@ -0,0 +1,4 @@ +// Generated code. Do not modify. + +/// The current package version. +const packageVersion = '0.1.0'; diff --git a/packages/kinesis/amplify_kinesis_dart/pubspec.yaml b/packages/kinesis/amplify_kinesis_dart/pubspec.yaml new file mode 100644 index 00000000000..cddd640472e --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/pubspec.yaml @@ -0,0 +1,42 @@ +name: amplify_kinesis_dart +description: A Dart-only implementation for streaming data to Amazon Kinesis Data Streams with offline support. For internal use in the amplify_kinesis Flutter library. +version: 0.1.0 +homepage: https://docs.amplify.aws/lib/q/platform/flutter/ +repository: https://github.com/aws-amplify/amplify-flutter/tree/main/packages/kinesis/amplify_kinesis_dart +issue_tracker: https://github.com/aws-amplify/amplify-flutter/issues + +topics: + - aws + - kinesis + - streaming + - analytics + - aws-amplify + +environment: + sdk: ^3.9.0 + +dependencies: + amplify_core: ">=2.10.0 <2.11.0" + amplify_db_common_dart: ">=0.4.14 <0.5.0" + amplify_foundation_dart: ">=2.10.0 <2.11.0" + amplify_foundation_dart_bridge: ">=2.10.0 <2.11.0" + aws_common: ">=0.7.12 <0.8.0" + aws_signature_v4: ">=0.6.10 <0.7.0" + built_collection: ^5.1.1 + built_value: ^8.10.1 + drift: ^2.25.0 + meta: ^1.16.0 + smithy: ">=0.7.10 <0.8.0" + smithy_aws: ">=0.7.10 <0.8.0" + synchronized: ^3.3.0 + web: ^1.1.1 + +dev_dependencies: + amplify_lints: ">=3.1.4 <3.2.0" + build_runner: ^2.4.15 + build_version: ^2.1.1 + built_value_generator: ^8.10.1 + drift_dev: ^2.25.1 + fake_async: ^1.3.0 + mocktail: ^1.0.0 + test: ^1.22.1 diff --git a/packages/kinesis/amplify_kinesis_dart/sdk.yaml b/packages/kinesis/amplify_kinesis_dart/sdk.yaml new file mode 100644 index 00000000000..d61f7eafd70 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/sdk.yaml @@ -0,0 +1,3 @@ +apis: + com.amazonaws.kinesis: + - PutRecords diff --git a/packages/kinesis/amplify_kinesis_dart/test/amplify_kinesis_exception_test.dart b/packages/kinesis/amplify_kinesis_dart/test/amplify_kinesis_exception_test.dart new file mode 100644 index 00000000000..61f9de630b1 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/test/amplify_kinesis_exception_test.dart @@ -0,0 +1,73 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'package:amplify_kinesis_dart/src/exception/amplify_kinesis_exception.dart'; +import 'package:amplify_kinesis_dart/src/exception/record_cache_exception.dart'; +import 'package:test/test.dart'; + +void main() { + group('AmplifyKinesisException.from', () { + test('passes through AmplifyKinesisException unchanged', () { + const original = KinesisStorageException('msg'); + final result = AmplifyKinesisException.from(original); + expect(identical(result, original), isTrue); + }); + + test( + 'converts RecordCacheValidationException to KinesisValidationException', + () { + final cause = RecordCacheValidationException('bad input', 'fix it'); + final result = AmplifyKinesisException.from(cause); + expect(result, isA()); + expect(result.message, 'bad input'); + expect(result.recoverySuggestion, 'fix it'); + }, + ); + + test( + 'converts RecordCacheDatabaseException to KinesisStorageException', + () { + final underlying = Exception('sqlite error'); + final cause = RecordCacheDatabaseException( + 'db error', + 'retry', + underlying, + ); + final result = AmplifyKinesisException.from(cause); + expect(result, isA()); + expect(result.message, 'db error'); + expect(result.recoverySuggestion, 'retry'); + expect(result.underlyingException, underlying); + }, + ); + + test( + 'converts RecordCacheLimitExceededException to KinesisLimitExceededException', + () { + final cause = RecordCacheLimitExceededException( + 'cache full', + 'flush first', + ); + final result = AmplifyKinesisException.from(cause); + expect(result, isA()); + expect(result.message, 'cache full'); + expect(result.recoverySuggestion, 'flush first'); + }, + ); + + test('converts unknown Exception to KinesisUnknownException', () { + final cause = Exception('something unexpected'); + final result = AmplifyKinesisException.from(cause); + expect(result, isA()); + expect(result.underlyingException, cause); + }); + + test('converts non-Exception error to KinesisUnknownException', () { + const error = 'a string error'; + final result = AmplifyKinesisException.from(error); + expect(result, isA()); + expect(result.message, 'a string error'); + expect(result.underlyingException, isNull); + }); + }); +} diff --git a/packages/kinesis/amplify_kinesis_dart/test/auto_flush_scheduler_test.dart b/packages/kinesis/amplify_kinesis_dart/test/auto_flush_scheduler_test.dart new file mode 100644 index 00000000000..bf574220d71 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/test/auto_flush_scheduler_test.dart @@ -0,0 +1,93 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'package:amplify_kinesis_dart/src/impl/auto_flush_scheduler.dart'; +import 'package:amplify_kinesis_dart/src/impl/record_client.dart'; +import 'package:amplify_kinesis_dart/src/model/flush_data.dart'; +import 'package:fake_async/fake_async.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; + +class _MockRecordClient extends Mock implements RecordClient {} + +void main() { + group('AutoFlushScheduler', () { + late _MockRecordClient mockClient; + + setUp(() { + mockClient = _MockRecordClient(); + when(() => mockClient.flush()).thenAnswer((_) async => const FlushData()); + }); + + tearDown(() { + resetMocktailState(); + reset(mockClient); + }); + + test('start should begin periodic flushing', () { + fakeAsync((async) { + final scheduler = AutoFlushScheduler( + interval: const Duration(seconds: 1), + client: mockClient, + )..start(); + + async.elapse(const Duration(milliseconds: 2500)); // 2.5 seconds + scheduler.stop(); + + verify(() => mockClient.flush()).called(2); + }); + }); + + test('stop should stop periodic flushing', () { + fakeAsync((async) { + final scheduler = AutoFlushScheduler( + interval: const Duration(seconds: 1), + client: mockClient, + )..start(); + + async.elapse(const Duration(milliseconds: 1500)); // 1.5s — 1 flush + scheduler.stop(); + async.elapse(const Duration(milliseconds: 2000)); // 2s more — no flush + + verify(() => mockClient.flush()).called(1); + }); + }); + + test('start should cancel previous loop and restart', () { + fakeAsync((async) { + final scheduler = AutoFlushScheduler( + interval: const Duration(seconds: 1), + client: mockClient, + )..start(); + + async.elapse(const Duration(milliseconds: 500)); // 0.5s + scheduler.start(); // Restart — should cancel previous loop + async.elapse(const Duration(milliseconds: 1500)); // 1.5s more + scheduler.stop(); + + verify(() => mockClient.flush()).called(1); + }); + }); + + test('rapid start/stop/start does not leak loops', () { + fakeAsync((async) { + final scheduler = + AutoFlushScheduler( + interval: const Duration(seconds: 1), + client: mockClient, + ) + ..start() + ..stop() + ..start() + ..stop() + ..start(); + + // Only one loop should be active. + async.elapse(const Duration(milliseconds: 2500)); + scheduler.stop(); + + verify(() => mockClient.flush()).called(2); + }); + }); + }); +} diff --git a/packages/kinesis/amplify_kinesis_dart/test/common/mocktail_mocks.dart b/packages/kinesis/amplify_kinesis_dart/test/common/mocktail_mocks.dart new file mode 100644 index 00000000000..f77e0098ecf --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/test/common/mocktail_mocks.dart @@ -0,0 +1,66 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// Shared mock classes for Kinesis Data Streams tests. +library; + +import 'dart:async'; + +import 'package:amplify_foundation_dart/amplify_foundation_dart.dart' + as foundation; +import 'package:amplify_kinesis_dart/src/impl/kinesis_sender.dart'; +import 'package:amplify_kinesis_dart/src/impl/record_client.dart'; +import 'package:amplify_kinesis_dart/src/sdk/src/kinesis/kinesis_client.dart'; +import 'package:aws_common/aws_common.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:smithy/smithy.dart'; + +// ============================================================================= +// Smithy/SDK Mocks +// ============================================================================= + +/// Creates a mock [SmithyOperation] that returns the result of [fn]. +/// +/// Use this helper to mock SDK client method returns: +/// ```dart +/// when(() => mockClient.putRecords(any())).thenReturn( +/// mockSmithyOperation(() => PutRecordsResponse(...)), +/// ); +/// ``` +SmithyOperation mockSmithyOperation(FutureOr Function() fn) => + SmithyOperation( + CancelableOperation.fromFuture(Future.value(fn())), + operationName: '', + requestProgress: const Stream.empty(), + responseProgress: const Stream.empty(), + ); + +/// Mock implementation of [KinesisClient]. +class MockKinesisClient extends Mock implements KinesisClient {} + +/// Mock implementation of [SmithyOperation]. +/// +/// Use when you need to throw exceptions from SDK operations: +/// ```dart +/// final mockOperation = MockSmithyOperation(); +/// when(() => mockOperation.result).thenThrow(SomeException()); +/// when(() => mockClient.putRecords(any())).thenReturn(mockOperation); +/// ``` +class MockSmithyOperation extends Mock implements SmithyOperation {} + +/// Mock implementation of [AWSHttpException]. +class MockAWSHttpException extends Mock implements AWSHttpException {} + +/// Mock implementation of [RecordClient]. +class MockRecordClient extends Mock implements RecordClient {} + +/// Mock implementation of [KinesisSender]. +class MockKinesisSender extends Mock implements KinesisSender {} + +// ============================================================================= +// Fake Implementations +// ============================================================================= + +/// Fake implementation of [foundation.AWSCredentialsProvider] for testing. +class FakeAWSCredentialsProvider extends Fake + implements foundation.AWSCredentialsProvider {} diff --git a/packages/kinesis/amplify_kinesis_dart/test/helpers/test_database.dart b/packages/kinesis/amplify_kinesis_dart/test/helpers/test_database.dart new file mode 100644 index 00000000000..ebde2530ee1 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/test/helpers/test_database.dart @@ -0,0 +1,10 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'package:amplify_kinesis_dart/src/db/kinesis_record_database.dart'; +import 'package:drift/native.dart'; + +/// Creates an in-memory database for testing. +KinesisRecordDatabase createTestDatabase() { + return KinesisRecordDatabase.forTesting(NativeDatabase.memory()); +} diff --git a/packages/kinesis/amplify_kinesis_dart/test/in_memory_record_storage_test.dart b/packages/kinesis/amplify_kinesis_dart/test/in_memory_record_storage_test.dart new file mode 100644 index 00000000000..16acbc9b1a2 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/test/in_memory_record_storage_test.dart @@ -0,0 +1,183 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'dart:typed_data'; + +import 'package:amplify_kinesis_dart/src/impl/kinesis_record.dart'; +import 'package:amplify_kinesis_dart/src/impl/storage/record_storage.dart'; +import 'package:amplify_kinesis_dart/src/impl/storage/record_storage_memory.dart'; +import 'package:test/test.dart'; + +void main() { + group('InMemoryRecordStorage', () { + late InMemoryRecordStorage storage; + + setUp(() { + storage = InMemoryRecordStorage(maxCacheBytes: 10 * 1024 * 1024); + }); + + tearDown(() async { + await storage.close(); + }); + + /// Helper to get all records as a flat list. + Future> getAllRecords() async { + final byStream = await storage.getRecordsByStream(); + return byStream.values.expand((r) => r).toList(); + } + + group('addRecord', () { + test('saves and retrieves a record', () async { + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([1, 2, 3, 4, 5]), + partitionKey: 'test-partition', + streamName: 'test-stream', + ), + ); + + final retrieved = await getAllRecords(); + expect(retrieved, hasLength(1)); + expect(retrieved.first.streamName, equals('test-stream')); + expect(retrieved.first.partitionKey, equals('test-partition')); + expect( + retrieved.first.data, + equals(Uint8List.fromList([1, 2, 3, 4, 5])), + ); + expect(retrieved.first.retryCount, equals(0)); + }); + }); + + group('deleteRecords', () { + test('removes correct records by ID', () async { + for (var i = 0; i < 5; i++) { + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([i]), + partitionKey: 'pk-$i', + streamName: 'stream', + ), + ); + } + + final allRecords = await getAllRecords(); + expect(allRecords, hasLength(5)); + + final idsToDelete = [allRecords[1].id, allRecords[3].id]; + await storage.deleteRecords(idsToDelete); + + final remaining = await getAllRecords(); + expect(remaining, hasLength(3)); + expect(remaining.map((r) => r.id), isNot(contains(idsToDelete[0]))); + expect(remaining.map((r) => r.id), isNot(contains(idsToDelete[1]))); + }); + + test('handles empty ID list gracefully', () async { + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([1]), + partitionKey: 'pk', + streamName: 'stream', + ), + ); + + await storage.deleteRecords([]); + expect(await getAllRecords(), hasLength(1)); + }); + }); + + group('incrementRetryCount', () { + test('increments retry count correctly', () async { + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([1]), + partitionKey: 'pk', + streamName: 'stream', + ), + ); + + var records = await getAllRecords(); + expect(records.first.retryCount, equals(0)); + + await storage.incrementRetryCount([records.first.id]); + records = await getAllRecords(); + expect(records.first.retryCount, equals(1)); + + await storage.incrementRetryCount([records.first.id]); + records = await getAllRecords(); + expect(records.first.retryCount, equals(2)); + }); + }); + + group('getRecordsByStream', () { + test('returns records grouped by stream name', () async { + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([1]), + partitionKey: 'pk', + streamName: 'stream-a', + ), + ); + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([2]), + partitionKey: 'pk', + streamName: 'stream-b', + ), + ); + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([3]), + partitionKey: 'pk', + streamName: 'stream-a', + ), + ); + + final result = await storage.getRecordsByStream(); + expect(result.keys, containsAll(['stream-a', 'stream-b'])); + expect(result['stream-a'], hasLength(2)); + expect(result['stream-b'], hasLength(1)); + }); + + test('returns empty map when no records', () async { + final result = await storage.getRecordsByStream(); + expect(result, isEmpty); + }); + }); + + group('clearRecords', () { + test('removes all records', () async { + for (var i = 0; i < 5; i++) { + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([i]), + partitionKey: 'pk-$i', + streamName: 'stream', + ), + ); + } + expect(await getAllRecords(), hasLength(5)); + + await storage.clearRecords(); + + expect(await getAllRecords(), isEmpty); + }); + }); + + group('getRecordCount', () { + test('returns correct count', () async { + expect(await storage.getRecordCount(), equals(0)); + for (var i = 0; i < 3; i++) { + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([i]), + partitionKey: 'pk-$i', + streamName: 'stream', + ), + ); + } + expect(await storage.getRecordCount(), equals(3)); + }); + }); + }); +} diff --git a/packages/kinesis/amplify_kinesis_dart/test/kinesis_data_streams_test.dart b/packages/kinesis/amplify_kinesis_dart/test/kinesis_data_streams_test.dart new file mode 100644 index 00000000000..13f107cce5c --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/test/kinesis_data_streams_test.dart @@ -0,0 +1,294 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import 'dart:typed_data'; + +import 'package:amplify_foundation_dart/amplify_foundation_dart.dart' + show Error, Ok; +import 'package:amplify_kinesis_dart/src/amplify_kinesis_client.dart'; +import 'package:amplify_kinesis_dart/src/amplify_kinesis_client_options.dart'; +import 'package:amplify_kinesis_dart/src/exception/amplify_kinesis_exception.dart'; +import 'package:amplify_kinesis_dart/src/flush_strategy/flush_strategy.dart'; +import 'package:amplify_kinesis_dart/src/impl/kinesis_record.dart'; +import 'package:amplify_kinesis_dart/src/model/clear_cache_data.dart'; +import 'package:amplify_kinesis_dart/src/model/flush_data.dart'; +import 'package:amplify_kinesis_dart/src/model/record_data.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; + +import 'common/mocktail_mocks.dart'; + +void main() { + group('AmplifyKinesisClient', () { + late MockRecordClient mockRecordClient; + + setUpAll(() { + registerFallbackValue( + RecordInput.now(data: Uint8List(0), partitionKey: '', streamName: ''), + ); + }); + + setUp(() { + mockRecordClient = MockRecordClient(); + + when( + () => mockRecordClient.record(any()), + ).thenAnswer((_) async => const RecordData()); + when( + () => mockRecordClient.flush(), + ).thenAnswer((_) async => const FlushData()); + when( + () => mockRecordClient.clearCache(), + ).thenAnswer((_) async => const ClearCacheData()); + when(() => mockRecordClient.close()).thenAnswer((_) async {}); + }); + + tearDown(() { + resetMocktailState(); + reset(mockRecordClient); + }); + + group('initialization', () { + test('initializes with default options', () { + final client = AmplifyKinesisClient.withRecordClient( + recordClient: mockRecordClient, + ); + + expect(client.region, equals('us-east-1')); + expect(client.options.cacheMaxBytes, equals(5 * 1024 * 1024)); + expect(client.options.maxRetries, equals(5)); + expect(client.options.flushStrategy, isA()); + }); + + test('initializes with custom options', () { + const customOptions = AmplifyKinesisClientOptions( + cacheMaxBytes: 10 * 1024 * 1024, + maxRetries: 10, + flushStrategy: FlushInterval(interval: Duration(minutes: 1)), + ); + + final client = AmplifyKinesisClient.withRecordClient( + recordClient: mockRecordClient, + region: 'eu-west-1', + options: customOptions, + ); + + expect(client.region, equals('eu-west-1')); + expect(client.options.cacheMaxBytes, equals(10 * 1024 * 1024)); + expect(client.options.maxRetries, equals(10)); + expect( + (client.options.flushStrategy as FlushInterval).interval, + equals(const Duration(minutes: 1)), + ); + }); + + test('supports None flush strategy', () { + const customOptions = AmplifyKinesisClientOptions( + flushStrategy: FlushNone(), + ); + + final client = AmplifyKinesisClient.withRecordClient( + recordClient: mockRecordClient, + options: customOptions, + ); + + expect(client.options.flushStrategy, isA()); + }); + }); + + group('record()', () { + test('delegates to RecordClient with correct KinesisRecord', () async { + when( + () => mockRecordClient.record(any()), + ).thenAnswer((_) async => const RecordData()); + + final client = AmplifyKinesisClient.withRecordClient( + recordClient: mockRecordClient, + ); + + final data = Uint8List.fromList([1, 2, 3, 4, 5]); + final result = await client.record( + data: data, + partitionKey: 'test-partition', + streamName: 'test-stream', + ); + + final captured = + verify(() => mockRecordClient.record(captureAny())).captured.single + as RecordInput; + + expect(captured.data, equals(data)); + expect(captured.partitionKey, equals('test-partition')); + expect(captured.streamName, equals('test-stream')); + expect(captured.dataSize, equals(19)); + + expect(result, isA>()); + }); + + test('creates record with correct data size', () async { + when( + () => mockRecordClient.record(any()), + ).thenAnswer((_) async => const RecordData()); + + final client = AmplifyKinesisClient.withRecordClient( + recordClient: mockRecordClient, + ); + + final data = Uint8List(1000); + final result = await client.record( + data: data, + partitionKey: 'pk', + streamName: 'stream', + ); + + final captured = + verify(() => mockRecordClient.record(captureAny())).captured.single + as RecordInput; + + expect(captured.dataSize, equals(1002)); + + expect(result, isA>()); + }); + + test('returns RecordData when disabled', () async { + final client = AmplifyKinesisClient.withRecordClient( + recordClient: mockRecordClient, + )..disable(); + + final result = await client.record( + data: Uint8List.fromList([1]), + partitionKey: 'pk', + streamName: 'stream', + ); + + verifyNever(() => mockRecordClient.record(any())); + expect(result, isA>()); + }); + }); + + group('flush()', () { + test( + 'delegates to RecordClient and returns Result.ok with FlushData', + () async { + when( + () => mockRecordClient.flush(), + ).thenAnswer((_) async => const FlushData(recordsFlushed: 5)); + + final client = AmplifyKinesisClient.withRecordClient( + recordClient: mockRecordClient, + ); + + final result = await client.flush(); + + verify(() => mockRecordClient.flush()).called(1); + expect(result, isA>()); + expect((result as Ok).value.recordsFlushed, equals(5)); + }, + ); + }); + + group('clearCache()', () { + test( + 'delegates to RecordClient and returns Result.ok with ClearCacheData', + () async { + when( + () => mockRecordClient.clearCache(), + ).thenAnswer((_) async => const ClearCacheData(recordsCleared: 3)); + + final client = AmplifyKinesisClient.withRecordClient( + recordClient: mockRecordClient, + ); + + final result = await client.clearCache(); + + verify(() => mockRecordClient.clearCache()).called(1); + expect(result, isA>()); + expect( + (result as Ok).value.recordsCleared, + equals(3), + ); + }, + ); + }); + + group('enable() / disable()', () { + test('enable sets isEnabled to true', () { + final client = AmplifyKinesisClient.withRecordClient( + recordClient: mockRecordClient, + )..disable(); + expect(client.isEnabled, isFalse); + + client.enable(); + expect(client.isEnabled, isTrue); + }); + + test('disable sets isEnabled to false', () { + final client = AmplifyKinesisClient.withRecordClient( + recordClient: mockRecordClient, + ); + + expect(client.isEnabled, isTrue); + + client.disable(); + expect(client.isEnabled, isFalse); + }); + }); + + group('close()', () { + test('delegates to RecordClient', () async { + final client = AmplifyKinesisClient.withRecordClient( + recordClient: mockRecordClient, + ); + + await client.close(); + + verify(() => mockRecordClient.close()).called(1); + }); + + test('isClosed is true after close', () async { + final client = AmplifyKinesisClient.withRecordClient( + recordClient: mockRecordClient, + ); + + expect(client.isClosed, isFalse); + + await client.close(); + expect(client.isClosed, isTrue); + }); + + test('record returns Result.error with ClientClosedException', () async { + final client = AmplifyKinesisClient.withRecordClient( + recordClient: mockRecordClient, + ); + + await client.close(); + + final result = await client.record( + data: Uint8List.fromList([1]), + partitionKey: 'pk', + streamName: 'stream', + ); + expect(result, isA>()); + expect( + (result as Error).error, + isA(), + ); + }); + + test('flush returns Result.error with ClientClosedException', () async { + final client = AmplifyKinesisClient.withRecordClient( + recordClient: mockRecordClient, + ); + + await client.close(); + + final result = await client.flush(); + expect(result, isA>()); + expect( + (result as Error).error, + isA(), + ); + }); + }); + }); +} diff --git a/packages/kinesis/amplify_kinesis_dart/test/kinesis_sender_test.dart b/packages/kinesis/amplify_kinesis_dart/test/kinesis_sender_test.dart new file mode 100644 index 00000000000..c3a95a760c6 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/test/kinesis_sender_test.dart @@ -0,0 +1,172 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// Tests for KinesisSender request building and response categorization. +/// +/// The sender owns retry-count categorization: all error codes are treated +/// as retryable until the record exceeds maxRetries. +library; + +import 'dart:typed_data'; + +import 'package:amplify_kinesis_dart/src/impl/kinesis_sender.dart'; +import 'package:amplify_kinesis_dart/src/model/record.dart'; +import 'package:amplify_kinesis_dart/src/sdk/kinesis.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; + +import 'common/mocktail_mocks.dart'; + +Record _testRecord({ + required int id, + required String partitionKey, + required Uint8List data, + int retryCount = 0, +}) { + return Record( + id: id, + streamName: 'test-stream', + partitionKey: partitionKey, + data: data, + dataSize: data.length, + retryCount: retryCount, + createdAt: 0, + ); +} + +void main() { + late MockKinesisClient mockClient; + const maxRetries = 3; + + setUpAll(() { + registerFallbackValue( + PutRecordsRequest( + streamName: 'test', + records: [ + PutRecordsRequestEntry(data: Uint8List(0), partitionKey: 'test'), + ], + ), + ); + }); + + setUp(() { + mockClient = MockKinesisClient(); + }); + + tearDown(() { + resetMocktailState(); + reset(mockClient); + }); + + group('KinesisSender', () { + test('builds correct PutRecordsRequest', () async { + when(() => mockClient.putRecords(any())).thenReturn( + mockSmithyOperation( + () => PutRecordsResponse( + records: [ + PutRecordsResultEntry( + sequenceNumber: 'seq-1', + shardId: 'shard-1', + ), + PutRecordsResultEntry( + sequenceNumber: 'seq-2', + shardId: 'shard-2', + ), + ], + ), + ), + ); + + final sender = _DirectMockSender(mockClient, maxRetries: maxRetries); + + await sender.putRecords( + streamName: 'my-stream', + records: [ + _testRecord( + id: 1, + partitionKey: 'key1', + data: Uint8List.fromList([1, 2, 3]), + ), + _testRecord( + id: 2, + partitionKey: 'key2', + data: Uint8List.fromList([4, 5, 6]), + ), + ], + ); + + final captured = + verify(() => mockClient.putRecords(captureAny())).captured.single + as PutRecordsRequest; + + expect(captured.streamName, equals('my-stream')); + expect(captured.records, hasLength(2)); + expect(captured.records[0].partitionKey, equals('key1')); + expect(captured.records[0].data, equals(Uint8List.fromList([1, 2, 3]))); + expect(captured.records[1].partitionKey, equals('key2')); + expect(captured.records[1].data, equals(Uint8List.fromList([4, 5, 6]))); + }); + + test( + 'correctly categorizes response into success, retryable, failed', + () async { + // - Record 1 (retryCount=0): success (no error code) + // - Record 2 (retryCount=1): retryable (error code + under retry limit) + // - Record 3 (retryCount=maxRetries): failed (error code + at retry limit) + when(() => mockClient.putRecords(any())).thenReturn( + mockSmithyOperation( + () => PutRecordsResponse( + records: [ + PutRecordsResultEntry( + sequenceNumber: 'seq1', + shardId: 'shard1', + ), + PutRecordsResultEntry( + errorCode: 'ProvisionedThroughputExceededException', + ), + PutRecordsResultEntry(errorCode: 'InternalFailure'), + ], + ), + ), + ); + + final sender = _DirectMockSender(mockClient, maxRetries: maxRetries); + + final result = await sender.putRecords( + streamName: 'test-stream', + records: [ + _testRecord( + id: 1, + partitionKey: 'key1', + data: Uint8List.fromList([1]), + retryCount: 0, + ), + _testRecord( + id: 2, + partitionKey: 'key2', + data: Uint8List.fromList([2]), + retryCount: 1, + ), + _testRecord( + id: 3, + partitionKey: 'key3', + data: Uint8List.fromList([3]), + retryCount: maxRetries, + ), + ], + ); + + expect(result.successfulIds, equals([1])); + expect(result.retryableIds, equals([2])); + expect(result.failedIds, equals([3])); + }, + ); + }); +} + +/// Sender that delegates directly to a mock KinesisClient, exercising the +/// real request-building and response-splitting logic. +class _DirectMockSender extends KinesisSender { + _DirectMockSender(KinesisClient mockClient, {required super.maxRetries}) + : super(kinesisClient: mockClient); +} diff --git a/packages/kinesis/amplify_kinesis_dart/test/record_client_concurrent_flush_test.dart b/packages/kinesis/amplify_kinesis_dart/test/record_client_concurrent_flush_test.dart new file mode 100644 index 00000000000..ec6fc52ad76 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/test/record_client_concurrent_flush_test.dart @@ -0,0 +1,111 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// Tests for concurrent flush behavior. +/// +/// Uses a [Completer]-controlled sender instead of wall-clock delays so +/// the test is deterministic and not timing-dependent. +library; + +import 'dart:async'; +import 'dart:typed_data'; + +import 'package:amplify_kinesis_dart/src/impl/kinesis_record.dart'; +import 'package:amplify_kinesis_dart/src/impl/kinesis_sender.dart'; +import 'package:amplify_kinesis_dart/src/impl/record_client.dart'; +import 'package:amplify_kinesis_dart/src/impl/storage/record_storage_sqlite.dart'; +import 'package:amplify_kinesis_dart/src/model/record.dart'; +import 'package:test/test.dart'; + +import 'helpers/test_database.dart'; + +void main() { + group('RecordClient concurrent flush', () { + test( + 'concurrent flush should return flushInProgress for second caller', + () async { + final db = createTestDatabase(); + final storage = SqliteRecordStorage( + database: db, + maxCacheBytes: 1024 * 1024, + ); + final sender = _GatedSender(); + final client = RecordClient( + storage: storage, + sender: sender, + maxRetries: 3, + ); + + // Seed records + for (var i = 0; i < 5; i++) { + await client.record( + RecordInput.now( + data: Uint8List.fromList([i]), + partitionKey: 'key$i', + streamName: 'test-stream', + ), + ); + } + + // Launch flush1 — it will block inside putRecords until we complete + // the gate completer. + final flush1 = client.flush(); + + // Wait for the sender to be entered, proving flush1 holds _flushing. + await sender.entered.future; + + // Now flush2 runs while flush1 is still in progress. + final flush2Result = await client.flush(); + + // flush2 should return immediately with flushInProgress: true. + expect( + flush2Result.flushInProgress, + isTrue, + reason: 'Second flush should report flushInProgress', + ); + expect(flush2Result.recordsFlushed, equals(0)); + + // Unblock flush1 so it can complete. + sender.gate.complete(); + final flush1Result = await flush1; + + expect(flush1Result.recordsFlushed, equals(5)); + expect(flush1Result.flushInProgress, isFalse); + + await client.close(); + }, + ); + }); +} + +/// A sender that blocks inside [putRecords] until [gate] is completed, +/// giving the test deterministic control over when the flush finishes. +class _GatedSender implements KinesisSender { + /// Completes when [putRecords] is entered, signaling that the flush + /// is in progress and holding the `_flushing` flag. + final Completer entered = Completer(); + + /// The test completes this to unblock [putRecords]. + final Completer gate = Completer(); + + @override + dynamic noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); + + @override + Future putRecords({ + required String streamName, + required List records, + }) async { + // Signal that we're inside putRecords (flush is in progress). + if (!entered.isCompleted) entered.complete(); + + // Block until the test says go. + await gate.future; + + return PutRecordsResult( + successfulIds: records.map((r) => r.id).toList(), + failedIds: const [], + retryableIds: const [], + ); + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/test/record_client_test.dart b/packages/kinesis/amplify_kinesis_dart/test/record_client_test.dart new file mode 100644 index 00000000000..19942d358d2 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/test/record_client_test.dart @@ -0,0 +1,405 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// Tests for RecordClient. +/// +/// Uses mocktail mocks for KinesisSender with pre-built PutRecordsResult +/// values and explicit IDs, rather than behavioral test doubles with +/// callback logic. +library; + +import 'dart:typed_data'; + +import 'package:amplify_kinesis_dart/src/impl/kinesis_record.dart'; +import 'package:amplify_kinesis_dart/src/impl/kinesis_sender.dart'; +import 'package:amplify_kinesis_dart/src/impl/record_client.dart'; +import 'package:amplify_kinesis_dart/src/impl/storage/record_storage.dart'; +import 'package:amplify_kinesis_dart/src/impl/storage/record_storage_sqlite.dart'; +import 'package:amplify_kinesis_dart/src/model/clear_cache_data.dart'; +import 'package:amplify_kinesis_dart/src/model/flush_data.dart'; +import 'package:amplify_kinesis_dart/src/sdk/kinesis.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:test/test.dart'; + +import 'common/mocktail_mocks.dart'; +import 'helpers/test_database.dart'; + +void main() { + group('RecordClient', () { + late SqliteRecordStorage storage; + late MockKinesisSender mockSender; + late RecordClient client; + + setUp(() { + final db = createTestDatabase(); + storage = SqliteRecordStorage( + database: db, + maxCacheBytes: 1024, // 1KB for testing + ); + mockSender = MockKinesisSender(); + client = RecordClient( + storage: storage, + sender: mockSender, + maxRetries: 3, + ); + }); + + tearDown(() async { + await client.close(); + resetMocktailState(); + reset(mockSender); + }); + + /// Helper to get all records from storage as a flat list. + Future> getAllRecords() async { + final byStream = await storage.getRecordsByStream(); + return byStream.values.expand((r) => r).toList(); + } + + group('record()', () { + test('accepts records when enabled', () async { + await client.record( + RecordInput.now( + data: Uint8List.fromList([1, 2, 3]), + partitionKey: 'pk', + streamName: 'stream', + ), + ); + + final records = await getAllRecords(); + expect(records, hasLength(1)); + }); + }); + + group('flush()', () { + test('sends all cached records and returns FlushData', () async { + for (var i = 0; i < 3; i++) { + await client.record( + RecordInput.now( + data: Uint8List.fromList([i]), + partitionKey: 'pk-$i', + streamName: 'stream', + ), + ); + } + + final allRecords = await getAllRecords(); + + // Mock: all records succeed + when( + () => mockSender.putRecords( + streamName: any(named: 'streamName'), + records: any(named: 'records'), + ), + ).thenAnswer( + (_) async => PutRecordsResult( + successfulIds: allRecords.map((r) => r.id).toList(), + retryableIds: [], + failedIds: [], + ), + ); + + final result = await client.flush(); + + expect(result, isA()); + expect(result.recordsFlushed, equals(3)); + verify( + () => mockSender.putRecords( + streamName: any(named: 'streamName'), + records: any(named: 'records'), + ), + ).called(1); + }); + + test('separates records by stream', () async { + await client.record( + RecordInput.now( + data: Uint8List.fromList([1]), + partitionKey: 'pk', + streamName: 'stream-a', + ), + ); + await client.record( + RecordInput.now( + data: Uint8List.fromList([2]), + partitionKey: 'pk', + streamName: 'stream-b', + ), + ); + await client.record( + RecordInput.now( + data: Uint8List.fromList([3]), + partitionKey: 'pk', + streamName: 'stream-a', + ), + ); + + // Mock: all records succeed for any stream + when( + () => mockSender.putRecords( + streamName: any(named: 'streamName'), + records: any(named: 'records'), + ), + ).thenAnswer((invocation) async { + final records = invocation.namedArguments[#records] as List; + return PutRecordsResult( + successfulIds: records.map((r) => r.id).toList(), + retryableIds: [], + failedIds: [], + ); + }); + + final result = await client.flush(); + + expect(result.recordsFlushed, equals(3)); + verify( + () => mockSender.putRecords( + streamName: any(named: 'streamName'), + records: any(named: 'records'), + ), + ).called(2); + }); + + test('deletes successful records after send', () async { + await client.record( + RecordInput.now( + data: Uint8List.fromList([1]), + partitionKey: 'pk', + streamName: 'stream', + ), + ); + + final allRecords = await getAllRecords(); + when( + () => mockSender.putRecords( + streamName: any(named: 'streamName'), + records: any(named: 'records'), + ), + ).thenAnswer( + (_) async => PutRecordsResult( + successfulIds: allRecords.map((r) => r.id).toList(), + retryableIds: [], + failedIds: [], + ), + ); + + await client.flush(); + + expect(await getAllRecords(), isEmpty); + }); + + test('handles mixed success, retryable, and failed', () async { + for (var i = 0; i < 3; i++) { + await client.record( + RecordInput.now( + data: Uint8List.fromList([i]), + partitionKey: 'pk-$i', + streamName: 'stream', + ), + ); + } + + final allRecords = await getAllRecords(); + + // Set record 3 to max retries (3) before flushing + for (var i = 0; i < 3; i++) { + await storage.incrementRetryCount([allRecords[2].id]); + } + + // Mock: record 1 succeeds, record 2 retryable, record 3 failed + when( + () => mockSender.putRecords( + streamName: any(named: 'streamName'), + records: any(named: 'records'), + ), + ).thenAnswer( + (_) async => PutRecordsResult( + successfulIds: [allRecords[0].id], + retryableIds: [allRecords[1].id], + failedIds: [allRecords[2].id], + ), + ); + + final result = await client.flush(); + expect(result.recordsFlushed, equals(1)); + + // Only record 2 should remain with retry count incremented + final remaining = await getAllRecords(); + expect(remaining, hasLength(1)); + expect(remaining[0].id, equals(allRecords[1].id)); + expect(remaining[0].retryCount, equals(1)); + }); + + test( + 'increments retry count for all records when non-SDK error occurs', + () async { + for (var i = 0; i < 3; i++) { + await client.record( + RecordInput.now( + data: Uint8List.fromList([i]), + partitionKey: 'key$i', + streamName: 'stream', + ), + ); + } + + when( + () => mockSender.putRecords( + streamName: any(named: 'streamName'), + records: any(named: 'records'), + ), + ).thenThrow(Exception('Network error')); + + try { + await client.flush(); + fail('Expected flush to throw'); + } on Exception { + // Expected — non-SDK errors are rethrown + } + + final remaining = await getAllRecords(); + expect(remaining, hasLength(3)); + for (final record in remaining) { + expect(record.retryCount, equals(1)); + } + }, + ); + + test('deletes records at max retries when non-SDK error occurs', () async { + for (var i = 0; i < 3; i++) { + await client.record( + RecordInput.now( + data: Uint8List.fromList([i]), + partitionKey: 'key$i', + streamName: 'stream', + ), + ); + } + + // Set records 2 and 3 to max retries (3) + final allRecords = await getAllRecords(); + for (var i = 0; i < 3; i++) { + await storage.incrementRetryCount([ + allRecords[1].id, + allRecords[2].id, + ]); + } + + when( + () => mockSender.putRecords( + streamName: any(named: 'streamName'), + records: any(named: 'records'), + ), + ).thenThrow(Exception('Network error')); + + try { + await client.flush(); + fail('Expected flush to throw'); + } on Exception { + // Expected — non-SDK errors are rethrown + } + + // Only record 1 should remain (records 2 and 3 deleted at max retries) + final remaining = await getAllRecords(); + expect(remaining, hasLength(1)); + expect(remaining[0].id, equals(allRecords[0].id)); + expect(remaining[0].retryCount, equals(1)); + }); + + test( + 'invalid stream records do not block valid stream flushes', + () async { + await client.record( + RecordInput.now( + data: Uint8List.fromList([1, 2, 3]), + partitionKey: 'pk', + streamName: 'invalid-stream', + ), + ); + await client.record( + RecordInput.now( + data: Uint8List.fromList([4, 5, 6]), + partitionKey: 'pk', + streamName: 'valid-stream', + ), + ); + + final allRecords = await getAllRecords(); + final validRecord = allRecords.firstWhere( + (r) => r.streamName == 'valid-stream', + ); + + when( + () => mockSender.putRecords( + streamName: 'invalid-stream', + records: any(named: 'records'), + ), + ).thenThrow(ResourceNotFoundException(message: 'Stream not found')); + + when( + () => mockSender.putRecords( + streamName: 'valid-stream', + records: any(named: 'records'), + ), + ).thenAnswer( + (_) async => PutRecordsResult( + successfulIds: [validRecord.id], + retryableIds: [], + failedIds: [], + ), + ); + + final result = await client.flush(); + expect(result.recordsFlushed, equals(1)); + }, + ); + + test('non-SDK errors abort the flush', () async { + await client.record( + RecordInput.now( + data: Uint8List.fromList([1, 2, 3]), + partitionKey: 'pk', + streamName: 'stream', + ), + ); + + when( + () => mockSender.putRecords( + streamName: any(named: 'streamName'), + records: any(named: 'records'), + ), + ).thenThrow(Exception('Network error')); + + expect(client.flush, throwsA(isA())); + }); + }); + + group('clearCache()', () { + test('removes all cached records and returns ClearCacheData', () async { + for (var i = 0; i < 5; i++) { + await client.record( + RecordInput.now( + data: Uint8List.fromList([i]), + partitionKey: 'pk-$i', + streamName: 'stream', + ), + ); + } + + final result = await client.clearCache(); + + expect(result, isA()); + expect(result.recordsCleared, equals(5)); + expect(await getAllRecords(), isEmpty); + }); + }); + + group('close()', () { + test('closes storage', () async { + await client.close(); + // After close, storage operations should fail. + // This is a basic smoke test — the storage is closed. + }); + }); + }); +} diff --git a/packages/kinesis/amplify_kinesis_dart/test/record_validation_test.dart b/packages/kinesis/amplify_kinesis_dart/test/record_validation_test.dart new file mode 100644 index 00000000000..46604c31e58 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/test/record_validation_test.dart @@ -0,0 +1,338 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// Unit tests for PutRecords record-level validation. +/// +/// Uses a small cache and maxRetries to keep allocations tiny while +/// exercising the same boundary logic that applies to the real limits. +/// +/// Per the Kinesis PutRecords API spec: +/// - Each record's total size (partition key bytes + data blob bytes) must +/// not exceed 10 MiB +/// - Partition key: 1–256 Unicode code points +/// - dataSize should account for both partition key bytes (UTF-8) and data blob +/// +/// See: https://docs.aws.amazon.com/kinesis/latest/APIReference/API_PutRecordsRequestEntry.html +library; + +import 'dart:convert'; +import 'dart:typed_data'; + +import 'package:amplify_kinesis_dart/src/exception/record_cache_exception.dart'; +import 'package:amplify_kinesis_dart/src/impl/kinesis_record.dart'; +import 'package:amplify_kinesis_dart/src/impl/kinesis_sender.dart'; +import 'package:amplify_kinesis_dart/src/impl/record_client.dart'; +import 'package:amplify_kinesis_dart/src/impl/storage/record_storage.dart'; +import 'package:amplify_kinesis_dart/src/impl/storage/record_storage_sqlite.dart'; +import 'package:amplify_kinesis_dart/src/kinesis_limits.dart' as limits; +import 'package:test/test.dart'; + +import 'helpers/test_database.dart'; + +void main() { + group('RecordValidation', () { + late SqliteRecordStorage storage; + late RecordClient client; + + RecordClient createClient({ + required RecordStorage storage, + int maxRetries = 3, + }) { + final sender = _NoOpSender(); + return RecordClient( + storage: storage, + sender: sender, + maxRetries: maxRetries, + ); + } + + setUp(() { + final db = createTestDatabase(); + storage = SqliteRecordStorage(database: db, maxCacheBytes: 10000); + client = createClient(storage: storage); + }); + + tearDown(() async { + await client.close(); + }); + + // --------------------------------------------------------------- + // Per-record size limit (partition key + data blob) + // --------------------------------------------------------------- + + group('per-record size limit', () { + test('record exactly at max size is accepted', () async { + // RecordClient validates against limits.maxRecordSizeBytes (10 MiB). + // Use a large-cache client so the cache limit doesn't interfere. + final largeDb = createTestDatabase(); + final largeStorage = SqliteRecordStorage( + database: largeDb, + maxCacheBytes: 20 * 1024 * 1024, + ); + final largeClient = createClient(storage: largeStorage); + + const partitionKey = 'pk'; + final partitionKeyBytes = utf8.encode(partitionKey).length; + final exactLimitData = Uint8List( + limits.maxRecordSizeBytes - partitionKeyBytes, + ); + + await largeClient.record( + RecordInput.now( + data: exactLimitData, + partitionKey: partitionKey, + streamName: 'stream', + ), + ); + + final records = (await largeStorage.getRecordsByStream()).values + .expand((r) => r) + .toList(); + expect(records, hasLength(1)); + + await largeClient.close(); + }); + + test('record exceeding max size by one byte is rejected', () async { + const partitionKey = 'pk'; + final partitionKeyBytes = utf8.encode(partitionKey).length; + final oversizedData = Uint8List( + limits.maxRecordSizeBytes - partitionKeyBytes + 1, + ); + + expect( + () => client.record( + RecordInput.now( + data: oversizedData, + partitionKey: partitionKey, + streamName: 'stream', + ), + ), + throwsA(isA()), + ); + }); + }); + + // --------------------------------------------------------------- + // dataSize includes partition key + // --------------------------------------------------------------- + + group('dataSize includes partition key', () { + test('dataSize accounts for partition key bytes', () { + final partitionKey = 'k' * 10; // 10 bytes UTF-8 + final data = Uint8List(50); + final record = RecordInput.now( + data: data, + partitionKey: partitionKey, + streamName: 'stream', + ); + + expect(record.dataSize, equals(60)); // 50 + 10 + }); + + test('dataSize with multi-byte unicode partition key', () { + // Each emoji is 4 bytes in UTF-8, 2 emojis = 8 bytes + const partitionKey = '😀😀'; + final data = Uint8List(10); + final record = RecordInput.now( + data: data, + partitionKey: partitionKey, + streamName: 'stream', + ); + + expect(record.dataSize, equals(18)); // 10 + 8 + }); + }); + + // --------------------------------------------------------------- + // Cache size limit respects full record size + // --------------------------------------------------------------- + + group('cache size limit', () { + test( + 'cache limit accounts for partition key in cumulative size', + () async { + final tightDb = createTestDatabase(); + final tightStorage = SqliteRecordStorage( + database: tightDb, + maxCacheBytes: 80, + ); + final tightClient = createClient(storage: tightStorage); + + final partitionKey = 'k' * 10; // 10 bytes + final data = Uint8List(30); // 30 bytes + // Total per record = 40 bytes + + // First record: 40 bytes — fits in 80-byte cache + await tightClient.record( + RecordInput.now( + data: data, + partitionKey: partitionKey, + streamName: 'stream', + ), + ); + + // Second record: 40 more → total 80 — still fits + await tightClient.record( + RecordInput.now( + data: data, + partitionKey: partitionKey, + streamName: 'stream', + ), + ); + + // Third record: 40 more → total 120 > 80 limit + expect( + () => tightClient.record( + RecordInput.now( + data: data, + partitionKey: partitionKey, + streamName: 'stream', + ), + ), + throwsA(isA()), + ); + + await tightClient.close(); + }, + ); + }); + + // --------------------------------------------------------------- + // Partition key validation (1–256 Unicode code points) + // --------------------------------------------------------------- + + group('partition key validation', () { + test('empty partition key is rejected', () async { + expect( + () => client.record( + RecordInput.now( + data: Uint8List.fromList([1, 2, 3]), + partitionKey: '', + streamName: 'stream', + ), + ), + throwsA(isA()), + ); + }); + + test('partition key at max length 256 code points is accepted', () async { + await client.record( + RecordInput.now( + data: Uint8List.fromList([1]), + partitionKey: 'k' * 256, + streamName: 'stream', + ), + ); + + final records = (await storage.getRecordsByStream()).values + .expand((r) => r) + .toList(); + expect(records, hasLength(1)); + }); + + test('partition key exceeding 256 code points is rejected', () async { + expect( + () => client.record( + RecordInput.now( + data: Uint8List.fromList([1]), + partitionKey: 'k' * 257, + streamName: 'stream', + ), + ), + throwsA(isA()), + ); + }); + + test('partition key with emoji counts code points correctly', () async { + // Each emoji (😀) is 1 code point but 4 bytes in UTF-8. + // 10 emoji = 10 code points (within 256 limit). + final partitionKey = '😀' * 10; + await client.record( + RecordInput.now( + data: Uint8List.fromList([1]), + partitionKey: partitionKey, + streamName: 'stream', + ), + ); + + final records = (await storage.getRecordsByStream()).values + .expand((r) => r) + .toList(); + expect(records, hasLength(1)); + }); + + test( + 'partition key exceeding 256 code points with emoji is rejected', + () async { + // 257 emoji = 257 code points > 256 limit + final partitionKey = '😀' * 257; + expect( + () => client.record( + RecordInput.now( + data: Uint8List.fromList([1]), + partitionKey: partitionKey, + streamName: 'stream', + ), + ), + throwsA(isA()), + ); + }, + ); + }); + + // --------------------------------------------------------------- + // Recovery after rejection + // --------------------------------------------------------------- + + group('recovery after rejection', () { + test( + 'storage accepts valid records after rejecting oversized one', + () async { + // Oversized record should be rejected + expect( + () => client.record( + RecordInput.now( + data: Uint8List(limits.maxRecordSizeBytes), + partitionKey: 'k' * 20, + streamName: 'stream', + ), + ), + throwsA(isA()), + ); + + // Valid record should still work + await client.record( + RecordInput.now( + data: Uint8List.fromList([1, 2, 3]), + partitionKey: 'a', + streamName: 'stream', + ), + ); + + final size = storage.getCurrentCacheSize(); + // "a" (1) + data (3) = 4 + expect(size, equals(4)); + }, + ); + }); + }); +} + +/// No-op sender for validation tests that don't need to send records. +class _NoOpSender implements KinesisSender { + @override + dynamic noSuchMethod(Invocation invocation) => super.noSuchMethod(invocation); + + @override + Future putRecords({ + required String streamName, + required List records, + }) async { + return PutRecordsResult( + successfulIds: records.map((r) => r.id).toList(), + failedIds: const [], + retryableIds: const [], + ); + } +} diff --git a/packages/kinesis/amplify_kinesis_dart/test/sqlite_record_storage_cache_accuracy_test.dart b/packages/kinesis/amplify_kinesis_dart/test/sqlite_record_storage_cache_accuracy_test.dart new file mode 100644 index 00000000000..1a13a96aae7 --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/test/sqlite_record_storage_cache_accuracy_test.dart @@ -0,0 +1,283 @@ +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +/// Tests for SQLite record storage cache accuracy. +/// +/// Verifies that the cached size reported by `getCurrentCacheSize()` stays +/// accurate through add, delete, clear, and mixed operations, and that +/// `getRecordsByStream` correctly handles excludingIds and per-stream limits. +library; + +import 'dart:typed_data'; + +import 'package:amplify_kinesis_dart/src/impl/kinesis_record.dart'; +import 'package:amplify_kinesis_dart/src/impl/storage/record_storage_sqlite.dart'; +import 'package:test/test.dart'; + +import 'helpers/test_database.dart'; + +void main() { + group('SQLiteRecordStorage cache accuracy', () { + late SqliteRecordStorage storage; + + setUp(() { + final db = createTestDatabase(); + storage = SqliteRecordStorage(database: db, maxCacheBytes: 1024 * 1024); + }); + + tearDown(() async { + await storage.close(); + }); + + // --------------------------------------------------------------- + // Cache size accuracy + // --------------------------------------------------------------- + + test('cached size matches database after add operations', () async { + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([1, 2, 3]), + partitionKey: 'a', + streamName: 'stream1', + ), + ); + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([4, 5, 6, 7]), + partitionKey: 'b', + streamName: 'stream1', + ), + ); + + final cachedSize = storage.getCurrentCacheSize(); + // "a"(1) + data(3) + "b"(1) + data(4) = 9 + expect(cachedSize, equals(9)); + }); + + test('cached size matches database after delete operations', () async { + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([1, 2, 3]), + partitionKey: 'a', + streamName: 'stream1', + ), + ); + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([4, 5, 6, 7]), + partitionKey: 'b', + streamName: 'stream1', + ), + ); + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([8, 9]), + partitionKey: 'c', + streamName: 'stream2', + ), + ); + + final allRecords = (await storage.getRecordsByStream()).values + .expand((r) => r) + .toList(); + final idsToDelete = allRecords.take(2).map((r) => r.id).toList(); + await storage.deleteRecords(idsToDelete); + + final cachedSize = storage.getCurrentCacheSize(); + // remaining: "c"(1) + data(2) = 3 + expect(cachedSize, equals(3)); + }); + + test('cached size matches database after clear operations', () async { + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([1, 2, 3]), + partitionKey: 'a', + streamName: 'stream1', + ), + ); + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([4, 5]), + partitionKey: 'b', + streamName: 'stream2', + ), + ); + + await storage.clearRecords(); + + final cachedSize = storage.getCurrentCacheSize(); + expect(cachedSize, equals(0)); + }); + + test('cached size remains accurate through mixed operations', () async { + // "a"(1) + data(5) = 6 + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([1, 2, 3, 4, 5]), + partitionKey: 'a', + streamName: 'stream1', + ), + ); + // "b"(1) + data(3) = 4 + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([6, 7, 8]), + partitionKey: 'b', + streamName: 'stream2', + ), + ); + + var cachedSize = storage.getCurrentCacheSize(); + expect(cachedSize, equals(10)); // 6 + 4 + + // Delete the first record + final records = (await storage.getRecordsByStream()).values + .expand((r) => r) + .toList(); + await storage.deleteRecords([records.first.id]); + + cachedSize = storage.getCurrentCacheSize(); + expect(cachedSize, equals(4)); + + // Add another record: "c"(1) + data(2) = 3 + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([9, 10]), + partitionKey: 'c', + streamName: 'stream3', + ), + ); + + cachedSize = storage.getCurrentCacheSize(); + expect(cachedSize, equals(7)); // 4 + 3 + }); + + // --------------------------------------------------------------- + // Concurrent producer/consumer + // --------------------------------------------------------------- + + test( + 'concurrent producer consumer operations maintain cache accuracy', + () async { + const recordSize = 10; + const producerCount = 4; + const recordsPerProducer = 100; + const consumerDeletions = 50; + + final createdKeys = >{}; + final deletedKeys = >{}; + + // Producers: each writes records concurrently + final producers = List.generate(producerCount, (p) async { + final keys = {}; + for (var i = 0; i < recordsPerProducer; i++) { + final key = 'producer${p}_record$i'; + await storage.addRecord( + RecordInput.now( + data: Uint8List(recordSize), + partitionKey: key, + streamName: 'stream$p', + ), + ); + keys.add(key); + } + createdKeys['producer$p'] = keys; + }); + + // Consumers: delete records concurrently with producers + final consumers = List.generate(2, (c) async { + final deleted = {}; + for (var i = 0; i < consumerDeletions; i++) { + final byStream = await storage.getRecordsByStream(); + final records = byStream.values.expand((r) => r).toList(); + if (records.isNotEmpty) { + final toDelete = records.first; + await storage.deleteRecords([toDelete.id]); + deleted.add(toDelete.partitionKey); + } + } + deletedKeys.add(deleted); + }); + + await Future.wait([...producers, ...consumers]); + + // Verify cache size matches actual DB contents + final finalRecords = (await storage.getRecordsByStream()).values + .expand((r) => r) + .toList(); + final finalCacheSize = storage.getCurrentCacheSize(); + final expectedCacheSize = finalRecords.fold( + 0, + (s, r) => s + r.dataSize, + ); + + expect(finalCacheSize, equals(expectedCacheSize)); + + // Verify every created key is either in DB or was deleted + final remainingKeys = finalRecords.map((r) => r.partitionKey).toSet(); + final allCreatedKeys = createdKeys.values + .expand((keys) => keys) + .toSet(); + final allDeletedKeys = deletedKeys.expand((keys) => keys).toSet(); + + for (final key in allCreatedKeys) { + final inDb = remainingKeys.contains(key); + final wasDeleted = allDeletedKeys.contains(key); + expect( + inDb || wasDeleted, + isTrue, + reason: 'Key $key should be in DB or deleted', + ); + } + + for (final key in remainingKeys) { + expect( + allCreatedKeys.contains(key), + isTrue, + reason: 'Remaining key $key should have been created', + ); + } + + expect(allCreatedKeys, isNotEmpty); + expect(allDeletedKeys, isNotEmpty); + expect(remainingKeys, isNotEmpty); + }, + ); + + // --------------------------------------------------------------- + // getRecordsByStream with excludingIds + // --------------------------------------------------------------- + + test( + 'getRecordsByStream with empty excludingIds returns all records', + () async { + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([1]), + partitionKey: 'key1', + streamName: 'stream1', + ), + ); + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([2]), + partitionKey: 'key2', + streamName: 'stream1', + ), + ); + await storage.addRecord( + RecordInput.now( + data: Uint8List.fromList([3]), + partitionKey: 'key3', + streamName: 'stream2', + ), + ); + + final result = await storage.getRecordsByStream(); + final allRecords = result.values.expand((r) => r).toList(); + expect(allRecords, hasLength(3)); + }, + ); + }); +} diff --git a/packages/kinesis/amplify_kinesis_dart/tool/pull_test_backend.sh b/packages/kinesis/amplify_kinesis_dart/tool/pull_test_backend.sh new file mode 100755 index 00000000000..4e534d2ea0a --- /dev/null +++ b/packages/kinesis/amplify_kinesis_dart/tool/pull_test_backend.sh @@ -0,0 +1,7 @@ +#!/bin/bash +# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +# SPDX-License-Identifier: Apache-2.0 + +set -e + +aws s3 cp s3://$AFS_KINESIS_GEN2_BUCKET_NAME/amplify_outputs.dart lib/amplify_outputs.dart diff --git a/pubspec.yaml b/pubspec.yaml index f5bffcac360..41cb24cab33 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -101,6 +101,11 @@ aft: packages: - amplify_secure_storage - amplify_secure_storage_dart + - name: Kinesis + summary: amplify_kinesis + packages: + - amplify_kinesis + - amplify_kinesis_dart - name: AWS Common summary: aws_common propagate: none