From e283033c6de4b75a98fa74d809080e5dae56ac7a Mon Sep 17 00:00:00 2001 From: Ryan Cartwright <39504851+HomelessDinosaur@users.noreply.github.com> Date: Thu, 3 Oct 2024 17:15:22 +1000 Subject: [PATCH] feat: batch support (#38) --- example/pubspec.yaml | 4 +- lib/src/api/api.dart | 8 +- lib/src/api/batch.dart | 22 + lib/src/api/bucket.dart | 50 +- lib/src/api/keyvalue.dart | 32 +- lib/src/api/queue.dart | 29 +- lib/src/api/secret.dart | 28 +- lib/src/api/sql.dart | 31 +- lib/src/api/topic.dart | 22 +- lib/src/context/batch.dart | 62 ++ lib/src/context/common.dart | 4 +- lib/src/context/middleware.dart | 1 + lib/src/grpc_helper.dart | 32 +- lib/src/nitric.dart | 4 + lib/src/nitric/proto/batch/v1/batch.pb.dart | 822 ++++++++++++++++++ .../nitric/proto/batch/v1/batch.pbenum.dart | 10 + .../nitric/proto/batch/v1/batch.pbgrpc.dart | 102 +++ .../nitric/proto/batch/v1/batch.pbjson.dart | 220 +++++ .../proto/deployments/v1/deployments.pb.dart | 278 +++++- .../deployments/v1/deployments.pbgrpc.dart | 48 +- .../deployments/v1/deployments.pbjson.dart | 88 +- lib/src/nitric/proto/http/v1/http.pbgrpc.dart | 22 +- .../proto/keyvalue/v1/keyvalue.pbgrpc.dart | 76 +- .../proto/kvstore/v1/kvstore.pbgrpc.dart | 108 +-- .../nitric/proto/queues/v1/queues.pbgrpc.dart | 74 +- .../proto/resources/v1/resources.pb.dart | 64 +- .../proto/resources/v1/resources.pbenum.dart | 9 + .../proto/resources/v1/resources.pbgrpc.dart | 28 +- .../proto/resources/v1/resources.pbjson.dart | 30 +- .../proto/schedules/v1/schedules.pbgrpc.dart | 22 +- .../proto/secrets/v1/secrets.pbgrpc.dart | 48 +- lib/src/nitric/proto/sql/v1/sql.pbgrpc.dart | 28 +- .../nitric/proto/storage/v1/storage.pb.dart | 14 +- .../proto/storage/v1/storage.pbgrpc.dart | 174 ++-- lib/src/nitric/proto/topics/v1/topics.pb.dart | 14 +- .../nitric/proto/topics/v1/topics.pbgrpc.dart | 46 +- .../websockets/v1/websockets.pbgrpc.dart | 104 +-- lib/src/resources/api.dart | 95 +- lib/src/resources/batch.dart | 73 ++ lib/src/resources/bucket.dart | 19 +- lib/src/resources/common.dart | 54 +- lib/src/resources/keyvalue.dart | 3 +- lib/src/resources/oidc.dart | 8 +- lib/src/resources/queue.dart | 3 +- lib/src/resources/schedule.dart | 21 +- lib/src/resources/secret.dart | 3 +- lib/src/resources/topic.dart | 18 +- lib/src/resources/websocket.dart | 38 +- lib/src/workers/api.dart | 53 +- lib/src/workers/batch.dart | 44 + lib/src/workers/blob_event.dart | 53 +- lib/src/workers/common.dart | 8 +- lib/src/workers/file_event.dart | 53 +- lib/src/workers/interval.dart | 52 +- lib/src/workers/subscription.dart | 53 +- lib/src/workers/websocket.dart | 49 +- makefile | 3 +- pubspec.yaml | 11 +- test/src/api/bucket_test.dart | 51 +- test/src/api/keyvalue_test.dart | 21 +- test/src/api/queue_test.dart | 21 +- test/src/api/secret_test.dart | 19 +- test/src/api/sql_test.dart | 12 +- test/src/api/topic_test.dart | 17 +- test/src/context/fileevent_test.dart | 5 +- test/src/resources/api_test.dart | 116 ++- test/src/resources/bucket_test.dart | 25 +- test/src/resources/keyvalue_test.dart | 20 +- test/src/resources/oidc_test.dart | 16 +- test/src/resources/queue_test.dart | 19 +- test/src/resources/schedule_test.dart | 21 +- test/src/resources/secret_test.dart | 19 +- test/src/resources/topic_test.dart | 22 +- test/src/resources/websocket_test.dart | 41 +- 74 files changed, 2773 insertions(+), 1144 deletions(-) create mode 100644 lib/src/api/batch.dart create mode 100644 lib/src/context/batch.dart create mode 100644 lib/src/nitric/proto/batch/v1/batch.pb.dart create mode 100644 lib/src/nitric/proto/batch/v1/batch.pbenum.dart create mode 100644 lib/src/nitric/proto/batch/v1/batch.pbgrpc.dart create mode 100644 lib/src/nitric/proto/batch/v1/batch.pbjson.dart create mode 100644 lib/src/resources/batch.dart create mode 100644 lib/src/workers/batch.dart diff --git a/example/pubspec.yaml b/example/pubspec.yaml index e4c7868..ffea7ba 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -4,7 +4,7 @@ version: 1.0.0 publish_to: none environment: - sdk: ^3.2.5 + sdk: ^3.5.0 dependencies: nitric_sdk: @@ -12,5 +12,5 @@ dependencies: uuid: ^4.3.3 dev_dependencies: - lints: ^2.1.0 + lints: ^4.0.0 test: ^1.24.0 diff --git a/lib/src/api/api.dart b/lib/src/api/api.dart index ccb6407..ff8122a 100644 --- a/lib/src/api/api.dart +++ b/lib/src/api/api.dart @@ -6,5 +6,11 @@ export 'secret.dart'; export 'topic.dart'; export 'proto.dart'; export 'queue.dart'; +export 'batch.dart'; +export 'sql.dart'; -typedef UseClientCallback = Future Function(T); +typedef UseClientCallback = Future + Function(GrpcClient); + +typedef ClientConstructor = GrpcClient Function( + ClientChannel); diff --git a/lib/src/api/batch.dart b/lib/src/api/batch.dart new file mode 100644 index 0000000..8316877 --- /dev/null +++ b/lib/src/api/batch.dart @@ -0,0 +1,22 @@ +import 'dart:async'; + +import 'package:nitric_sdk/src/api/api.dart'; +import 'package:nitric_sdk/src/grpc_helper.dart'; +import 'package:nitric_sdk/src/nitric/proto/batch/v1/batch.pb.dart'; +import 'package:nitric_sdk/src/nitric/proto/batch/v1/batch.pbgrpc.dart' as $p; + +class Job { + String name; + + Job(this.name); + + Future submit(Map message) async { + final data = JobData(struct: Proto.structFromMap(message)); + + final req = $p.JobSubmitRequest(data: data, jobName: name); + + await ClientChannelSingleton.useClient($p.BatchClient.new, (client) async { + await client.submitJob(req); + }); + } +} diff --git a/lib/src/api/bucket.dart b/lib/src/api/bucket.dart index 2e456ee..8b2e3d4 100644 --- a/lib/src/api/bucket.dart +++ b/lib/src/api/bucket.dart @@ -1,7 +1,6 @@ import 'dart:async'; import 'dart:convert'; -import 'package:nitric_sdk/src/api/api.dart'; import 'package:nitric_sdk/src/context/common.dart'; import 'package:nitric_sdk/src/grpc_helper.dart'; import 'package:nitric_sdk/src/nitric/proto/storage/v1/storage.pbgrpc.dart' @@ -11,44 +10,22 @@ import 'package:fixnum/fixnum.dart'; import 'package:nitric_sdk/src/workers/common.dart'; class Bucket { - late final $p.StorageClient? _storageClient; - late final $p.StorageListenerClient? _storageListenerClient; - String name; - Bucket(this.name, - {$p.StorageListenerClient? storageListenerClient, - $p.StorageClient? client}) { - _storageClient = client; - _storageListenerClient = storageListenerClient; - } + Bucket(this.name); /// Get a reference to a file by it's [key]. File file(String key) { return File(this, key); } - Future _useClient( - UseClientCallback<$p.StorageClient, Resp> callback) async { - final client = _storageClient ?? - $p.StorageClient(ClientChannelSingleton.instance.clientChannel); - - var resp = await callback(client); - - if (_storageClient == null) { - await ClientChannelSingleton.instance.release(); - } - - return resp; - } - /// Get a list of references to the files in the bucket. Optionally supply a [prefix] to filter by. Future> files({String prefix = ""}) async { final request = $p.StorageListBlobsRequest(bucketName: name, prefix: prefix); - var resp = - await _useClient((client) async => await client.listBlobs(request)); + var resp = await ClientChannelSingleton.useClient($p.StorageClient.new, + (client) async => await client.listBlobs(request)); return resp.blobs.map((blob) => File(this, blob.key)).toList(); } @@ -72,8 +49,7 @@ class Bucket { final composedHandler = composeMiddleware([...middlewares, handler], FileEventContext.fromCtx); - var worker = FileEventWorker(registrationRequest, composedHandler, this, - client: _storageListenerClient); + var worker = FileEventWorker(registrationRequest, composedHandler, this); await worker.start(); } @@ -95,7 +71,8 @@ class File { key: key, ); - await _bucket._useClient((client) async => await client.delete(req)); + await ClientChannelSingleton.useClient( + $p.StorageClient.new, (client) async => await client.delete(req)); } /// Read the file from the bucket. @@ -105,8 +82,8 @@ class File { key: key, ); - var resp = - await _bucket._useClient((client) async => await client.read(req)); + var resp = await ClientChannelSingleton.useClient( + $p.StorageClient.new, (client) async => await client.read(req)); return utf8.decode(resp.body); } @@ -121,7 +98,8 @@ class File { body: bytes, ); - await _bucket._useClient((client) async => await client.write(req)); + await ClientChannelSingleton.useClient( + $p.StorageClient.new, (client) async => await client.write(req)); } /// Check whether the file exists in the bucket. @@ -131,8 +109,8 @@ class File { key: key, ); - var resp = - await _bucket._useClient((client) async => await client.exists(req)); + var resp = await ClientChannelSingleton.useClient( + $p.StorageClient.new, (client) async => await client.exists(req)); return resp.exists; } @@ -164,8 +142,8 @@ class File { expiry: exp, ); - var resp = await _bucket - ._useClient((client) async => await client.preSignUrl(req)); + var resp = await ClientChannelSingleton.useClient( + $p.StorageClient.new, (client) async => await client.preSignUrl(req)); return resp.url; } diff --git a/lib/src/api/keyvalue.dart b/lib/src/api/keyvalue.dart index bacd1aa..55763bf 100644 --- a/lib/src/api/keyvalue.dart +++ b/lib/src/api/keyvalue.dart @@ -7,34 +7,17 @@ import 'package:nitric_sdk/src/nitric/proto/kvstore/v1/kvstore.pbgrpc.dart' /// A Key Value Store. class KeyValueStore { - late final $p.KvStoreClient? _keyValueClient; - final String name; - KeyValueStore(this.name, {$p.KvStoreClient? client}) { - _keyValueClient = client; - } - - Future _useClient( - UseClientCallback<$p.KvStoreClient, Resp> callback) async { - final client = _keyValueClient ?? - $p.KvStoreClient(ClientChannelSingleton.instance.clientChannel); - - var resp = callback(client); - - if (_keyValueClient == null) { - await ClientChannelSingleton.instance.release(); - } - - return resp; - } + KeyValueStore(this.name); /// Get a reference to a [key] in the store. Future> get(String key) async { var req = $p.KvStoreGetValueRequest(ref: $p.ValueRef(key: key, store: name)); - var resp = await _useClient((client) async => await client.getValue(req)); + var resp = await ClientChannelSingleton.useClient( + $p.KvStoreClient.new, (client) async => await client.getValue(req)); return Proto.mapFromStruct(resp.value.content); } @@ -46,7 +29,8 @@ class KeyValueStore { var req = $p.KvStoreSetValueRequest( ref: $p.ValueRef(key: key, store: name), content: content); - await _useClient((client) async => await client.setValue(req)); + await ClientChannelSingleton.useClient( + $p.KvStoreClient.new, (client) async => await client.setValue(req)); } /// Delete a [key] from the store. @@ -54,7 +38,8 @@ class KeyValueStore { var req = $p.KvStoreDeleteKeyRequest(ref: $p.ValueRef(key: key, store: name)); - await _useClient((client) async => await client.deleteKey(req)); + await ClientChannelSingleton.useClient( + $p.KvStoreClient.new, (client) async => await client.deleteKey(req)); } /// Get a stream of key values that match the [prefix]. @@ -62,7 +47,8 @@ class KeyValueStore { var req = $p.KvStoreScanKeysRequest(store: $p.Store(name: name), prefix: prefix); - var resp = await _useClient((client) async => client.scanKeys(req)); + var resp = await ClientChannelSingleton.useClient( + $p.KvStoreClient.new, (client) async => client.scanKeys(req)); return resp.map((event) => event.key); } diff --git a/lib/src/api/queue.dart b/lib/src/api/queue.dart index 8ba825d..2de0471 100644 --- a/lib/src/api/queue.dart +++ b/lib/src/api/queue.dart @@ -5,29 +5,11 @@ import 'package:nitric_sdk/src/grpc_helper.dart'; import 'package:nitric_sdk/src/nitric/proto/queues/v1/queues.pbgrpc.dart' as $p; class Queue { - late final $p.QueuesClient? _queuesClient; - /// The name of the queue. String name; /// Construct a new queue. - Queue(this.name, {$p.QueuesClient? client}) { - _queuesClient = client; - } - - Future _useClient( - UseClientCallback<$p.QueuesClient, Resp> callback) async { - final client = _queuesClient ?? - $p.QueuesClient(ClientChannelSingleton.instance.clientChannel); - - var resp = callback(client); - - if (_queuesClient == null) { - await ClientChannelSingleton.instance.release(); - } - - return resp; - } + Queue(this.name); /// Enqueue a list of [messages] to the queue. Future> enqueue( @@ -40,7 +22,8 @@ class Queue { queueName: name, ); - var resp = await _useClient((client) async => await client.enqueue(req)); + var resp = await ClientChannelSingleton.useClient( + $p.QueuesClient.new, (client) async => await client.enqueue(req)); return resp.failedMessages.map((fm) => FailedMessage(fm)).toList(); } @@ -49,7 +32,8 @@ class Queue { Future> dequeue({int depth = 1}) async { var req = $p.QueueDequeueRequest(queueName: name, depth: depth); - var resp = await _useClient((client) async => await client.dequeue(req)); + var resp = await ClientChannelSingleton.useClient( + $p.QueuesClient.new, (client) async => await client.dequeue(req)); return resp.messages.map((m) => DequeuedMessage(this, m)).toList(); } @@ -73,7 +57,8 @@ class DequeuedMessage { var req = $p.QueueCompleteRequest(leaseId: _leaseId, queueName: _queue.name); - await _queue._useClient((client) async => await client.complete(req)); + await ClientChannelSingleton.useClient( + $p.QueuesClient.new, (client) async => await client.complete(req)); } } diff --git a/lib/src/api/secret.dart b/lib/src/api/secret.dart index 44e9f79..b87bf29 100644 --- a/lib/src/api/secret.dart +++ b/lib/src/api/secret.dart @@ -4,31 +4,12 @@ import 'package:nitric_sdk/src/grpc_helper.dart'; import 'package:nitric_sdk/src/nitric/proto/secrets/v1/secrets.pbgrpc.dart' as $p; -import 'api.dart'; - /// References an encrypted secret stored in a secret manager. class Secret { /// The name of the secret final String name; - late final $p.SecretManagerClient? _secretClient; - - Secret(this.name, {$p.SecretManagerClient? client}) { - _secretClient = client; - } - - Future _useClient( - UseClientCallback<$p.SecretManagerClient, Resp> callback) async { - final client = _secretClient ?? - $p.SecretManagerClient(ClientChannelSingleton.instance.clientChannel); - var resp = callback(client); - - if (_secretClient == null) { - await ClientChannelSingleton.instance.release(); - } - - return resp; - } + Secret(this.name); /// Get a reference to a specific [version] of this secret. SecretVersion version(String version) { @@ -43,7 +24,8 @@ class Secret { /// Put a new [value] to the secret, creating a new secret version and returning it. Future put(String value) async { var req = $p.SecretPutRequest(secret: _toWire(), value: utf8.encode(value)); - var resp = await _useClient((client) async => client.put(req)); + var resp = await ClientChannelSingleton.useClient( + $p.SecretManagerClient.new, (client) async => client.put(req)); return SecretVersion._fromWire(this, resp.secretVersion); } @@ -71,8 +53,8 @@ class SecretVersion { /// Access the value of this secret version. Future access() async { var req = $p.SecretAccessRequest(secretVersion: _toWire()); - var resp = - await _secret._useClient((client) async => await client.access(req)); + var resp = await ClientChannelSingleton.useClient( + $p.SecretManagerClient.new, (client) async => await client.access(req)); return SecretValue(version, utf8.decode(resp.value)); } diff --git a/lib/src/api/sql.dart b/lib/src/api/sql.dart index 3266482..fc6300c 100644 --- a/lib/src/api/sql.dart +++ b/lib/src/api/sql.dart @@ -5,42 +5,19 @@ import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pbgrpc.dart' as $rp; import 'package:nitric_sdk/src/nitric/proto/sql/v1/sql.pbgrpc.dart' as $p; -import 'api.dart'; - /// A Topic for publishing events to subscribers of this topic. class SqlDatabase extends Resource { /// The name of the topic - late final String? migrations; - late final $p.SqlClient? _sqlClient; - - SqlDatabase(String name, - {this.migrations, - $p.SqlClient? client, - $rp.ResourcesClient? resourcesClient}) - : super(name, resourcesClient) { - _sqlClient = client; - } - - Future _useClient( - UseClientCallback<$p.SqlClient, Resp> callback) async { - final client = _sqlClient ?? - $p.SqlClient(ClientChannelSingleton.instance.clientChannel); + final String? migrations; - var resp = callback(client); - - if (_sqlClient == null) { - await ClientChannelSingleton.instance.release(); - } - - return resp; - } + SqlDatabase(super.name, {this.migrations}); /// Returns a connection endpoint to connect to the SQL database Future connectionString() async { final req = $p.SqlConnectionStringRequest(databaseName: name); - final resp = - await _useClient((client) async => await client.connectionString(req)); + final resp = await ClientChannelSingleton.useClient( + $p.SqlClient.new, (client) async => await client.connectionString(req)); return resp.connectionString; } diff --git a/lib/src/api/topic.dart b/lib/src/api/topic.dart index 886ab53..60ffa69 100644 --- a/lib/src/api/topic.dart +++ b/lib/src/api/topic.dart @@ -9,25 +9,8 @@ import 'package:fixnum/fixnum.dart'; class Topic { /// The name of the topic final String name; - late final $p.TopicsClient? _topicsClient; - Topic(this.name, {$p.TopicsClient? client}) { - _topicsClient = client; - } - - Future _useClient( - UseClientCallback<$p.TopicsClient, Resp> callback) async { - final client = _topicsClient ?? - $p.TopicsClient(ClientChannelSingleton.instance.clientChannel); - - var resp = callback(client); - - if (_topicsClient == null) { - await ClientChannelSingleton.instance.release(); - } - - return resp; - } + Topic(this.name); /// Publish a [message] to the topic. Optional [delay] (in seconds) can be set to delay the message publish time. Future publish(Map message, {int delay = 0}) async { @@ -40,6 +23,7 @@ class Topic { delay: $d.Duration(seconds: Int64(delay)), ); - await _useClient((client) async => await client.publish(req)); + await ClientChannelSingleton.useClient( + $p.TopicsClient.new, (client) async => await client.publish(req)); } } diff --git a/lib/src/context/batch.dart b/lib/src/context/batch.dart new file mode 100644 index 0000000..9d04e14 --- /dev/null +++ b/lib/src/context/batch.dart @@ -0,0 +1,62 @@ +part of './common.dart'; + +/// The context for a topic message for a subscription. +class JobContext extends TriggerContext { + late JobHandler _nextHandler; + + JobContext(super.id, super.req, super.resp, + {next = _defaultHandler}) { + _nextHandler = next; + } + + /// Create an Event context from a server message. + factory JobContext.fromRequest($jp.ServerMessage msg) { + var payload = Proto.mapFromStruct(msg.jobRequest.data.struct); + + return JobContext( + msg.id, + JobRequest( + msg.jobRequest.jobName, + payload, + ), + JobResponse(), + ); + } + + JobContext.fromCtx(JobContext ctx, JobHandler next) + : this(ctx.id, ctx.req, ctx.res, next: next); + + /// Call the next middleware in the middleware chain + Future next() async { + return await _nextHandler(this); + } + + /// Converts the context to a gRPC client response. + $jp.ClientMessage toResponse() { + return $jp.ClientMessage(id: id, jobResponse: res.toWire()); + } +} + +/// Represents a request received by a subscription to a topic. +class JobRequest extends TriggerRequest { + /// The name of the job. + String jobName; + + /// The message payload that was sent. + Map message; + + JobRequest(this.jobName, this.message); +} + +/// Represents a response to a topic subscription request. +class JobResponse extends TriggerResponse { + /// If the event request was handled successfully or not. Defaults to true. + bool success; + + JobResponse([this.success = true]); + + /// Converts this blob event response to a gRPC response. + $jp.JobResponse toWire() { + return $jp.JobResponse(success: true); + } +} diff --git a/lib/src/context/common.dart b/lib/src/context/common.dart index fc37c3b..88ef38e 100644 --- a/lib/src/context/common.dart +++ b/lib/src/context/common.dart @@ -1,5 +1,3 @@ -library context; - import 'dart:convert'; import 'package:nitric_sdk/src/api/api.dart'; @@ -12,6 +10,7 @@ import 'package:nitric_sdk/src/nitric/proto/websockets/v1/websockets.pb.dart' as $wp; import 'package:meta/meta.dart'; import 'package:nitric_sdk/src/nitric/proto/websockets/v1/websockets.pbgrpc.dart'; +import 'package:nitric_sdk/src/nitric/proto/batch/v1/batch.pb.dart' as $jp; part 'http.dart'; part 'interval.dart'; @@ -19,6 +18,7 @@ part 'middleware.dart'; part 'message.dart'; part 'blobevent.dart'; part 'websocket.dart'; +part 'batch.dart'; /// Base context to wrap request/response objects from the server. class TriggerContext { diff --git a/lib/src/context/middleware.dart b/lib/src/context/middleware.dart index 4265f7b..c347013 100644 --- a/lib/src/context/middleware.dart +++ b/lib/src/context/middleware.dart @@ -8,6 +8,7 @@ typedef MessageHandler = Handler; typedef BlobEventHandler = Handler; typedef FileEventHandler = Handler; typedef WebsocketHandler = Handler; +typedef JobHandler = Handler; Future _defaultHandler(T ctx) async => ctx; diff --git a/lib/src/grpc_helper.dart b/lib/src/grpc_helper.dart index b0b8f6a..632159e 100644 --- a/lib/src/grpc_helper.dart +++ b/lib/src/grpc_helper.dart @@ -1,6 +1,7 @@ import 'dart:io'; import 'package:grpc/grpc.dart'; +import 'package:nitric_sdk/src/api/api.dart'; import 'package:synchronized/synchronized.dart'; const String envVarName = 'SERVICE_ADDRESS'; @@ -57,8 +58,10 @@ class ClientChannelSingleton { static ClientChannelSingleton get instance => _instance; - ClientChannel get clientChannel { - _lock.synchronized(() { + static Map _overrideClientConstructors = {}; + + Future get _channel async { + await _lock.synchronized(() async { _clientChannel ??= _createClientChannelFromEnvVar(); _consumerCount++; }); @@ -66,7 +69,7 @@ class ClientChannelSingleton { return _clientChannel as ClientChannel; } - Future release() async { + Future _release() async { await _lock.synchronized(() async { _consumerCount--; if (_consumerCount <= 0) { @@ -75,4 +78,27 @@ class ClientChannelSingleton { } }); } + + static Future useClient( + ClientConstructor clientConstructor, + UseClientCallback callback) async { + // Will use the overriden client constructor (used in tests), if there is one registered. + GrpcClient client; + if (_overrideClientConstructors[GrpcClient] != null) { + client = _overrideClientConstructors[GrpcClient] as GrpcClient; + } else { + client = + clientConstructor(await ClientChannelSingleton.instance._channel); + } + + var resp = await callback(client); + + await ClientChannelSingleton.instance._release(); + + return resp; + } + + static registerClientConstructors(Map clientConstructors) { + _overrideClientConstructors = clientConstructors; + } } diff --git a/lib/src/nitric.dart b/lib/src/nitric.dart index b32ba48..c43b4fa 100644 --- a/lib/src/nitric.dart +++ b/lib/src/nitric.dart @@ -61,6 +61,10 @@ class Nitric { static Websocket websocket(String name) => _makeResource(name, Websocket.new) as Websocket; + /// Create a [name]d job for running and submitting long-running jobs + static JobResource job(String name) => + _makeResource(name, JobResource.new) as JobResource; + /// Create a [name]d oidc rule for attaching security definitions to APIs. static SecurityOption oidcRule( String name, String issuer, List audiences) { diff --git a/lib/src/nitric/proto/batch/v1/batch.pb.dart b/lib/src/nitric/proto/batch/v1/batch.pb.dart new file mode 100644 index 0000000..f5ba77e --- /dev/null +++ b/lib/src/nitric/proto/batch/v1/batch.pb.dart @@ -0,0 +1,822 @@ +// +// Generated code. Do not modify. +// source: nitric/proto/batch/v1/batch.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +import '../../../../google/protobuf/struct.pb.dart' as $14; + +enum ClientMessage_Content { registrationRequest, jobResponse, notSet } + +class ClientMessage extends $pb.GeneratedMessage { + factory ClientMessage({ + $core.String? id, + RegistrationRequest? registrationRequest, + JobResponse? jobResponse, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + if (registrationRequest != null) { + $result.registrationRequest = registrationRequest; + } + if (jobResponse != null) { + $result.jobResponse = jobResponse; + } + return $result; + } + ClientMessage._() : super(); + factory ClientMessage.fromBuffer($core.List<$core.int> i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(i, r); + factory ClientMessage.fromJson($core.String i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(i, r); + + static const $core.Map<$core.int, ClientMessage_Content> + _ClientMessage_ContentByTag = { + 2: ClientMessage_Content.registrationRequest, + 3: ClientMessage_Content.jobResponse, + 0: ClientMessage_Content.notSet + }; + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'ClientMessage', + package: const $pb.PackageName( + _omitMessageNames ? '' : 'nitric.proto.batch.v1'), + createEmptyInstance: create) + ..oo(0, [2, 3]) + ..aOS(1, _omitFieldNames ? '' : 'id') + ..aOM(2, _omitFieldNames ? '' : 'registrationRequest', + subBuilder: RegistrationRequest.create) + ..aOM(3, _omitFieldNames ? '' : 'jobResponse', + subBuilder: JobResponse.create) + ..hasRequiredFields = false; + + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ClientMessage clone() => ClientMessage()..mergeFromMessage(this); + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ClientMessage copyWith(void Function(ClientMessage) updates) => + super.copyWith((message) => updates(message as ClientMessage)) + as ClientMessage; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ClientMessage create() => ClientMessage._(); + ClientMessage createEmptyInstance() => create(); + static $pb.PbList createRepeated() => + $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ClientMessage getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static ClientMessage? _defaultInstance; + + ClientMessage_Content whichContent() => + _ClientMessage_ContentByTag[$_whichOneof(0)]!; + void clearContent() => clearField($_whichOneof(0)); + + /// globally unique ID of the request/response pair + @$pb.TagNumber(1) + $core.String get id => $_getSZ(0); + @$pb.TagNumber(1) + set id($core.String v) { + $_setString(0, v); + } + + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); + + /// Register a handler for a job + @$pb.TagNumber(2) + RegistrationRequest get registrationRequest => $_getN(1); + @$pb.TagNumber(2) + set registrationRequest(RegistrationRequest v) { + setField(2, v); + } + + @$pb.TagNumber(2) + $core.bool hasRegistrationRequest() => $_has(1); + @$pb.TagNumber(2) + void clearRegistrationRequest() => clearField(2); + @$pb.TagNumber(2) + RegistrationRequest ensureRegistrationRequest() => $_ensure(1); + + /// Handle a job submission + @$pb.TagNumber(3) + JobResponse get jobResponse => $_getN(2); + @$pb.TagNumber(3) + set jobResponse(JobResponse v) { + setField(3, v); + } + + @$pb.TagNumber(3) + $core.bool hasJobResponse() => $_has(2); + @$pb.TagNumber(3) + void clearJobResponse() => clearField(3); + @$pb.TagNumber(3) + JobResponse ensureJobResponse() => $_ensure(2); +} + +class JobRequest extends $pb.GeneratedMessage { + factory JobRequest({ + $core.String? jobName, + JobData? data, + }) { + final $result = create(); + if (jobName != null) { + $result.jobName = jobName; + } + if (data != null) { + $result.data = data; + } + return $result; + } + JobRequest._() : super(); + factory JobRequest.fromBuffer($core.List<$core.int> i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(i, r); + factory JobRequest.fromJson($core.String i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'JobRequest', + package: const $pb.PackageName( + _omitMessageNames ? '' : 'nitric.proto.batch.v1'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'jobName') + ..aOM(2, _omitFieldNames ? '' : 'data', subBuilder: JobData.create) + ..hasRequiredFields = false; + + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + JobRequest clone() => JobRequest()..mergeFromMessage(this); + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + JobRequest copyWith(void Function(JobRequest) updates) => + super.copyWith((message) => updates(message as JobRequest)) as JobRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static JobRequest create() => JobRequest._(); + JobRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static JobRequest getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static JobRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get jobName => $_getSZ(0); + @$pb.TagNumber(1) + set jobName($core.String v) { + $_setString(0, v); + } + + @$pb.TagNumber(1) + $core.bool hasJobName() => $_has(0); + @$pb.TagNumber(1) + void clearJobName() => clearField(1); + + @$pb.TagNumber(2) + JobData get data => $_getN(1); + @$pb.TagNumber(2) + set data(JobData v) { + setField(2, v); + } + + @$pb.TagNumber(2) + $core.bool hasData() => $_has(1); + @$pb.TagNumber(2) + void clearData() => clearField(2); + @$pb.TagNumber(2) + JobData ensureData() => $_ensure(1); +} + +enum JobData_Data { struct, notSet } + +class JobData extends $pb.GeneratedMessage { + factory JobData({ + $14.Struct? struct, + }) { + final $result = create(); + if (struct != null) { + $result.struct = struct; + } + return $result; + } + JobData._() : super(); + factory JobData.fromBuffer($core.List<$core.int> i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(i, r); + factory JobData.fromJson($core.String i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(i, r); + + static const $core.Map<$core.int, JobData_Data> _JobData_DataByTag = { + 1: JobData_Data.struct, + 0: JobData_Data.notSet + }; + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'JobData', + package: const $pb.PackageName( + _omitMessageNames ? '' : 'nitric.proto.batch.v1'), + createEmptyInstance: create) + ..oo(0, [1]) + ..aOM<$14.Struct>(1, _omitFieldNames ? '' : 'struct', + subBuilder: $14.Struct.create) + ..hasRequiredFields = false; + + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + JobData clone() => JobData()..mergeFromMessage(this); + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + JobData copyWith(void Function(JobData) updates) => + super.copyWith((message) => updates(message as JobData)) as JobData; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static JobData create() => JobData._(); + JobData createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static JobData getDefault() => + _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static JobData? _defaultInstance; + + JobData_Data whichData() => _JobData_DataByTag[$_whichOneof(0)]!; + void clearData() => clearField($_whichOneof(0)); + + @$pb.TagNumber(1) + $14.Struct get struct => $_getN(0); + @$pb.TagNumber(1) + set struct($14.Struct v) { + setField(1, v); + } + + @$pb.TagNumber(1) + $core.bool hasStruct() => $_has(0); + @$pb.TagNumber(1) + void clearStruct() => clearField(1); + @$pb.TagNumber(1) + $14.Struct ensureStruct() => $_ensure(0); +} + +class JobResponse extends $pb.GeneratedMessage { + factory JobResponse({ + $core.bool? success, + }) { + final $result = create(); + if (success != null) { + $result.success = success; + } + return $result; + } + JobResponse._() : super(); + factory JobResponse.fromBuffer($core.List<$core.int> i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(i, r); + factory JobResponse.fromJson($core.String i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'JobResponse', + package: const $pb.PackageName( + _omitMessageNames ? '' : 'nitric.proto.batch.v1'), + createEmptyInstance: create) + ..aOB(1, _omitFieldNames ? '' : 'success') + ..hasRequiredFields = false; + + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + JobResponse clone() => JobResponse()..mergeFromMessage(this); + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + JobResponse copyWith(void Function(JobResponse) updates) => + super.copyWith((message) => updates(message as JobResponse)) + as JobResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static JobResponse create() => JobResponse._(); + JobResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static JobResponse getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static JobResponse? _defaultInstance; + + /// Mark if the job was successfully processed + @$pb.TagNumber(1) + $core.bool get success => $_getBF(0); + @$pb.TagNumber(1) + set success($core.bool v) { + $_setBool(0, v); + } + + @$pb.TagNumber(1) + $core.bool hasSuccess() => $_has(0); + @$pb.TagNumber(1) + void clearSuccess() => clearField(1); +} + +class RegistrationRequest extends $pb.GeneratedMessage { + factory RegistrationRequest({ + $core.String? jobName, + JobResourceRequirements? requirements, + }) { + final $result = create(); + if (jobName != null) { + $result.jobName = jobName; + } + if (requirements != null) { + $result.requirements = requirements; + } + return $result; + } + RegistrationRequest._() : super(); + factory RegistrationRequest.fromBuffer($core.List<$core.int> i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(i, r); + factory RegistrationRequest.fromJson($core.String i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'RegistrationRequest', + package: const $pb.PackageName( + _omitMessageNames ? '' : 'nitric.proto.batch.v1'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'jobName') + ..aOM(2, _omitFieldNames ? '' : 'requirements', + subBuilder: JobResourceRequirements.create) + ..hasRequiredFields = false; + + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + RegistrationRequest clone() => RegistrationRequest()..mergeFromMessage(this); + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + RegistrationRequest copyWith(void Function(RegistrationRequest) updates) => + super.copyWith((message) => updates(message as RegistrationRequest)) + as RegistrationRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static RegistrationRequest create() => RegistrationRequest._(); + RegistrationRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => + $pb.PbList(); + @$core.pragma('dart2js:noInline') + static RegistrationRequest getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static RegistrationRequest? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get jobName => $_getSZ(0); + @$pb.TagNumber(1) + set jobName($core.String v) { + $_setString(0, v); + } + + @$pb.TagNumber(1) + $core.bool hasJobName() => $_has(0); + @$pb.TagNumber(1) + void clearJobName() => clearField(1); + + /// Register with default requirements + @$pb.TagNumber(2) + JobResourceRequirements get requirements => $_getN(1); + @$pb.TagNumber(2) + set requirements(JobResourceRequirements v) { + setField(2, v); + } + + @$pb.TagNumber(2) + $core.bool hasRequirements() => $_has(1); + @$pb.TagNumber(2) + void clearRequirements() => clearField(2); + @$pb.TagNumber(2) + JobResourceRequirements ensureRequirements() => $_ensure(1); +} + +class RegistrationResponse extends $pb.GeneratedMessage { + factory RegistrationResponse() => create(); + RegistrationResponse._() : super(); + factory RegistrationResponse.fromBuffer($core.List<$core.int> i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(i, r); + factory RegistrationResponse.fromJson($core.String i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'RegistrationResponse', + package: const $pb.PackageName( + _omitMessageNames ? '' : 'nitric.proto.batch.v1'), + createEmptyInstance: create) + ..hasRequiredFields = false; + + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + RegistrationResponse clone() => + RegistrationResponse()..mergeFromMessage(this); + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + RegistrationResponse copyWith(void Function(RegistrationResponse) updates) => + super.copyWith((message) => updates(message as RegistrationResponse)) + as RegistrationResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static RegistrationResponse create() => RegistrationResponse._(); + RegistrationResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => + $pb.PbList(); + @$core.pragma('dart2js:noInline') + static RegistrationResponse getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static RegistrationResponse? _defaultInstance; +} + +class JobResourceRequirements extends $pb.GeneratedMessage { + factory JobResourceRequirements({ + $core.double? cpus, + $fixnum.Int64? memory, + $fixnum.Int64? gpus, + }) { + final $result = create(); + if (cpus != null) { + $result.cpus = cpus; + } + if (memory != null) { + $result.memory = memory; + } + if (gpus != null) { + $result.gpus = gpus; + } + return $result; + } + JobResourceRequirements._() : super(); + factory JobResourceRequirements.fromBuffer($core.List<$core.int> i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(i, r); + factory JobResourceRequirements.fromJson($core.String i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'JobResourceRequirements', + package: const $pb.PackageName( + _omitMessageNames ? '' : 'nitric.proto.batch.v1'), + createEmptyInstance: create) + ..a<$core.double>(1, _omitFieldNames ? '' : 'cpus', $pb.PbFieldType.OF) + ..aInt64(2, _omitFieldNames ? '' : 'memory') + ..aInt64(3, _omitFieldNames ? '' : 'gpus') + ..hasRequiredFields = false; + + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + JobResourceRequirements clone() => + JobResourceRequirements()..mergeFromMessage(this); + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + JobResourceRequirements copyWith( + void Function(JobResourceRequirements) updates) => + super.copyWith((message) => updates(message as JobResourceRequirements)) + as JobResourceRequirements; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static JobResourceRequirements create() => JobResourceRequirements._(); + JobResourceRequirements createEmptyInstance() => create(); + static $pb.PbList createRepeated() => + $pb.PbList(); + @$core.pragma('dart2js:noInline') + static JobResourceRequirements getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static JobResourceRequirements? _defaultInstance; + + /// The number of CPUs to allocate for the job + @$pb.TagNumber(1) + $core.double get cpus => $_getN(0); + @$pb.TagNumber(1) + set cpus($core.double v) { + $_setFloat(0, v); + } + + @$pb.TagNumber(1) + $core.bool hasCpus() => $_has(0); + @$pb.TagNumber(1) + void clearCpus() => clearField(1); + + /// The amount of memory to allocate for the job + @$pb.TagNumber(2) + $fixnum.Int64 get memory => $_getI64(1); + @$pb.TagNumber(2) + set memory($fixnum.Int64 v) { + $_setInt64(1, v); + } + + @$pb.TagNumber(2) + $core.bool hasMemory() => $_has(1); + @$pb.TagNumber(2) + void clearMemory() => clearField(2); + + /// The number of GPUs to allocate for the job + @$pb.TagNumber(3) + $fixnum.Int64 get gpus => $_getI64(2); + @$pb.TagNumber(3) + set gpus($fixnum.Int64 v) { + $_setInt64(2, v); + } + + @$pb.TagNumber(3) + $core.bool hasGpus() => $_has(2); + @$pb.TagNumber(3) + void clearGpus() => clearField(3); +} + +enum ServerMessage_Content { registrationResponse, jobRequest, notSet } + +/// ServerMessage is the message sent from the nitric server to the service +class ServerMessage extends $pb.GeneratedMessage { + factory ServerMessage({ + $core.String? id, + RegistrationResponse? registrationResponse, + JobRequest? jobRequest, + }) { + final $result = create(); + if (id != null) { + $result.id = id; + } + if (registrationResponse != null) { + $result.registrationResponse = registrationResponse; + } + if (jobRequest != null) { + $result.jobRequest = jobRequest; + } + return $result; + } + ServerMessage._() : super(); + factory ServerMessage.fromBuffer($core.List<$core.int> i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(i, r); + factory ServerMessage.fromJson($core.String i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(i, r); + + static const $core.Map<$core.int, ServerMessage_Content> + _ServerMessage_ContentByTag = { + 2: ServerMessage_Content.registrationResponse, + 3: ServerMessage_Content.jobRequest, + 0: ServerMessage_Content.notSet + }; + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'ServerMessage', + package: const $pb.PackageName( + _omitMessageNames ? '' : 'nitric.proto.batch.v1'), + createEmptyInstance: create) + ..oo(0, [2, 3]) + ..aOS(1, _omitFieldNames ? '' : 'id') + ..aOM( + 2, _omitFieldNames ? '' : 'registrationResponse', + subBuilder: RegistrationResponse.create) + ..aOM(3, _omitFieldNames ? '' : 'jobRequest', + subBuilder: JobRequest.create) + ..hasRequiredFields = false; + + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ServerMessage clone() => ServerMessage()..mergeFromMessage(this); + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ServerMessage copyWith(void Function(ServerMessage) updates) => + super.copyWith((message) => updates(message as ServerMessage)) + as ServerMessage; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ServerMessage create() => ServerMessage._(); + ServerMessage createEmptyInstance() => create(); + static $pb.PbList createRepeated() => + $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ServerMessage getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static ServerMessage? _defaultInstance; + + ServerMessage_Content whichContent() => + _ServerMessage_ContentByTag[$_whichOneof(0)]!; + void clearContent() => clearField($_whichOneof(0)); + + /// globally unique ID of the request/response pair + @$pb.TagNumber(1) + $core.String get id => $_getSZ(0); + @$pb.TagNumber(1) + set id($core.String v) { + $_setString(0, v); + } + + @$pb.TagNumber(1) + $core.bool hasId() => $_has(0); + @$pb.TagNumber(1) + void clearId() => clearField(1); + + @$pb.TagNumber(2) + RegistrationResponse get registrationResponse => $_getN(1); + @$pb.TagNumber(2) + set registrationResponse(RegistrationResponse v) { + setField(2, v); + } + + @$pb.TagNumber(2) + $core.bool hasRegistrationResponse() => $_has(1); + @$pb.TagNumber(2) + void clearRegistrationResponse() => clearField(2); + @$pb.TagNumber(2) + RegistrationResponse ensureRegistrationResponse() => $_ensure(1); + + /// Request to a job handler + @$pb.TagNumber(3) + JobRequest get jobRequest => $_getN(2); + @$pb.TagNumber(3) + set jobRequest(JobRequest v) { + setField(3, v); + } + + @$pb.TagNumber(3) + $core.bool hasJobRequest() => $_has(2); + @$pb.TagNumber(3) + void clearJobRequest() => clearField(3); + @$pb.TagNumber(3) + JobRequest ensureJobRequest() => $_ensure(2); +} + +class JobSubmitRequest extends $pb.GeneratedMessage { + factory JobSubmitRequest({ + $core.String? jobName, + JobData? data, + }) { + final $result = create(); + if (jobName != null) { + $result.jobName = jobName; + } + if (data != null) { + $result.data = data; + } + return $result; + } + JobSubmitRequest._() : super(); + factory JobSubmitRequest.fromBuffer($core.List<$core.int> i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(i, r); + factory JobSubmitRequest.fromJson($core.String i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'JobSubmitRequest', + package: const $pb.PackageName( + _omitMessageNames ? '' : 'nitric.proto.batch.v1'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'jobName') + ..aOM(2, _omitFieldNames ? '' : 'data', subBuilder: JobData.create) + ..hasRequiredFields = false; + + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + JobSubmitRequest clone() => JobSubmitRequest()..mergeFromMessage(this); + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + JobSubmitRequest copyWith(void Function(JobSubmitRequest) updates) => + super.copyWith((message) => updates(message as JobSubmitRequest)) + as JobSubmitRequest; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static JobSubmitRequest create() => JobSubmitRequest._(); + JobSubmitRequest createEmptyInstance() => create(); + static $pb.PbList createRepeated() => + $pb.PbList(); + @$core.pragma('dart2js:noInline') + static JobSubmitRequest getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static JobSubmitRequest? _defaultInstance; + + /// The name of the job that should handle the data + @$pb.TagNumber(1) + $core.String get jobName => $_getSZ(0); + @$pb.TagNumber(1) + set jobName($core.String v) { + $_setString(0, v); + } + + @$pb.TagNumber(1) + $core.bool hasJobName() => $_has(0); + @$pb.TagNumber(1) + void clearJobName() => clearField(1); + + /// The data to be processed by the job + @$pb.TagNumber(2) + JobData get data => $_getN(1); + @$pb.TagNumber(2) + set data(JobData v) { + setField(2, v); + } + + @$pb.TagNumber(2) + $core.bool hasData() => $_has(1); + @$pb.TagNumber(2) + void clearData() => clearField(2); + @$pb.TagNumber(2) + JobData ensureData() => $_ensure(1); +} + +class JobSubmitResponse extends $pb.GeneratedMessage { + factory JobSubmitResponse() => create(); + JobSubmitResponse._() : super(); + factory JobSubmitResponse.fromBuffer($core.List<$core.int> i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(i, r); + factory JobSubmitResponse.fromJson($core.String i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'JobSubmitResponse', + package: const $pb.PackageName( + _omitMessageNames ? '' : 'nitric.proto.batch.v1'), + createEmptyInstance: create) + ..hasRequiredFields = false; + + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + JobSubmitResponse clone() => JobSubmitResponse()..mergeFromMessage(this); + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + JobSubmitResponse copyWith(void Function(JobSubmitResponse) updates) => + super.copyWith((message) => updates(message as JobSubmitResponse)) + as JobSubmitResponse; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static JobSubmitResponse create() => JobSubmitResponse._(); + JobSubmitResponse createEmptyInstance() => create(); + static $pb.PbList createRepeated() => + $pb.PbList(); + @$core.pragma('dart2js:noInline') + static JobSubmitResponse getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static JobSubmitResponse? _defaultInstance; +} + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = + $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/lib/src/nitric/proto/batch/v1/batch.pbenum.dart b/lib/src/nitric/proto/batch/v1/batch.pbenum.dart new file mode 100644 index 0000000..3283526 --- /dev/null +++ b/lib/src/nitric/proto/batch/v1/batch.pbenum.dart @@ -0,0 +1,10 @@ +// +// Generated code. Do not modify. +// source: nitric/proto/batch/v1/batch.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import diff --git a/lib/src/nitric/proto/batch/v1/batch.pbgrpc.dart b/lib/src/nitric/proto/batch/v1/batch.pbgrpc.dart new file mode 100644 index 0000000..25c8b37 --- /dev/null +++ b/lib/src/nitric/proto/batch/v1/batch.pbgrpc.dart @@ -0,0 +1,102 @@ +// +// Generated code. Do not modify. +// source: nitric/proto/batch/v1/batch.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:async' as $async; +import 'dart:core' as $core; + +import 'package:grpc/service_api.dart' as $grpc; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'batch.pb.dart' as $1; + +export 'batch.pb.dart'; + +@$pb.GrpcServiceName('nitric.proto.batch.v1.Job') +class JobClient extends $grpc.Client { + static final _$handleJob = + $grpc.ClientMethod<$1.ClientMessage, $1.ServerMessage>( + '/nitric.proto.batch.v1.Job/HandleJob', + ($1.ClientMessage value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $1.ServerMessage.fromBuffer(value)); + + JobClient($grpc.ClientChannel channel, + {$grpc.CallOptions? options, + $core.Iterable<$grpc.ClientInterceptor>? interceptors}) + : super(channel, options: options, interceptors: interceptors); + + $grpc.ResponseStream<$1.ServerMessage> handleJob( + $async.Stream<$1.ClientMessage> request, + {$grpc.CallOptions? options}) { + return $createStreamingCall(_$handleJob, request, options: options); + } +} + +@$pb.GrpcServiceName('nitric.proto.batch.v1.Job') +abstract class JobServiceBase extends $grpc.Service { + $core.String get $name => 'nitric.proto.batch.v1.Job'; + + JobServiceBase() { + $addMethod($grpc.ServiceMethod<$1.ClientMessage, $1.ServerMessage>( + 'HandleJob', + handleJob, + true, + true, + ($core.List<$core.int> value) => $1.ClientMessage.fromBuffer(value), + ($1.ServerMessage value) => value.writeToBuffer())); + } + + $async.Stream<$1.ServerMessage> handleJob( + $grpc.ServiceCall call, $async.Stream<$1.ClientMessage> request); +} + +@$pb.GrpcServiceName('nitric.proto.batch.v1.Batch') +class BatchClient extends $grpc.Client { + static final _$submitJob = + $grpc.ClientMethod<$1.JobSubmitRequest, $1.JobSubmitResponse>( + '/nitric.proto.batch.v1.Batch/SubmitJob', + ($1.JobSubmitRequest value) => value.writeToBuffer(), + ($core.List<$core.int> value) => + $1.JobSubmitResponse.fromBuffer(value)); + + BatchClient($grpc.ClientChannel channel, + {$grpc.CallOptions? options, + $core.Iterable<$grpc.ClientInterceptor>? interceptors}) + : super(channel, options: options, interceptors: interceptors); + + $grpc.ResponseFuture<$1.JobSubmitResponse> submitJob( + $1.JobSubmitRequest request, + {$grpc.CallOptions? options}) { + return $createUnaryCall(_$submitJob, request, options: options); + } +} + +@$pb.GrpcServiceName('nitric.proto.batch.v1.Batch') +abstract class BatchServiceBase extends $grpc.Service { + $core.String get $name => 'nitric.proto.batch.v1.Batch'; + + BatchServiceBase() { + $addMethod($grpc.ServiceMethod<$1.JobSubmitRequest, $1.JobSubmitResponse>( + 'SubmitJob', + submitJob_Pre, + false, + false, + ($core.List<$core.int> value) => $1.JobSubmitRequest.fromBuffer(value), + ($1.JobSubmitResponse value) => value.writeToBuffer())); + } + + $async.Future<$1.JobSubmitResponse> submitJob_Pre($grpc.ServiceCall call, + $async.Future<$1.JobSubmitRequest> request) async { + return submitJob(call, await request); + } + + $async.Future<$1.JobSubmitResponse> submitJob( + $grpc.ServiceCall call, $1.JobSubmitRequest request); +} diff --git a/lib/src/nitric/proto/batch/v1/batch.pbjson.dart b/lib/src/nitric/proto/batch/v1/batch.pbjson.dart new file mode 100644 index 0000000..aae98f5 --- /dev/null +++ b/lib/src/nitric/proto/batch/v1/batch.pbjson.dart @@ -0,0 +1,220 @@ +// +// Generated code. Do not modify. +// source: nitric/proto/batch/v1/batch.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use clientMessageDescriptor instead') +const ClientMessage$json = { + '1': 'ClientMessage', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'}, + { + '1': 'registration_request', + '3': 2, + '4': 1, + '5': 11, + '6': '.nitric.proto.batch.v1.RegistrationRequest', + '9': 0, + '10': 'registrationRequest' + }, + { + '1': 'job_response', + '3': 3, + '4': 1, + '5': 11, + '6': '.nitric.proto.batch.v1.JobResponse', + '9': 0, + '10': 'jobResponse' + }, + ], + '8': [ + {'1': 'content'}, + ], +}; + +/// Descriptor for `ClientMessage`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List clientMessageDescriptor = $convert.base64Decode( + 'Cg1DbGllbnRNZXNzYWdlEg4KAmlkGAEgASgJUgJpZBJfChRyZWdpc3RyYXRpb25fcmVxdWVzdB' + 'gCIAEoCzIqLm5pdHJpYy5wcm90by5iYXRjaC52MS5SZWdpc3RyYXRpb25SZXF1ZXN0SABSE3Jl' + 'Z2lzdHJhdGlvblJlcXVlc3QSRwoMam9iX3Jlc3BvbnNlGAMgASgLMiIubml0cmljLnByb3RvLm' + 'JhdGNoLnYxLkpvYlJlc3BvbnNlSABSC2pvYlJlc3BvbnNlQgkKB2NvbnRlbnQ='); + +@$core.Deprecated('Use jobRequestDescriptor instead') +const JobRequest$json = { + '1': 'JobRequest', + '2': [ + {'1': 'job_name', '3': 1, '4': 1, '5': 9, '10': 'jobName'}, + { + '1': 'data', + '3': 2, + '4': 1, + '5': 11, + '6': '.nitric.proto.batch.v1.JobData', + '10': 'data' + }, + ], +}; + +/// Descriptor for `JobRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List jobRequestDescriptor = $convert.base64Decode( + 'CgpKb2JSZXF1ZXN0EhkKCGpvYl9uYW1lGAEgASgJUgdqb2JOYW1lEjIKBGRhdGEYAiABKAsyHi' + '5uaXRyaWMucHJvdG8uYmF0Y2gudjEuSm9iRGF0YVIEZGF0YQ=='); + +@$core.Deprecated('Use jobDataDescriptor instead') +const JobData$json = { + '1': 'JobData', + '2': [ + { + '1': 'struct', + '3': 1, + '4': 1, + '5': 11, + '6': '.google.protobuf.Struct', + '9': 0, + '10': 'struct' + }, + ], + '8': [ + {'1': 'data'}, + ], +}; + +/// Descriptor for `JobData`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List jobDataDescriptor = $convert.base64Decode( + 'CgdKb2JEYXRhEjEKBnN0cnVjdBgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIAFIGc3' + 'RydWN0QgYKBGRhdGE='); + +@$core.Deprecated('Use jobResponseDescriptor instead') +const JobResponse$json = { + '1': 'JobResponse', + '2': [ + {'1': 'success', '3': 1, '4': 1, '5': 8, '10': 'success'}, + ], +}; + +/// Descriptor for `JobResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List jobResponseDescriptor = $convert + .base64Decode('CgtKb2JSZXNwb25zZRIYCgdzdWNjZXNzGAEgASgIUgdzdWNjZXNz'); + +@$core.Deprecated('Use registrationRequestDescriptor instead') +const RegistrationRequest$json = { + '1': 'RegistrationRequest', + '2': [ + {'1': 'job_name', '3': 1, '4': 1, '5': 9, '10': 'jobName'}, + { + '1': 'requirements', + '3': 2, + '4': 1, + '5': 11, + '6': '.nitric.proto.batch.v1.JobResourceRequirements', + '10': 'requirements' + }, + ], +}; + +/// Descriptor for `RegistrationRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List registrationRequestDescriptor = $convert.base64Decode( + 'ChNSZWdpc3RyYXRpb25SZXF1ZXN0EhkKCGpvYl9uYW1lGAEgASgJUgdqb2JOYW1lElIKDHJlcX' + 'VpcmVtZW50cxgCIAEoCzIuLm5pdHJpYy5wcm90by5iYXRjaC52MS5Kb2JSZXNvdXJjZVJlcXVp' + 'cmVtZW50c1IMcmVxdWlyZW1lbnRz'); + +@$core.Deprecated('Use registrationResponseDescriptor instead') +const RegistrationResponse$json = { + '1': 'RegistrationResponse', +}; + +/// Descriptor for `RegistrationResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List registrationResponseDescriptor = + $convert.base64Decode('ChRSZWdpc3RyYXRpb25SZXNwb25zZQ=='); + +@$core.Deprecated('Use jobResourceRequirementsDescriptor instead') +const JobResourceRequirements$json = { + '1': 'JobResourceRequirements', + '2': [ + {'1': 'cpus', '3': 1, '4': 1, '5': 2, '10': 'cpus'}, + {'1': 'memory', '3': 2, '4': 1, '5': 3, '10': 'memory'}, + {'1': 'gpus', '3': 3, '4': 1, '5': 3, '10': 'gpus'}, + ], +}; + +/// Descriptor for `JobResourceRequirements`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List jobResourceRequirementsDescriptor = + $convert.base64Decode( + 'ChdKb2JSZXNvdXJjZVJlcXVpcmVtZW50cxISCgRjcHVzGAEgASgCUgRjcHVzEhYKBm1lbW9yeR' + 'gCIAEoA1IGbWVtb3J5EhIKBGdwdXMYAyABKANSBGdwdXM='); + +@$core.Deprecated('Use serverMessageDescriptor instead') +const ServerMessage$json = { + '1': 'ServerMessage', + '2': [ + {'1': 'id', '3': 1, '4': 1, '5': 9, '10': 'id'}, + { + '1': 'registration_response', + '3': 2, + '4': 1, + '5': 11, + '6': '.nitric.proto.batch.v1.RegistrationResponse', + '9': 0, + '10': 'registrationResponse' + }, + { + '1': 'job_request', + '3': 3, + '4': 1, + '5': 11, + '6': '.nitric.proto.batch.v1.JobRequest', + '9': 0, + '10': 'jobRequest' + }, + ], + '8': [ + {'1': 'content'}, + ], +}; + +/// Descriptor for `ServerMessage`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List serverMessageDescriptor = $convert.base64Decode( + 'Cg1TZXJ2ZXJNZXNzYWdlEg4KAmlkGAEgASgJUgJpZBJiChVyZWdpc3RyYXRpb25fcmVzcG9uc2' + 'UYAiABKAsyKy5uaXRyaWMucHJvdG8uYmF0Y2gudjEuUmVnaXN0cmF0aW9uUmVzcG9uc2VIAFIU' + 'cmVnaXN0cmF0aW9uUmVzcG9uc2USRAoLam9iX3JlcXVlc3QYAyABKAsyIS5uaXRyaWMucHJvdG' + '8uYmF0Y2gudjEuSm9iUmVxdWVzdEgAUgpqb2JSZXF1ZXN0QgkKB2NvbnRlbnQ='); + +@$core.Deprecated('Use jobSubmitRequestDescriptor instead') +const JobSubmitRequest$json = { + '1': 'JobSubmitRequest', + '2': [ + {'1': 'job_name', '3': 1, '4': 1, '5': 9, '10': 'jobName'}, + { + '1': 'data', + '3': 2, + '4': 1, + '5': 11, + '6': '.nitric.proto.batch.v1.JobData', + '10': 'data' + }, + ], +}; + +/// Descriptor for `JobSubmitRequest`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List jobSubmitRequestDescriptor = $convert.base64Decode( + 'ChBKb2JTdWJtaXRSZXF1ZXN0EhkKCGpvYl9uYW1lGAEgASgJUgdqb2JOYW1lEjIKBGRhdGEYAi' + 'ABKAsyHi5uaXRyaWMucHJvdG8uYmF0Y2gudjEuSm9iRGF0YVIEZGF0YQ=='); + +@$core.Deprecated('Use jobSubmitResponseDescriptor instead') +const JobSubmitResponse$json = { + '1': 'JobSubmitResponse', +}; + +/// Descriptor for `JobSubmitResponse`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List jobSubmitResponseDescriptor = + $convert.base64Decode('ChFKb2JTdWJtaXRSZXNwb25zZQ=='); diff --git a/lib/src/nitric/proto/deployments/v1/deployments.pb.dart b/lib/src/nitric/proto/deployments/v1/deployments.pb.dart index 85d7666..ea65204 100644 --- a/lib/src/nitric/proto/deployments/v1/deployments.pb.dart +++ b/lib/src/nitric/proto/deployments/v1/deployments.pb.dart @@ -14,9 +14,10 @@ import 'dart:core' as $core; import 'package:protobuf/protobuf.dart' as $pb; import '../../../../google/protobuf/struct.pb.dart' as $14; -import '../../resources/v1/resources.pb.dart' as $1; -import '../../resources/v1/resources.pbenum.dart' as $1; -import '../../storage/v1/storage.pb.dart' as $2; +import '../../batch/v1/batch.pb.dart' as $1; +import '../../resources/v1/resources.pb.dart' as $2; +import '../../resources/v1/resources.pbenum.dart' as $2; +import '../../storage/v1/storage.pb.dart' as $3; import 'deployments.pbenum.dart'; export 'deployments.pbenum.dart'; @@ -245,7 +246,7 @@ class DeploymentUpEvent extends $pb.GeneratedMessage { class ResourceUpdate extends $pb.GeneratedMessage { factory ResourceUpdate({ - $1.ResourceIdentifier? id, + $2.ResourceIdentifier? id, ResourceDeploymentAction? action, ResourceDeploymentStatus? status, $core.String? subResource, @@ -282,8 +283,8 @@ class ResourceUpdate extends $pb.GeneratedMessage { package: const $pb.PackageName( _omitMessageNames ? '' : 'nitric.proto.deployments.v1'), createEmptyInstance: create) - ..aOM<$1.ResourceIdentifier>(1, _omitFieldNames ? '' : 'id', - subBuilder: $1.ResourceIdentifier.create) + ..aOM<$2.ResourceIdentifier>(1, _omitFieldNames ? '' : 'id', + subBuilder: $2.ResourceIdentifier.create) ..e( 3, _omitFieldNames ? '' : 'action', $pb.PbFieldType.OE, defaultOrMaker: ResourceDeploymentAction.CREATE, @@ -323,9 +324,9 @@ class ResourceUpdate extends $pb.GeneratedMessage { /// The resource being updated, if this is nil the update applies to the stack @$pb.TagNumber(1) - $1.ResourceIdentifier get id => $_getN(0); + $2.ResourceIdentifier get id => $_getN(0); @$pb.TagNumber(1) - set id($1.ResourceIdentifier v) { + set id($2.ResourceIdentifier v) { setField(1, v); } @@ -334,7 +335,7 @@ class ResourceUpdate extends $pb.GeneratedMessage { @$pb.TagNumber(1) void clearId() => clearField(1); @$pb.TagNumber(1) - $1.ResourceIdentifier ensureId() => $_ensure(0); + $2.ResourceIdentifier ensureId() => $_ensure(0); /// The type of update being applied @$pb.TagNumber(3) @@ -963,6 +964,206 @@ class Service extends $pb.GeneratedMessage { $core.Map<$core.String, $core.String> get env => $_getMap(5); } +class Job extends $pb.GeneratedMessage { + factory Job({ + $core.String? name, + $1.JobResourceRequirements? requirements, + }) { + final $result = create(); + if (name != null) { + $result.name = name; + } + if (requirements != null) { + $result.requirements = requirements; + } + return $result; + } + Job._() : super(); + factory Job.fromBuffer($core.List<$core.int> i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(i, r); + factory Job.fromJson($core.String i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'Job', + package: const $pb.PackageName( + _omitMessageNames ? '' : 'nitric.proto.deployments.v1'), + createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'name') + ..aOM<$1.JobResourceRequirements>(2, _omitFieldNames ? '' : 'requirements', + subBuilder: $1.JobResourceRequirements.create) + ..hasRequiredFields = false; + + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Job clone() => Job()..mergeFromMessage(this); + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Job copyWith(void Function(Job) updates) => + super.copyWith((message) => updates(message as Job)) as Job; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Job create() => Job._(); + Job createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Job getDefault() => + _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Job? _defaultInstance; + + /// The name of the job to create + @$pb.TagNumber(1) + $core.String get name => $_getSZ(0); + @$pb.TagNumber(1) + set name($core.String v) { + $_setString(0, v); + } + + @$pb.TagNumber(1) + $core.bool hasName() => $_has(0); + @$pb.TagNumber(1) + void clearName() => clearField(1); + + /// The default resource requirements of the job + @$pb.TagNumber(2) + $1.JobResourceRequirements get requirements => $_getN(1); + @$pb.TagNumber(2) + set requirements($1.JobResourceRequirements v) { + setField(2, v); + } + + @$pb.TagNumber(2) + $core.bool hasRequirements() => $_has(1); + @$pb.TagNumber(2) + void clearRequirements() => clearField(2); + @$pb.TagNumber(2) + $1.JobResourceRequirements ensureRequirements() => $_ensure(1); +} + +enum Batch_Source { image, notSet } + +class Batch extends $pb.GeneratedMessage { + factory Batch({ + ImageSource? image, + $core.String? type, + $core.Map<$core.String, $core.String>? env, + $core.Iterable? jobs, + }) { + final $result = create(); + if (image != null) { + $result.image = image; + } + if (type != null) { + $result.type = type; + } + if (env != null) { + $result.env.addAll(env); + } + if (jobs != null) { + $result.jobs.addAll(jobs); + } + return $result; + } + Batch._() : super(); + factory Batch.fromBuffer($core.List<$core.int> i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(i, r); + factory Batch.fromJson($core.String i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(i, r); + + static const $core.Map<$core.int, Batch_Source> _Batch_SourceByTag = { + 1: Batch_Source.image, + 0: Batch_Source.notSet + }; + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'Batch', + package: const $pb.PackageName( + _omitMessageNames ? '' : 'nitric.proto.deployments.v1'), + createEmptyInstance: create) + ..oo(0, [1]) + ..aOM(1, _omitFieldNames ? '' : 'image', + subBuilder: ImageSource.create) + ..aOS(10, _omitFieldNames ? '' : 'type') + ..m<$core.String, $core.String>(11, _omitFieldNames ? '' : 'env', + entryClassName: 'Batch.EnvEntry', + keyFieldType: $pb.PbFieldType.OS, + valueFieldType: $pb.PbFieldType.OS, + packageName: const $pb.PackageName('nitric.proto.deployments.v1')) + ..pc(12, _omitFieldNames ? '' : 'jobs', $pb.PbFieldType.PM, + subBuilder: Job.create) + ..hasRequiredFields = false; + + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Batch clone() => Batch()..mergeFromMessage(this); + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Batch copyWith(void Function(Batch) updates) => + super.copyWith((message) => updates(message as Batch)) as Batch; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Batch create() => Batch._(); + Batch createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Batch getDefault() => + _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Batch? _defaultInstance; + + Batch_Source whichSource() => _Batch_SourceByTag[$_whichOneof(0)]!; + void clearSource() => clearField($_whichOneof(0)); + + /// Image URI for this batch service + @$pb.TagNumber(1) + ImageSource get image => $_getN(0); + @$pb.TagNumber(1) + set image(ImageSource v) { + setField(1, v); + } + + @$pb.TagNumber(1) + $core.bool hasImage() => $_has(0); + @$pb.TagNumber(1) + void clearImage() => clearField(1); + @$pb.TagNumber(1) + ImageSource ensureImage() => $_ensure(0); + + /// A simple type property + /// describes the requested type of batch that this should be + /// for this project, a provider can implement how this request is satisfied + /// in any way + @$pb.TagNumber(10) + $core.String get type => $_getSZ(1); + @$pb.TagNumber(10) + set type($core.String v) { + $_setString(1, v); + } + + @$pb.TagNumber(10) + $core.bool hasType() => $_has(1); + @$pb.TagNumber(10) + void clearType() => clearField(10); + + /// Environment variables for this Batch + @$pb.TagNumber(11) + $core.Map<$core.String, $core.String> get env => $_getMap(2); + + /// Jobs that are defined in this Batch + @$pb.TagNumber(12) + $core.List get jobs => $_getList(3); +} + class Bucket extends $pb.GeneratedMessage { factory Bucket({ $core.Iterable? listeners, @@ -1020,7 +1221,7 @@ enum BucketListener_Target { service, notSet } class BucketListener extends $pb.GeneratedMessage { factory BucketListener({ - $2.RegistrationRequest? config, + $3.RegistrationRequest? config, $core.String? service, }) { final $result = create(); @@ -1051,8 +1252,8 @@ class BucketListener extends $pb.GeneratedMessage { _omitMessageNames ? '' : 'nitric.proto.deployments.v1'), createEmptyInstance: create) ..oo(0, [2]) - ..aOM<$2.RegistrationRequest>(1, _omitFieldNames ? '' : 'config', - subBuilder: $2.RegistrationRequest.create) + ..aOM<$3.RegistrationRequest>(1, _omitFieldNames ? '' : 'config', + subBuilder: $3.RegistrationRequest.create) ..aOS(2, _omitFieldNames ? '' : 'service') ..hasRequiredFields = false; @@ -1084,9 +1285,9 @@ class BucketListener extends $pb.GeneratedMessage { void clearTarget() => clearField($_whichOneof(0)); @$pb.TagNumber(1) - $2.RegistrationRequest get config => $_getN(0); + $3.RegistrationRequest get config => $_getN(0); @$pb.TagNumber(1) - set config($2.RegistrationRequest v) { + set config($3.RegistrationRequest v) { setField(1, v); } @@ -1095,7 +1296,7 @@ class BucketListener extends $pb.GeneratedMessage { @$pb.TagNumber(1) void clearConfig() => clearField(1); @$pb.TagNumber(1) - $2.RegistrationRequest ensureConfig() => $_ensure(0); + $3.RegistrationRequest ensureConfig() => $_ensure(0); /// The name of an service to target @$pb.TagNumber(2) @@ -2212,12 +2413,13 @@ enum Resource_Config { http, queue, sqlDatabase, + batch, notSet } class Resource extends $pb.GeneratedMessage { factory Resource({ - $1.ResourceIdentifier? id, + $2.ResourceIdentifier? id, Service? service, Bucket? bucket, Topic? topic, @@ -2230,6 +2432,7 @@ class Resource extends $pb.GeneratedMessage { Http? http, Queue? queue, SqlDatabase? sqlDatabase, + Batch? batch, }) { final $result = create(); if (id != null) { @@ -2271,6 +2474,9 @@ class Resource extends $pb.GeneratedMessage { if (sqlDatabase != null) { $result.sqlDatabase = sqlDatabase; } + if (batch != null) { + $result.batch = batch; + } return $result; } Resource._() : super(); @@ -2294,6 +2500,7 @@ class Resource extends $pb.GeneratedMessage { 19: Resource_Config.http, 20: Resource_Config.queue, 21: Resource_Config.sqlDatabase, + 22: Resource_Config.batch, 0: Resource_Config.notSet }; static final $pb.BuilderInfo _i = $pb.BuilderInfo( @@ -2301,9 +2508,9 @@ class Resource extends $pb.GeneratedMessage { package: const $pb.PackageName( _omitMessageNames ? '' : 'nitric.proto.deployments.v1'), createEmptyInstance: create) - ..oo(0, [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]) - ..aOM<$1.ResourceIdentifier>(1, _omitFieldNames ? '' : 'id', - subBuilder: $1.ResourceIdentifier.create) + ..oo(0, [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22]) + ..aOM<$2.ResourceIdentifier>(1, _omitFieldNames ? '' : 'id', + subBuilder: $2.ResourceIdentifier.create) ..aOM(10, _omitFieldNames ? '' : 'service', subBuilder: Service.create) ..aOM(11, _omitFieldNames ? '' : 'bucket', @@ -2324,6 +2531,7 @@ class Resource extends $pb.GeneratedMessage { ..aOM(20, _omitFieldNames ? '' : 'queue', subBuilder: Queue.create) ..aOM(21, _omitFieldNames ? '' : 'sqlDatabase', subBuilder: SqlDatabase.create) + ..aOM(22, _omitFieldNames ? '' : 'batch', subBuilder: Batch.create) ..hasRequiredFields = false; @$core.Deprecated('Using this can add significant overhead to your binary. ' @@ -2351,9 +2559,9 @@ class Resource extends $pb.GeneratedMessage { void clearConfig() => clearField($_whichOneof(0)); @$pb.TagNumber(1) - $1.ResourceIdentifier get id => $_getN(0); + $2.ResourceIdentifier get id => $_getN(0); @$pb.TagNumber(1) - set id($1.ResourceIdentifier v) { + set id($2.ResourceIdentifier v) { setField(1, v); } @@ -2362,7 +2570,7 @@ class Resource extends $pb.GeneratedMessage { @$pb.TagNumber(1) void clearId() => clearField(1); @$pb.TagNumber(1) - $1.ResourceIdentifier ensureId() => $_ensure(0); + $2.ResourceIdentifier ensureId() => $_ensure(0); @$pb.TagNumber(10) Service get service => $_getN(1); @@ -2531,6 +2739,20 @@ class Resource extends $pb.GeneratedMessage { void clearSqlDatabase() => clearField(21); @$pb.TagNumber(21) SqlDatabase ensureSqlDatabase() => $_ensure(12); + + @$pb.TagNumber(22) + Batch get batch => $_getN(13); + @$pb.TagNumber(22) + set batch(Batch v) { + setField(22, v); + } + + @$pb.TagNumber(22) + $core.bool hasBatch() => $_has(13); + @$pb.TagNumber(22) + void clearBatch() => clearField(22); + @$pb.TagNumber(22) + Batch ensureBatch() => $_ensure(13); } /// This is already defined in the resource contracts, @@ -2538,7 +2760,7 @@ class Resource extends $pb.GeneratedMessage { class Policy extends $pb.GeneratedMessage { factory Policy({ $core.Iterable? principals, - $core.Iterable<$1.Action>? actions, + $core.Iterable<$2.Action>? actions, $core.Iterable? resources, }) { final $result = create(); @@ -2568,10 +2790,10 @@ class Policy extends $pb.GeneratedMessage { createEmptyInstance: create) ..pc(1, _omitFieldNames ? '' : 'principals', $pb.PbFieldType.PM, subBuilder: Resource.create) - ..pc<$1.Action>(2, _omitFieldNames ? '' : 'actions', $pb.PbFieldType.KE, - valueOf: $1.Action.valueOf, - enumValues: $1.Action.values, - defaultEnumValue: $1.Action.BucketFileList) + ..pc<$2.Action>(2, _omitFieldNames ? '' : 'actions', $pb.PbFieldType.KE, + valueOf: $2.Action.valueOf, + enumValues: $2.Action.values, + defaultEnumValue: $2.Action.BucketFileList) ..pc(3, _omitFieldNames ? '' : 'resources', $pb.PbFieldType.PM, subBuilder: Resource.create) ..hasRequiredFields = false; @@ -2601,7 +2823,7 @@ class Policy extends $pb.GeneratedMessage { $core.List get principals => $_getList(0); @$pb.TagNumber(2) - $core.List<$1.Action> get actions => $_getList(1); + $core.List<$2.Action> get actions => $_getList(1); @$pb.TagNumber(3) $core.List get resources => $_getList(2); diff --git a/lib/src/nitric/proto/deployments/v1/deployments.pbgrpc.dart b/lib/src/nitric/proto/deployments/v1/deployments.pbgrpc.dart index cf865f8..46bf050 100644 --- a/lib/src/nitric/proto/deployments/v1/deployments.pbgrpc.dart +++ b/lib/src/nitric/proto/deployments/v1/deployments.pbgrpc.dart @@ -15,38 +15,38 @@ import 'dart:core' as $core; import 'package:grpc/service_api.dart' as $grpc; import 'package:protobuf/protobuf.dart' as $pb; -import 'deployments.pb.dart' as $3; +import 'deployments.pb.dart' as $4; export 'deployments.pb.dart'; @$pb.GrpcServiceName('nitric.proto.deployments.v1.Deployment') class DeploymentClient extends $grpc.Client { static final _$up = - $grpc.ClientMethod<$3.DeploymentUpRequest, $3.DeploymentUpEvent>( + $grpc.ClientMethod<$4.DeploymentUpRequest, $4.DeploymentUpEvent>( '/nitric.proto.deployments.v1.Deployment/Up', - ($3.DeploymentUpRequest value) => value.writeToBuffer(), + ($4.DeploymentUpRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $3.DeploymentUpEvent.fromBuffer(value)); + $4.DeploymentUpEvent.fromBuffer(value)); static final _$down = - $grpc.ClientMethod<$3.DeploymentDownRequest, $3.DeploymentDownEvent>( + $grpc.ClientMethod<$4.DeploymentDownRequest, $4.DeploymentDownEvent>( '/nitric.proto.deployments.v1.Deployment/Down', - ($3.DeploymentDownRequest value) => value.writeToBuffer(), + ($4.DeploymentDownRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $3.DeploymentDownEvent.fromBuffer(value)); + $4.DeploymentDownEvent.fromBuffer(value)); DeploymentClient($grpc.ClientChannel channel, {$grpc.CallOptions? options, $core.Iterable<$grpc.ClientInterceptor>? interceptors}) : super(channel, options: options, interceptors: interceptors); - $grpc.ResponseStream<$3.DeploymentUpEvent> up($3.DeploymentUpRequest request, + $grpc.ResponseStream<$4.DeploymentUpEvent> up($4.DeploymentUpRequest request, {$grpc.CallOptions? options}) { return $createStreamingCall(_$up, $async.Stream.fromIterable([request]), options: options); } - $grpc.ResponseStream<$3.DeploymentDownEvent> down( - $3.DeploymentDownRequest request, + $grpc.ResponseStream<$4.DeploymentDownEvent> down( + $4.DeploymentDownRequest request, {$grpc.CallOptions? options}) { return $createStreamingCall(_$down, $async.Stream.fromIterable([request]), options: options); @@ -59,37 +59,37 @@ abstract class DeploymentServiceBase extends $grpc.Service { DeploymentServiceBase() { $addMethod( - $grpc.ServiceMethod<$3.DeploymentUpRequest, $3.DeploymentUpEvent>( + $grpc.ServiceMethod<$4.DeploymentUpRequest, $4.DeploymentUpEvent>( 'Up', up_Pre, false, true, ($core.List<$core.int> value) => - $3.DeploymentUpRequest.fromBuffer(value), - ($3.DeploymentUpEvent value) => value.writeToBuffer())); + $4.DeploymentUpRequest.fromBuffer(value), + ($4.DeploymentUpEvent value) => value.writeToBuffer())); $addMethod( - $grpc.ServiceMethod<$3.DeploymentDownRequest, $3.DeploymentDownEvent>( + $grpc.ServiceMethod<$4.DeploymentDownRequest, $4.DeploymentDownEvent>( 'Down', down_Pre, false, true, ($core.List<$core.int> value) => - $3.DeploymentDownRequest.fromBuffer(value), - ($3.DeploymentDownEvent value) => value.writeToBuffer())); + $4.DeploymentDownRequest.fromBuffer(value), + ($4.DeploymentDownEvent value) => value.writeToBuffer())); } - $async.Stream<$3.DeploymentUpEvent> up_Pre($grpc.ServiceCall call, - $async.Future<$3.DeploymentUpRequest> request) async* { + $async.Stream<$4.DeploymentUpEvent> up_Pre($grpc.ServiceCall call, + $async.Future<$4.DeploymentUpRequest> request) async* { yield* up(call, await request); } - $async.Stream<$3.DeploymentDownEvent> down_Pre($grpc.ServiceCall call, - $async.Future<$3.DeploymentDownRequest> request) async* { + $async.Stream<$4.DeploymentDownEvent> down_Pre($grpc.ServiceCall call, + $async.Future<$4.DeploymentDownRequest> request) async* { yield* down(call, await request); } - $async.Stream<$3.DeploymentUpEvent> up( - $grpc.ServiceCall call, $3.DeploymentUpRequest request); - $async.Stream<$3.DeploymentDownEvent> down( - $grpc.ServiceCall call, $3.DeploymentDownRequest request); + $async.Stream<$4.DeploymentUpEvent> up( + $grpc.ServiceCall call, $4.DeploymentUpRequest request); + $async.Stream<$4.DeploymentDownEvent> down( + $grpc.ServiceCall call, $4.DeploymentDownRequest request); } diff --git a/lib/src/nitric/proto/deployments/v1/deployments.pbjson.dart b/lib/src/nitric/proto/deployments/v1/deployments.pbjson.dart index fe5737f..1c09da4 100644 --- a/lib/src/nitric/proto/deployments/v1/deployments.pbjson.dart +++ b/lib/src/nitric/proto/deployments/v1/deployments.pbjson.dart @@ -318,6 +318,82 @@ final $typed_data.Uint8List serviceDescriptor = $convert.base64Decode( 'LlNlcnZpY2UuRW52RW50cnlSA2Vudho2CghFbnZFbnRyeRIQCgNrZXkYASABKAlSA2tleRIUCg' 'V2YWx1ZRgCIAEoCVIFdmFsdWU6AjgBQggKBnNvdXJjZQ=='); +@$core.Deprecated('Use jobDescriptor instead') +const Job$json = { + '1': 'Job', + '2': [ + {'1': 'name', '3': 1, '4': 1, '5': 9, '10': 'name'}, + { + '1': 'requirements', + '3': 2, + '4': 1, + '5': 11, + '6': '.nitric.proto.batch.v1.JobResourceRequirements', + '10': 'requirements' + }, + ], +}; + +/// Descriptor for `Job`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List jobDescriptor = $convert.base64Decode( + 'CgNKb2ISEgoEbmFtZRgBIAEoCVIEbmFtZRJSCgxyZXF1aXJlbWVudHMYAiABKAsyLi5uaXRyaW' + 'MucHJvdG8uYmF0Y2gudjEuSm9iUmVzb3VyY2VSZXF1aXJlbWVudHNSDHJlcXVpcmVtZW50cw=='); + +@$core.Deprecated('Use batchDescriptor instead') +const Batch$json = { + '1': 'Batch', + '2': [ + { + '1': 'image', + '3': 1, + '4': 1, + '5': 11, + '6': '.nitric.proto.deployments.v1.ImageSource', + '9': 0, + '10': 'image' + }, + {'1': 'type', '3': 10, '4': 1, '5': 9, '10': 'type'}, + { + '1': 'env', + '3': 11, + '4': 3, + '5': 11, + '6': '.nitric.proto.deployments.v1.Batch.EnvEntry', + '10': 'env' + }, + { + '1': 'jobs', + '3': 12, + '4': 3, + '5': 11, + '6': '.nitric.proto.deployments.v1.Job', + '10': 'jobs' + }, + ], + '3': [Batch_EnvEntry$json], + '8': [ + {'1': 'source'}, + ], +}; + +@$core.Deprecated('Use batchDescriptor instead') +const Batch_EnvEntry$json = { + '1': 'EnvEntry', + '2': [ + {'1': 'key', '3': 1, '4': 1, '5': 9, '10': 'key'}, + {'1': 'value', '3': 2, '4': 1, '5': 9, '10': 'value'}, + ], + '7': {'7': true}, +}; + +/// Descriptor for `Batch`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List batchDescriptor = $convert.base64Decode( + 'CgVCYXRjaBJACgVpbWFnZRgBIAEoCzIoLm5pdHJpYy5wcm90by5kZXBsb3ltZW50cy52MS5JbW' + 'FnZVNvdXJjZUgAUgVpbWFnZRISCgR0eXBlGAogASgJUgR0eXBlEj0KA2VudhgLIAMoCzIrLm5p' + 'dHJpYy5wcm90by5kZXBsb3ltZW50cy52MS5CYXRjaC5FbnZFbnRyeVIDZW52EjQKBGpvYnMYDC' + 'ADKAsyIC5uaXRyaWMucHJvdG8uZGVwbG95bWVudHMudjEuSm9iUgRqb2JzGjYKCEVudkVudHJ5' + 'EhAKA2tleRgBIAEoCVIDa2V5EhQKBXZhbHVlGAIgASgJUgV2YWx1ZToCOAFCCAoGc291cmNl'); + @$core.Deprecated('Use bucketDescriptor instead') const Bucket$json = { '1': 'Bucket', @@ -770,6 +846,15 @@ const Resource$json = { '9': 0, '10': 'sqlDatabase' }, + { + '1': 'batch', + '3': 22, + '4': 1, + '5': 11, + '6': '.nitric.proto.deployments.v1.Batch', + '9': 0, + '10': 'batch' + }, ], '8': [ {'1': 'config'}, @@ -793,7 +878,8 @@ final $typed_data.Uint8List resourceDescriptor = $convert.base64Decode( 'a2V0EjcKBGh0dHAYEyABKAsyIS5uaXRyaWMucHJvdG8uZGVwbG95bWVudHMudjEuSHR0cEgAUg' 'RodHRwEjoKBXF1ZXVlGBQgASgLMiIubml0cmljLnByb3RvLmRlcGxveW1lbnRzLnYxLlF1ZXVl' 'SABSBXF1ZXVlEk0KDHNxbF9kYXRhYmFzZRgVIAEoCzIoLm5pdHJpYy5wcm90by5kZXBsb3ltZW' - '50cy52MS5TcWxEYXRhYmFzZUgAUgtzcWxEYXRhYmFzZUIICgZjb25maWc='); + '50cy52MS5TcWxEYXRhYmFzZUgAUgtzcWxEYXRhYmFzZRI6CgViYXRjaBgWIAEoCzIiLm5pdHJp' + 'Yy5wcm90by5kZXBsb3ltZW50cy52MS5CYXRjaEgAUgViYXRjaEIICgZjb25maWc='); @$core.Deprecated('Use policyDescriptor instead') const Policy$json = { diff --git a/lib/src/nitric/proto/http/v1/http.pbgrpc.dart b/lib/src/nitric/proto/http/v1/http.pbgrpc.dart index 42276a8..dc5daf8 100644 --- a/lib/src/nitric/proto/http/v1/http.pbgrpc.dart +++ b/lib/src/nitric/proto/http/v1/http.pbgrpc.dart @@ -15,24 +15,24 @@ import 'dart:core' as $core; import 'package:grpc/service_api.dart' as $grpc; import 'package:protobuf/protobuf.dart' as $pb; -import 'http.pb.dart' as $4; +import 'http.pb.dart' as $5; export 'http.pb.dart'; @$pb.GrpcServiceName('nitric.proto.http.v1.Http') class HttpClient extends $grpc.Client { - static final _$proxy = $grpc.ClientMethod<$4.ClientMessage, $4.ServerMessage>( + static final _$proxy = $grpc.ClientMethod<$5.ClientMessage, $5.ServerMessage>( '/nitric.proto.http.v1.Http/Proxy', - ($4.ClientMessage value) => value.writeToBuffer(), - ($core.List<$core.int> value) => $4.ServerMessage.fromBuffer(value)); + ($5.ClientMessage value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $5.ServerMessage.fromBuffer(value)); HttpClient($grpc.ClientChannel channel, {$grpc.CallOptions? options, $core.Iterable<$grpc.ClientInterceptor>? interceptors}) : super(channel, options: options, interceptors: interceptors); - $grpc.ResponseStream<$4.ServerMessage> proxy( - $async.Stream<$4.ClientMessage> request, + $grpc.ResponseStream<$5.ServerMessage> proxy( + $async.Stream<$5.ClientMessage> request, {$grpc.CallOptions? options}) { return $createStreamingCall(_$proxy, request, options: options); } @@ -43,15 +43,15 @@ abstract class HttpServiceBase extends $grpc.Service { $core.String get $name => 'nitric.proto.http.v1.Http'; HttpServiceBase() { - $addMethod($grpc.ServiceMethod<$4.ClientMessage, $4.ServerMessage>( + $addMethod($grpc.ServiceMethod<$5.ClientMessage, $5.ServerMessage>( 'Proxy', proxy, true, true, - ($core.List<$core.int> value) => $4.ClientMessage.fromBuffer(value), - ($4.ServerMessage value) => value.writeToBuffer())); + ($core.List<$core.int> value) => $5.ClientMessage.fromBuffer(value), + ($5.ServerMessage value) => value.writeToBuffer())); } - $async.Stream<$4.ServerMessage> proxy( - $grpc.ServiceCall call, $async.Stream<$4.ClientMessage> request); + $async.Stream<$5.ServerMessage> proxy( + $grpc.ServiceCall call, $async.Stream<$5.ClientMessage> request); } diff --git a/lib/src/nitric/proto/keyvalue/v1/keyvalue.pbgrpc.dart b/lib/src/nitric/proto/keyvalue/v1/keyvalue.pbgrpc.dart index 46beb39..f5dfa15 100644 --- a/lib/src/nitric/proto/keyvalue/v1/keyvalue.pbgrpc.dart +++ b/lib/src/nitric/proto/keyvalue/v1/keyvalue.pbgrpc.dart @@ -15,50 +15,50 @@ import 'dart:core' as $core; import 'package:grpc/service_api.dart' as $grpc; import 'package:protobuf/protobuf.dart' as $pb; -import 'keyvalue.pb.dart' as $5; +import 'keyvalue.pb.dart' as $6; export 'keyvalue.pb.dart'; @$pb.GrpcServiceName('nitric.proto.KeyValue.v1.KeyValue') class KeyValueClient extends $grpc.Client { static final _$get = - $grpc.ClientMethod<$5.KeyValueGetRequest, $5.KeyValueGetResponse>( + $grpc.ClientMethod<$6.KeyValueGetRequest, $6.KeyValueGetResponse>( '/nitric.proto.KeyValue.v1.KeyValue/Get', - ($5.KeyValueGetRequest value) => value.writeToBuffer(), + ($6.KeyValueGetRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $5.KeyValueGetResponse.fromBuffer(value)); + $6.KeyValueGetResponse.fromBuffer(value)); static final _$set = - $grpc.ClientMethod<$5.KeyValueSetRequest, $5.KeyValueSetResponse>( + $grpc.ClientMethod<$6.KeyValueSetRequest, $6.KeyValueSetResponse>( '/nitric.proto.KeyValue.v1.KeyValue/Set', - ($5.KeyValueSetRequest value) => value.writeToBuffer(), + ($6.KeyValueSetRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $5.KeyValueSetResponse.fromBuffer(value)); + $6.KeyValueSetResponse.fromBuffer(value)); static final _$delete = - $grpc.ClientMethod<$5.KeyValueDeleteRequest, $5.KeyValueDeleteResponse>( + $grpc.ClientMethod<$6.KeyValueDeleteRequest, $6.KeyValueDeleteResponse>( '/nitric.proto.KeyValue.v1.KeyValue/Delete', - ($5.KeyValueDeleteRequest value) => value.writeToBuffer(), + ($6.KeyValueDeleteRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $5.KeyValueDeleteResponse.fromBuffer(value)); + $6.KeyValueDeleteResponse.fromBuffer(value)); KeyValueClient($grpc.ClientChannel channel, {$grpc.CallOptions? options, $core.Iterable<$grpc.ClientInterceptor>? interceptors}) : super(channel, options: options, interceptors: interceptors); - $grpc.ResponseFuture<$5.KeyValueGetResponse> get( - $5.KeyValueGetRequest request, + $grpc.ResponseFuture<$6.KeyValueGetResponse> get( + $6.KeyValueGetRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$get, request, options: options); } - $grpc.ResponseFuture<$5.KeyValueSetResponse> set( - $5.KeyValueSetRequest request, + $grpc.ResponseFuture<$6.KeyValueSetResponse> set( + $6.KeyValueSetRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$set, request, options: options); } - $grpc.ResponseFuture<$5.KeyValueDeleteResponse> delete( - $5.KeyValueDeleteRequest request, + $grpc.ResponseFuture<$6.KeyValueDeleteResponse> delete( + $6.KeyValueDeleteRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$delete, request, options: options); } @@ -70,53 +70,53 @@ abstract class KeyValueServiceBase extends $grpc.Service { KeyValueServiceBase() { $addMethod( - $grpc.ServiceMethod<$5.KeyValueGetRequest, $5.KeyValueGetResponse>( + $grpc.ServiceMethod<$6.KeyValueGetRequest, $6.KeyValueGetResponse>( 'Get', get_Pre, false, false, ($core.List<$core.int> value) => - $5.KeyValueGetRequest.fromBuffer(value), - ($5.KeyValueGetResponse value) => value.writeToBuffer())); + $6.KeyValueGetRequest.fromBuffer(value), + ($6.KeyValueGetResponse value) => value.writeToBuffer())); $addMethod( - $grpc.ServiceMethod<$5.KeyValueSetRequest, $5.KeyValueSetResponse>( + $grpc.ServiceMethod<$6.KeyValueSetRequest, $6.KeyValueSetResponse>( 'Set', set_Pre, false, false, ($core.List<$core.int> value) => - $5.KeyValueSetRequest.fromBuffer(value), - ($5.KeyValueSetResponse value) => value.writeToBuffer())); - $addMethod($grpc.ServiceMethod<$5.KeyValueDeleteRequest, - $5.KeyValueDeleteResponse>( + $6.KeyValueSetRequest.fromBuffer(value), + ($6.KeyValueSetResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$6.KeyValueDeleteRequest, + $6.KeyValueDeleteResponse>( 'Delete', delete_Pre, false, false, ($core.List<$core.int> value) => - $5.KeyValueDeleteRequest.fromBuffer(value), - ($5.KeyValueDeleteResponse value) => value.writeToBuffer())); + $6.KeyValueDeleteRequest.fromBuffer(value), + ($6.KeyValueDeleteResponse value) => value.writeToBuffer())); } - $async.Future<$5.KeyValueGetResponse> get_Pre($grpc.ServiceCall call, - $async.Future<$5.KeyValueGetRequest> request) async { + $async.Future<$6.KeyValueGetResponse> get_Pre($grpc.ServiceCall call, + $async.Future<$6.KeyValueGetRequest> request) async { return get(call, await request); } - $async.Future<$5.KeyValueSetResponse> set_Pre($grpc.ServiceCall call, - $async.Future<$5.KeyValueSetRequest> request) async { + $async.Future<$6.KeyValueSetResponse> set_Pre($grpc.ServiceCall call, + $async.Future<$6.KeyValueSetRequest> request) async { return set(call, await request); } - $async.Future<$5.KeyValueDeleteResponse> delete_Pre($grpc.ServiceCall call, - $async.Future<$5.KeyValueDeleteRequest> request) async { + $async.Future<$6.KeyValueDeleteResponse> delete_Pre($grpc.ServiceCall call, + $async.Future<$6.KeyValueDeleteRequest> request) async { return delete(call, await request); } - $async.Future<$5.KeyValueGetResponse> get( - $grpc.ServiceCall call, $5.KeyValueGetRequest request); - $async.Future<$5.KeyValueSetResponse> set( - $grpc.ServiceCall call, $5.KeyValueSetRequest request); - $async.Future<$5.KeyValueDeleteResponse> delete( - $grpc.ServiceCall call, $5.KeyValueDeleteRequest request); + $async.Future<$6.KeyValueGetResponse> get( + $grpc.ServiceCall call, $6.KeyValueGetRequest request); + $async.Future<$6.KeyValueSetResponse> set( + $grpc.ServiceCall call, $6.KeyValueSetRequest request); + $async.Future<$6.KeyValueDeleteResponse> delete( + $grpc.ServiceCall call, $6.KeyValueDeleteRequest request); } diff --git a/lib/src/nitric/proto/kvstore/v1/kvstore.pbgrpc.dart b/lib/src/nitric/proto/kvstore/v1/kvstore.pbgrpc.dart index c5bd4c9..44b47f2 100644 --- a/lib/src/nitric/proto/kvstore/v1/kvstore.pbgrpc.dart +++ b/lib/src/nitric/proto/kvstore/v1/kvstore.pbgrpc.dart @@ -15,62 +15,62 @@ import 'dart:core' as $core; import 'package:grpc/service_api.dart' as $grpc; import 'package:protobuf/protobuf.dart' as $pb; -import 'kvstore.pb.dart' as $6; +import 'kvstore.pb.dart' as $7; export 'kvstore.pb.dart'; @$pb.GrpcServiceName('nitric.proto.kvstore.v1.KvStore') class KvStoreClient extends $grpc.Client { static final _$getValue = - $grpc.ClientMethod<$6.KvStoreGetValueRequest, $6.KvStoreGetValueResponse>( + $grpc.ClientMethod<$7.KvStoreGetValueRequest, $7.KvStoreGetValueResponse>( '/nitric.proto.kvstore.v1.KvStore/GetValue', - ($6.KvStoreGetValueRequest value) => value.writeToBuffer(), + ($7.KvStoreGetValueRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $6.KvStoreGetValueResponse.fromBuffer(value)); + $7.KvStoreGetValueResponse.fromBuffer(value)); static final _$setValue = - $grpc.ClientMethod<$6.KvStoreSetValueRequest, $6.KvStoreSetValueResponse>( + $grpc.ClientMethod<$7.KvStoreSetValueRequest, $7.KvStoreSetValueResponse>( '/nitric.proto.kvstore.v1.KvStore/SetValue', - ($6.KvStoreSetValueRequest value) => value.writeToBuffer(), + ($7.KvStoreSetValueRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $6.KvStoreSetValueResponse.fromBuffer(value)); - static final _$deleteKey = $grpc.ClientMethod<$6.KvStoreDeleteKeyRequest, - $6.KvStoreDeleteKeyResponse>( + $7.KvStoreSetValueResponse.fromBuffer(value)); + static final _$deleteKey = $grpc.ClientMethod<$7.KvStoreDeleteKeyRequest, + $7.KvStoreDeleteKeyResponse>( '/nitric.proto.kvstore.v1.KvStore/DeleteKey', - ($6.KvStoreDeleteKeyRequest value) => value.writeToBuffer(), + ($7.KvStoreDeleteKeyRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $6.KvStoreDeleteKeyResponse.fromBuffer(value)); + $7.KvStoreDeleteKeyResponse.fromBuffer(value)); static final _$scanKeys = - $grpc.ClientMethod<$6.KvStoreScanKeysRequest, $6.KvStoreScanKeysResponse>( + $grpc.ClientMethod<$7.KvStoreScanKeysRequest, $7.KvStoreScanKeysResponse>( '/nitric.proto.kvstore.v1.KvStore/ScanKeys', - ($6.KvStoreScanKeysRequest value) => value.writeToBuffer(), + ($7.KvStoreScanKeysRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $6.KvStoreScanKeysResponse.fromBuffer(value)); + $7.KvStoreScanKeysResponse.fromBuffer(value)); KvStoreClient($grpc.ClientChannel channel, {$grpc.CallOptions? options, $core.Iterable<$grpc.ClientInterceptor>? interceptors}) : super(channel, options: options, interceptors: interceptors); - $grpc.ResponseFuture<$6.KvStoreGetValueResponse> getValue( - $6.KvStoreGetValueRequest request, + $grpc.ResponseFuture<$7.KvStoreGetValueResponse> getValue( + $7.KvStoreGetValueRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$getValue, request, options: options); } - $grpc.ResponseFuture<$6.KvStoreSetValueResponse> setValue( - $6.KvStoreSetValueRequest request, + $grpc.ResponseFuture<$7.KvStoreSetValueResponse> setValue( + $7.KvStoreSetValueRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$setValue, request, options: options); } - $grpc.ResponseFuture<$6.KvStoreDeleteKeyResponse> deleteKey( - $6.KvStoreDeleteKeyRequest request, + $grpc.ResponseFuture<$7.KvStoreDeleteKeyResponse> deleteKey( + $7.KvStoreDeleteKeyRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$deleteKey, request, options: options); } - $grpc.ResponseStream<$6.KvStoreScanKeysResponse> scanKeys( - $6.KvStoreScanKeysRequest request, + $grpc.ResponseStream<$7.KvStoreScanKeysResponse> scanKeys( + $7.KvStoreScanKeysRequest request, {$grpc.CallOptions? options}) { return $createStreamingCall( _$scanKeys, $async.Stream.fromIterable([request]), @@ -83,71 +83,71 @@ abstract class KvStoreServiceBase extends $grpc.Service { $core.String get $name => 'nitric.proto.kvstore.v1.KvStore'; KvStoreServiceBase() { - $addMethod($grpc.ServiceMethod<$6.KvStoreGetValueRequest, - $6.KvStoreGetValueResponse>( + $addMethod($grpc.ServiceMethod<$7.KvStoreGetValueRequest, + $7.KvStoreGetValueResponse>( 'GetValue', getValue_Pre, false, false, ($core.List<$core.int> value) => - $6.KvStoreGetValueRequest.fromBuffer(value), - ($6.KvStoreGetValueResponse value) => value.writeToBuffer())); - $addMethod($grpc.ServiceMethod<$6.KvStoreSetValueRequest, - $6.KvStoreSetValueResponse>( + $7.KvStoreGetValueRequest.fromBuffer(value), + ($7.KvStoreGetValueResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$7.KvStoreSetValueRequest, + $7.KvStoreSetValueResponse>( 'SetValue', setValue_Pre, false, false, ($core.List<$core.int> value) => - $6.KvStoreSetValueRequest.fromBuffer(value), - ($6.KvStoreSetValueResponse value) => value.writeToBuffer())); - $addMethod($grpc.ServiceMethod<$6.KvStoreDeleteKeyRequest, - $6.KvStoreDeleteKeyResponse>( + $7.KvStoreSetValueRequest.fromBuffer(value), + ($7.KvStoreSetValueResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$7.KvStoreDeleteKeyRequest, + $7.KvStoreDeleteKeyResponse>( 'DeleteKey', deleteKey_Pre, false, false, ($core.List<$core.int> value) => - $6.KvStoreDeleteKeyRequest.fromBuffer(value), - ($6.KvStoreDeleteKeyResponse value) => value.writeToBuffer())); - $addMethod($grpc.ServiceMethod<$6.KvStoreScanKeysRequest, - $6.KvStoreScanKeysResponse>( + $7.KvStoreDeleteKeyRequest.fromBuffer(value), + ($7.KvStoreDeleteKeyResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$7.KvStoreScanKeysRequest, + $7.KvStoreScanKeysResponse>( 'ScanKeys', scanKeys_Pre, false, true, ($core.List<$core.int> value) => - $6.KvStoreScanKeysRequest.fromBuffer(value), - ($6.KvStoreScanKeysResponse value) => value.writeToBuffer())); + $7.KvStoreScanKeysRequest.fromBuffer(value), + ($7.KvStoreScanKeysResponse value) => value.writeToBuffer())); } - $async.Future<$6.KvStoreGetValueResponse> getValue_Pre($grpc.ServiceCall call, - $async.Future<$6.KvStoreGetValueRequest> request) async { + $async.Future<$7.KvStoreGetValueResponse> getValue_Pre($grpc.ServiceCall call, + $async.Future<$7.KvStoreGetValueRequest> request) async { return getValue(call, await request); } - $async.Future<$6.KvStoreSetValueResponse> setValue_Pre($grpc.ServiceCall call, - $async.Future<$6.KvStoreSetValueRequest> request) async { + $async.Future<$7.KvStoreSetValueResponse> setValue_Pre($grpc.ServiceCall call, + $async.Future<$7.KvStoreSetValueRequest> request) async { return setValue(call, await request); } - $async.Future<$6.KvStoreDeleteKeyResponse> deleteKey_Pre( + $async.Future<$7.KvStoreDeleteKeyResponse> deleteKey_Pre( $grpc.ServiceCall call, - $async.Future<$6.KvStoreDeleteKeyRequest> request) async { + $async.Future<$7.KvStoreDeleteKeyRequest> request) async { return deleteKey(call, await request); } - $async.Stream<$6.KvStoreScanKeysResponse> scanKeys_Pre($grpc.ServiceCall call, - $async.Future<$6.KvStoreScanKeysRequest> request) async* { + $async.Stream<$7.KvStoreScanKeysResponse> scanKeys_Pre($grpc.ServiceCall call, + $async.Future<$7.KvStoreScanKeysRequest> request) async* { yield* scanKeys(call, await request); } - $async.Future<$6.KvStoreGetValueResponse> getValue( - $grpc.ServiceCall call, $6.KvStoreGetValueRequest request); - $async.Future<$6.KvStoreSetValueResponse> setValue( - $grpc.ServiceCall call, $6.KvStoreSetValueRequest request); - $async.Future<$6.KvStoreDeleteKeyResponse> deleteKey( - $grpc.ServiceCall call, $6.KvStoreDeleteKeyRequest request); - $async.Stream<$6.KvStoreScanKeysResponse> scanKeys( - $grpc.ServiceCall call, $6.KvStoreScanKeysRequest request); + $async.Future<$7.KvStoreGetValueResponse> getValue( + $grpc.ServiceCall call, $7.KvStoreGetValueRequest request); + $async.Future<$7.KvStoreSetValueResponse> setValue( + $grpc.ServiceCall call, $7.KvStoreSetValueRequest request); + $async.Future<$7.KvStoreDeleteKeyResponse> deleteKey( + $grpc.ServiceCall call, $7.KvStoreDeleteKeyRequest request); + $async.Stream<$7.KvStoreScanKeysResponse> scanKeys( + $grpc.ServiceCall call, $7.KvStoreScanKeysRequest request); } diff --git a/lib/src/nitric/proto/queues/v1/queues.pbgrpc.dart b/lib/src/nitric/proto/queues/v1/queues.pbgrpc.dart index 576c1c9..5b6b7f6 100644 --- a/lib/src/nitric/proto/queues/v1/queues.pbgrpc.dart +++ b/lib/src/nitric/proto/queues/v1/queues.pbgrpc.dart @@ -15,50 +15,50 @@ import 'dart:core' as $core; import 'package:grpc/service_api.dart' as $grpc; import 'package:protobuf/protobuf.dart' as $pb; -import 'queues.pb.dart' as $7; +import 'queues.pb.dart' as $8; export 'queues.pb.dart'; @$pb.GrpcServiceName('nitric.proto.queues.v1.Queues') class QueuesClient extends $grpc.Client { static final _$enqueue = - $grpc.ClientMethod<$7.QueueEnqueueRequest, $7.QueueEnqueueResponse>( + $grpc.ClientMethod<$8.QueueEnqueueRequest, $8.QueueEnqueueResponse>( '/nitric.proto.queues.v1.Queues/Enqueue', - ($7.QueueEnqueueRequest value) => value.writeToBuffer(), + ($8.QueueEnqueueRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $7.QueueEnqueueResponse.fromBuffer(value)); + $8.QueueEnqueueResponse.fromBuffer(value)); static final _$dequeue = - $grpc.ClientMethod<$7.QueueDequeueRequest, $7.QueueDequeueResponse>( + $grpc.ClientMethod<$8.QueueDequeueRequest, $8.QueueDequeueResponse>( '/nitric.proto.queues.v1.Queues/Dequeue', - ($7.QueueDequeueRequest value) => value.writeToBuffer(), + ($8.QueueDequeueRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $7.QueueDequeueResponse.fromBuffer(value)); + $8.QueueDequeueResponse.fromBuffer(value)); static final _$complete = - $grpc.ClientMethod<$7.QueueCompleteRequest, $7.QueueCompleteResponse>( + $grpc.ClientMethod<$8.QueueCompleteRequest, $8.QueueCompleteResponse>( '/nitric.proto.queues.v1.Queues/Complete', - ($7.QueueCompleteRequest value) => value.writeToBuffer(), + ($8.QueueCompleteRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $7.QueueCompleteResponse.fromBuffer(value)); + $8.QueueCompleteResponse.fromBuffer(value)); QueuesClient($grpc.ClientChannel channel, {$grpc.CallOptions? options, $core.Iterable<$grpc.ClientInterceptor>? interceptors}) : super(channel, options: options, interceptors: interceptors); - $grpc.ResponseFuture<$7.QueueEnqueueResponse> enqueue( - $7.QueueEnqueueRequest request, + $grpc.ResponseFuture<$8.QueueEnqueueResponse> enqueue( + $8.QueueEnqueueRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$enqueue, request, options: options); } - $grpc.ResponseFuture<$7.QueueDequeueResponse> dequeue( - $7.QueueDequeueRequest request, + $grpc.ResponseFuture<$8.QueueDequeueResponse> dequeue( + $8.QueueDequeueRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$dequeue, request, options: options); } - $grpc.ResponseFuture<$7.QueueCompleteResponse> complete( - $7.QueueCompleteRequest request, + $grpc.ResponseFuture<$8.QueueCompleteResponse> complete( + $8.QueueCompleteRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$complete, request, options: options); } @@ -70,53 +70,53 @@ abstract class QueuesServiceBase extends $grpc.Service { QueuesServiceBase() { $addMethod( - $grpc.ServiceMethod<$7.QueueEnqueueRequest, $7.QueueEnqueueResponse>( + $grpc.ServiceMethod<$8.QueueEnqueueRequest, $8.QueueEnqueueResponse>( 'Enqueue', enqueue_Pre, false, false, ($core.List<$core.int> value) => - $7.QueueEnqueueRequest.fromBuffer(value), - ($7.QueueEnqueueResponse value) => value.writeToBuffer())); + $8.QueueEnqueueRequest.fromBuffer(value), + ($8.QueueEnqueueResponse value) => value.writeToBuffer())); $addMethod( - $grpc.ServiceMethod<$7.QueueDequeueRequest, $7.QueueDequeueResponse>( + $grpc.ServiceMethod<$8.QueueDequeueRequest, $8.QueueDequeueResponse>( 'Dequeue', dequeue_Pre, false, false, ($core.List<$core.int> value) => - $7.QueueDequeueRequest.fromBuffer(value), - ($7.QueueDequeueResponse value) => value.writeToBuffer())); + $8.QueueDequeueRequest.fromBuffer(value), + ($8.QueueDequeueResponse value) => value.writeToBuffer())); $addMethod( - $grpc.ServiceMethod<$7.QueueCompleteRequest, $7.QueueCompleteResponse>( + $grpc.ServiceMethod<$8.QueueCompleteRequest, $8.QueueCompleteResponse>( 'Complete', complete_Pre, false, false, ($core.List<$core.int> value) => - $7.QueueCompleteRequest.fromBuffer(value), - ($7.QueueCompleteResponse value) => value.writeToBuffer())); + $8.QueueCompleteRequest.fromBuffer(value), + ($8.QueueCompleteResponse value) => value.writeToBuffer())); } - $async.Future<$7.QueueEnqueueResponse> enqueue_Pre($grpc.ServiceCall call, - $async.Future<$7.QueueEnqueueRequest> request) async { + $async.Future<$8.QueueEnqueueResponse> enqueue_Pre($grpc.ServiceCall call, + $async.Future<$8.QueueEnqueueRequest> request) async { return enqueue(call, await request); } - $async.Future<$7.QueueDequeueResponse> dequeue_Pre($grpc.ServiceCall call, - $async.Future<$7.QueueDequeueRequest> request) async { + $async.Future<$8.QueueDequeueResponse> dequeue_Pre($grpc.ServiceCall call, + $async.Future<$8.QueueDequeueRequest> request) async { return dequeue(call, await request); } - $async.Future<$7.QueueCompleteResponse> complete_Pre($grpc.ServiceCall call, - $async.Future<$7.QueueCompleteRequest> request) async { + $async.Future<$8.QueueCompleteResponse> complete_Pre($grpc.ServiceCall call, + $async.Future<$8.QueueCompleteRequest> request) async { return complete(call, await request); } - $async.Future<$7.QueueEnqueueResponse> enqueue( - $grpc.ServiceCall call, $7.QueueEnqueueRequest request); - $async.Future<$7.QueueDequeueResponse> dequeue( - $grpc.ServiceCall call, $7.QueueDequeueRequest request); - $async.Future<$7.QueueCompleteResponse> complete( - $grpc.ServiceCall call, $7.QueueCompleteRequest request); + $async.Future<$8.QueueEnqueueResponse> enqueue( + $grpc.ServiceCall call, $8.QueueEnqueueRequest request); + $async.Future<$8.QueueDequeueResponse> dequeue( + $grpc.ServiceCall call, $8.QueueDequeueRequest request); + $async.Future<$8.QueueCompleteResponse> complete( + $grpc.ServiceCall call, $8.QueueCompleteRequest request); } diff --git a/lib/src/nitric/proto/resources/v1/resources.pb.dart b/lib/src/nitric/proto/resources/v1/resources.pb.dart index 35b253d..ebc0a1e 100644 --- a/lib/src/nitric/proto/resources/v1/resources.pb.dart +++ b/lib/src/nitric/proto/resources/v1/resources.pb.dart @@ -186,6 +186,7 @@ enum ResourceDeclareRequest_Config { apiSecurityDefinition, queue, sqlDatabase, + job, notSet } @@ -201,6 +202,7 @@ class ResourceDeclareRequest extends $pb.GeneratedMessage { ApiSecurityDefinitionResource? apiSecurityDefinition, QueueResource? queue, SqlDatabaseResource? sqlDatabase, + JobResource? job, }) { final $result = create(); if (id != null) { @@ -233,6 +235,9 @@ class ResourceDeclareRequest extends $pb.GeneratedMessage { if (sqlDatabase != null) { $result.sqlDatabase = sqlDatabase; } + if (job != null) { + $result.job = job; + } return $result; } ResourceDeclareRequest._() : super(); @@ -254,6 +259,7 @@ class ResourceDeclareRequest extends $pb.GeneratedMessage { 16: ResourceDeclareRequest_Config.apiSecurityDefinition, 17: ResourceDeclareRequest_Config.queue, 18: ResourceDeclareRequest_Config.sqlDatabase, + 19: ResourceDeclareRequest_Config.job, 0: ResourceDeclareRequest_Config.notSet }; static final $pb.BuilderInfo _i = $pb.BuilderInfo( @@ -261,7 +267,7 @@ class ResourceDeclareRequest extends $pb.GeneratedMessage { package: const $pb.PackageName( _omitMessageNames ? '' : 'nitric.proto.resources.v1'), createEmptyInstance: create) - ..oo(0, [10, 11, 12, 13, 14, 15, 16, 17, 18]) + ..oo(0, [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]) ..aOM(1, _omitFieldNames ? '' : 'id', subBuilder: ResourceIdentifier.create) ..aOM(10, _omitFieldNames ? '' : 'policy', @@ -283,6 +289,8 @@ class ResourceDeclareRequest extends $pb.GeneratedMessage { subBuilder: QueueResource.create) ..aOM(18, _omitFieldNames ? '' : 'sqlDatabase', subBuilder: SqlDatabaseResource.create) + ..aOM(19, _omitFieldNames ? '' : 'job', + subBuilder: JobResource.create) ..hasRequiredFields = false; @$core.Deprecated('Using this can add significant overhead to your binary. ' @@ -453,6 +461,20 @@ class ResourceDeclareRequest extends $pb.GeneratedMessage { void clearSqlDatabase() => clearField(18); @$pb.TagNumber(18) SqlDatabaseResource ensureSqlDatabase() => $_ensure(9); + + @$pb.TagNumber(19) + JobResource get job => $_getN(10); + @$pb.TagNumber(19) + set job(JobResource v) { + setField(19, v); + } + + @$pb.TagNumber(19) + $core.bool hasJob() => $_has(10); + @$pb.TagNumber(19) + void clearJob() => clearField(19); + @$pb.TagNumber(19) + JobResource ensureJob() => $_ensure(10); } class BucketResource extends $pb.GeneratedMessage { @@ -662,6 +684,46 @@ class SecretResource extends $pb.GeneratedMessage { static SecretResource? _defaultInstance; } +class JobResource extends $pb.GeneratedMessage { + factory JobResource() => create(); + JobResource._() : super(); + factory JobResource.fromBuffer($core.List<$core.int> i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromBuffer(i, r); + factory JobResource.fromJson($core.String i, + [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => + create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo( + _omitMessageNames ? '' : 'JobResource', + package: const $pb.PackageName( + _omitMessageNames ? '' : 'nitric.proto.resources.v1'), + createEmptyInstance: create) + ..hasRequiredFields = false; + + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + JobResource clone() => JobResource()..mergeFromMessage(this); + @$core.Deprecated('Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + JobResource copyWith(void Function(JobResource) updates) => + super.copyWith((message) => updates(message as JobResource)) + as JobResource; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static JobResource create() => JobResource._(); + JobResource createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static JobResource getDefault() => _defaultInstance ??= + $pb.GeneratedMessage.$_defaultFor(create); + static JobResource? _defaultInstance; +} + enum SqlDatabaseMigrations_Migrations { migrationsPath, notSet } class SqlDatabaseMigrations extends $pb.GeneratedMessage { diff --git a/lib/src/nitric/proto/resources/v1/resources.pbenum.dart b/lib/src/nitric/proto/resources/v1/resources.pbenum.dart index 04f7949..93e0849 100644 --- a/lib/src/nitric/proto/resources/v1/resources.pbenum.dart +++ b/lib/src/nitric/proto/resources/v1/resources.pbenum.dart @@ -44,6 +44,10 @@ class ResourceType extends $pb.ProtobufEnum { ResourceType._(13, _omitEnumNames ? '' : 'Queue'); static const ResourceType SqlDatabase = ResourceType._(14, _omitEnumNames ? '' : 'SqlDatabase'); + static const ResourceType Batch = + ResourceType._(15, _omitEnumNames ? '' : 'Batch'); + static const ResourceType Job = + ResourceType._(16, _omitEnumNames ? '' : 'Job'); static const $core.List values = [ Api, @@ -61,6 +65,8 @@ class ResourceType extends $pb.ProtobufEnum { ApiSecurityDefinition, Queue, SqlDatabase, + Batch, + Job, ]; static final $core.Map<$core.int, ResourceType> _byValue = @@ -97,6 +103,8 @@ class Action extends $pb.ProtobufEnum { Action._(600, _omitEnumNames ? '' : 'QueueEnqueue'); static const Action QueueDequeue = Action._(601, _omitEnumNames ? '' : 'QueueDequeue'); + static const Action JobSubmit = + Action._(700, _omitEnumNames ? '' : 'JobSubmit'); static const $core.List values = [ BucketFileList, @@ -112,6 +120,7 @@ class Action extends $pb.ProtobufEnum { WebsocketManage, QueueEnqueue, QueueDequeue, + JobSubmit, ]; static final $core.Map<$core.int, Action> _byValue = diff --git a/lib/src/nitric/proto/resources/v1/resources.pbgrpc.dart b/lib/src/nitric/proto/resources/v1/resources.pbgrpc.dart index ad1e4e5..754b562 100644 --- a/lib/src/nitric/proto/resources/v1/resources.pbgrpc.dart +++ b/lib/src/nitric/proto/resources/v1/resources.pbgrpc.dart @@ -15,26 +15,26 @@ import 'dart:core' as $core; import 'package:grpc/service_api.dart' as $grpc; import 'package:protobuf/protobuf.dart' as $pb; -import 'resources.pb.dart' as $1; +import 'resources.pb.dart' as $2; export 'resources.pb.dart'; @$pb.GrpcServiceName('nitric.proto.resources.v1.Resources') class ResourcesClient extends $grpc.Client { static final _$declare = - $grpc.ClientMethod<$1.ResourceDeclareRequest, $1.ResourceDeclareResponse>( + $grpc.ClientMethod<$2.ResourceDeclareRequest, $2.ResourceDeclareResponse>( '/nitric.proto.resources.v1.Resources/Declare', - ($1.ResourceDeclareRequest value) => value.writeToBuffer(), + ($2.ResourceDeclareRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $1.ResourceDeclareResponse.fromBuffer(value)); + $2.ResourceDeclareResponse.fromBuffer(value)); ResourcesClient($grpc.ClientChannel channel, {$grpc.CallOptions? options, $core.Iterable<$grpc.ClientInterceptor>? interceptors}) : super(channel, options: options, interceptors: interceptors); - $grpc.ResponseFuture<$1.ResourceDeclareResponse> declare( - $1.ResourceDeclareRequest request, + $grpc.ResponseFuture<$2.ResourceDeclareResponse> declare( + $2.ResourceDeclareRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$declare, request, options: options); } @@ -45,22 +45,22 @@ abstract class ResourcesServiceBase extends $grpc.Service { $core.String get $name => 'nitric.proto.resources.v1.Resources'; ResourcesServiceBase() { - $addMethod($grpc.ServiceMethod<$1.ResourceDeclareRequest, - $1.ResourceDeclareResponse>( + $addMethod($grpc.ServiceMethod<$2.ResourceDeclareRequest, + $2.ResourceDeclareResponse>( 'Declare', declare_Pre, false, false, ($core.List<$core.int> value) => - $1.ResourceDeclareRequest.fromBuffer(value), - ($1.ResourceDeclareResponse value) => value.writeToBuffer())); + $2.ResourceDeclareRequest.fromBuffer(value), + ($2.ResourceDeclareResponse value) => value.writeToBuffer())); } - $async.Future<$1.ResourceDeclareResponse> declare_Pre($grpc.ServiceCall call, - $async.Future<$1.ResourceDeclareRequest> request) async { + $async.Future<$2.ResourceDeclareResponse> declare_Pre($grpc.ServiceCall call, + $async.Future<$2.ResourceDeclareRequest> request) async { return declare(call, await request); } - $async.Future<$1.ResourceDeclareResponse> declare( - $grpc.ServiceCall call, $1.ResourceDeclareRequest request); + $async.Future<$2.ResourceDeclareResponse> declare( + $grpc.ServiceCall call, $2.ResourceDeclareRequest request); } diff --git a/lib/src/nitric/proto/resources/v1/resources.pbjson.dart b/lib/src/nitric/proto/resources/v1/resources.pbjson.dart index db4b52a..3c37d16 100644 --- a/lib/src/nitric/proto/resources/v1/resources.pbjson.dart +++ b/lib/src/nitric/proto/resources/v1/resources.pbjson.dart @@ -32,6 +32,8 @@ const ResourceType$json = { {'1': 'ApiSecurityDefinition', '2': 12}, {'1': 'Queue', '2': 13}, {'1': 'SqlDatabase', '2': 14}, + {'1': 'Batch', '2': 15}, + {'1': 'Job', '2': 16}, ], }; @@ -41,7 +43,7 @@ final $typed_data.Uint8List resourceTypeDescriptor = $convert.base64Decode( 'ljEAMSDAoIU2NoZWR1bGUQBBIQCgxTdWJzY3JpcHRpb24QBRIRCg1LZXlWYWx1ZVN0b3JlEAYS' 'CgoGUG9saWN5EAcSCgoGU2VjcmV0EAgSEgoOQnVja2V0TGlzdGVuZXIQCRINCglXZWJzb2NrZX' 'QQChIICgRIdHRwEAsSGQoVQXBpU2VjdXJpdHlEZWZpbml0aW9uEAwSCQoFUXVldWUQDRIPCgtT' - 'cWxEYXRhYmFzZRAO'); + 'cWxEYXRhYmFzZRAOEgkKBUJhdGNoEA8SBwoDSm9iEBA='); @$core.Deprecated('Use actionDescriptor instead') const Action$json = { @@ -60,6 +62,7 @@ const Action$json = { {'1': 'WebsocketManage', '2': 500}, {'1': 'QueueEnqueue', '2': 600}, {'1': 'QueueDequeue', '2': 601}, + {'1': 'JobSubmit', '2': 700}, ], }; @@ -69,8 +72,8 @@ final $typed_data.Uint8List actionDescriptor = $convert.base64Decode( 'V0RmlsZVB1dBACEhQKEEJ1Y2tldEZpbGVEZWxldGUQAxIRCgxUb3BpY1B1Ymxpc2gQyAESFgoR' 'S2V5VmFsdWVTdG9yZVJlYWQQrAISFwoSS2V5VmFsdWVTdG9yZVdyaXRlEK0CEhgKE0tleVZhbH' 'VlU3RvcmVEZWxldGUQrgISDgoJU2VjcmV0UHV0EJADEhEKDFNlY3JldEFjY2VzcxCRAxIUCg9X' - 'ZWJzb2NrZXRNYW5hZ2UQ9AMSEQoMUXVldWVFbnF1ZXVlENgEEhEKDFF1ZXVlRGVxdWV1ZRDZBA' - '=='); + 'ZWJzb2NrZXRNYW5hZ2UQ9AMSEQoMUXVldWVFbnF1ZXVlENgEEhEKDFF1ZXVlRGVxdWV1ZRDZBB' + 'IOCglKb2JTdWJtaXQQvAU='); @$core.Deprecated('Use policyResourceDescriptor instead') const PolicyResource$json = { @@ -225,6 +228,15 @@ const ResourceDeclareRequest$json = { '9': 0, '10': 'sqlDatabase' }, + { + '1': 'job', + '3': 19, + '4': 1, + '5': 11, + '6': '.nitric.proto.resources.v1.JobResource', + '9': 0, + '10': 'job' + }, ], '8': [ {'1': 'config'}, @@ -247,7 +259,8 @@ final $typed_data.Uint8List resourceDeclareRequestDescriptor = $convert.base64De 'NlY3VyaXR5RGVmaW5pdGlvbhJACgVxdWV1ZRgRIAEoCzIoLm5pdHJpYy5wcm90by5yZXNvdXJj' 'ZXMudjEuUXVldWVSZXNvdXJjZUgAUgVxdWV1ZRJTCgxzcWxfZGF0YWJhc2UYEiABKAsyLi5uaX' 'RyaWMucHJvdG8ucmVzb3VyY2VzLnYxLlNxbERhdGFiYXNlUmVzb3VyY2VIAFILc3FsRGF0YWJh' - 'c2VCCAoGY29uZmln'); + 'c2USOgoDam9iGBMgASgLMiYubml0cmljLnByb3RvLnJlc291cmNlcy52MS5Kb2JSZXNvdXJjZU' + 'gAUgNqb2JCCAoGY29uZmln'); @$core.Deprecated('Use bucketResourceDescriptor instead') const BucketResource$json = { @@ -294,6 +307,15 @@ const SecretResource$json = { final $typed_data.Uint8List secretResourceDescriptor = $convert.base64Decode('Cg5TZWNyZXRSZXNvdXJjZQ=='); +@$core.Deprecated('Use jobResourceDescriptor instead') +const JobResource$json = { + '1': 'JobResource', +}; + +/// Descriptor for `JobResource`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List jobResourceDescriptor = + $convert.base64Decode('CgtKb2JSZXNvdXJjZQ=='); + @$core.Deprecated('Use sqlDatabaseMigrationsDescriptor instead') const SqlDatabaseMigrations$json = { '1': 'SqlDatabaseMigrations', diff --git a/lib/src/nitric/proto/schedules/v1/schedules.pbgrpc.dart b/lib/src/nitric/proto/schedules/v1/schedules.pbgrpc.dart index 520acf6..edd17ca 100644 --- a/lib/src/nitric/proto/schedules/v1/schedules.pbgrpc.dart +++ b/lib/src/nitric/proto/schedules/v1/schedules.pbgrpc.dart @@ -15,25 +15,25 @@ import 'dart:core' as $core; import 'package:grpc/service_api.dart' as $grpc; import 'package:protobuf/protobuf.dart' as $pb; -import 'schedules.pb.dart' as $8; +import 'schedules.pb.dart' as $9; export 'schedules.pb.dart'; @$pb.GrpcServiceName('nitric.proto.schedules.v1.Schedules') class SchedulesClient extends $grpc.Client { static final _$schedule = - $grpc.ClientMethod<$8.ClientMessage, $8.ServerMessage>( + $grpc.ClientMethod<$9.ClientMessage, $9.ServerMessage>( '/nitric.proto.schedules.v1.Schedules/Schedule', - ($8.ClientMessage value) => value.writeToBuffer(), - ($core.List<$core.int> value) => $8.ServerMessage.fromBuffer(value)); + ($9.ClientMessage value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $9.ServerMessage.fromBuffer(value)); SchedulesClient($grpc.ClientChannel channel, {$grpc.CallOptions? options, $core.Iterable<$grpc.ClientInterceptor>? interceptors}) : super(channel, options: options, interceptors: interceptors); - $grpc.ResponseStream<$8.ServerMessage> schedule( - $async.Stream<$8.ClientMessage> request, + $grpc.ResponseStream<$9.ServerMessage> schedule( + $async.Stream<$9.ClientMessage> request, {$grpc.CallOptions? options}) { return $createStreamingCall(_$schedule, request, options: options); } @@ -44,15 +44,15 @@ abstract class SchedulesServiceBase extends $grpc.Service { $core.String get $name => 'nitric.proto.schedules.v1.Schedules'; SchedulesServiceBase() { - $addMethod($grpc.ServiceMethod<$8.ClientMessage, $8.ServerMessage>( + $addMethod($grpc.ServiceMethod<$9.ClientMessage, $9.ServerMessage>( 'Schedule', schedule, true, true, - ($core.List<$core.int> value) => $8.ClientMessage.fromBuffer(value), - ($8.ServerMessage value) => value.writeToBuffer())); + ($core.List<$core.int> value) => $9.ClientMessage.fromBuffer(value), + ($9.ServerMessage value) => value.writeToBuffer())); } - $async.Stream<$8.ServerMessage> schedule( - $grpc.ServiceCall call, $async.Stream<$8.ClientMessage> request); + $async.Stream<$9.ServerMessage> schedule( + $grpc.ServiceCall call, $async.Stream<$9.ClientMessage> request); } diff --git a/lib/src/nitric/proto/secrets/v1/secrets.pbgrpc.dart b/lib/src/nitric/proto/secrets/v1/secrets.pbgrpc.dart index 761d28c..a0b34b9 100644 --- a/lib/src/nitric/proto/secrets/v1/secrets.pbgrpc.dart +++ b/lib/src/nitric/proto/secrets/v1/secrets.pbgrpc.dart @@ -15,37 +15,37 @@ import 'dart:core' as $core; import 'package:grpc/service_api.dart' as $grpc; import 'package:protobuf/protobuf.dart' as $pb; -import 'secrets.pb.dart' as $9; +import 'secrets.pb.dart' as $10; export 'secrets.pb.dart'; @$pb.GrpcServiceName('nitric.proto.secrets.v1.SecretManager') class SecretManagerClient extends $grpc.Client { static final _$put = - $grpc.ClientMethod<$9.SecretPutRequest, $9.SecretPutResponse>( + $grpc.ClientMethod<$10.SecretPutRequest, $10.SecretPutResponse>( '/nitric.proto.secrets.v1.SecretManager/Put', - ($9.SecretPutRequest value) => value.writeToBuffer(), + ($10.SecretPutRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $9.SecretPutResponse.fromBuffer(value)); + $10.SecretPutResponse.fromBuffer(value)); static final _$access = - $grpc.ClientMethod<$9.SecretAccessRequest, $9.SecretAccessResponse>( + $grpc.ClientMethod<$10.SecretAccessRequest, $10.SecretAccessResponse>( '/nitric.proto.secrets.v1.SecretManager/Access', - ($9.SecretAccessRequest value) => value.writeToBuffer(), + ($10.SecretAccessRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $9.SecretAccessResponse.fromBuffer(value)); + $10.SecretAccessResponse.fromBuffer(value)); SecretManagerClient($grpc.ClientChannel channel, {$grpc.CallOptions? options, $core.Iterable<$grpc.ClientInterceptor>? interceptors}) : super(channel, options: options, interceptors: interceptors); - $grpc.ResponseFuture<$9.SecretPutResponse> put($9.SecretPutRequest request, + $grpc.ResponseFuture<$10.SecretPutResponse> put($10.SecretPutRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$put, request, options: options); } - $grpc.ResponseFuture<$9.SecretAccessResponse> access( - $9.SecretAccessRequest request, + $grpc.ResponseFuture<$10.SecretAccessResponse> access( + $10.SecretAccessRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$access, request, options: options); } @@ -56,36 +56,36 @@ abstract class SecretManagerServiceBase extends $grpc.Service { $core.String get $name => 'nitric.proto.secrets.v1.SecretManager'; SecretManagerServiceBase() { - $addMethod($grpc.ServiceMethod<$9.SecretPutRequest, $9.SecretPutResponse>( + $addMethod($grpc.ServiceMethod<$10.SecretPutRequest, $10.SecretPutResponse>( 'Put', put_Pre, false, false, - ($core.List<$core.int> value) => $9.SecretPutRequest.fromBuffer(value), - ($9.SecretPutResponse value) => value.writeToBuffer())); + ($core.List<$core.int> value) => $10.SecretPutRequest.fromBuffer(value), + ($10.SecretPutResponse value) => value.writeToBuffer())); $addMethod( - $grpc.ServiceMethod<$9.SecretAccessRequest, $9.SecretAccessResponse>( + $grpc.ServiceMethod<$10.SecretAccessRequest, $10.SecretAccessResponse>( 'Access', access_Pre, false, false, ($core.List<$core.int> value) => - $9.SecretAccessRequest.fromBuffer(value), - ($9.SecretAccessResponse value) => value.writeToBuffer())); + $10.SecretAccessRequest.fromBuffer(value), + ($10.SecretAccessResponse value) => value.writeToBuffer())); } - $async.Future<$9.SecretPutResponse> put_Pre($grpc.ServiceCall call, - $async.Future<$9.SecretPutRequest> request) async { + $async.Future<$10.SecretPutResponse> put_Pre($grpc.ServiceCall call, + $async.Future<$10.SecretPutRequest> request) async { return put(call, await request); } - $async.Future<$9.SecretAccessResponse> access_Pre($grpc.ServiceCall call, - $async.Future<$9.SecretAccessRequest> request) async { + $async.Future<$10.SecretAccessResponse> access_Pre($grpc.ServiceCall call, + $async.Future<$10.SecretAccessRequest> request) async { return access(call, await request); } - $async.Future<$9.SecretPutResponse> put( - $grpc.ServiceCall call, $9.SecretPutRequest request); - $async.Future<$9.SecretAccessResponse> access( - $grpc.ServiceCall call, $9.SecretAccessRequest request); + $async.Future<$10.SecretPutResponse> put( + $grpc.ServiceCall call, $10.SecretPutRequest request); + $async.Future<$10.SecretAccessResponse> access( + $grpc.ServiceCall call, $10.SecretAccessRequest request); } diff --git a/lib/src/nitric/proto/sql/v1/sql.pbgrpc.dart b/lib/src/nitric/proto/sql/v1/sql.pbgrpc.dart index 00120cc..3a0fc47 100644 --- a/lib/src/nitric/proto/sql/v1/sql.pbgrpc.dart +++ b/lib/src/nitric/proto/sql/v1/sql.pbgrpc.dart @@ -15,26 +15,26 @@ import 'dart:core' as $core; import 'package:grpc/service_api.dart' as $grpc; import 'package:protobuf/protobuf.dart' as $pb; -import 'sql.pb.dart' as $10; +import 'sql.pb.dart' as $11; export 'sql.pb.dart'; @$pb.GrpcServiceName('nitric.proto.sql.v1.Sql') class SqlClient extends $grpc.Client { static final _$connectionString = $grpc.ClientMethod< - $10.SqlConnectionStringRequest, $10.SqlConnectionStringResponse>( + $11.SqlConnectionStringRequest, $11.SqlConnectionStringResponse>( '/nitric.proto.sql.v1.Sql/ConnectionString', - ($10.SqlConnectionStringRequest value) => value.writeToBuffer(), + ($11.SqlConnectionStringRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $10.SqlConnectionStringResponse.fromBuffer(value)); + $11.SqlConnectionStringResponse.fromBuffer(value)); SqlClient($grpc.ClientChannel channel, {$grpc.CallOptions? options, $core.Iterable<$grpc.ClientInterceptor>? interceptors}) : super(channel, options: options, interceptors: interceptors); - $grpc.ResponseFuture<$10.SqlConnectionStringResponse> connectionString( - $10.SqlConnectionStringRequest request, + $grpc.ResponseFuture<$11.SqlConnectionStringResponse> connectionString( + $11.SqlConnectionStringRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$connectionString, request, options: options); } @@ -45,23 +45,23 @@ abstract class SqlServiceBase extends $grpc.Service { $core.String get $name => 'nitric.proto.sql.v1.Sql'; SqlServiceBase() { - $addMethod($grpc.ServiceMethod<$10.SqlConnectionStringRequest, - $10.SqlConnectionStringResponse>( + $addMethod($grpc.ServiceMethod<$11.SqlConnectionStringRequest, + $11.SqlConnectionStringResponse>( 'ConnectionString', connectionString_Pre, false, false, ($core.List<$core.int> value) => - $10.SqlConnectionStringRequest.fromBuffer(value), - ($10.SqlConnectionStringResponse value) => value.writeToBuffer())); + $11.SqlConnectionStringRequest.fromBuffer(value), + ($11.SqlConnectionStringResponse value) => value.writeToBuffer())); } - $async.Future<$10.SqlConnectionStringResponse> connectionString_Pre( + $async.Future<$11.SqlConnectionStringResponse> connectionString_Pre( $grpc.ServiceCall call, - $async.Future<$10.SqlConnectionStringRequest> request) async { + $async.Future<$11.SqlConnectionStringRequest> request) async { return connectionString(call, await request); } - $async.Future<$10.SqlConnectionStringResponse> connectionString( - $grpc.ServiceCall call, $10.SqlConnectionStringRequest request); + $async.Future<$11.SqlConnectionStringResponse> connectionString( + $grpc.ServiceCall call, $11.SqlConnectionStringRequest request); } diff --git a/lib/src/nitric/proto/storage/v1/storage.pb.dart b/lib/src/nitric/proto/storage/v1/storage.pb.dart index d3ab4c9..34915ff 100644 --- a/lib/src/nitric/proto/storage/v1/storage.pb.dart +++ b/lib/src/nitric/proto/storage/v1/storage.pb.dart @@ -13,7 +13,7 @@ import 'dart:core' as $core; import 'package:protobuf/protobuf.dart' as $pb; -import '../../../../google/protobuf/duration.pb.dart' as $13; +import '../../../../google/protobuf/duration.pb.dart' as $15; import 'storage.pbenum.dart'; export 'storage.pbenum.dart'; @@ -1088,7 +1088,7 @@ class StoragePreSignUrlRequest extends $pb.GeneratedMessage { $core.String? bucketName, $core.String? key, StoragePreSignUrlRequest_Operation? operation, - $13.Duration? expiry, + $15.Duration? expiry, }) { final $result = create(); if (bucketName != null) { @@ -1125,8 +1125,8 @@ class StoragePreSignUrlRequest extends $pb.GeneratedMessage { defaultOrMaker: StoragePreSignUrlRequest_Operation.READ, valueOf: StoragePreSignUrlRequest_Operation.valueOf, enumValues: StoragePreSignUrlRequest_Operation.values) - ..aOM<$13.Duration>(4, _omitFieldNames ? '' : 'expiry', - subBuilder: $13.Duration.create) + ..aOM<$15.Duration>(4, _omitFieldNames ? '' : 'expiry', + subBuilder: $15.Duration.create) ..hasRequiredFields = false; @$core.Deprecated('Using this can add significant overhead to your binary. ' @@ -1196,9 +1196,9 @@ class StoragePreSignUrlRequest extends $pb.GeneratedMessage { /// Expiry defined as as protobuf duration @$pb.TagNumber(4) - $13.Duration get expiry => $_getN(3); + $15.Duration get expiry => $_getN(3); @$pb.TagNumber(4) - set expiry($13.Duration v) { + set expiry($15.Duration v) { setField(4, v); } @@ -1207,7 +1207,7 @@ class StoragePreSignUrlRequest extends $pb.GeneratedMessage { @$pb.TagNumber(4) void clearExpiry() => clearField(4); @$pb.TagNumber(4) - $13.Duration ensureExpiry() => $_ensure(3); + $15.Duration ensureExpiry() => $_ensure(3); } class StoragePreSignUrlResponse extends $pb.GeneratedMessage { diff --git a/lib/src/nitric/proto/storage/v1/storage.pbgrpc.dart b/lib/src/nitric/proto/storage/v1/storage.pbgrpc.dart index f6e587e..533f69b 100644 --- a/lib/src/nitric/proto/storage/v1/storage.pbgrpc.dart +++ b/lib/src/nitric/proto/storage/v1/storage.pbgrpc.dart @@ -15,86 +15,86 @@ import 'dart:core' as $core; import 'package:grpc/service_api.dart' as $grpc; import 'package:protobuf/protobuf.dart' as $pb; -import 'storage.pb.dart' as $2; +import 'storage.pb.dart' as $3; export 'storage.pb.dart'; @$pb.GrpcServiceName('nitric.proto.storage.v1.Storage') class StorageClient extends $grpc.Client { static final _$read = - $grpc.ClientMethod<$2.StorageReadRequest, $2.StorageReadResponse>( + $grpc.ClientMethod<$3.StorageReadRequest, $3.StorageReadResponse>( '/nitric.proto.storage.v1.Storage/Read', - ($2.StorageReadRequest value) => value.writeToBuffer(), + ($3.StorageReadRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $2.StorageReadResponse.fromBuffer(value)); + $3.StorageReadResponse.fromBuffer(value)); static final _$write = - $grpc.ClientMethod<$2.StorageWriteRequest, $2.StorageWriteResponse>( + $grpc.ClientMethod<$3.StorageWriteRequest, $3.StorageWriteResponse>( '/nitric.proto.storage.v1.Storage/Write', - ($2.StorageWriteRequest value) => value.writeToBuffer(), + ($3.StorageWriteRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $2.StorageWriteResponse.fromBuffer(value)); + $3.StorageWriteResponse.fromBuffer(value)); static final _$delete = - $grpc.ClientMethod<$2.StorageDeleteRequest, $2.StorageDeleteResponse>( + $grpc.ClientMethod<$3.StorageDeleteRequest, $3.StorageDeleteResponse>( '/nitric.proto.storage.v1.Storage/Delete', - ($2.StorageDeleteRequest value) => value.writeToBuffer(), + ($3.StorageDeleteRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $2.StorageDeleteResponse.fromBuffer(value)); - static final _$preSignUrl = $grpc.ClientMethod<$2.StoragePreSignUrlRequest, - $2.StoragePreSignUrlResponse>( + $3.StorageDeleteResponse.fromBuffer(value)); + static final _$preSignUrl = $grpc.ClientMethod<$3.StoragePreSignUrlRequest, + $3.StoragePreSignUrlResponse>( '/nitric.proto.storage.v1.Storage/PreSignUrl', - ($2.StoragePreSignUrlRequest value) => value.writeToBuffer(), + ($3.StoragePreSignUrlRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $2.StoragePreSignUrlResponse.fromBuffer(value)); - static final _$listBlobs = $grpc.ClientMethod<$2.StorageListBlobsRequest, - $2.StorageListBlobsResponse>( + $3.StoragePreSignUrlResponse.fromBuffer(value)); + static final _$listBlobs = $grpc.ClientMethod<$3.StorageListBlobsRequest, + $3.StorageListBlobsResponse>( '/nitric.proto.storage.v1.Storage/ListBlobs', - ($2.StorageListBlobsRequest value) => value.writeToBuffer(), + ($3.StorageListBlobsRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $2.StorageListBlobsResponse.fromBuffer(value)); + $3.StorageListBlobsResponse.fromBuffer(value)); static final _$exists = - $grpc.ClientMethod<$2.StorageExistsRequest, $2.StorageExistsResponse>( + $grpc.ClientMethod<$3.StorageExistsRequest, $3.StorageExistsResponse>( '/nitric.proto.storage.v1.Storage/Exists', - ($2.StorageExistsRequest value) => value.writeToBuffer(), + ($3.StorageExistsRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $2.StorageExistsResponse.fromBuffer(value)); + $3.StorageExistsResponse.fromBuffer(value)); StorageClient($grpc.ClientChannel channel, {$grpc.CallOptions? options, $core.Iterable<$grpc.ClientInterceptor>? interceptors}) : super(channel, options: options, interceptors: interceptors); - $grpc.ResponseFuture<$2.StorageReadResponse> read( - $2.StorageReadRequest request, + $grpc.ResponseFuture<$3.StorageReadResponse> read( + $3.StorageReadRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$read, request, options: options); } - $grpc.ResponseFuture<$2.StorageWriteResponse> write( - $2.StorageWriteRequest request, + $grpc.ResponseFuture<$3.StorageWriteResponse> write( + $3.StorageWriteRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$write, request, options: options); } - $grpc.ResponseFuture<$2.StorageDeleteResponse> delete( - $2.StorageDeleteRequest request, + $grpc.ResponseFuture<$3.StorageDeleteResponse> delete( + $3.StorageDeleteRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$delete, request, options: options); } - $grpc.ResponseFuture<$2.StoragePreSignUrlResponse> preSignUrl( - $2.StoragePreSignUrlRequest request, + $grpc.ResponseFuture<$3.StoragePreSignUrlResponse> preSignUrl( + $3.StoragePreSignUrlRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$preSignUrl, request, options: options); } - $grpc.ResponseFuture<$2.StorageListBlobsResponse> listBlobs( - $2.StorageListBlobsRequest request, + $grpc.ResponseFuture<$3.StorageListBlobsResponse> listBlobs( + $3.StorageListBlobsRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$listBlobs, request, options: options); } - $grpc.ResponseFuture<$2.StorageExistsResponse> exists( - $2.StorageExistsRequest request, + $grpc.ResponseFuture<$3.StorageExistsResponse> exists( + $3.StorageExistsRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$exists, request, options: options); } @@ -106,122 +106,122 @@ abstract class StorageServiceBase extends $grpc.Service { StorageServiceBase() { $addMethod( - $grpc.ServiceMethod<$2.StorageReadRequest, $2.StorageReadResponse>( + $grpc.ServiceMethod<$3.StorageReadRequest, $3.StorageReadResponse>( 'Read', read_Pre, false, false, ($core.List<$core.int> value) => - $2.StorageReadRequest.fromBuffer(value), - ($2.StorageReadResponse value) => value.writeToBuffer())); + $3.StorageReadRequest.fromBuffer(value), + ($3.StorageReadResponse value) => value.writeToBuffer())); $addMethod( - $grpc.ServiceMethod<$2.StorageWriteRequest, $2.StorageWriteResponse>( + $grpc.ServiceMethod<$3.StorageWriteRequest, $3.StorageWriteResponse>( 'Write', write_Pre, false, false, ($core.List<$core.int> value) => - $2.StorageWriteRequest.fromBuffer(value), - ($2.StorageWriteResponse value) => value.writeToBuffer())); + $3.StorageWriteRequest.fromBuffer(value), + ($3.StorageWriteResponse value) => value.writeToBuffer())); $addMethod( - $grpc.ServiceMethod<$2.StorageDeleteRequest, $2.StorageDeleteResponse>( + $grpc.ServiceMethod<$3.StorageDeleteRequest, $3.StorageDeleteResponse>( 'Delete', delete_Pre, false, false, ($core.List<$core.int> value) => - $2.StorageDeleteRequest.fromBuffer(value), - ($2.StorageDeleteResponse value) => value.writeToBuffer())); - $addMethod($grpc.ServiceMethod<$2.StoragePreSignUrlRequest, - $2.StoragePreSignUrlResponse>( + $3.StorageDeleteRequest.fromBuffer(value), + ($3.StorageDeleteResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$3.StoragePreSignUrlRequest, + $3.StoragePreSignUrlResponse>( 'PreSignUrl', preSignUrl_Pre, false, false, ($core.List<$core.int> value) => - $2.StoragePreSignUrlRequest.fromBuffer(value), - ($2.StoragePreSignUrlResponse value) => value.writeToBuffer())); - $addMethod($grpc.ServiceMethod<$2.StorageListBlobsRequest, - $2.StorageListBlobsResponse>( + $3.StoragePreSignUrlRequest.fromBuffer(value), + ($3.StoragePreSignUrlResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$3.StorageListBlobsRequest, + $3.StorageListBlobsResponse>( 'ListBlobs', listBlobs_Pre, false, false, ($core.List<$core.int> value) => - $2.StorageListBlobsRequest.fromBuffer(value), - ($2.StorageListBlobsResponse value) => value.writeToBuffer())); + $3.StorageListBlobsRequest.fromBuffer(value), + ($3.StorageListBlobsResponse value) => value.writeToBuffer())); $addMethod( - $grpc.ServiceMethod<$2.StorageExistsRequest, $2.StorageExistsResponse>( + $grpc.ServiceMethod<$3.StorageExistsRequest, $3.StorageExistsResponse>( 'Exists', exists_Pre, false, false, ($core.List<$core.int> value) => - $2.StorageExistsRequest.fromBuffer(value), - ($2.StorageExistsResponse value) => value.writeToBuffer())); + $3.StorageExistsRequest.fromBuffer(value), + ($3.StorageExistsResponse value) => value.writeToBuffer())); } - $async.Future<$2.StorageReadResponse> read_Pre($grpc.ServiceCall call, - $async.Future<$2.StorageReadRequest> request) async { + $async.Future<$3.StorageReadResponse> read_Pre($grpc.ServiceCall call, + $async.Future<$3.StorageReadRequest> request) async { return read(call, await request); } - $async.Future<$2.StorageWriteResponse> write_Pre($grpc.ServiceCall call, - $async.Future<$2.StorageWriteRequest> request) async { + $async.Future<$3.StorageWriteResponse> write_Pre($grpc.ServiceCall call, + $async.Future<$3.StorageWriteRequest> request) async { return write(call, await request); } - $async.Future<$2.StorageDeleteResponse> delete_Pre($grpc.ServiceCall call, - $async.Future<$2.StorageDeleteRequest> request) async { + $async.Future<$3.StorageDeleteResponse> delete_Pre($grpc.ServiceCall call, + $async.Future<$3.StorageDeleteRequest> request) async { return delete(call, await request); } - $async.Future<$2.StoragePreSignUrlResponse> preSignUrl_Pre( + $async.Future<$3.StoragePreSignUrlResponse> preSignUrl_Pre( $grpc.ServiceCall call, - $async.Future<$2.StoragePreSignUrlRequest> request) async { + $async.Future<$3.StoragePreSignUrlRequest> request) async { return preSignUrl(call, await request); } - $async.Future<$2.StorageListBlobsResponse> listBlobs_Pre( + $async.Future<$3.StorageListBlobsResponse> listBlobs_Pre( $grpc.ServiceCall call, - $async.Future<$2.StorageListBlobsRequest> request) async { + $async.Future<$3.StorageListBlobsRequest> request) async { return listBlobs(call, await request); } - $async.Future<$2.StorageExistsResponse> exists_Pre($grpc.ServiceCall call, - $async.Future<$2.StorageExistsRequest> request) async { + $async.Future<$3.StorageExistsResponse> exists_Pre($grpc.ServiceCall call, + $async.Future<$3.StorageExistsRequest> request) async { return exists(call, await request); } - $async.Future<$2.StorageReadResponse> read( - $grpc.ServiceCall call, $2.StorageReadRequest request); - $async.Future<$2.StorageWriteResponse> write( - $grpc.ServiceCall call, $2.StorageWriteRequest request); - $async.Future<$2.StorageDeleteResponse> delete( - $grpc.ServiceCall call, $2.StorageDeleteRequest request); - $async.Future<$2.StoragePreSignUrlResponse> preSignUrl( - $grpc.ServiceCall call, $2.StoragePreSignUrlRequest request); - $async.Future<$2.StorageListBlobsResponse> listBlobs( - $grpc.ServiceCall call, $2.StorageListBlobsRequest request); - $async.Future<$2.StorageExistsResponse> exists( - $grpc.ServiceCall call, $2.StorageExistsRequest request); + $async.Future<$3.StorageReadResponse> read( + $grpc.ServiceCall call, $3.StorageReadRequest request); + $async.Future<$3.StorageWriteResponse> write( + $grpc.ServiceCall call, $3.StorageWriteRequest request); + $async.Future<$3.StorageDeleteResponse> delete( + $grpc.ServiceCall call, $3.StorageDeleteRequest request); + $async.Future<$3.StoragePreSignUrlResponse> preSignUrl( + $grpc.ServiceCall call, $3.StoragePreSignUrlRequest request); + $async.Future<$3.StorageListBlobsResponse> listBlobs( + $grpc.ServiceCall call, $3.StorageListBlobsRequest request); + $async.Future<$3.StorageExistsResponse> exists( + $grpc.ServiceCall call, $3.StorageExistsRequest request); } @$pb.GrpcServiceName('nitric.proto.storage.v1.StorageListener') class StorageListenerClient extends $grpc.Client { static final _$listen = - $grpc.ClientMethod<$2.ClientMessage, $2.ServerMessage>( + $grpc.ClientMethod<$3.ClientMessage, $3.ServerMessage>( '/nitric.proto.storage.v1.StorageListener/Listen', - ($2.ClientMessage value) => value.writeToBuffer(), - ($core.List<$core.int> value) => $2.ServerMessage.fromBuffer(value)); + ($3.ClientMessage value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $3.ServerMessage.fromBuffer(value)); StorageListenerClient($grpc.ClientChannel channel, {$grpc.CallOptions? options, $core.Iterable<$grpc.ClientInterceptor>? interceptors}) : super(channel, options: options, interceptors: interceptors); - $grpc.ResponseStream<$2.ServerMessage> listen( - $async.Stream<$2.ClientMessage> request, + $grpc.ResponseStream<$3.ServerMessage> listen( + $async.Stream<$3.ClientMessage> request, {$grpc.CallOptions? options}) { return $createStreamingCall(_$listen, request, options: options); } @@ -232,15 +232,15 @@ abstract class StorageListenerServiceBase extends $grpc.Service { $core.String get $name => 'nitric.proto.storage.v1.StorageListener'; StorageListenerServiceBase() { - $addMethod($grpc.ServiceMethod<$2.ClientMessage, $2.ServerMessage>( + $addMethod($grpc.ServiceMethod<$3.ClientMessage, $3.ServerMessage>( 'Listen', listen, true, true, - ($core.List<$core.int> value) => $2.ClientMessage.fromBuffer(value), - ($2.ServerMessage value) => value.writeToBuffer())); + ($core.List<$core.int> value) => $3.ClientMessage.fromBuffer(value), + ($3.ServerMessage value) => value.writeToBuffer())); } - $async.Stream<$2.ServerMessage> listen( - $grpc.ServiceCall call, $async.Stream<$2.ClientMessage> request); + $async.Stream<$3.ServerMessage> listen( + $grpc.ServiceCall call, $async.Stream<$3.ClientMessage> request); } diff --git a/lib/src/nitric/proto/topics/v1/topics.pb.dart b/lib/src/nitric/proto/topics/v1/topics.pb.dart index 4f0e596..abe69c9 100644 --- a/lib/src/nitric/proto/topics/v1/topics.pb.dart +++ b/lib/src/nitric/proto/topics/v1/topics.pb.dart @@ -13,7 +13,7 @@ import 'dart:core' as $core; import 'package:protobuf/protobuf.dart' as $pb; -import '../../../../google/protobuf/duration.pb.dart' as $13; +import '../../../../google/protobuf/duration.pb.dart' as $15; import '../../../../google/protobuf/struct.pb.dart' as $14; enum ClientMessage_Content { registrationRequest, messageResponse, notSet } @@ -586,7 +586,7 @@ class TopicPublishRequest extends $pb.GeneratedMessage { factory TopicPublishRequest({ $core.String? topicName, TopicMessage? message, - $13.Duration? delay, + $15.Duration? delay, }) { final $result = create(); if (topicName != null) { @@ -616,8 +616,8 @@ class TopicPublishRequest extends $pb.GeneratedMessage { ..aOS(1, _omitFieldNames ? '' : 'topicName') ..aOM(2, _omitFieldNames ? '' : 'message', subBuilder: TopicMessage.create) - ..aOM<$13.Duration>(3, _omitFieldNames ? '' : 'delay', - subBuilder: $13.Duration.create) + ..aOM<$15.Duration>(3, _omitFieldNames ? '' : 'delay', + subBuilder: $15.Duration.create) ..hasRequiredFields = false; @$core.Deprecated('Using this can add significant overhead to your binary. ' @@ -673,9 +673,9 @@ class TopicPublishRequest extends $pb.GeneratedMessage { /// An optional delay specified in seconds (minimum 10 seconds) @$pb.TagNumber(3) - $13.Duration get delay => $_getN(2); + $15.Duration get delay => $_getN(2); @$pb.TagNumber(3) - set delay($13.Duration v) { + set delay($15.Duration v) { setField(3, v); } @@ -684,7 +684,7 @@ class TopicPublishRequest extends $pb.GeneratedMessage { @$pb.TagNumber(3) void clearDelay() => clearField(3); @$pb.TagNumber(3) - $13.Duration ensureDelay() => $_ensure(2); + $15.Duration ensureDelay() => $_ensure(2); } /// Result of publishing an topic diff --git a/lib/src/nitric/proto/topics/v1/topics.pbgrpc.dart b/lib/src/nitric/proto/topics/v1/topics.pbgrpc.dart index 2d5dc45..240a266 100644 --- a/lib/src/nitric/proto/topics/v1/topics.pbgrpc.dart +++ b/lib/src/nitric/proto/topics/v1/topics.pbgrpc.dart @@ -15,26 +15,26 @@ import 'dart:core' as $core; import 'package:grpc/service_api.dart' as $grpc; import 'package:protobuf/protobuf.dart' as $pb; -import 'topics.pb.dart' as $11; +import 'topics.pb.dart' as $12; export 'topics.pb.dart'; @$pb.GrpcServiceName('nitric.proto.topics.v1.Topics') class TopicsClient extends $grpc.Client { static final _$publish = - $grpc.ClientMethod<$11.TopicPublishRequest, $11.TopicPublishResponse>( + $grpc.ClientMethod<$12.TopicPublishRequest, $12.TopicPublishResponse>( '/nitric.proto.topics.v1.Topics/Publish', - ($11.TopicPublishRequest value) => value.writeToBuffer(), + ($12.TopicPublishRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $11.TopicPublishResponse.fromBuffer(value)); + $12.TopicPublishResponse.fromBuffer(value)); TopicsClient($grpc.ClientChannel channel, {$grpc.CallOptions? options, $core.Iterable<$grpc.ClientInterceptor>? interceptors}) : super(channel, options: options, interceptors: interceptors); - $grpc.ResponseFuture<$11.TopicPublishResponse> publish( - $11.TopicPublishRequest request, + $grpc.ResponseFuture<$12.TopicPublishResponse> publish( + $12.TopicPublishRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$publish, request, options: options); } @@ -46,40 +46,40 @@ abstract class TopicsServiceBase extends $grpc.Service { TopicsServiceBase() { $addMethod( - $grpc.ServiceMethod<$11.TopicPublishRequest, $11.TopicPublishResponse>( + $grpc.ServiceMethod<$12.TopicPublishRequest, $12.TopicPublishResponse>( 'Publish', publish_Pre, false, false, ($core.List<$core.int> value) => - $11.TopicPublishRequest.fromBuffer(value), - ($11.TopicPublishResponse value) => value.writeToBuffer())); + $12.TopicPublishRequest.fromBuffer(value), + ($12.TopicPublishResponse value) => value.writeToBuffer())); } - $async.Future<$11.TopicPublishResponse> publish_Pre($grpc.ServiceCall call, - $async.Future<$11.TopicPublishRequest> request) async { + $async.Future<$12.TopicPublishResponse> publish_Pre($grpc.ServiceCall call, + $async.Future<$12.TopicPublishRequest> request) async { return publish(call, await request); } - $async.Future<$11.TopicPublishResponse> publish( - $grpc.ServiceCall call, $11.TopicPublishRequest request); + $async.Future<$12.TopicPublishResponse> publish( + $grpc.ServiceCall call, $12.TopicPublishRequest request); } @$pb.GrpcServiceName('nitric.proto.topics.v1.Subscriber') class SubscriberClient extends $grpc.Client { static final _$subscribe = - $grpc.ClientMethod<$11.ClientMessage, $11.ServerMessage>( + $grpc.ClientMethod<$12.ClientMessage, $12.ServerMessage>( '/nitric.proto.topics.v1.Subscriber/Subscribe', - ($11.ClientMessage value) => value.writeToBuffer(), - ($core.List<$core.int> value) => $11.ServerMessage.fromBuffer(value)); + ($12.ClientMessage value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $12.ServerMessage.fromBuffer(value)); SubscriberClient($grpc.ClientChannel channel, {$grpc.CallOptions? options, $core.Iterable<$grpc.ClientInterceptor>? interceptors}) : super(channel, options: options, interceptors: interceptors); - $grpc.ResponseStream<$11.ServerMessage> subscribe( - $async.Stream<$11.ClientMessage> request, + $grpc.ResponseStream<$12.ServerMessage> subscribe( + $async.Stream<$12.ClientMessage> request, {$grpc.CallOptions? options}) { return $createStreamingCall(_$subscribe, request, options: options); } @@ -90,15 +90,15 @@ abstract class SubscriberServiceBase extends $grpc.Service { $core.String get $name => 'nitric.proto.topics.v1.Subscriber'; SubscriberServiceBase() { - $addMethod($grpc.ServiceMethod<$11.ClientMessage, $11.ServerMessage>( + $addMethod($grpc.ServiceMethod<$12.ClientMessage, $12.ServerMessage>( 'Subscribe', subscribe, true, true, - ($core.List<$core.int> value) => $11.ClientMessage.fromBuffer(value), - ($11.ServerMessage value) => value.writeToBuffer())); + ($core.List<$core.int> value) => $12.ClientMessage.fromBuffer(value), + ($12.ServerMessage value) => value.writeToBuffer())); } - $async.Stream<$11.ServerMessage> subscribe( - $grpc.ServiceCall call, $async.Stream<$11.ClientMessage> request); + $async.Stream<$12.ServerMessage> subscribe( + $grpc.ServiceCall call, $async.Stream<$12.ClientMessage> request); } diff --git a/lib/src/nitric/proto/websockets/v1/websockets.pbgrpc.dart b/lib/src/nitric/proto/websockets/v1/websockets.pbgrpc.dart index 986362a..3b0a27e 100644 --- a/lib/src/nitric/proto/websockets/v1/websockets.pbgrpc.dart +++ b/lib/src/nitric/proto/websockets/v1/websockets.pbgrpc.dart @@ -15,51 +15,51 @@ import 'dart:core' as $core; import 'package:grpc/service_api.dart' as $grpc; import 'package:protobuf/protobuf.dart' as $pb; -import 'websockets.pb.dart' as $12; +import 'websockets.pb.dart' as $13; export 'websockets.pb.dart'; @$pb.GrpcServiceName('nitric.proto.websockets.v1.Websocket') class WebsocketClient extends $grpc.Client { static final _$sendMessage = - $grpc.ClientMethod<$12.WebsocketSendRequest, $12.WebsocketSendResponse>( + $grpc.ClientMethod<$13.WebsocketSendRequest, $13.WebsocketSendResponse>( '/nitric.proto.websockets.v1.Websocket/SendMessage', - ($12.WebsocketSendRequest value) => value.writeToBuffer(), + ($13.WebsocketSendRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $12.WebsocketSendResponse.fromBuffer(value)); + $13.WebsocketSendResponse.fromBuffer(value)); static final _$closeConnection = $grpc.ClientMethod< - $12.WebsocketCloseConnectionRequest, - $12.WebsocketCloseConnectionResponse>( + $13.WebsocketCloseConnectionRequest, + $13.WebsocketCloseConnectionResponse>( '/nitric.proto.websockets.v1.Websocket/CloseConnection', - ($12.WebsocketCloseConnectionRequest value) => value.writeToBuffer(), + ($13.WebsocketCloseConnectionRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $12.WebsocketCloseConnectionResponse.fromBuffer(value)); - static final _$socketDetails = $grpc.ClientMethod<$12.WebsocketDetailsRequest, - $12.WebsocketDetailsResponse>( + $13.WebsocketCloseConnectionResponse.fromBuffer(value)); + static final _$socketDetails = $grpc.ClientMethod<$13.WebsocketDetailsRequest, + $13.WebsocketDetailsResponse>( '/nitric.proto.websockets.v1.Websocket/SocketDetails', - ($12.WebsocketDetailsRequest value) => value.writeToBuffer(), + ($13.WebsocketDetailsRequest value) => value.writeToBuffer(), ($core.List<$core.int> value) => - $12.WebsocketDetailsResponse.fromBuffer(value)); + $13.WebsocketDetailsResponse.fromBuffer(value)); WebsocketClient($grpc.ClientChannel channel, {$grpc.CallOptions? options, $core.Iterable<$grpc.ClientInterceptor>? interceptors}) : super(channel, options: options, interceptors: interceptors); - $grpc.ResponseFuture<$12.WebsocketSendResponse> sendMessage( - $12.WebsocketSendRequest request, + $grpc.ResponseFuture<$13.WebsocketSendResponse> sendMessage( + $13.WebsocketSendRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$sendMessage, request, options: options); } - $grpc.ResponseFuture<$12.WebsocketCloseConnectionResponse> closeConnection( - $12.WebsocketCloseConnectionRequest request, + $grpc.ResponseFuture<$13.WebsocketCloseConnectionResponse> closeConnection( + $13.WebsocketCloseConnectionRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$closeConnection, request, options: options); } - $grpc.ResponseFuture<$12.WebsocketDetailsResponse> socketDetails( - $12.WebsocketDetailsRequest request, + $grpc.ResponseFuture<$13.WebsocketDetailsResponse> socketDetails( + $13.WebsocketDetailsRequest request, {$grpc.CallOptions? options}) { return $createUnaryCall(_$socketDetails, request, options: options); } @@ -70,76 +70,76 @@ abstract class WebsocketServiceBase extends $grpc.Service { $core.String get $name => 'nitric.proto.websockets.v1.Websocket'; WebsocketServiceBase() { - $addMethod($grpc.ServiceMethod<$12.WebsocketSendRequest, - $12.WebsocketSendResponse>( + $addMethod($grpc.ServiceMethod<$13.WebsocketSendRequest, + $13.WebsocketSendResponse>( 'SendMessage', sendMessage_Pre, false, false, ($core.List<$core.int> value) => - $12.WebsocketSendRequest.fromBuffer(value), - ($12.WebsocketSendResponse value) => value.writeToBuffer())); - $addMethod($grpc.ServiceMethod<$12.WebsocketCloseConnectionRequest, - $12.WebsocketCloseConnectionResponse>( + $13.WebsocketSendRequest.fromBuffer(value), + ($13.WebsocketSendResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$13.WebsocketCloseConnectionRequest, + $13.WebsocketCloseConnectionResponse>( 'CloseConnection', closeConnection_Pre, false, false, ($core.List<$core.int> value) => - $12.WebsocketCloseConnectionRequest.fromBuffer(value), - ($12.WebsocketCloseConnectionResponse value) => value.writeToBuffer())); - $addMethod($grpc.ServiceMethod<$12.WebsocketDetailsRequest, - $12.WebsocketDetailsResponse>( + $13.WebsocketCloseConnectionRequest.fromBuffer(value), + ($13.WebsocketCloseConnectionResponse value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$13.WebsocketDetailsRequest, + $13.WebsocketDetailsResponse>( 'SocketDetails', socketDetails_Pre, false, false, ($core.List<$core.int> value) => - $12.WebsocketDetailsRequest.fromBuffer(value), - ($12.WebsocketDetailsResponse value) => value.writeToBuffer())); + $13.WebsocketDetailsRequest.fromBuffer(value), + ($13.WebsocketDetailsResponse value) => value.writeToBuffer())); } - $async.Future<$12.WebsocketSendResponse> sendMessage_Pre( + $async.Future<$13.WebsocketSendResponse> sendMessage_Pre( $grpc.ServiceCall call, - $async.Future<$12.WebsocketSendRequest> request) async { + $async.Future<$13.WebsocketSendRequest> request) async { return sendMessage(call, await request); } - $async.Future<$12.WebsocketCloseConnectionResponse> closeConnection_Pre( + $async.Future<$13.WebsocketCloseConnectionResponse> closeConnection_Pre( $grpc.ServiceCall call, - $async.Future<$12.WebsocketCloseConnectionRequest> request) async { + $async.Future<$13.WebsocketCloseConnectionRequest> request) async { return closeConnection(call, await request); } - $async.Future<$12.WebsocketDetailsResponse> socketDetails_Pre( + $async.Future<$13.WebsocketDetailsResponse> socketDetails_Pre( $grpc.ServiceCall call, - $async.Future<$12.WebsocketDetailsRequest> request) async { + $async.Future<$13.WebsocketDetailsRequest> request) async { return socketDetails(call, await request); } - $async.Future<$12.WebsocketSendResponse> sendMessage( - $grpc.ServiceCall call, $12.WebsocketSendRequest request); - $async.Future<$12.WebsocketCloseConnectionResponse> closeConnection( - $grpc.ServiceCall call, $12.WebsocketCloseConnectionRequest request); - $async.Future<$12.WebsocketDetailsResponse> socketDetails( - $grpc.ServiceCall call, $12.WebsocketDetailsRequest request); + $async.Future<$13.WebsocketSendResponse> sendMessage( + $grpc.ServiceCall call, $13.WebsocketSendRequest request); + $async.Future<$13.WebsocketCloseConnectionResponse> closeConnection( + $grpc.ServiceCall call, $13.WebsocketCloseConnectionRequest request); + $async.Future<$13.WebsocketDetailsResponse> socketDetails( + $grpc.ServiceCall call, $13.WebsocketDetailsRequest request); } @$pb.GrpcServiceName('nitric.proto.websockets.v1.WebsocketHandler') class WebsocketHandlerClient extends $grpc.Client { static final _$handleEvents = - $grpc.ClientMethod<$12.ClientMessage, $12.ServerMessage>( + $grpc.ClientMethod<$13.ClientMessage, $13.ServerMessage>( '/nitric.proto.websockets.v1.WebsocketHandler/HandleEvents', - ($12.ClientMessage value) => value.writeToBuffer(), - ($core.List<$core.int> value) => $12.ServerMessage.fromBuffer(value)); + ($13.ClientMessage value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $13.ServerMessage.fromBuffer(value)); WebsocketHandlerClient($grpc.ClientChannel channel, {$grpc.CallOptions? options, $core.Iterable<$grpc.ClientInterceptor>? interceptors}) : super(channel, options: options, interceptors: interceptors); - $grpc.ResponseStream<$12.ServerMessage> handleEvents( - $async.Stream<$12.ClientMessage> request, + $grpc.ResponseStream<$13.ServerMessage> handleEvents( + $async.Stream<$13.ClientMessage> request, {$grpc.CallOptions? options}) { return $createStreamingCall(_$handleEvents, request, options: options); } @@ -150,15 +150,15 @@ abstract class WebsocketHandlerServiceBase extends $grpc.Service { $core.String get $name => 'nitric.proto.websockets.v1.WebsocketHandler'; WebsocketHandlerServiceBase() { - $addMethod($grpc.ServiceMethod<$12.ClientMessage, $12.ServerMessage>( + $addMethod($grpc.ServiceMethod<$13.ClientMessage, $13.ServerMessage>( 'HandleEvents', handleEvents, true, true, - ($core.List<$core.int> value) => $12.ClientMessage.fromBuffer(value), - ($12.ServerMessage value) => value.writeToBuffer())); + ($core.List<$core.int> value) => $13.ClientMessage.fromBuffer(value), + ($13.ServerMessage value) => value.writeToBuffer())); } - $async.Stream<$12.ServerMessage> handleEvents( - $grpc.ServiceCall call, $async.Stream<$12.ClientMessage> request); + $async.Stream<$13.ServerMessage> handleEvents( + $grpc.ServiceCall call, $async.Stream<$13.ClientMessage> request); } diff --git a/lib/src/resources/api.dart b/lib/src/resources/api.dart index d49ad56..b83e29e 100644 --- a/lib/src/resources/api.dart +++ b/lib/src/resources/api.dart @@ -24,13 +24,8 @@ class ApiOptions { class Api extends Resource { late ApiOptions opts; - late ApiClient? _apiClient; - - Api(String name, - {ApiOptions? opts, $p.ResourcesClient? client, ApiClient? apiClient}) - : super(name, client) { + Api(super.name, {ApiOptions? opts}) { this.opts = opts ?? ApiOptions(); - _apiClient = apiClient; } @override @@ -112,8 +107,7 @@ class Api extends Resource { /// Create a route that [match]es on a specific path with optional [middlewares] and [security]. Route route(String match, {List? security, List middlewares = const []}) { - return Route(this, match, - security: security, apiClient: _apiClient, middlewares: middlewares); + return Route(this, match, security: security, middlewares: middlewares); } } @@ -128,8 +122,6 @@ class Route { /// The security to apply to the route. List security; - ApiClient? _apiClient; - late List _middlewares; Route(this.api, match, @@ -138,91 +130,44 @@ class Route { List middlewares = const []}) : match = api.opts.basePath + match, security = security ?? api.opts.security { - _apiClient = apiClient; _middlewares = middlewares; } - /// A GET request [handler] for this route. - Future get(HttpHandler handler) async { + Future _method(HttpHandler handler, List methods) async { final composedHandler = composeMiddleware( [...api.opts.middlewares, ..._middlewares, handler], HttpContext.fromCtx); - var worker = ApiWorker(this, composedHandler, [HttpMethod.get], - security: security, client: _apiClient); + var worker = ApiWorker(this, composedHandler, methods, security: security); await worker.start(); } - /// A POST request [handler] for this route. - Future post(HttpHandler handler) async { - final composedHandler = composeMiddleware( - [...api.opts.middlewares, ..._middlewares, handler], - HttpContext.fromCtx); - - var worker = ApiWorker(this, composedHandler, [HttpMethod.post], - security: security, client: _apiClient); + /// A GET request [handler] for this route. + Future get(HttpHandler handler) async => + await _method(handler, [HttpMethod.get]); - await worker.start(); - } + /// A POST request [handler] for this route. + Future post(HttpHandler handler) async => + await _method(handler, [HttpMethod.post]); /// A PUT request [handler] for this route. - Future put(HttpHandler handler) async { - final composedHandler = composeMiddleware( - [...api.opts.middlewares, ..._middlewares, handler], - HttpContext.fromCtx); - - var worker = ApiWorker(this, composedHandler, [HttpMethod.put], - security: security, client: _apiClient); - - await worker.start(); - } + Future put(HttpHandler handler) async => + await _method(handler, [HttpMethod.put]); /// A PATCH request [handler] for this route. - Future patch(HttpHandler handler) async { - final composedHandler = composeMiddleware( - [...api.opts.middlewares, ..._middlewares, handler], - HttpContext.fromCtx); - - var worker = ApiWorker(this, composedHandler, [HttpMethod.patch], - security: security, client: _apiClient); - - await worker.start(); - } + Future patch(HttpHandler handler) async => + await _method(handler, [HttpMethod.patch]); /// A DELETE request [handler] for this route. - Future delete(HttpHandler handler) async { - final composedHandler = composeMiddleware( - [...api.opts.middlewares, ..._middlewares, handler], - HttpContext.fromCtx); - - var worker = ApiWorker(this, composedHandler, [HttpMethod.delete], - security: security, client: _apiClient); - - await worker.start(); - } + Future delete(HttpHandler handler) async => + await _method(handler, [HttpMethod.delete]); /// An OPTIONS request [handler] for this route. - Future options(HttpHandler handler) async { - final composedHandler = composeMiddleware( - [...api.opts.middlewares, ..._middlewares, handler], - HttpContext.fromCtx); - - var worker = ApiWorker(this, composedHandler, [HttpMethod.options], - security: security, client: _apiClient); - - await worker.start(); - } + Future options(HttpHandler handler) async => + await _method(handler, [HttpMethod.options]); /// A request [handler] for this route that matches all HTTP methods. - Future all(HttpHandler handler) async { - final composedHandler = composeMiddleware( - [...api.opts.middlewares, ..._middlewares, handler], - HttpContext.fromCtx); - - var worker = ApiWorker(this, composedHandler, HttpMethod.values, - security: security, client: _apiClient); - - await worker.start(); - } + Future all(HttpHandler handler) async => + await _method(handler, HttpMethod.values); } diff --git a/lib/src/resources/batch.dart b/lib/src/resources/batch.dart new file mode 100644 index 0000000..fe2c641 --- /dev/null +++ b/lib/src/resources/batch.dart @@ -0,0 +1,73 @@ +part of 'common.dart'; + +enum JobPermission { submit } + +class JobResourceRequirements { + double cpus; + int memory; + int gpus; + + JobResourceRequirements({this.cpus = 1, this.memory = 1024, this.gpus = 0}); + + $jp.JobResourceRequirements _toWire() { + return $jp.JobResourceRequirements( + cpus: cpus, memory: Int64(memory), gpus: Int64(gpus)); + } +} + +class JobResource extends SecureResource { + JobResource(super.name); + + /// Create a handler function that will be executed when a job is submitted. + Future handler(JobHandler handler, + {JobResourceRequirements? opts, + List middlewares = const []}) async { + opts ??= JobResourceRequirements(); + + final registrationRequest = $jp.RegistrationRequest( + jobName: name, + requirements: opts._toWire(), + ); + + final composedHandler = + composeMiddleware([...middlewares, handler], JobContext.fromCtx); + + var worker = JobWorker(registrationRequest, composedHandler); + + await worker.start(); + } + + @override + ResourceDeclareRequest asRequest() { + var resource = $p.ResourceIdentifier( + type: $p.ResourceType.Job, + name: name, + ); + + return $p.ResourceDeclareRequest(id: resource, job: $p.JobResource()); + } + + @override + List<$p.Action> permissionsToActions(List permissions) { + List<$p.Action> actions = permissions.fold( + [], + (actions, permission) => switch (permission) { + JobPermission.submit => [...actions, $p.Action.JobSubmit], + }); + + return actions; + } + + /// Set the function's required [permissions] to the batch. + Job allow(List permissions) { + if (permissions.isEmpty) { + throw "Must supply at least one permission for job $name"; + } + + unawaited(registerPolicy((permissions)).onError((error, stackTrace) { + print(error); + })); + + return Job(name); + } +} diff --git a/lib/src/resources/bucket.dart b/lib/src/resources/bucket.dart index ae04a2c..590a7f9 100644 --- a/lib/src/resources/bucket.dart +++ b/lib/src/resources/bucket.dart @@ -3,21 +3,7 @@ part of 'common.dart'; enum BucketPermission { read, write, delete } class BucketResource extends SecureResource { - $bp.StorageListenerClient? _storageListenerClient; - - BucketResource(String name, - {$p.ResourcesClient? client, - $bp.StorageListenerClient? storageListenerClient}) - : super(name, client) { - _storageListenerClient = storageListenerClient; - - if (storageListenerClient == null) { - _storageListenerClient = $bp.StorageListenerClient( - ClientChannelSingleton.instance.clientChannel); - } else { - _storageListenerClient = storageListenerClient; - } - } + BucketResource(super.name); @override ResourceDeclareRequest asRequest() { @@ -68,8 +54,7 @@ class BucketResource extends SecureResource { final composedHandler = composeMiddleware([...middlewares, handler], BlobEventContext.fromCtx); - var worker = BlobEventWorker(registrationRequest, composedHandler, - client: _storageListenerClient); + var worker = BlobEventWorker(registrationRequest, composedHandler); await worker.start(); } diff --git a/lib/src/resources/common.dart b/lib/src/resources/common.dart index 9a77327..746bef1 100644 --- a/lib/src/resources/common.dart +++ b/lib/src/resources/common.dart @@ -1,8 +1,7 @@ -library resources; - import 'dart:async'; import 'dart:convert'; +import 'package:fixnum/fixnum.dart'; import 'package:nitric_sdk/src/api/api.dart'; import 'package:nitric_sdk/src/grpc_helper.dart'; import 'package:nitric_sdk/src/nitric/proto/apis/v1/apis.pbgrpc.dart'; @@ -23,7 +22,9 @@ import 'package:nitric_sdk/src/nitric/proto/websockets/v1/websockets.pbgrpc.dart as $wp; import 'package:nitric_sdk/src/nitric/proto/storage/v1/storage.pbgrpc.dart' as $bp; -import 'package:meta/meta.dart' hide ResourceIdentifier; +import 'package:nitric_sdk/src/nitric/proto/batch/v1/batch.pbgrpc.dart' as $jp; + +import 'package:meta/meta.dart'; import 'package:nitric_sdk/src/workers/common.dart'; part 'schedule.dart'; @@ -35,6 +36,7 @@ part 'topic.dart'; part 'websocket.dart'; part 'queue.dart'; part 'oidc.dart'; +part 'batch.dart'; /// A representation of a resource that can be registered with the Nitric server. abstract class Resource { @@ -42,39 +44,30 @@ abstract class Resource { final String name; // Used to resolve the given resource for policy creation - final Completer _registrationCompletion = - Completer(); - - /// Internal resource client to declare the resource. - late final $p.ResourcesClient _client; + final Completer<$p.ResourceIdentifier> _registrationCompletion = + Completer<$p.ResourceIdentifier>(); @protected - Resource(this.name, $p.ResourcesClient? client) { - if (client == null) { - _client = - $p.ResourcesClient(ClientChannelSingleton.instance.clientChannel); - } else { - _client = client; - } - } + Resource(this.name); ResourceDeclareRequest asRequest(); /// Register the resource with the Nitric server. Handles shutting down the channel. Future register() async { - var res = asRequest(); - - await _client.declare(res); + await ClientChannelSingleton.useClient($p.ResourcesClient.new, + (client) async { + var res = asRequest(); - await ClientChannelSingleton.instance.release(); + await client.declare(res); - _registrationCompletion.complete(res.id); + _registrationCompletion.complete(res.id); + }); } } /// A resource that requires permissions to access it. abstract class SecureResource extends Resource { - SecureResource(super.name, super.client); + SecureResource(super.name); /// Convert a list of permissions to gRPC actions. List<$p.Action> permissionsToActions(List permissions); @@ -90,19 +83,24 @@ abstract class SecureResource extends Resource { resources: [resourceIdentifier], actions: permissionsToActions(permissions)); - await _client - .declare($p.ResourceDeclareRequest(policy: policy, id: policyResource)); + var req = $p.ResourceDeclareRequest(policy: policy, id: policyResource); - await ClientChannelSingleton.instance.release(); + await ClientChannelSingleton.useClient($p.ResourcesClient.new, + (client) async { + await client.declare(req); + }); } /// Register the resource with the Nitric server. @override Future register() async { - var res = asRequest(); + await ClientChannelSingleton.useClient($p.ResourcesClient.new, + (client) async { + var req = asRequest(); - await _client.declare(res); + await client.declare(req); - _registrationCompletion.complete(res.id); + _registrationCompletion.complete(req.id); + }); } } diff --git a/lib/src/resources/keyvalue.dart b/lib/src/resources/keyvalue.dart index 2dad601..2952e2f 100644 --- a/lib/src/resources/keyvalue.dart +++ b/lib/src/resources/keyvalue.dart @@ -3,8 +3,7 @@ part of 'common.dart'; enum KeyValueStorePermission { get, set, delete } class KeyValueStoreResource extends SecureResource { - KeyValueStoreResource(String name, {$p.ResourcesClient? client}) - : super(name, client); + KeyValueStoreResource(super.name); @override ResourceDeclareRequest asRequest() { diff --git a/lib/src/resources/oidc.dart b/lib/src/resources/oidc.dart index 2c4b816..b1ba47b 100644 --- a/lib/src/resources/oidc.dart +++ b/lib/src/resources/oidc.dart @@ -5,12 +5,8 @@ class OidcOptions { String issuer; List audiences; List scopes; - $p.ResourcesClient? _client; - OidcOptions(this.name, this.issuer, this.audiences, this.scopes, - {$p.ResourcesClient? client}) { - _client = client; - } + OidcOptions(this.name, this.issuer, this.audiences, this.scopes); } typedef SecurityOption = OidcOptions Function(List scopes); @@ -28,7 +24,7 @@ class OidcSecurityDefinition extends Resource { late List audiences; OidcSecurityDefinition(this.apiName, OidcOptions options) - : super("${options.name}-$apiName", options._client) { + : super("${options.name}-$apiName") { ruleName = options.name; issuer = options.issuer; audiences = options.audiences; diff --git a/lib/src/resources/queue.dart b/lib/src/resources/queue.dart index 5d60cab..568fcae 100644 --- a/lib/src/resources/queue.dart +++ b/lib/src/resources/queue.dart @@ -3,8 +3,7 @@ part of 'common.dart'; enum QueuePermission { enqueue, dequeue } class QueueResource extends SecureResource { - QueueResource(String name, {$p.ResourcesClient? client}) - : super(name, client); + QueueResource(super.name); @override ResourceDeclareRequest asRequest() { diff --git a/lib/src/resources/schedule.dart b/lib/src/resources/schedule.dart index aab4d3e..5c2b717 100644 --- a/lib/src/resources/schedule.dart +++ b/lib/src/resources/schedule.dart @@ -1,20 +1,7 @@ part of 'common.dart'; class Schedule extends Resource { - $sp.SchedulesClient? _schedulesClient; - - Schedule(String name, - {$p.ResourcesClient? client, $sp.SchedulesClient? schedulesClient}) - : super(name, client) { - _schedulesClient = schedulesClient; - - if (schedulesClient == null) { - _schedulesClient = - $sp.SchedulesClient(ClientChannelSingleton.instance.clientChannel); - } else { - _schedulesClient = schedulesClient; - } - } + Schedule(super.name); @override ResourceDeclareRequest asRequest() { @@ -32,8 +19,7 @@ class Schedule extends Resource { final composedHandler = composeMiddleware([...middlewares, handler], IntervalContext.fromCtx); - var worker = IntervalWorker(registrationRequest, composedHandler, - client: _schedulesClient); + var worker = IntervalWorker(registrationRequest, composedHandler); await worker.start(); } @@ -49,8 +35,7 @@ class Schedule extends Resource { final composedHandler = composeMiddleware([...middlewares, handler], IntervalContext.fromCtx); - var worker = IntervalWorker(registrationRequest, composedHandler, - client: _schedulesClient); + var worker = IntervalWorker(registrationRequest, composedHandler); await worker.start(); } diff --git a/lib/src/resources/secret.dart b/lib/src/resources/secret.dart index 86ec244..19e2a16 100644 --- a/lib/src/resources/secret.dart +++ b/lib/src/resources/secret.dart @@ -3,8 +3,7 @@ part of 'common.dart'; enum SecretPermission { access, put } class SecretResource extends SecureResource { - SecretResource(String name, {$p.ResourcesClient? client}) - : super(name, client); + SecretResource(super.name); @override ResourceDeclareRequest asRequest() { diff --git a/lib/src/resources/topic.dart b/lib/src/resources/topic.dart index 274a55a..0099347 100644 --- a/lib/src/resources/topic.dart +++ b/lib/src/resources/topic.dart @@ -3,20 +3,7 @@ part of 'common.dart'; enum TopicPermission { publish } class Topic extends SecureResource { - $tp.SubscriberClient? _subscriberClient; - - Topic(String name, - {$p.ResourcesClient? client, $tp.SubscriberClient? subscriberClient}) - : super(name, client) { - _subscriberClient = subscriberClient; - - if (subscriberClient == null) { - _subscriberClient = - $tp.SubscriberClient(ClientChannelSingleton.instance.clientChannel); - } else { - _subscriberClient = subscriberClient; - } - } + Topic(super.name); /// Register a [handler] to subscribe to messages sent to the topic. Future subscribe(MessageHandler handler, @@ -26,8 +13,7 @@ class Topic extends SecureResource { final composedHandler = composeMiddleware([...middlewares, handler], MessageContext.fromCtx); - var worker = SubscriptionWorker(registrationRequest, composedHandler, - client: _subscriberClient); + var worker = SubscriptionWorker(registrationRequest, composedHandler); await worker.start(); } diff --git a/lib/src/resources/websocket.dart b/lib/src/resources/websocket.dart index 2767cd7..515d890 100644 --- a/lib/src/resources/websocket.dart +++ b/lib/src/resources/websocket.dart @@ -1,28 +1,7 @@ part of 'common.dart'; class Websocket extends Resource { - late $wp.WebsocketClient _websocketClient; - late $wp.WebsocketHandlerClient? _websocketHandlerClient; - - Websocket(String name, - {$p.ResourcesClient? client, - $wp.WebsocketClient? websocketClient, - $wp.WebsocketHandlerClient? websocketHandlerClient}) - : super(name, client) { - if (websocketClient == null) { - _websocketClient = - $wp.WebsocketClient(ClientChannelSingleton.instance.clientChannel); - } else { - _websocketClient = websocketClient; - } - - if (websocketHandlerClient == null) { - _websocketHandlerClient = $wp.WebsocketHandlerClient( - ClientChannelSingleton.instance.clientChannel); - } else { - _websocketHandlerClient = websocketHandlerClient; - } - } + Websocket(super.name); @override ResourceDeclareRequest asRequest() { @@ -38,14 +17,16 @@ class Websocket extends Resource { Future send(String connectionId, String data) async { var req = $wp.WebsocketSendRequest( socketName: name, connectionId: connectionId, data: utf8.encode(data)); - await _websocketClient.sendMessage(req); + await ClientChannelSingleton.useClient($wp.WebsocketClient.new, + (client) async => await client.sendMessage(req)); } /// Close a connection to the socket, referenced by its [connectionId]. Future close(String connectionId) async { var req = $wp.WebsocketCloseConnectionRequest( socketName: name, connectionId: connectionId); - await _websocketClient.closeConnection(req); + await ClientChannelSingleton.useClient($wp.WebsocketClient.new, + (client) async => await client.closeConnection(req)); } /// Set a [handler] for connection requests to the socket. @@ -57,8 +38,7 @@ class Websocket extends Resource { final composedHandler = composeMiddleware([...middlewares, handler], WebsocketContext.fromCtx); - var worker = WebsocketWorker(registrationRequest, composedHandler, - client: _websocketHandlerClient); + var worker = WebsocketWorker(registrationRequest, composedHandler); await worker.start(); } @@ -72,8 +52,7 @@ class Websocket extends Resource { final composedHandler = composeMiddleware([...middlewares, handler], WebsocketContext.fromCtx); - var worker = WebsocketWorker(registrationRequest, composedHandler, - client: _websocketHandlerClient); + var worker = WebsocketWorker(registrationRequest, composedHandler); await worker.start(); } @@ -87,8 +66,7 @@ class Websocket extends Resource { final composedHandler = composeMiddleware([...middlewares, handler], WebsocketContext.fromCtx); - var worker = WebsocketWorker(registrationRequest, composedHandler, - client: _websocketHandlerClient); + var worker = WebsocketWorker(registrationRequest, composedHandler); await worker.start(); } diff --git a/lib/src/workers/api.dart b/lib/src/workers/api.dart index f7dec4a..5e14ac9 100644 --- a/lib/src/workers/api.dart +++ b/lib/src/workers/api.dart @@ -14,10 +14,7 @@ class ApiWorker extends Worker<$ap.ApiClient> { /// The security to apply to this api worker. List security; - ApiWorker(this.route, this.handler, this.methods, - {this.security = const [], $ap.ApiClient? client}) - : super(client ?? - $ap.ApiClient(ClientChannelSingleton.instance.clientChannel)); + ApiWorker(this.route, this.handler, this.methods, {this.security = const []}); /// Start the route handler. @override @@ -45,31 +42,31 @@ class ApiWorker extends Worker<$ap.ApiClient> { final requestStream = StreamController<$ap.ClientMessage>(); requestStream.add(initMsg); - final response = _client.serve( - requestStream.stream, - ); - - await for (final msg in response) { - if (msg.hasRegistrationResponse()) { - // Function connected with Nitric server - } else if (msg.hasHttpRequest()) { - var ctx = HttpContext.fromRequest(msg); - - try { - ctx = await handler(ctx); - } on GrpcError catch (e) { - print("caught a GrpcError: $e"); - } catch (e) { - // Program has experienced an unexpected programatic error - print("unhandled application error: $e"); - - ctx.res.withError(e); + await ClientChannelSingleton.useClient($ap.ApiClient.new, (client) async { + final response = client.serve( + requestStream.stream, + ); + + await for (final msg in response) { + if (msg.hasRegistrationResponse()) { + // Function connected with Nitric server + } else if (msg.hasHttpRequest()) { + var ctx = HttpContext.fromRequest(msg); + + try { + ctx = await handler(ctx); + } on GrpcError catch (e) { + print("caught a GrpcError: $e"); + } catch (e) { + // Program has experienced an unexpected programatic error + print("unhandled application error: $e"); + + ctx.res.withError(e); + } + + requestStream.add(ctx.toResponse()); } - - requestStream.add(ctx.toResponse()); } - } - - await ClientChannelSingleton.instance.release(); + }); } } diff --git a/lib/src/workers/batch.dart b/lib/src/workers/batch.dart new file mode 100644 index 0000000..d474e85 --- /dev/null +++ b/lib/src/workers/batch.dart @@ -0,0 +1,44 @@ +part of 'common.dart'; + +class JobWorker extends Worker<$jp.JobClient> { + $jp.RegistrationRequest registrationRequest; + JobHandler middleware; + + JobWorker(this.registrationRequest, this.middleware); + + @override + Future start() async { + // Create the request to register the subscription with the membrane + final initMsg = $jp.ClientMessage(registrationRequest: registrationRequest); + + // Create the request stream and send the initial message + final requestStream = StreamController<$jp.ClientMessage>(); + requestStream.add(initMsg); + + await ClientChannelSingleton.useClient($jp.JobClient.new, (client) async { + final response = client.handleJob( + requestStream.stream, + ); + + await for (final msg in response) { + if (msg.hasRegistrationResponse()) { + // Topic connected with Nitric server + } else if (msg.hasJobRequest()) { + var ctx = JobContext.fromRequest(msg); + + try { + ctx = await middleware(ctx); + } on GrpcError catch (e) { + print("caught a GrpcError: $e"); + } catch (e) { + print("unhandled application error: $e"); + + ctx.res.success = false; + } + + requestStream.add(ctx.toResponse()); + } + } + }); + } +} diff --git a/lib/src/workers/blob_event.dart b/lib/src/workers/blob_event.dart index 5420380..db27dd8 100644 --- a/lib/src/workers/blob_event.dart +++ b/lib/src/workers/blob_event.dart @@ -4,11 +4,7 @@ class BlobEventWorker extends Worker<$bp.StorageListenerClient> { $bp.RegistrationRequest registrationRequest; BlobEventHandler middleware; - BlobEventWorker(this.registrationRequest, this.middleware, - {$bp.StorageListenerClient? client}) - : super(client ?? - $bp.StorageListenerClient( - ClientChannelSingleton.instance.clientChannel)); + BlobEventWorker(this.registrationRequest, this.middleware); @override Future start() async { @@ -18,30 +14,31 @@ class BlobEventWorker extends Worker<$bp.StorageListenerClient> { final requestStream = StreamController<$bp.ClientMessage>(); requestStream.add(initMsg); - final response = _client.listen( - requestStream.stream, - ); - - await for (final msg in response) { - if (msg.hasRegistrationResponse()) { - // Blob Notification has connected with Nitric server - } else if (msg.hasBlobEventRequest()) { - var ctx = BlobEventContext.fromRequest(msg); - - try { - ctx = await middleware(ctx); - } on GrpcError catch (e) { - print("caught a GrpcError: $e"); - } catch (e) { - print("unhandled application error: $e"); - - ctx.res.success = false; + await ClientChannelSingleton.useClient($bp.StorageListenerClient.new, + (client) async { + final response = client.listen( + requestStream.stream, + ); + + await for (final msg in response) { + if (msg.hasRegistrationResponse()) { + // Blob Notification has connected with Nitric server + } else if (msg.hasBlobEventRequest()) { + var ctx = BlobEventContext.fromRequest(msg); + + try { + ctx = await middleware(ctx); + } on GrpcError catch (e) { + print("caught a GrpcError: $e"); + } catch (e) { + print("unhandled application error: $e"); + + ctx.res.success = false; + } + + requestStream.add(ctx.toResponse()); } - - requestStream.add(ctx.toResponse()); } - } - - await ClientChannelSingleton.instance.release(); + }); } } diff --git a/lib/src/workers/common.dart b/lib/src/workers/common.dart index fa2b201..76a1a24 100644 --- a/lib/src/workers/common.dart +++ b/lib/src/workers/common.dart @@ -15,6 +15,7 @@ import 'package:nitric_sdk/src/nitric/proto/websockets/v1/websockets.pbgrpc.dart as $wp; import 'package:nitric_sdk/src/nitric/proto/storage/v1/storage.pbgrpc.dart' as $bp; +import 'package:nitric_sdk/src/nitric/proto/batch/v1/batch.pbgrpc.dart' as $jp; part 'api.dart'; part 'blob_event.dart'; @@ -22,13 +23,8 @@ part 'interval.dart'; part 'subscription.dart'; part 'file_event.dart'; part 'websocket.dart'; +part 'batch.dart'; abstract class Worker { - late T _client; - - Worker(T client) { - _client = client; - } - Future start(); } diff --git a/lib/src/workers/file_event.dart b/lib/src/workers/file_event.dart index e4b2e2a..8842d64 100644 --- a/lib/src/workers/file_event.dart +++ b/lib/src/workers/file_event.dart @@ -5,11 +5,7 @@ class FileEventWorker extends Worker<$bp.StorageListenerClient> { FileEventHandler middleware; Bucket bucket; - FileEventWorker(this.registrationRequest, this.middleware, this.bucket, - {$bp.StorageListenerClient? client}) - : super(client ?? - $bp.StorageListenerClient( - ClientChannelSingleton.instance.clientChannel)); + FileEventWorker(this.registrationRequest, this.middleware, this.bucket); @override Future start() async { @@ -19,30 +15,31 @@ class FileEventWorker extends Worker<$bp.StorageListenerClient> { final requestStream = StreamController<$bp.ClientMessage>(); requestStream.add(initMsg); - final response = _client.listen( - requestStream.stream, - ); - - await for (final msg in response) { - if (msg.hasRegistrationResponse()) { - // Blob Notification has connected with Nitric server - } else if (msg.hasBlobEventRequest()) { - var ctx = FileEventContext.fromRequest(msg, bucket); - - try { - ctx = await middleware(ctx); - } on GrpcError catch (e) { - print("caught a GrpcError: $e"); - } catch (e) { - print("unhandled application error: $e"); - - ctx.res.success = false; + await ClientChannelSingleton.useClient($bp.StorageListenerClient.new, + (client) async { + final response = client.listen( + requestStream.stream, + ); + + await for (final msg in response) { + if (msg.hasRegistrationResponse()) { + // Blob Notification has connected with Nitric server + } else if (msg.hasBlobEventRequest()) { + var ctx = FileEventContext.fromRequest(msg, bucket); + + try { + ctx = await middleware(ctx); + } on GrpcError catch (e) { + print("caught a GrpcError: $e"); + } catch (e) { + print("unhandled application error: $e"); + + ctx.res.success = false; + } + + requestStream.add(ctx.toResponse()); } - - requestStream.add(ctx.toResponse()); } - } - - await ClientChannelSingleton.instance.release(); + }); } } diff --git a/lib/src/workers/interval.dart b/lib/src/workers/interval.dart index 1f211af..0790eb9 100644 --- a/lib/src/workers/interval.dart +++ b/lib/src/workers/interval.dart @@ -4,10 +4,7 @@ class IntervalWorker extends Worker<$sp.SchedulesClient> { $sp.RegistrationRequest registrationRequest; IntervalHandler middleware; - IntervalWorker(this.registrationRequest, this.middleware, - {$sp.SchedulesClient? client}) - : super(client ?? - $sp.SchedulesClient(ClientChannelSingleton.instance.clientChannel)); + IntervalWorker(this.registrationRequest, this.middleware); /// Starts the interval handling loop to run the [middleware] at a certain frequency. Uses the [registrationRequest] to register the interval with the Nitric server. @override @@ -18,30 +15,31 @@ class IntervalWorker extends Worker<$sp.SchedulesClient> { final requestStream = StreamController<$sp.ClientMessage>(); requestStream.add(initMsg); - final response = _client.schedule( - requestStream.stream, - ); - - await for (final msg in response) { - if (msg.hasRegistrationResponse()) { - // Schedule connected with Nitric server - } else if (msg.hasIntervalRequest()) { - var ctx = IntervalContext.fromRequest(msg); - - try { - ctx = await middleware(ctx); - } on GrpcError catch (e) { - print("caught a GrpcError: $e"); - } catch (e) { - print("unhandled application error: $e"); - - ctx.res.success = false; + await ClientChannelSingleton.useClient($sp.SchedulesClient.new, + (client) async { + final response = client.schedule( + requestStream.stream, + ); + + await for (final msg in response) { + if (msg.hasRegistrationResponse()) { + // Schedule connected with Nitric server + } else if (msg.hasIntervalRequest()) { + var ctx = IntervalContext.fromRequest(msg); + + try { + ctx = await middleware(ctx); + } on GrpcError catch (e) { + print("caught a GrpcError: $e"); + } catch (e) { + print("unhandled application error: $e"); + + ctx.res.success = false; + } + + requestStream.add(ctx.toResponse()); } - - requestStream.add(ctx.toResponse()); } - } - - await ClientChannelSingleton.instance.release(); + }); } } diff --git a/lib/src/workers/subscription.dart b/lib/src/workers/subscription.dart index cdf7e3b..42d4afb 100644 --- a/lib/src/workers/subscription.dart +++ b/lib/src/workers/subscription.dart @@ -4,11 +4,7 @@ class SubscriptionWorker extends Worker<$tp.SubscriberClient> { $tp.RegistrationRequest registrationRequest; MessageHandler middleware; - SubscriptionWorker(this.registrationRequest, this.middleware, - {$tp.SubscriberClient? client}) - : super(client ?? - $tp.SubscriberClient( - ClientChannelSingleton.instance.clientChannel)); + SubscriptionWorker(this.registrationRequest, this.middleware); @override Future start() async { @@ -19,30 +15,31 @@ class SubscriptionWorker extends Worker<$tp.SubscriberClient> { final requestStream = StreamController<$tp.ClientMessage>(); requestStream.add(initMsg); - final response = _client.subscribe( - requestStream.stream, - ); - - await for (final msg in response) { - if (msg.hasRegistrationResponse()) { - // Topic connected with Nitric server - } else if (msg.hasMessageRequest()) { - var ctx = MessageContext.fromRequest(msg); - - try { - ctx = await middleware(ctx); - } on GrpcError catch (e) { - print("caught a GrpcError: $e"); - } catch (e) { - print("unhandled application error: $e"); - - ctx.res.success = false; + await ClientChannelSingleton.useClient($tp.SubscriberClient.new, + (client) async { + final response = client.subscribe( + requestStream.stream, + ); + + await for (final msg in response) { + if (msg.hasRegistrationResponse()) { + // Topic connected with Nitric server + } else if (msg.hasMessageRequest()) { + var ctx = MessageContext.fromRequest(msg); + + try { + ctx = await middleware(ctx); + } on GrpcError catch (e) { + print("caught a GrpcError: $e"); + } catch (e) { + print("unhandled application error: $e"); + + ctx.res.success = false; + } + + requestStream.add(ctx.toResponse()); } - - requestStream.add(ctx.toResponse()); } - } - - await ClientChannelSingleton.instance.release(); + }); } } diff --git a/lib/src/workers/websocket.dart b/lib/src/workers/websocket.dart index 48af1c1..81000e2 100644 --- a/lib/src/workers/websocket.dart +++ b/lib/src/workers/websocket.dart @@ -4,11 +4,7 @@ class WebsocketWorker extends Worker<$wp.WebsocketHandlerClient> { $wp.RegistrationRequest registrationRequest; WebsocketHandler middleware; - WebsocketWorker(this.registrationRequest, this.middleware, - {$wp.WebsocketHandlerClient? client}) - : super(client ?? - $wp.WebsocketHandlerClient( - ClientChannelSingleton.instance.clientChannel)); + WebsocketWorker(this.registrationRequest, this.middleware); @override Future start() async { @@ -18,28 +14,29 @@ class WebsocketWorker extends Worker<$wp.WebsocketHandlerClient> { final requestStream = StreamController<$wp.ClientMessage>(); requestStream.add(initMsg); - final response = _client.handleEvents( - requestStream.stream, - ); - - await for (final msg in response) { - if (msg.hasRegistrationResponse()) { - // Websocket connected with Nitric server - } else if (msg.hasWebsocketEventRequest()) { - var ctx = WebsocketContext.fromRequest(msg); - - try { - ctx = await middleware(ctx); - } on GrpcError catch (e) { - print("caught a GrpcError: $e"); - } catch (e) { - print("unhandled application error: $e"); + await ClientChannelSingleton.useClient($wp.WebsocketHandlerClient.new, + (client) async { + final response = client.handleEvents( + requestStream.stream, + ); + + await for (final msg in response) { + if (msg.hasRegistrationResponse()) { + // Websocket connected with Nitric server + } else if (msg.hasWebsocketEventRequest()) { + var ctx = WebsocketContext.fromRequest(msg); + + try { + ctx = await middleware(ctx); + } on GrpcError catch (e) { + print("caught a GrpcError: $e"); + } catch (e) { + print("unhandled application error: $e"); + } + + requestStream.add(ctx.toResponse()); } - - requestStream.add(ctx.toResponse()); } - } - - await ClientChannelSingleton.instance.release(); + }); } } diff --git a/makefile b/makefile index 9b711e2..c8fe383 100644 --- a/makefile +++ b/makefile @@ -4,7 +4,7 @@ clean: rm -rf lib/src/nitric rm -rf lib/src/google -NITRIC_VERSION := 1.6.0 +NITRIC_VERSION := 1.14.0 GRPC_VERSION := 3.2.4 download-nitric: @@ -23,6 +23,7 @@ download-google_well_known: build: clean download-nitric download-google_well_known mkdir -p lib/src/nitric/proto mkdir -p lib/src/nitric/google + echo "To use dart plugin use `dart pub global activate protoc_plugin`" protoc -I ./ --dart_out=grpc:lib/src/ ./nitric/proto/*/*/*.proto # relocate well known types as their relative location is not generated correctly on first build mv lib/src/nitric/google lib/src/google diff --git a/pubspec.yaml b/pubspec.yaml index aa24623..f58c2c9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,20 +3,19 @@ description: The Dart SDK supports the use of the Nitric framework with Dart and repository: https://github.com/nitrictech/dart-sdk environment: - sdk: ^3.2.4 + sdk: ^3.5.0 # Add regular dependencies here. dependencies: fixnum: ^1.1.0 - grpc: ^3.2.4 + grpc: ^4.0.1 http: ^1.2.1 meta: ^1.11.0 protobuf: ^3.1.0 - synchronized: ^3.1.0+1 + synchronized: ^3.3.0 uuid: ^4.3.2 - # path: ^1.8.0 dev_dependencies: - lints: ^4.0.0 + lints: ^5.0.0 mocktail: ^1.0.3 - test: ^1.24.0 + test: ^1.25.8 diff --git a/test/src/api/bucket_test.dart b/test/src/api/bucket_test.dart index 8520e3f..69c5038 100644 --- a/test/src/api/bucket_test.dart +++ b/test/src/api/bucket_test.dart @@ -5,6 +5,7 @@ import 'package:mocktail/mocktail.dart'; import 'package:nitric_sdk/nitric.dart'; import 'package:nitric_sdk/src/api/api.dart'; import 'package:nitric_sdk/src/google/protobuf/duration.pb.dart'; +import 'package:nitric_sdk/src/grpc_helper.dart'; import 'package:nitric_sdk/src/nitric/proto/storage/v1/storage.pbgrpc.dart' as $sp; import 'package:test/test.dart'; @@ -23,6 +24,11 @@ void main() { setUp(() { storageClient = MockStorageClient(); storageListenerClient = MockStorageListenerClient(); + + ClientChannelSingleton.registerClientConstructors(Map.from({ + $sp.StorageClient: storageClient, + $sp.StorageListenerClient: storageListenerClient + })); }); setUpAll(() { @@ -35,13 +41,13 @@ void main() { }); test('Test build bucket', () { - var bucket = Bucket("bucketName", client: storageClient); + var bucket = Bucket("bucketName"); expect(bucket.name, "bucketName"); }); test('Test get file reference', () { - var bucket = Bucket("bucketName", client: storageClient); + var bucket = Bucket("bucketName"); var file = bucket.file("fileName"); @@ -60,7 +66,7 @@ void main() { when(() => storageClient.listBlobs(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var bucket = Bucket("bucketName", client: storageClient); + var bucket = Bucket("bucketName"); var blobs = await bucket.files(); @@ -85,7 +91,7 @@ void main() { when(() => storageClient.listBlobs(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var bucket = Bucket("bucketName", client: storageClient); + var bucket = Bucket("bucketName"); var blobs = await bucket.files(prefix: "blob-"); @@ -108,7 +114,7 @@ void main() { when(() => storageClient.write(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var bucket = Bucket("bucketName", client: storageClient); + var bucket = Bucket("bucketName"); await bucket.file("fileName").write("contents"); @@ -128,7 +134,7 @@ void main() { when(() => storageClient.read(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var bucket = Bucket("bucketName", client: storageClient); + var bucket = Bucket("bucketName"); var contents = await bucket.file("fileName").read(); @@ -148,7 +154,7 @@ void main() { when(() => storageClient.delete(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var bucket = Bucket("bucketName", client: storageClient); + var bucket = Bucket("bucketName"); await bucket.file("fileName").delete(); @@ -167,7 +173,7 @@ void main() { when(() => storageClient.preSignUrl(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var bucket = Bucket("bucketName", client: storageClient); + var bucket = Bucket("bucketName"); var url = await bucket.file("fileName").getDownloadUrl(); @@ -188,7 +194,7 @@ void main() { when(() => storageClient.preSignUrl(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var bucket = Bucket("bucketName", client: storageClient); + var bucket = Bucket("bucketName"); var url = await bucket.file("fileName").getDownloadUrl(3600); @@ -198,7 +204,7 @@ void main() { }); test('Test get download url with out of bounds expiry', () async { - var bucket = Bucket("bucketName", client: storageClient); + var bucket = Bucket("bucketName"); try { await bucket.file("fileName").getDownloadUrl(604801); @@ -222,7 +228,7 @@ void main() { when(() => storageClient.preSignUrl(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var bucket = Bucket("bucketName", client: storageClient); + var bucket = Bucket("bucketName"); var url = await bucket.file("fileName").getUploadUrl(); @@ -243,7 +249,7 @@ void main() { when(() => storageClient.preSignUrl(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var bucket = Bucket("bucketName", client: storageClient); + var bucket = Bucket("bucketName"); var url = await bucket.file("fileName").getUploadUrl(3600); @@ -253,7 +259,7 @@ void main() { }); test('Test get upload url with out of bounds expiry', () async { - var bucket = Bucket("bucketName", client: storageClient); + var bucket = Bucket("bucketName"); try { await bucket.file("fileName").getUploadUrl(604801); @@ -274,7 +280,7 @@ void main() { when(() => storageClient.exists(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var bucket = Bucket("bucketName", client: storageClient); + var bucket = Bucket("bucketName"); var exists = await bucket.file("fileName").exists(); @@ -292,7 +298,7 @@ void main() { when(() => storageClient.exists(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var bucket = Bucket("bucketName", client: storageClient); + var bucket = Bucket("bucketName"); var exists = await bucket.file("fileName").exists(); @@ -302,8 +308,9 @@ void main() { }); test('Test bucket on write event', () async { - var bucket = Bucket("bucketName", - client: storageClient, storageListenerClient: storageListenerClient); + var bucket = Bucket( + "bucketName", + ); when(() => storageListenerClient.listen(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -323,8 +330,9 @@ void main() { }); test('Test bucket on delete event', () async { - var bucket = Bucket("bucketName", - client: storageClient, storageListenerClient: storageListenerClient); + var bucket = Bucket( + "bucketName", + ); when(() => storageListenerClient.listen(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -344,8 +352,9 @@ void main() { }); test('Test bucket event error', () async { - var bucket = Bucket("bucketName", - client: storageClient, storageListenerClient: storageListenerClient); + var bucket = Bucket( + "bucketName", + ); when(() => storageListenerClient.listen(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ diff --git a/test/src/api/keyvalue_test.dart b/test/src/api/keyvalue_test.dart index 3286d50..ca9a82b 100644 --- a/test/src/api/keyvalue_test.dart +++ b/test/src/api/keyvalue_test.dart @@ -1,6 +1,7 @@ import 'package:mocktail/mocktail.dart'; import 'package:nitric_sdk/src/api/api.dart'; import 'package:nitric_sdk/src/google/protobuf/struct.pb.dart' as $p; +import 'package:nitric_sdk/src/grpc_helper.dart'; import 'package:nitric_sdk/src/nitric/proto/kvstore/v1/kvstore.pbgrpc.dart'; import 'package:test/test.dart'; @@ -11,12 +12,18 @@ class MockKeyValueClient extends Mock implements KvStoreClient {} void main() { late MockKeyValueClient keyValueClient; - setUp(() => keyValueClient = MockKeyValueClient()); + setUp(() { + keyValueClient = MockKeyValueClient(); + + ClientChannelSingleton.registerClientConstructors(Map.from({ + KvStoreClient: keyValueClient, + })); + }); tearDown(() => reset(keyValueClient)); test('Test build key value store', () { - var kv = KeyValueStore("keyvalueName", client: keyValueClient); + var kv = KeyValueStore("keyvalueName"); expect(kv.name, "keyvalueName"); }); @@ -34,7 +41,7 @@ void main() { when(() => keyValueClient.setValue(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var kvStore = KeyValueStore("keyvalueName", client: keyValueClient); + var kvStore = KeyValueStore("keyvalueName"); await kvStore.set("keyName", {'message': 'test'}); @@ -57,7 +64,7 @@ void main() { when(() => keyValueClient.getValue(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var kvStore = KeyValueStore("keyvalueName", client: keyValueClient); + var kvStore = KeyValueStore("keyvalueName"); var keyContents = await kvStore.get("keyName"); @@ -76,7 +83,7 @@ void main() { when(() => keyValueClient.deleteKey(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var kvStore = KeyValueStore("keyvalueName", client: keyValueClient); + var kvStore = KeyValueStore("keyvalueName"); await kvStore.delete("keyName"); @@ -94,7 +101,7 @@ void main() { when(() => keyValueClient.scanKeys(req)) .thenAnswer((_) => MockResponseStream.fromIterable(resp)); - var kvStore = KeyValueStore("keyvalueName", client: keyValueClient); + var kvStore = KeyValueStore("keyvalueName"); var keys = await kvStore.keys(); @@ -115,7 +122,7 @@ void main() { when(() => keyValueClient.scanKeys(req)) .thenAnswer((_) => MockResponseStream.fromIterable(resp)); - var kvStore = KeyValueStore("keyvalueName", client: keyValueClient); + var kvStore = KeyValueStore("keyvalueName"); var keys = await kvStore.keys(prefix: "f"); diff --git a/test/src/api/queue_test.dart b/test/src/api/queue_test.dart index 767d0d6..03da4c4 100644 --- a/test/src/api/queue_test.dart +++ b/test/src/api/queue_test.dart @@ -1,6 +1,7 @@ import 'package:mocktail/mocktail.dart'; import 'package:nitric_sdk/src/api/api.dart'; import 'package:nitric_sdk/src/google/protobuf/struct.pb.dart'; +import 'package:nitric_sdk/src/grpc_helper.dart'; import 'package:nitric_sdk/src/nitric/proto/queues/v1/queues.pbgrpc.dart' as $p; import 'package:test/test.dart'; @@ -11,18 +12,24 @@ class MockQueuesClient extends Mock implements $p.QueuesClient {} void main() { late MockQueuesClient queuesClient; - setUp(() => queuesClient = MockQueuesClient()); + setUp(() { + queuesClient = MockQueuesClient(); + + ClientChannelSingleton.registerClientConstructors(Map.from({ + $p.QueuesClient: queuesClient, + })); + }); tearDown(() => reset(queuesClient)); test('Test build queue', () { - var queue = Queue("queueName", client: queuesClient); + var queue = Queue("queueName"); expect(queue.name, "queueName"); }); test("Test enqueue messages with no failures", () async { - var queue = Queue("queueName", client: queuesClient); + var queue = Queue("queueName"); var req = $p.QueueEnqueueRequest(queueName: "queueName", messages: [ $p.QueueMessage( @@ -45,7 +52,7 @@ void main() { }); test("Test enqueue messages with failures", () async { - var queue = Queue("queueName", client: queuesClient); + var queue = Queue("queueName"); var req = $p.QueueEnqueueRequest(queueName: "queueName", messages: [ $p.QueueMessage( @@ -76,7 +83,7 @@ void main() { }); test("Test dequeue messages with default depth", () async { - var queue = Queue("queueName", client: queuesClient); + var queue = Queue("queueName"); var req = $p.QueueDequeueRequest(queueName: "queueName", depth: 1); @@ -100,7 +107,7 @@ void main() { }); test("Test dequeue messages with specific depth", () async { - var queue = Queue("queueName", client: queuesClient); + var queue = Queue("queueName"); var req = $p.QueueDequeueRequest(queueName: "queueName", depth: 2); @@ -130,7 +137,7 @@ void main() { }); test("Test complete message", () async { - var queue = Queue("queueName", client: queuesClient); + var queue = Queue("queueName"); var protoDequeuedMessage = $p.DequeuedMessage( leaseId: "1234", diff --git a/test/src/api/secret_test.dart b/test/src/api/secret_test.dart index 98a521b..090293d 100644 --- a/test/src/api/secret_test.dart +++ b/test/src/api/secret_test.dart @@ -2,6 +2,7 @@ import 'dart:convert'; import 'package:mocktail/mocktail.dart'; import 'package:nitric_sdk/src/api/api.dart'; +import 'package:nitric_sdk/src/grpc_helper.dart'; import 'package:nitric_sdk/src/nitric/proto/secrets/v1/secrets.pbgrpc.dart' as $p; import 'package:test/test.dart'; @@ -13,18 +14,24 @@ class MockSecretClient extends Mock implements $p.SecretManagerClient {} void main() { late MockSecretClient secretClient; - setUp(() => secretClient = MockSecretClient()); + setUp(() { + secretClient = MockSecretClient(); + + ClientChannelSingleton.registerClientConstructors(Map.from({ + $p.SecretManagerClient: secretClient, + })); + }); tearDown(() => reset(secretClient)); test('Test build secret', () { - var secret = Secret("secretName", client: secretClient); + var secret = Secret("secretName"); expect(secret.name, "secretName"); }); test('Test get secret version', () { - var secret = Secret("secretName", client: secretClient); + var secret = Secret("secretName"); var version = secret.version("versionID"); @@ -32,7 +39,7 @@ void main() { }); test('Test get latest secret version', () { - var secret = Secret("secretName", client: secretClient); + var secret = Secret("secretName"); var latest = secret.latest(); @@ -50,7 +57,7 @@ void main() { when(() => secretClient.put(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var secret = Secret("secretName", client: secretClient); + var secret = Secret("secretName"); await secret.put("contents"); @@ -71,7 +78,7 @@ void main() { when(() => secretClient.access(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var secret = Secret("secretName", client: secretClient); + var secret = Secret("secretName"); var contents = await secret.version("secretVersion").access(); diff --git a/test/src/api/sql_test.dart b/test/src/api/sql_test.dart index ea1b98b..11374dc 100644 --- a/test/src/api/sql_test.dart +++ b/test/src/api/sql_test.dart @@ -1,5 +1,7 @@ import 'package:mocktail/mocktail.dart'; import 'package:nitric_sdk/src/api/sql.dart'; +import 'package:nitric_sdk/src/grpc_helper.dart'; +import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pbgrpc.dart'; import 'package:nitric_sdk/src/nitric/proto/sql/v1/sql.pbgrpc.dart'; import 'package:test/test.dart'; @@ -14,6 +16,11 @@ void main() { setUp(() { sqlClient = MockSqlClient(); resourceClient = MockResourceClient(); + + ClientChannelSingleton.registerClientConstructors(Map.from({ + SqlClient: sqlClient, + ResourcesClient: resourceClient, + })); }); tearDown(() { @@ -22,8 +29,7 @@ void main() { }); test('Test build sql database', () { - var sql = SqlDatabase("databaseName", - client: sqlClient, resourcesClient: resourceClient); + var sql = SqlDatabase("databaseName"); expect(sql.name, "databaseName"); }); @@ -37,7 +43,7 @@ void main() { when(() => sqlClient.connectionString(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var db = SqlDatabase("databaseName", client: sqlClient); + var db = SqlDatabase("databaseName"); await db.connectionString(); diff --git a/test/src/api/topic_test.dart b/test/src/api/topic_test.dart index c4f523a..e9cbc55 100644 --- a/test/src/api/topic_test.dart +++ b/test/src/api/topic_test.dart @@ -3,6 +3,7 @@ import 'package:mocktail/mocktail.dart'; import 'package:nitric_sdk/src/api/api.dart'; import 'package:nitric_sdk/src/google/protobuf/duration.pb.dart'; import 'package:nitric_sdk/src/google/protobuf/struct.pb.dart'; +import 'package:nitric_sdk/src/grpc_helper.dart'; import 'package:nitric_sdk/src/nitric/proto/topics/v1/topics.pbgrpc.dart' as $p; import 'package:test/test.dart'; @@ -13,12 +14,18 @@ class MockTopicsClient extends Mock implements $p.TopicsClient {} void main() { late MockTopicsClient topicsClient; - setUp(() => topicsClient = MockTopicsClient()); + setUp(() { + topicsClient = MockTopicsClient(); + + ClientChannelSingleton.registerClientConstructors(Map.from({ + $p.TopicsClient: topicsClient, + })); + }); tearDown(() => reset(topicsClient)); test('Test build topic', () { - var topic = Topic("topicName", client: topicsClient); + var topic = Topic("topicName"); expect(topic.name, "topicName"); }); @@ -37,7 +44,7 @@ void main() { when(() => topicsClient.publish(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var secret = Topic("topicName", client: topicsClient); + var secret = Topic("topicName"); await secret.publish({"message": "test"}); @@ -55,7 +62,7 @@ void main() { when(() => topicsClient.publish(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var secret = Topic("topicName", client: topicsClient); + var secret = Topic("topicName"); await secret.publish({}); @@ -76,7 +83,7 @@ void main() { when(() => topicsClient.publish(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var secret = Topic("topicName", client: topicsClient); + var secret = Topic("topicName"); await secret.publish({"message": "test"}, delay: 30); diff --git a/test/src/context/fileevent_test.dart b/test/src/context/fileevent_test.dart index 4e64416..6876ae4 100644 --- a/test/src/context/fileevent_test.dart +++ b/test/src/context/fileevent_test.dart @@ -17,7 +17,7 @@ void main() { $pb.BlobEvent(key: "key", type: $pb.BlobEventType.Created)), ); - final bucket = Bucket("bucket", client: MockStorageClient()); + final bucket = Bucket("bucket"); final ctx = FileEventContext.fromRequest(msg, bucket); @@ -27,8 +27,7 @@ void main() { test('ClientMessage from Blob Event Context', () { final ctx = FileEventContext( "id", - FileEventRequest( - File(Bucket("bucket", client: MockStorageClient()), "key")), + FileEventRequest(File(Bucket("bucket"), "key")), BlobEventResponse(true)); final clientMessage = ctx.toResponse(); diff --git a/test/src/resources/api_test.dart b/test/src/resources/api_test.dart index f9ecc91..661eb33 100644 --- a/test/src/resources/api_test.dart +++ b/test/src/resources/api_test.dart @@ -1,7 +1,8 @@ import 'package:mocktail/mocktail.dart'; import 'package:nitric_sdk/nitric.dart'; +import 'package:nitric_sdk/src/grpc_helper.dart'; import 'package:nitric_sdk/src/nitric/proto/apis/v1/apis.pbgrpc.dart' as $p; -import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pb.dart'; +import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pbgrpc.dart'; import 'package:test/test.dart'; import '../common.dart'; @@ -19,6 +20,11 @@ void main() { setUp(() { apiClient = MockApiClient(); resourceClient = MockResourceClient(); + + ClientChannelSingleton.registerClientConstructors(Map.from({ + $p.ApiClient: apiClient, + ResourcesClient: resourceClient, + })); }); setUpAll(() { @@ -32,13 +38,17 @@ void main() { }); test("Test build api", () async { - var api = Api("apiName", client: resourceClient); + var api = Api( + "apiName", + ); expect(api.name, "apiName"); }); test("Test register api", () async { - var api = Api("apiName", client: resourceClient); + var api = Api( + "apiName", + ); var req = ResourceDeclareRequest( id: ResourceIdentifier(name: "apiName", type: ResourceType.Api), @@ -56,7 +66,7 @@ void main() { group("test building API worker with no security", () { test('HTTP GET Worker build', () async { - var api = Api("apiName", apiClient: apiClient); + var api = Api("apiName"); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -72,7 +82,7 @@ void main() { }); test('HTTP POST Worker build', () async { - var api = Api("apiName", apiClient: apiClient); + var api = Api("apiName"); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -88,7 +98,7 @@ void main() { }); test('HTTP PATCH Worker build ', () async { - var api = Api("apiName", apiClient: apiClient); + var api = Api("apiName"); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -104,7 +114,7 @@ void main() { }); test('HTTP OPTIONS Worker build ', () async { - var api = Api("apiName", apiClient: apiClient); + var api = Api("apiName"); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -120,7 +130,7 @@ void main() { }); test('HTTP DELETE Worker build ', () async { - var api = Api("apiName", apiClient: apiClient); + var api = Api("apiName"); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -136,7 +146,7 @@ void main() { }); test('HTTP PUT Worker build ', () async { - var api = Api("apiName", apiClient: apiClient); + var api = Api("apiName"); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -152,7 +162,7 @@ void main() { }); test('HTTP ALL Worker build ', () async { - var api = Api("apiName", apiClient: apiClient); + var api = Api("apiName"); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -170,7 +180,7 @@ void main() { group("test building API with route", () { test('HTTP GET Worker build', () async { - var api = Api("apiName", apiClient: apiClient); + var api = Api("apiName"); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -186,7 +196,7 @@ void main() { }); test('HTTP POST Worker build', () async { - var api = Api("apiName", apiClient: apiClient); + var api = Api("apiName"); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -202,7 +212,7 @@ void main() { }); test('HTTP PATCH Worker build', () async { - var api = Api("apiName", apiClient: apiClient); + var api = Api("apiName"); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -218,7 +228,7 @@ void main() { }); test('HTTP OPTIONS Worker build', () async { - var api = Api("apiName", apiClient: apiClient); + var api = Api("apiName"); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -234,7 +244,7 @@ void main() { }); test('HTTP DELETE Worker build', () async { - var api = Api("apiName", apiClient: apiClient); + var api = Api("apiName"); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -250,7 +260,7 @@ void main() { }); test('HTTP PUT Worker build', () async { - var api = Api("apiName", apiClient: apiClient); + var api = Api("apiName"); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -266,7 +276,7 @@ void main() { }); test('HTTP ALL Worker build', () async { - var api = Api("apiName", apiClient: apiClient); + var api = Api("apiName"); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -285,11 +295,13 @@ void main() { group("test building with security", () { test('HTTP GET Worker build', () async { var oidc = OidcOptions( - "oidcName", "oidcIssuer", ["oidcAudience"], ["oidcScopes"], - client: resourceClient); + "oidcName", + "oidcIssuer", + ["oidcAudience"], + ["oidcScopes"], + ); - var api = Api("apiName", - opts: ApiOptions(security: [oidc]), apiClient: apiClient); + var api = Api("apiName", opts: ApiOptions(security: [oidc])); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -310,11 +322,13 @@ void main() { test('HTTP POST Worker build', () async { var oidc = OidcOptions( - "oidcName", "oidcIssuer", ["oidcAudience"], ["oidcScopes"], - client: resourceClient); + "oidcName", + "oidcIssuer", + ["oidcAudience"], + ["oidcScopes"], + ); - var api = Api("apiName", - opts: ApiOptions(security: [oidc]), apiClient: apiClient); + var api = Api("apiName", opts: ApiOptions(security: [oidc])); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -335,11 +349,13 @@ void main() { test('HTTP PUT Worker build', () async { var oidc = OidcOptions( - "oidcName", "oidcIssuer", ["oidcAudience"], ["oidcScopes"], - client: resourceClient); + "oidcName", + "oidcIssuer", + ["oidcAudience"], + ["oidcScopes"], + ); - var api = Api("apiName", - opts: ApiOptions(security: [oidc]), apiClient: apiClient); + var api = Api("apiName", opts: ApiOptions(security: [oidc])); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -360,11 +376,13 @@ void main() { test('HTTP PATCH Worker build', () async { var oidc = OidcOptions( - "oidcName", "oidcIssuer", ["oidcAudience"], ["oidcScopes"], - client: resourceClient); + "oidcName", + "oidcIssuer", + ["oidcAudience"], + ["oidcScopes"], + ); - var api = Api("apiName", - opts: ApiOptions(security: [oidc]), apiClient: apiClient); + var api = Api("apiName", opts: ApiOptions(security: [oidc])); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -385,11 +403,13 @@ void main() { test('HTTP OPTIONS Worker build', () async { var oidc = OidcOptions( - "oidcName", "oidcIssuer", ["oidcAudience"], ["oidcScopes"], - client: resourceClient); + "oidcName", + "oidcIssuer", + ["oidcAudience"], + ["oidcScopes"], + ); - var api = Api("apiName", - opts: ApiOptions(security: [oidc]), apiClient: apiClient); + var api = Api("apiName", opts: ApiOptions(security: [oidc])); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -410,11 +430,13 @@ void main() { test('HTTP DELETE Worker build', () async { var oidc = OidcOptions( - "oidcName", "oidcIssuer", ["oidcAudience"], ["oidcScopes"], - client: resourceClient); + "oidcName", + "oidcIssuer", + ["oidcAudience"], + ["oidcScopes"], + ); - var api = Api("apiName", - opts: ApiOptions(security: [oidc]), apiClient: apiClient); + var api = Api("apiName", opts: ApiOptions(security: [oidc])); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -435,11 +457,13 @@ void main() { test('HTTP ALL Worker build', () async { var oidc = OidcOptions( - "oidcName", "oidcIssuer", ["oidcAudience"], ["oidcScopes"], - client: resourceClient); + "oidcName", + "oidcIssuer", + ["oidcAudience"], + ["oidcScopes"], + ); - var api = Api("apiName", - opts: ApiOptions(security: [oidc]), apiClient: apiClient); + var api = Api("apiName", opts: ApiOptions(security: [oidc])); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -460,7 +484,7 @@ void main() { }); test('HTTP worker error', () async { - var api = Api("apiName", apiClient: apiClient); + var api = Api("apiName"); when(() => apiClient.serve(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ diff --git a/test/src/resources/bucket_test.dart b/test/src/resources/bucket_test.dart index abfc64e..76778fc 100644 --- a/test/src/resources/bucket_test.dart +++ b/test/src/resources/bucket_test.dart @@ -1,6 +1,7 @@ import 'package:mocktail/mocktail.dart'; import 'package:nitric_sdk/nitric.dart'; -import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pb.dart' +import 'package:nitric_sdk/src/grpc_helper.dart'; +import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pbgrpc.dart' as $p; import 'package:nitric_sdk/src/nitric/proto/storage/v1/storage.pbgrpc.dart' as $sp; @@ -18,6 +19,11 @@ void main() { setUp(() { resourceClient = MockResourceClient(); storageListenerClient = MockStorageListenerClient(); + + ClientChannelSingleton.registerClientConstructors(Map.from({ + $sp.StorageListenerClient: storageListenerClient, + $p.ResourcesClient: resourceClient, + })); }); setUpAll(() { @@ -30,13 +36,13 @@ void main() { }); test("Test build bucket resource", () async { - var bucket = BucketResource("bucketName", client: resourceClient); + var bucket = BucketResource("bucketName"); expect(bucket.name, "bucketName"); }); test("Test register bucket resource", () async { - var bucket = BucketResource("bucketName", client: resourceClient); + var bucket = BucketResource("bucketName"); var req = $p.ResourceDeclareRequest( id: $p.ResourceIdentifier( @@ -54,7 +60,7 @@ void main() { }); test("Test converting bucket permissions to actions", () async { - var bucket = BucketResource("bucketName", client: resourceClient); + var bucket = BucketResource("bucketName"); var readActions = bucket.permissionsToActions([BucketPermission.read]); expect(readActions, [$p.Action.BucketFileGet, $p.Action.BucketFileList]); @@ -79,8 +85,7 @@ void main() { }); test('Test bucket on write event', () async { - var bucket = BucketResource("bucketName", - client: resourceClient, storageListenerClient: storageListenerClient); + var bucket = BucketResource("bucketName"); when(() => storageListenerClient.listen(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -100,8 +105,7 @@ void main() { }); test('Test bucket on delete event', () async { - var bucket = BucketResource("bucketName", - client: resourceClient, storageListenerClient: storageListenerClient); + var bucket = BucketResource("bucketName"); when(() => storageListenerClient.listen(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -121,8 +125,7 @@ void main() { }); test('Test bucket event error', () async { - var bucket = BucketResource("bucketName", - client: resourceClient, storageListenerClient: storageListenerClient); + var bucket = BucketResource("bucketName"); when(() => storageListenerClient.listen(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -143,7 +146,7 @@ void main() { }); test("Test register bucket policies", () async { - var bucketResource = BucketResource("bucketName", client: resourceClient); + var bucketResource = BucketResource("bucketName"); var resourceIdentifier = $p.ResourceIdentifier(type: $p.ResourceType.Bucket, name: "bucketName"); diff --git a/test/src/resources/keyvalue_test.dart b/test/src/resources/keyvalue_test.dart index 78b3f16..3e79519 100644 --- a/test/src/resources/keyvalue_test.dart +++ b/test/src/resources/keyvalue_test.dart @@ -1,6 +1,7 @@ import 'package:mocktail/mocktail.dart'; import 'package:nitric_sdk/resources.dart'; -import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pb.dart' +import 'package:nitric_sdk/src/grpc_helper.dart'; +import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pbgrpc.dart' as $p; import 'package:nitric_sdk/src/resources/common.dart'; import 'package:test/test.dart'; @@ -10,18 +11,24 @@ import '../common.dart'; void main() { late MockResourceClient resourceClient; - setUp(() => resourceClient = MockResourceClient()); + setUp(() { + resourceClient = MockResourceClient(); + + ClientChannelSingleton.registerClientConstructors(Map.from({ + $p.ResourcesClient: resourceClient, + })); + }); tearDown(() => reset(resourceClient)); test("Test build key value resource", () async { - var kv = KeyValueStoreResource("kvStoreName", client: resourceClient); + var kv = KeyValueStoreResource("kvStoreName"); expect(kv.name, "kvStoreName"); }); test("Test register key value resource", () async { - var kv = KeyValueStoreResource("kvStoreName", client: resourceClient); + var kv = KeyValueStoreResource("kvStoreName"); var req = $p.ResourceDeclareRequest( id: $p.ResourceIdentifier( @@ -39,7 +46,7 @@ void main() { }); test("Test converting key value permissions to actions", () async { - var kv = KeyValueStoreResource("kvStoreName", client: resourceClient); + var kv = KeyValueStoreResource("kvStoreName"); var getActions = kv.permissionsToActions([KeyValueStorePermission.get]); expect(getActions, [$p.Action.KeyValueStoreRead]); @@ -64,8 +71,7 @@ void main() { }); test("Test register key value policies", () async { - var kvResource = - KeyValueStoreResource("keyvalueName", client: resourceClient); + var kvResource = KeyValueStoreResource("keyvalueName"); var resourceIdentifier = $p.ResourceIdentifier( type: $p.ResourceType.KeyValueStore, name: "keyvalueName"); diff --git a/test/src/resources/oidc_test.dart b/test/src/resources/oidc_test.dart index 88bba39..5e8cdab 100644 --- a/test/src/resources/oidc_test.dart +++ b/test/src/resources/oidc_test.dart @@ -1,5 +1,6 @@ import 'package:mocktail/mocktail.dart'; -import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pb.dart'; +import 'package:nitric_sdk/src/grpc_helper.dart'; +import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pbgrpc.dart'; import 'package:nitric_sdk/src/resources/common.dart'; import 'package:test/test.dart'; @@ -8,7 +9,13 @@ import '../common.dart'; void main() { late MockResourceClient resourceClient; - setUp(() => resourceClient = MockResourceClient()); + setUp(() { + resourceClient = MockResourceClient(); + + ClientChannelSingleton.registerClientConstructors(Map.from({ + ResourcesClient: resourceClient, + })); + }); tearDown(() => reset(resourceClient)); @@ -23,9 +30,8 @@ void main() { }); test("Test register oidc", () async { - var opts = OidcOptions( - "oidcName", "http://test-issuer", ["users"], ["user:read"], - client: resourceClient); + var opts = + OidcOptions("oidcName", "http://test-issuer", ["users"], ["user:read"]); var oidc = OidcSecurityDefinition("apiName", opts); diff --git a/test/src/resources/queue_test.dart b/test/src/resources/queue_test.dart index 39d2c10..e146bc8 100644 --- a/test/src/resources/queue_test.dart +++ b/test/src/resources/queue_test.dart @@ -1,6 +1,7 @@ import 'package:mocktail/mocktail.dart'; import 'package:nitric_sdk/resources.dart'; -import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pb.dart' +import 'package:nitric_sdk/src/grpc_helper.dart'; +import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pbgrpc.dart' as $p; import 'package:nitric_sdk/src/resources/common.dart'; import 'package:test/test.dart'; @@ -10,18 +11,24 @@ import '../common.dart'; void main() { late MockResourceClient resourceClient; - setUp(() => resourceClient = MockResourceClient()); + setUp(() { + resourceClient = MockResourceClient(); + + ClientChannelSingleton.registerClientConstructors(Map.from({ + $p.ResourcesClient: resourceClient, + })); + }); tearDown(() => reset(resourceClient)); test("Test build queue resource", () async { - var queue = QueueResource("queueName", client: resourceClient); + var queue = QueueResource("queueName"); expect(queue.name, "queueName"); }); test("Test register queue resource", () async { - var queue = QueueResource("queueName", client: resourceClient); + var queue = QueueResource("queueName"); var req = $p.ResourceDeclareRequest( id: $p.ResourceIdentifier( @@ -39,7 +46,7 @@ void main() { }); test("Test converting queue permissions to actions", () async { - var queue = QueueResource("queueName", client: resourceClient); + var queue = QueueResource("queueName"); var enqueueActions = queue.permissionsToActions([QueuePermission.enqueue]); expect(enqueueActions, [$p.Action.QueueEnqueue]); @@ -58,7 +65,7 @@ void main() { }); test("Test register queue policies", () async { - var queueResource = QueueResource("queueName", client: resourceClient); + var queueResource = QueueResource("queueName"); var resourceIdentifier = $p.ResourceIdentifier(type: $p.ResourceType.Queue, name: "queueName"); diff --git a/test/src/resources/schedule_test.dart b/test/src/resources/schedule_test.dart index 5b3aa4a..9d10aad 100644 --- a/test/src/resources/schedule_test.dart +++ b/test/src/resources/schedule_test.dart @@ -1,5 +1,6 @@ import 'package:mocktail/mocktail.dart'; -import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pb.dart'; +import 'package:nitric_sdk/src/grpc_helper.dart'; +import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pbgrpc.dart'; import 'package:nitric_sdk/src/nitric/proto/schedules/v1/schedules.pbgrpc.dart'; import 'package:nitric_sdk/src/resources/common.dart'; import 'package:test/test.dart'; @@ -15,6 +16,11 @@ void main() { setUp(() { schedulesClient = MockSchedulesClient(); resourceClient = MockResourceClient(); + + ClientChannelSingleton.registerClientConstructors(Map.from({ + ResourcesClient: resourceClient, + SchedulesClient: schedulesClient, + })); }); setUpAll(() { @@ -27,13 +33,13 @@ void main() { }); test("Test build schedule", () async { - var schedule = Schedule("scheduleName", client: resourceClient); + var schedule = Schedule("scheduleName"); expect(schedule.name, "scheduleName"); }); test("Test register schedule", () async { - var api = Schedule("scheduleName", client: resourceClient); + var api = Schedule("scheduleName"); var req = ResourceDeclareRequest( id: ResourceIdentifier( @@ -50,8 +56,7 @@ void main() { }); test('Test schedule every worker', () async { - var schedule = Schedule("scheduleName", - client: resourceClient, schedulesClient: schedulesClient); + var schedule = Schedule("scheduleName"); when(() => schedulesClient.schedule(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -69,8 +74,7 @@ void main() { }); test('Test schedule cron worker', () async { - var schedule = Schedule("scheduleName", - client: resourceClient, schedulesClient: schedulesClient); + var schedule = Schedule("scheduleName"); when(() => schedulesClient.schedule(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -88,8 +92,7 @@ void main() { }); test('Test schedule worker error', () async { - var schedule = Schedule("scheduleName", - client: resourceClient, schedulesClient: schedulesClient); + var schedule = Schedule("scheduleName"); when(() => schedulesClient.schedule(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ diff --git a/test/src/resources/secret_test.dart b/test/src/resources/secret_test.dart index 09b748c..0046407 100644 --- a/test/src/resources/secret_test.dart +++ b/test/src/resources/secret_test.dart @@ -1,6 +1,7 @@ import 'package:mocktail/mocktail.dart'; import 'package:nitric_sdk/resources.dart'; -import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pb.dart' +import 'package:nitric_sdk/src/grpc_helper.dart'; +import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pbgrpc.dart' as $p; import 'package:nitric_sdk/src/resources/common.dart'; import 'package:test/test.dart'; @@ -10,18 +11,24 @@ import '../common.dart'; void main() { late MockResourceClient resourceClient; - setUp(() => resourceClient = MockResourceClient()); + setUp(() { + resourceClient = MockResourceClient(); + + ClientChannelSingleton.registerClientConstructors(Map.from({ + $p.ResourcesClient: resourceClient, + })); + }); tearDown(() => reset(resourceClient)); test("Test build secret resource", () async { - var secret = SecretResource("secretName", client: resourceClient); + var secret = SecretResource("secretName"); expect(secret.name, "secretName"); }); test("Test register secret resource", () async { - var secret = SecretResource("secretName", client: resourceClient); + var secret = SecretResource("secretName"); var req = $p.ResourceDeclareRequest( id: $p.ResourceIdentifier( @@ -39,7 +46,7 @@ void main() { }); test("Test converting secret permissions to actions", () async { - var secret = SecretResource("secretName", client: resourceClient); + var secret = SecretResource("secretName"); var accessActions = secret.permissionsToActions([SecretPermission.access]); expect(accessActions, [$p.Action.SecretAccess]); @@ -58,7 +65,7 @@ void main() { }); test("Test register secret policies", () async { - var secretResource = SecretResource("secretName", client: resourceClient); + var secretResource = SecretResource("secretName"); var resourceIdentifier = $p.ResourceIdentifier(type: $p.ResourceType.Secret, name: "secretName"); diff --git a/test/src/resources/topic_test.dart b/test/src/resources/topic_test.dart index 975eb95..3d29c4a 100644 --- a/test/src/resources/topic_test.dart +++ b/test/src/resources/topic_test.dart @@ -1,6 +1,7 @@ import 'package:mocktail/mocktail.dart'; import 'package:nitric_sdk/src/google/protobuf/struct.pb.dart'; -import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pb.dart'; +import 'package:nitric_sdk/src/grpc_helper.dart'; +import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pbgrpc.dart'; import 'package:nitric_sdk/src/nitric/proto/topics/v1/topics.pbgrpc.dart'; import 'package:nitric_sdk/src/resources/common.dart'; import 'package:test/test.dart'; @@ -16,6 +17,11 @@ void main() { setUp(() { resourceClient = MockResourceClient(); subscriberClient = MockSubscriberClient(); + + ClientChannelSingleton.registerClientConstructors(Map.from({ + ResourcesClient: resourceClient, + SubscriberClient: subscriberClient, + })); }); setUpAll(() { @@ -28,13 +34,13 @@ void main() { }); test("Test build topic", () async { - var topic = Topic("topicName", client: resourceClient); + var topic = Topic("topicName"); expect(topic.name, "topicName"); }); test("Test register topic", () async { - var topic = Topic("topicName", client: resourceClient); + var topic = Topic("topicName"); var req = ResourceDeclareRequest( id: ResourceIdentifier(name: "topicName", type: ResourceType.Topic), @@ -51,7 +57,7 @@ void main() { }); test("Test register topic policies", () async { - var topicResource = Topic("topicName", client: resourceClient); + var topicResource = Topic("topicName"); var resourceIdentifier = ResourceIdentifier(type: ResourceType.Topic, name: "topicName"); @@ -75,15 +81,14 @@ void main() { }); test("Test converting topic permissions to actions", () async { - var topic = Topic("topicName", client: resourceClient); + var topic = Topic("topicName"); var actions = topic.permissionsToActions([TopicPermission.publish]); expect(actions, [Action.TopicPublish]); }); test('Test subscription worker', () async { - var topic = Topic("topicName", - client: resourceClient, subscriberClient: subscriberClient); + var topic = Topic("topicName"); when(() => subscriberClient.subscribe(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -102,8 +107,7 @@ void main() { }); test('Test subscription worker error ', () async { - var topic = Topic("topicName", - client: resourceClient, subscriberClient: subscriberClient); + var topic = Topic("topicName"); when(() => subscriberClient.subscribe(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ diff --git a/test/src/resources/websocket_test.dart b/test/src/resources/websocket_test.dart index 34c6086..fdd5b58 100644 --- a/test/src/resources/websocket_test.dart +++ b/test/src/resources/websocket_test.dart @@ -1,9 +1,10 @@ import 'dart:convert'; import 'package:mocktail/mocktail.dart'; -import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pb.dart'; +import 'package:nitric_sdk/nitric.dart'; +import 'package:nitric_sdk/src/grpc_helper.dart'; +import 'package:nitric_sdk/src/nitric/proto/resources/v1/resources.pbgrpc.dart'; import 'package:nitric_sdk/src/nitric/proto/websockets/v1/websockets.pbgrpc.dart'; -import 'package:nitric_sdk/src/resources/common.dart'; import 'package:test/test.dart'; import '../common.dart'; @@ -22,6 +23,12 @@ void main() { resourceClient = MockResourceClient(); websocketClient = MockWebsocketClient(); websocketHandlerClient = MockWebsocketHandlerClient(); + + ClientChannelSingleton.registerClientConstructors(Map.from({ + ResourcesClient: resourceClient, + WebsocketClient: websocketClient, + WebsocketHandlerClient: websocketHandlerClient, + })); }); setUpAll(() { @@ -35,13 +42,13 @@ void main() { }); test("Test build websocket", () async { - var websocket = Websocket("websocketName", client: resourceClient); + var websocket = Websocket("websocketName"); expect(websocket.name, "websocketName"); }); test("Test register websocket", () async { - var websocket = Websocket("websocketName", client: resourceClient); + var websocket = Websocket("websocketName"); var req = ResourceDeclareRequest( id: ResourceIdentifier( @@ -68,8 +75,7 @@ void main() { when(() => websocketClient.sendMessage(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var websocket = Websocket("socketName", - client: resourceClient, websocketClient: websocketClient); + var websocket = Websocket("socketName"); await websocket.send("connectionId", "hello world"); @@ -87,8 +93,7 @@ void main() { when(() => websocketClient.closeConnection(req)) .thenAnswer((_) => MockResponseFuture.value(resp)); - var websocket = Websocket("socketName", - client: resourceClient, websocketClient: websocketClient); + var websocket = Websocket("socketName"); await websocket.close("connectionId"); @@ -96,10 +101,7 @@ void main() { }); test('Test websocket connect worker', () async { - var websocket = Websocket("websocketName", - client: resourceClient, - websocketClient: websocketClient, - websocketHandlerClient: websocketHandlerClient); + var websocket = Websocket("websocketName"); when(() => websocketHandlerClient.handleEvents(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -121,10 +123,7 @@ void main() { }); test('Test websocket disconnect worker', () async { - var websocket = Websocket("websocketName", - client: resourceClient, - websocketClient: websocketClient, - websocketHandlerClient: websocketHandlerClient); + var websocket = Websocket("websocketName"); when(() => websocketHandlerClient.handleEvents(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -144,10 +143,7 @@ void main() { }); test('Test websocket message worker', () async { - var websocket = Websocket("websocketName", - client: resourceClient, - websocketClient: websocketClient, - websocketHandlerClient: websocketHandlerClient); + var websocket = Websocket("websocketName"); when(() => websocketHandlerClient.handleEvents(any())) .thenAnswer((_) => MockResponseStream.fromIterable([ @@ -167,10 +163,7 @@ void main() { }); test('Test websocket worker error', () async { - var websocket = Websocket("websocketName", - client: resourceClient, - websocketClient: websocketClient, - websocketHandlerClient: websocketHandlerClient); + var websocket = Websocket("websocketName"); when(() => websocketHandlerClient.handleEvents(any())) .thenAnswer((_) => MockResponseStream.fromIterable([