From 27b490f92cb8ea8bb851be4ab33a0e8692e14347 Mon Sep 17 00:00:00 2001 From: nicolake Date: Sun, 26 Apr 2020 14:05:43 -0300 Subject: [PATCH] Health suggestions applied to improve plugin overall score --- lib/firebase_functions_interop.dart | 66 ++++++++++++++--------------- lib/src/bindings.dart | 17 +++++--- lib/src/https.dart | 7 +-- 3 files changed, 48 insertions(+), 42 deletions(-) diff --git a/lib/firebase_functions_interop.dart b/lib/firebase_functions_interop.dart index abfe5fe..b222e2d 100644 --- a/lib/firebase_functions_interop.dart +++ b/lib/firebase_functions_interop.dart @@ -177,12 +177,12 @@ class EventContext { this.params, this.resource, this.timestamp); factory EventContext(js.EventContext data) { - return new EventContext._( + return EventContext._( data.auth, data.authType, data.eventId, data.eventType, - new Map.from(dartify(data.params)), + Map.from(dartify(data.params)), data.resource, DateTime.parse(data.timestamp), ); @@ -224,7 +224,7 @@ class DatabaseFunctions { /// Returns reference builder for specified [path] in Realtime Database. RefBuilder ref(String path) => - new RefBuilder._(_functions.database.ref(path)); + RefBuilder._(_functions.database.ref(path)); } /// The Firebase Realtime Database reference builder. @@ -267,8 +267,8 @@ class RefBuilder { dynamic _handleDataEvent(js.DataSnapshot data, js.EventContext jsContext, FutureOr handler(DataSnapshot data, EventContext context)) { - var snapshot = new DataSnapshot(data); - var context = new EventContext(jsContext); + var snapshot = DataSnapshot(data); + var context = EventContext(jsContext); var result = handler(snapshot, context); if (result is Future) { return futureToPromise(result); @@ -279,10 +279,10 @@ class RefBuilder { dynamic _handleChangeEvent(js.Change data, js.EventContext jsContext, ChangeEventHandler> handler) { - var after = new DataSnapshot(data.after); - var before = new DataSnapshot(data.before); - var context = new EventContext(jsContext); - var result = handler(new Change>(after, before), context); + var after = DataSnapshot(data.after); + var before = DataSnapshot(data.before); + var context = EventContext(jsContext); + var result = handler(Change>(after, before), context); if (result is Future) { return futureToPromise(result); } @@ -297,7 +297,7 @@ class FirestoreFunctions { FirestoreFunctions._(this._functions); DocumentBuilder document(String path) => - new DocumentBuilder._(_functions.firestore.document(path)); + DocumentBuilder._(_functions.firestore.document(path)); } class DocumentBuilder { @@ -339,9 +339,9 @@ class DocumentBuilder { dynamic _handleEvent(js.DocumentSnapshot data, js.EventContext jsContext, DataEventHandler handler) { - final firestore = new Firestore(data.ref.firestore); - final snapshot = new DocumentSnapshot(data, firestore); - final context = new EventContext(jsContext); + final firestore = Firestore(data.ref.firestore); + final snapshot = DocumentSnapshot(data, firestore); + final context = EventContext(jsContext); var result = handler(snapshot, context); if (result is Future) { return futureToPromise(result); @@ -352,11 +352,11 @@ class DocumentBuilder { dynamic _handleChangeEvent(js.Change data, js.EventContext jsContext, ChangeEventHandler handler) { - final firestore = new Firestore(data.after.ref.firestore); - var after = new DocumentSnapshot(data.after, firestore); - var before = new DocumentSnapshot(data.before, firestore); - var context = new EventContext(jsContext); - var result = handler(new Change(after, before), context); + final firestore = Firestore(data.after.ref.firestore); + var after = DocumentSnapshot(data.after, firestore); + var before = DocumentSnapshot(data.before, firestore); + var context = EventContext(jsContext); + var result = handler(Change(after, before), context); if (result is Future) { return futureToPromise(result); } @@ -371,10 +371,10 @@ class PubsubFunctions { PubsubFunctions._(this._functions); TopicBuilder topic(String path) => - new TopicBuilder._(_functions.pubsub.topic(path)); + TopicBuilder._(_functions.pubsub.topic(path)); ScheduleBuilder schedule(String expression) => - new ScheduleBuilder._(_functions.pubsub.schedule(expression)); + ScheduleBuilder._(_functions.pubsub.schedule(expression)); } class TopicBuilder { @@ -392,8 +392,8 @@ class TopicBuilder { dynamic _handleEvent(js.Message jsData, js.EventContext jsContext, DataEventHandler handler) { - final message = new Message(jsData); - final context = new EventContext(jsContext); + final message = Message(jsData); + final context = EventContext(jsContext); var result = handler(message, context); if (result is Future) { return futureToPromise(result); @@ -418,7 +418,7 @@ class ScheduleBuilder { dynamic _handleEvent(js.EventContext jsContext, DataEventHandler handler) { - final context = new EventContext(jsContext); + final context = EventContext(jsContext); var result = handler(null, context); if (result is Future) { return futureToPromise(result); @@ -436,7 +436,7 @@ class Message { /// User-defined attributes published with the message, if any. Map get attributes => - new Map.from(dartify(nativeInstance.attributes)); + Map.from(dartify(nativeInstance.attributes)); /// The data payload of this message object as a base64-encoded string. String get data => nativeInstance.data; @@ -454,10 +454,10 @@ class StorageFunctions { /// Registers a Cloud Function scoped to a specific storage [bucket]. BucketBuilder bucket(String path) => - new BucketBuilder._(_functions.storage.bucket(path)); + BucketBuilder._(_functions.storage.bucket(path)); /// Registers a Cloud Function scoped to the default storage bucket for the project. - ObjectBuilder object() => new ObjectBuilder._(_functions.storage.object()); + ObjectBuilder object() => ObjectBuilder._(_functions.storage.object()); } class BucketBuilder { @@ -467,7 +467,7 @@ class BucketBuilder { BucketBuilder._(this.nativeInstance); /// Storage object builder interface scoped to the specified storage bucket. - ObjectBuilder object() => new ObjectBuilder._(nativeInstance.object()); + ObjectBuilder object() => ObjectBuilder._(nativeInstance.object()); } class ObjectBuilder { @@ -523,8 +523,8 @@ class ObjectBuilder { dynamic _handleEvent(js.ObjectMetadata jsData, js.EventContext jsContext, DataEventHandler handler) { - final data = new ObjectMetadata(jsData); - final context = new EventContext(jsContext); + final data = ObjectMetadata(jsData); + final context = EventContext(jsContext); var result = handler(data, context); if (result is Future) { return futureToPromise(result); @@ -574,7 +574,7 @@ class ObjectMetadata { CustomerEncryption get customerEncryption { final dartified = dartify(nativeInstance.customerEncryption); if (dartified == null) return null; - return new CustomerEncryption( + return CustomerEncryption( encryptionAlgorithm: dartified['encryptionAlgorithm'], keySha256: dartified['keySha256'], ); @@ -655,7 +655,7 @@ class AuthFunctions { AuthFunctions._(this._functions); /// Registers a Cloud Function to handle user authentication events. - UserBuilder user() => new UserBuilder._(_functions.auth.user()); + UserBuilder user() => UserBuilder._(_functions.auth.user()); } /// The Firebase Authentication user builder interface. @@ -681,8 +681,8 @@ class UserBuilder { dynamic _handleEvent(js.UserRecord jsData, js.EventContext jsContext, DataEventHandler handler) { - final data = new UserRecord(jsData); - final context = new EventContext(jsContext); + final data = UserRecord(jsData); + final context = EventContext(jsContext); var result = handler(data, context); if (result is Future) { return futureToPromise(result); diff --git a/lib/src/bindings.dart b/lib/src/bindings.dart index a2d51ec..633950a 100644 --- a/lib/src/bindings.dart +++ b/lib/src/bindings.dart @@ -15,6 +15,7 @@ export 'package:firebase_admin_interop/js.dart'; abstract class RuntimeOptions { /// Timeout for the function in seconds. external int get timeoutSeconds; + /// Amount of memory to allocate to the function. /// /// Valid values are: '128MB', '256MB', '512MB', '1GB', and '2GB'. @@ -87,6 +88,7 @@ abstract class Change { @anonymous abstract class EventContextResource { external String get service; + external String get name; } @@ -135,6 +137,7 @@ abstract class EventContext { @anonymous abstract class EventAuthInfo { external String get uid; + external String get token; } @@ -158,6 +161,7 @@ abstract class HttpsFunctions { /// The event handler is called with Express Request and Response objects as its /// only arguments. external HttpsFunction onRequest(HttpRequestListener handler); + external HttpsFunction onCall( dynamic handler(dynamic data, CallableContext context)); } @@ -166,6 +170,7 @@ abstract class HttpsFunctions { @anonymous abstract class CallableContext { external CallableAuth get auth; + external String get instanceIdToken; } @@ -173,6 +178,7 @@ abstract class CallableContext { @anonymous abstract class CallableAuth { external String get uid; + external admin.DecodedIdToken get token; } @@ -236,14 +242,14 @@ abstract class DocumentBuilder { /// Event handler that fires every time data is updated in Cloud Firestore. external CloudFunction onUpdate( - dynamic handler( - Change data, EventContext context)); + dynamic handler(Change data, + EventContext context)); /// Event handler that fires every time a Cloud Firestore write of any kind /// (creation, update, or delete) occurs. external CloudFunction onWrite( - dynamic handler( - Change data, EventContext context)); + dynamic handler(Change data, + EventContext context)); } @JS() @@ -271,8 +277,7 @@ abstract class TopicBuilder { @anonymous abstract class ScheduleBuilder { /// Event handler that fires every time a schedule occurs. - external CloudFunction onRun( - dynamic handler(EventContext context)); + external CloudFunction onRun(dynamic handler(EventContext context)); } /// Interface representing a Google Cloud Pub/Sub message. diff --git a/lib/src/https.dart b/lib/src/https.dart index a50ad4f..e6cdf03 100644 --- a/lib/src/https.dart +++ b/lib/src/https.dart @@ -124,7 +124,7 @@ class HttpsFunctions { /// proxy to JavaScript request and response objects. js.HttpsFunction onRequest(void handler(ExpressHttpRequest request)) { void jsHandler(IncomingMessage request, ServerResponse response) { - var requestProxy = new ExpressHttpRequest(request, response); + var requestProxy = ExpressHttpRequest(request, response); handler(requestProxy); } @@ -148,7 +148,7 @@ class HttpsFunctions { FutureOr handler(dynamic data, CallableContext context)) { dynamic jsHandler(data, js.CallableContext context) { var auth = context.auth; - var ctx = new CallableContext( + var ctx = CallableContext( auth?.uid, auth?.token, context.instanceIdToken, @@ -160,8 +160,9 @@ class HttpsFunctions { final future = result.then(_tryJsify).catchError((error) { if (error is HttpsError) { throw error._toJsHttpsError(); - } else + } else { throw error; + } }); return futureToPromise(future); } else {