From f8507ed4bcc7425f4915a656083c9a617f52abb2 Mon Sep 17 00:00:00 2001 From: Zhaoyan Lin Date: Tue, 7 Apr 2020 20:21:05 +0000 Subject: [PATCH] Release of Version 1.3.1 --- README | 1 + aws-greengrass-core-sdk/index.js | 33 - aws-greengrass-core-sdk/iotdata.js | 232 - aws-greengrass-core-sdk/lambda.js | 191 - aws-greengrass-core-sdk/package.json | 17 - aws-greengrass-core-sdk/secretsmanager.js | 142 - .../stream-manager/client.js | 520 -- .../stream-manager/data/index.js | 6194 ---------------- .../stream-manager/exceptions.js | 43 - .../stream-manager/index.js | 9 - .../stream-manager/util.js | 188 - aws-greengrass-core-sdk/util.js | 41 - docs/.nojekyll | 0 docs/aws-greengrass-core-sdk.IotData.html | 1145 --- docs/aws-greengrass-core-sdk.Lambda.html | 585 -- ...ws-greengrass-core-sdk.SecretsManager.html | 435 -- ...dk.StreamManager.AppendMessageRequest.html | 1095 --- ...k.StreamManager.AppendMessageResponse.html | 1391 ---- ...core-sdk.StreamManager.ConnectRequest.html | 1391 ---- ...ore-sdk.StreamManager.ConnectResponse.html | 2279 ------ ...eamManager.CreateMessageStreamRequest.html | 799 --- ...amManager.CreateMessageStreamResponse.html | 1095 --- ...eamManager.DeleteMessageStreamRequest.html | 799 --- ...amManager.DeleteMessageStreamResponse.html | 1095 --- ...mManager.DescribeMessageStreamRequest.html | 799 --- ...Manager.DescribeMessageStreamResponse.html | 1391 ---- ...re-sdk.StreamManager.ExportDefinition.html | 1107 --- ...ass-core-sdk.StreamManager.HTTPConfig.html | 1724 ----- ...-sdk.StreamManager.IoTAnalyticsConfig.html | 2025 ------ ...-core-sdk.StreamManager.KinesisConfig.html | 1722 ----- ...-sdk.StreamManager.ListStreamsRequest.html | 503 -- ...sdk.StreamManager.ListStreamsResponse.html | 1391 ---- ...ngrass-core-sdk.StreamManager.Message.html | 1407 ---- ...s-core-sdk.StreamManager.MessageFrame.html | 799 --- ...StreamManager.MessageStreamDefinition.html | 2628 ------- ...nfo-MessageStreamInfo._exportStatuses.html | 310 - ...Info-MessageStreamInfo._storageStatus.html | 281 - ...e-sdk.StreamManager.MessageStreamInfo.html | 2996 -------- ...rass-core-sdk.StreamManager.Operation.html | 1195 ---- ...ss-core-sdk.StreamManager.Persistence.html | 312 - ...sdk.StreamManager.ReadMessagesOptions.html | 1422 ---- ...sdk.StreamManager.ReadMessagesRequest.html | 1095 --- ...dk.StreamManager.ReadMessagesResponse.html | 1391 ---- ...-sdk.StreamManager.ResponseStatusCode.html | 1279 ---- ...core-sdk.StreamManager.StrategyOnFull.html | 314 - ...sdk.StreamManager.StreamManagerClient.html | 1783 ----- ...aws-greengrass-core-sdk.StreamManager.html | 219 - docs/aws-greengrass-core-sdk.html | 150 - docs/fonts/OpenSans-Bold-webfont.eot | Bin 19544 -> 0 bytes docs/fonts/OpenSans-Bold-webfont.svg | 1830 ----- docs/fonts/OpenSans-Bold-webfont.woff | Bin 22432 -> 0 bytes docs/fonts/OpenSans-BoldItalic-webfont.eot | Bin 20133 -> 0 bytes docs/fonts/OpenSans-BoldItalic-webfont.svg | 1830 ----- docs/fonts/OpenSans-BoldItalic-webfont.woff | Bin 23048 -> 0 bytes docs/fonts/OpenSans-Italic-webfont.eot | Bin 20265 -> 0 bytes docs/fonts/OpenSans-Italic-webfont.svg | 1830 ----- docs/fonts/OpenSans-Italic-webfont.woff | Bin 23188 -> 0 bytes docs/fonts/OpenSans-Light-webfont.eot | Bin 19514 -> 0 bytes docs/fonts/OpenSans-Light-webfont.svg | 1831 ----- docs/fonts/OpenSans-Light-webfont.woff | Bin 22248 -> 0 bytes docs/fonts/OpenSans-LightItalic-webfont.eot | Bin 20535 -> 0 bytes docs/fonts/OpenSans-LightItalic-webfont.svg | 1835 ----- docs/fonts/OpenSans-LightItalic-webfont.woff | Bin 23400 -> 0 bytes docs/fonts/OpenSans-Regular-webfont.eot | Bin 19836 -> 0 bytes docs/fonts/OpenSans-Regular-webfont.svg | 1831 ----- docs/fonts/OpenSans-Regular-webfont.woff | Bin 22660 -> 0 bytes docs/global.html | 1117 --- docs/index.html | 204 - docs/index.js.html | 84 - docs/iotdata.js.html | 283 - docs/lambda.js.html | 242 - docs/scripts/linenumber.js | 25 - docs/scripts/prettify/Apache-License-2.0.txt | 202 - docs/scripts/prettify/lang-css.js | 2 - docs/scripts/prettify/prettify.js | 28 - docs/secretsmanager.js.html | 193 - docs/stream-manager_client.js.html | 571 -- docs/stream-manager_data_index.js.html | 6244 ----------------- docs/stream-manager_index.js.html | 60 - docs/styles/jsdoc-default.css | 358 - docs/styles/prettify-jsdoc.css | 111 - docs/styles/prettify-tomorrow.css | 132 - greengrassExamples/HelloWorld/index.js | 1 - .../LambdaInvoke/invokerbinary.js | 2 +- .../LambdaInvoke/invokerjson.js | 2 +- .../StreamManagerKinesis/index.js | 85 - greengrassExamples/TES/README | 2 +- manual/AWS/IotData.html | 686 ++ manual/AWS/Lambda.html | 406 ++ manual/AWS/SecretsManager.html | 288 + manual/class_list.html | 96 + manual/css/common.css | 6 + manual/css/full_list.css | 58 + manual/css/highlight.github.css | 127 + manual/css/style.css | 484 ++ manual/index.html | 241 + manual/js/app.js | 243 + manual/js/full_list.js | 216 + manual/js/highlight.pack.js | 1 + manual/js/jquery.js | 4 + readme.md | 2 +- sdk/aws-greengrass-core-sdk-js.tar.gz | Bin 0 -> 7167 bytes 102 files changed, 2861 insertions(+), 68895 deletions(-) create mode 100644 README delete mode 100644 aws-greengrass-core-sdk/index.js delete mode 100644 aws-greengrass-core-sdk/iotdata.js delete mode 100644 aws-greengrass-core-sdk/lambda.js delete mode 100644 aws-greengrass-core-sdk/package.json delete mode 100644 aws-greengrass-core-sdk/secretsmanager.js delete mode 100644 aws-greengrass-core-sdk/stream-manager/client.js delete mode 100644 aws-greengrass-core-sdk/stream-manager/data/index.js delete mode 100644 aws-greengrass-core-sdk/stream-manager/exceptions.js delete mode 100644 aws-greengrass-core-sdk/stream-manager/index.js delete mode 100644 aws-greengrass-core-sdk/stream-manager/util.js delete mode 100644 aws-greengrass-core-sdk/util.js delete mode 100644 docs/.nojekyll delete mode 100644 docs/aws-greengrass-core-sdk.IotData.html delete mode 100644 docs/aws-greengrass-core-sdk.Lambda.html delete mode 100644 docs/aws-greengrass-core-sdk.SecretsManager.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.AppendMessageRequest.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.AppendMessageResponse.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.ConnectRequest.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.ConnectResponse.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.CreateMessageStreamRequest.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.CreateMessageStreamResponse.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamRequest.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamResponse.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamRequest.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.ExportDefinition.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.HTTPConfig.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.KinesisConfig.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.ListStreamsRequest.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.ListStreamsResponse.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.Message.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.MessageFrame.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.MessageStreamInfo-MessageStreamInfo._exportStatuses.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.MessageStreamInfo-MessageStreamInfo._storageStatus.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.MessageStreamInfo.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.Operation.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.Persistence.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.ReadMessagesRequest.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.ResponseStatusCode.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.StrategyOnFull.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.StreamManagerClient.html delete mode 100644 docs/aws-greengrass-core-sdk.StreamManager.html delete mode 100644 docs/aws-greengrass-core-sdk.html delete mode 100644 docs/fonts/OpenSans-Bold-webfont.eot delete mode 100644 docs/fonts/OpenSans-Bold-webfont.svg delete mode 100644 docs/fonts/OpenSans-Bold-webfont.woff delete mode 100644 docs/fonts/OpenSans-BoldItalic-webfont.eot delete mode 100644 docs/fonts/OpenSans-BoldItalic-webfont.svg delete mode 100644 docs/fonts/OpenSans-BoldItalic-webfont.woff delete mode 100644 docs/fonts/OpenSans-Italic-webfont.eot delete mode 100644 docs/fonts/OpenSans-Italic-webfont.svg delete mode 100644 docs/fonts/OpenSans-Italic-webfont.woff delete mode 100644 docs/fonts/OpenSans-Light-webfont.eot delete mode 100644 docs/fonts/OpenSans-Light-webfont.svg delete mode 100644 docs/fonts/OpenSans-Light-webfont.woff delete mode 100644 docs/fonts/OpenSans-LightItalic-webfont.eot delete mode 100644 docs/fonts/OpenSans-LightItalic-webfont.svg delete mode 100644 docs/fonts/OpenSans-LightItalic-webfont.woff delete mode 100644 docs/fonts/OpenSans-Regular-webfont.eot delete mode 100644 docs/fonts/OpenSans-Regular-webfont.svg delete mode 100644 docs/fonts/OpenSans-Regular-webfont.woff delete mode 100644 docs/global.html delete mode 100644 docs/index.html delete mode 100644 docs/index.js.html delete mode 100644 docs/iotdata.js.html delete mode 100644 docs/lambda.js.html delete mode 100644 docs/scripts/linenumber.js delete mode 100644 docs/scripts/prettify/Apache-License-2.0.txt delete mode 100644 docs/scripts/prettify/lang-css.js delete mode 100644 docs/scripts/prettify/prettify.js delete mode 100644 docs/secretsmanager.js.html delete mode 100644 docs/stream-manager_client.js.html delete mode 100644 docs/stream-manager_data_index.js.html delete mode 100644 docs/stream-manager_index.js.html delete mode 100644 docs/styles/jsdoc-default.css delete mode 100644 docs/styles/prettify-jsdoc.css delete mode 100644 docs/styles/prettify-tomorrow.css delete mode 100644 greengrassExamples/StreamManagerKinesis/index.js create mode 100644 manual/AWS/IotData.html create mode 100644 manual/AWS/Lambda.html create mode 100644 manual/AWS/SecretsManager.html create mode 100644 manual/class_list.html create mode 100644 manual/css/common.css create mode 100644 manual/css/full_list.css create mode 100644 manual/css/highlight.github.css create mode 100644 manual/css/style.css create mode 100644 manual/index.html create mode 100644 manual/js/app.js create mode 100644 manual/js/full_list.js create mode 100644 manual/js/highlight.pack.js create mode 100644 manual/js/jquery.js create mode 100644 sdk/aws-greengrass-core-sdk-js.tar.gz diff --git a/README b/README new file mode 100644 index 0000000..75ddbcd --- /dev/null +++ b/README @@ -0,0 +1 @@ +Instructions can be found under manual/index.html \ No newline at end of file diff --git a/aws-greengrass-core-sdk/index.js b/aws-greengrass-core-sdk/index.js deleted file mode 100644 index 3b81684..0000000 --- a/aws-greengrass-core-sdk/index.js +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. - */ -exports.GreengrassInterfaceVersion = '1.5'; - -/** - * @namespace aws-greengrass-core-sdk - */ - -const fail = (name, error) => { - console.error(`Unable to load aws-greengrass-core-sdk.${name} due to: `, error); -}; - -try { - exports.Lambda = require('./lambda'); -} catch (e) { - fail('Lambda', e); -} -try { - exports.IotData = require('./iotdata'); -} catch (e) { - fail('IotData', e); -} -try { - exports.SecretsManager = require('./secretsmanager'); -} catch (e) { - fail('SecretsManager', e); -} -try { - exports.StreamManager = require('./stream-manager'); -} catch (e) { - fail('StreamManager', e); -} diff --git a/aws-greengrass-core-sdk/iotdata.js b/aws-greengrass-core-sdk/iotdata.js deleted file mode 100644 index 412d201..0000000 --- a/aws-greengrass-core-sdk/iotdata.js +++ /dev/null @@ -1,232 +0,0 @@ -/* - * Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - */ - -const { Buffer } = require('buffer'); - -const GreengrassCommon = require('aws-greengrass-common-js'); -const Lambda = require('./lambda'); -const Util = require('./util'); - -const { envVars } = GreengrassCommon; -const { MY_FUNCTION_ARN } = envVars; -const { SHADOW_FUNCTION_ARN } = envVars; -const { ROUTER_FUNCTION_ARN } = envVars; - -/** - * Constructs a service interface object. Each API operation is exposed as a function on service. - * - * @class - * @memberOf aws-greengrass-core-sdk - * - * @example Sending a Request Using IotData - * var iotdata = new GG.IotData(); - * iotdata.getThingShadow(params, function (err, data) { - * if (err) console.log(err, err.stack); // an error occurred - * else console.log(data); // successful response - * }); - */ -class IotData { - /** - * Constructs a service object. This object has one method for each API operation. - * - * @example Constructing a IotData object - * var iotdata = new GG.IotData(); - */ - constructor() { - this.lambda = new Lambda(); - } - - /** - * Called when a response from the service is returned. - * - * @callback iotDataCallback - * @param err {Error} The error object returned from the request. Set to null if the request is successful. - * @param data {Object} The de-serialized data returned from the request. Set to null if a request error occurs. - * @param data.payload {Buffer|TypedArray|Blob|String} The state information in JSON format - */ - /** - * Gets the thing shadow for the specified thing. - * - * @param params {Object} - * @param params.thingName {String} The name of the thing. - * @param callback {iotDataCallback} The callback. - * - * @example Calling the getThingShadow operation - * var params = { - * thingName: 'STRING_VALUE' // required - * }; - * iotdata.getThingShadow(params, function(err, data) { - * if (err) console.log(err, err.stack); // an error occurred - * else console.log(data); // successful response - * }); - */ - getThingShadow(params, callback) { - const thingName = Util.getParameter(params, 'thingName'); - if (thingName === undefined) { - callback(new Error('"thingName" is a required parameter.'), null); - return; - } - - const payload = ''; - this._shadowOperation('get', thingName, payload, callback); - } - - /** - * Updates the thing shadow for the specified thing. - * - * @param params {Object} - * @param params.thingName {String} The name of the thing. - * @param params.payload {String} The state information as a JSON string. - * @param callback {iotDataCallback} The callback. - * - * @example Calling the updateThingShadow operation - * var params = { - * payload: 'Proper JSON data', // required - * thingName: 'STRING_VALUE' // required - * }; - * iotdata.updateThingShadow(params, function(err, data) { - * if (err) console.log(err, err.stack); // an error occurred - * else console.log(data); // successful response - * }); - */ - updateThingShadow(params, callback) { - const thingName = Util.getParameter(params, 'thingName'); - if (thingName === undefined) { - callback(new Error('"thingName" is a required parameter.'), null); - return; - } - - const payload = Util.getParameter(params, 'payload'); - if (payload === undefined) { - callback(new Error('"payload" is a required parameter.'), null); - return; - } - - this._shadowOperation('update', thingName, payload, callback); - } - - /** - * Call shadow lambda to delete the shadow state. - * - * @param params {Object} - * @param params.thingName {String} The name of the thing whose shadow should be deleted. - * @param callback {iotDataCallback} The callback. - */ - deleteThingShadow(params, callback) { - const thingName = Util.getParameter(params, 'thingName'); - if (thingName === undefined) { - callback(new Error('"thingName" is a required parameter.'), null); - return; - } - - const payload = ''; - this._shadowOperation('delete', thingName, payload, callback); - } - - /** - * Publishes a message within Greengrass. - * - * @param params {Object} - * @param params.topic {String} The name of the MQTT topic. - * @param params.payload {Buffer|TypedArray|Blob|String} The payload to be sent. - * @param params.queueFullPolicy {'AllOrError'|'BestEffort'} Specify whether to enforce message delivery to all destinations. Options are 'AllOrError' and 'BestEffort'. Defaults to 'BestEffort' when omitted. - * @param callback {iotDataCallback} The callback. - * - * @example Calling the publish operation - * var params = { - * topic: 'STRING_VALUE', // required - * payload: new Buffer('...') || 'STRING_VALUE', - * queueFullPolicy: 'AllOrError' || 'BestEffort' - * }; - * iotdata.publish(params, function(err, data) { - * if (err) console.log(err, err.stack); // an error occurred - * else console.log(data); // successful response - * }); - */ - publish(params, callback) { - const topic = Util.getParameter(params, 'topic'); - if (topic === undefined) { - callback(new Error('"topic" is a required parameter'), null); - return; - } - - const payload = Util.getParameter(params, 'payload'); - if (payload === undefined) { - callback(new Error('"payload" is a required parameter'), null); - return; - } - - // this is an optional parameter - const queueFullPolicy = Util.getParameter(params, 'queueFullPolicy'); - - const context = { - custom: { - source: MY_FUNCTION_ARN, - subject: topic, - queueFullPolicy: '', - }, - }; - - switch (queueFullPolicy) { - case 'BestEffort': - case 'AllOrError': - context.custom.queueFullPolicy = queueFullPolicy; - break; - case '': - case undefined: - case null: - break; - default: - callback(new Error(`queueFullPolicy "${queueFullPolicy}" is not supported`), null); - break; - } - - const buff = Buffer.from(JSON.stringify(context)); - const clientContext = buff.toString('base64'); - - const invokeParams = { - FunctionName: ROUTER_FUNCTION_ARN, - InvocationType: 'Event', - ClientContext: clientContext, - Payload: payload, - }; - - console.log(`Publishing message on topic "${topic}" with Payload "${payload}"`); - - this.lambda.invoke(invokeParams, (err, data) => { - if (err) { - callback(err, null); // an error occurred - } else { - callback(null, data); // successful response - } - }); - } - - _shadowOperation(operation, thingName, payload, callback) { - const topic = `$aws/things/${thingName}/shadow/${operation}`; - const context = { - custom: { - subject: topic, - }, - }; - - const clientContext = Buffer.from(JSON.stringify(context)).toString('base64'); - const invokeParams = { - FunctionName: SHADOW_FUNCTION_ARN, - ClientContext: clientContext, - Payload: payload, - }; - - console.log(`Calling shadow service on topic "${topic}" with payload "${payload}"`); - this.lambda.invoke(invokeParams, (err, data) => { - if (err) { - callback(err, null); - } else { - callback(null, data); - } - }); - } -} - -module.exports = IotData; diff --git a/aws-greengrass-core-sdk/lambda.js b/aws-greengrass-core-sdk/lambda.js deleted file mode 100644 index dda7ec7..0000000 --- a/aws-greengrass-core-sdk/lambda.js +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - */ - -const IPCClient = require('aws-greengrass-ipc-sdk-js'); -const GreengrassCommon = require('aws-greengrass-common-js'); -const { logging } = require('aws-greengrass-common-js'); -const Util = require('./util'); - -const { AUTH_TOKEN } = GreengrassCommon.envVars; - -const logger = new logging.LocalWatchLogger(); - -/** - * Constructs a service interface object. Each API operation is exposed as a function on service. - * @class - * @memberOf aws-greengrass-core-sdk - */ -class Lambda { - /** - * Constructs a service object. This object has one method for each API operation. - * - * @example Constructing a Lambda object - * var lambda = new GG.Lambda(); - */ - constructor() { - this.ipc = new IPCClient(AUTH_TOKEN); - } - - /** - * Called when a response from the service is returned. - * - * @callback lambdaCallback - * @param err {Error} The error object returned from the request. Set to null if the request is successful. - * @param data {Object} The de-serialized data returned from the request. Set to null if a request error occurs. - * @param data.StatusCode {Integer} The HTTP status code will be in the 200 range for successful request. For the RequestResponse invocation type this status code will be 200. - * For the Event invocation type this status code will be 202. - * @param data.FunctionError {String} Indicates whether an error occurred while executing the Lambda function. If an error occurred this field will have one of two values; Handled or Unhandled. - * Handled errors are errors that are reported by the function while the Unhandled errors are those detected and reported by AWS Lambda. - * Unhandled errors include out of memory errors and function timeouts. For information about how to report an Handled error, - * see Programming Model. - * @param data.Payload {Buffer|TypedArray|Blob|String} It is the result returned by the Lambda function. This is present only if the invocation type is RequestResponse. - *
In the event of a function error this field contains a message describing the error. For the Handled errors the Lambda function will report this message. For Unhandled errors AWS Lambda reports the message. - */ - - /** - * Invokes a specific Lambda function.
- * In Greengrass, version of the Lambda which you would like to invoke needs to be provided. - * - * @param params {Object} - * @param params.FunctionName {String} The Lambda function name. You can specify Amazon Resource Name (ARN) of the function (for example, arn:aws:lambda:us-west-2:account-id:function:ThumbNail). - * @param params.InvocationType {String?} By default, the Invoke API assumes RequestResponse invocation type. - * You can optionally request asynchronous execution by specifying Event as the InvocationType. Possible values include: - * - * @param params.ClientContext {String?} Using the ClientContext you can pass client-specific information to the Lambda function you are invoking. - * You can then process the client information in your Lambda function as you choose through the context variable. - * For an example of a ClientContext JSON, see the main page or an example folder for an example. - *
The ClientContext JSON must be base64-encoded. - * @param params.Payload {Buffer|TypedArray|Blob|String} Payload that you want to provide to your Lambda function as input. - * @param params.Qualifier {String?} You can use this optional parameter to specify a Lambda function version if it was not included in the FunctionName field. - * If you specify a function version, the API uses the qualified function ARN to invoke a specific Lambda function. - *
If you don't provide this parameter, then the API uses the FunctionName field only. If it does not have a version number of the target lambda, the call will fail. - * @param callback {lambdaCallback} The callback. - * - * @example To invoke a Lambda function - * //This operation invokes a Lambda function - * - * var params = { - * ClientContext: "MyApp", - * FunctionName: "MyFunction", - * InvocationType: "Event", - * Payload: , - * Qualifier: "1" - * }; - * lambda.invoke(params, function(err, data) { - * if (err) console.log(err, err.stack); // an error occurred - * else console.log(data); // successful response - * }); - * - * @example Calling the invoke operation - * var params = { - * FunctionName: 'STRING_VALUE', // required - * ClientContext: 'STRING_VALUE', - * InvocationType: Event | RequestResponse, - * Payload: , - * Qualifier: 'STRING_VALUE' - * }; - * lambda.invoke(params, function(err, data) { - * if (err) console.log(err, err.stack); // an error occurred - * else console.log(data); // successful response - * }); - */ - invoke(params, callback) { - const functionName = Util.getParameter(params, 'FunctionName'); - if (functionName === undefined) { - callback(new Error('"FunctionName" is a required parameter'), null); - return; - } - - let arnFields; - try { - arnFields = new GreengrassCommon.FunctionArnFields(functionName); - } catch (e) { - callback(new Error(`FunctionName is malformed: ${e}`), null); - return; - } - - let invocationType; - if (params.InvocationType === undefined || params.InvocationType === null) { - invocationType = 'RequestResponse'; - } else { - invocationType = params.InvocationType; - } - - if (invocationType !== 'Event' && invocationType !== 'RequestResponse') { - callback(new Error(`InvocationType '${invocationType}' is incorrect, should be 'Event' or 'RequestResponse'`), null); - return; - } - - const clientContext = params.ClientContext ? params.ClientContext : ''; - const payload = params.Payload; - const qualifier = params.Qualifier; - - if (!Util.isValidQualifier(qualifier)) { - callback(new Error(`Qualifier '${qualifier}' is incorrect`), null); - return; - } - - const qualifierInternal = arnFields.qualifier; - - // generate the right full function arn with qualifier - if (qualifierInternal && qualifier && qualifierInternal !== qualifier) { - callback(new Error(`Qualifier '${qualifier}' does not match the version in FunctionName`), null); - return; - } - - const finalQualifier = qualifierInternal === undefined || qualifierInternal == null ? qualifier : qualifierInternal; - - let functionArn; - if (typeof GreengrassCommon.buildFunctionArn === 'function') { - // GGC v1.9.0 or newer - functionArn = GreengrassCommon.buildFunctionArn( - arnFields.unqualifiedArn, - finalQualifier, - ); - } else { - // older version of GGC - throw new Error('Function buildFunctionArn not found. buildFunctionArn is introduced in GGC v1.9.0. ' - + 'Please check your GGC version.'); - } - - // verify client context is base64 encoded - if (Object.prototype.hasOwnProperty.call(params, 'ClientContext')) { - const cxt = params.ClientContext; - if (!Util.isValidContext(cxt)) { - callback(new Error('Client Context is invalid'), null); - return; - } - } - - logger.debug(`Invoking local lambda ${functionArn} with payload ${payload} and client context ${clientContext}`); - - this.ipc.postWork(functionArn, payload, clientContext, invocationType, (postWorkErr, invocationId) => { - if (postWorkErr) { - logger.error(`Failed to invoke function due to ${postWorkErr}`); - callback(postWorkErr, null); - return; - } - - if (invocationType === 'RequestResponse') { - this.ipc.getWorkResult(functionArn, invocationId, (getWorkResultErr, body, functionErr, statusCode) => { - if (getWorkResultErr) { - logger.error(`Failed to get work result due to ${getWorkResultErr}`); - callback(getWorkResultErr, null); - return; - } - const data = { - FunctionError: functionErr, - StatusCode: statusCode, - Payload: body, - }; - callback(null, data); - }); - } else { - callback(null, invocationId); - } - }); - } -} - -module.exports = Lambda; diff --git a/aws-greengrass-core-sdk/package.json b/aws-greengrass-core-sdk/package.json deleted file mode 100644 index b61949f..0000000 --- a/aws-greengrass-core-sdk/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "aws-greengrass-core-sdk", - "version": "1.6.0", - "main": "index.js", - "dependencies": { - "cbor": "5.0.1" - }, - "license": "Apache-2.0", - "author": { - "name": "Amazon Web Services", - "url": "https://aws.amazon.com" - }, - "repository": { - "type": "git", - "url": "git://github.com/aws/aws-greengrass-core-sdk-js" - } -} diff --git a/aws-greengrass-core-sdk/secretsmanager.js b/aws-greengrass-core-sdk/secretsmanager.js deleted file mode 100644 index ef6103b..0000000 --- a/aws-greengrass-core-sdk/secretsmanager.js +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - */ -const { Buffer } = require('buffer'); - -const GreengrassCommon = require('aws-greengrass-common-js'); -const Lambda = require('./lambda'); -const Util = require('./util'); - -const KEY_SECRET_ID = 'SecretId'; -const KEY_VERSION_ID = 'VersionId'; -const KEY_VERSION_STAGE = 'VersionStage'; -const KEY_SECRET_ARN = 'ARN'; -const KEY_SECRET_NAME = 'Name'; -const KEY_CREATED_DATE = 'CreatedDate'; - -const { envVars } = GreengrassCommon; -const { SECRETS_MANAGER_FUNCTION_ARN } = envVars; - -/** - * Constructs a service interface object. Each API operation is exposed as a function on service. - * @class - * @memberOf aws-greengrass-core-sdk - */ -class SecretsManager { - /** - * Constructs a service object. This object has one method for each API operation. - * - * @example Constructing a SecretsManager object - * var secretsmanager = new GG.SecretsManager(); - */ - constructor() { - this.lambda = new Lambda(); - } - - /** - * Called when a response from the service is returned. - * - * @callback secretsManagerCallback - * @param err {Error} The error object returned from the request. Set to null if the request is successful. - * @param data {Object} The de-serialized data returned from the request. Set to null if a request error occurs. - * @param data.ARN {String} The ARN of the secret. - * @param data.Name {String} The friendly name of the secret. - * @param data.VersionId {String} The unique identifier of this version of the secret. - * @param data.SecretBinary {Buffer|TypedArray|Blob|String} The decrypted part of the protected secret information that was originally provided as binary data in the form of a byte array. - * The response parameter represents the binary data as a base64-encoded string. - * @param data.SecretString {String} The decrypted part of the protected secret information that was originally provided as a string. - * @param data.VersionStages {String[]} Specifies the secret version that you want to retrieve by the staging label attached to the version. - *
Staging labels are used to keep track of different versions during the rotation process. - */ - - /** - * Retrieves a specific local secret value. - * - * @param params {Object} - * @param params.SecretId {String} Specifies the secret containing the version that you want to retrieve. You can specify either the Amazon Resource Name (ARN) or the friendly name of the secret. - * @param params.VersionStage {String} Specifies the secret version that you want to retrieve by the staging label attached to the version. - *
Staging labels are used to keep track of different versions during the rotation process. - * @param callback {secretsManagerCallback} The callback. - * - * @example Retrieving a local secret value - * // This operation retrieves a local secret value - * - * var params = { - * SecretId: "STRING_VALUE", - * VersionStage: "STRING_VALUE" - * }; - * secretsmanager.getSecretValue(params, function(err, data) { - * if (err) console.log(err, err.stack); // an error occurred - * else console.log(data); // successful response - * }); - */ - getSecretValue(params, callback) { - const secretId = Util.getParameter(params, KEY_SECRET_ID); - const versionId = Util.getParameter(params, KEY_VERSION_ID); - const versionStage = Util.getParameter(params, KEY_VERSION_STAGE); - - if (secretId === undefined) { - callback(new Error(`"${KEY_SECRET_ID}" is a required parameter`), null); - return; - } - // TODO: Remove this once we support query by VersionId - if (versionId !== undefined) { - callback(new Error('Query by VersionId is not yet supported'), null); - return; - } - if (versionId !== undefined && versionStage !== undefined) { - callback(new Error('VersionId and VersionStage cannot both be specified at the same time'), null); - return; - } - - const getSecretValueRequestBytes = SecretsManager._generateGetSecretValueRequestBytes(secretId, versionId, versionStage); - - const invokeParams = { - FunctionName: SECRETS_MANAGER_FUNCTION_ARN, - Payload: getSecretValueRequestBytes, - }; - - console.log(`Getting secret value from secrets manager: ${getSecretValueRequestBytes}`); - - this.lambda.invoke(invokeParams, (err, data) => { - if (err) { - callback(err, null); // an error occurred - } else if (SecretsManager._is200Response(data.Payload)) { - callback(null, data.Payload); // successful response - } else { - callback(new Error(JSON.stringify(data.Payload)), null); // error response - } - }); - } - - static _generateGetSecretValueRequestBytes(secretId, versionId, versionStage) { - const request = { - SecretId: secretId, - }; - - if (versionStage !== undefined) { - request.VersionStage = versionStage; - } - - if (versionId !== undefined) { - request.VersionId = versionId; - } - - return Buffer.from(JSON.stringify(request)); - } - - static _is200Response(payload) { - const hasSecretArn = this._stringContains(payload, KEY_SECRET_ARN); - const hasSecretName = this._stringContains(payload, KEY_SECRET_NAME); - const hasVersionId = this._stringContains(payload, KEY_VERSION_ID); - const hasCreatedDate = this._stringContains(payload, KEY_CREATED_DATE); - - return hasSecretArn && hasSecretName && hasVersionId && hasCreatedDate; - } - - static _stringContains(src, target) { - return src.indexOf(target) > -1; - } -} - -module.exports = SecretsManager; diff --git a/aws-greengrass-core-sdk/stream-manager/client.js b/aws-greengrass-core-sdk/stream-manager/client.js deleted file mode 100644 index 2f88686..0000000 --- a/aws-greengrass-core-sdk/stream-manager/client.js +++ /dev/null @@ -1,520 +0,0 @@ -'use strict'; - -/* eslint-disable no-restricted-syntax */ -/* - * Copyright (c) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. - */ - -const cbor = require('cbor'); -const net = require('net'); -const smData = require('aws-greengrass-core-sdk/stream-manager/data'); -const exceptions = require('./exceptions'); -const util = require('./util'); - -// Consts -const PROTOCOL_VERSION = '1.0.0'; -const SDK_VERSION = '1.0.0'; -const CONNECT_VERSION = 1; - -const removeFromArray = (arr, f) => { - arr.indexOf(f) !== -1 && arr.splice(arr.indexOf(f), 1); -}; - -/** - * Stream manager client - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - * - * @example StreamManager Usage - * const { StreamManagerClient } = require('aws-greengrass-core-sdk/stream-manager'); - * const client = new StreamManagerClient(); - * c.onConnected(async () => { - * // Do work with the client (c) here. - * }); - */ -class StreamManagerClient { - #closed = false; - - /** - * @type {module:net.Socket} - */ - #socket = null; - - #authToken = null; - - #connected = false; - - /** - * @typedef Logger - * @type {Object} - * @property {function(...*)} error - * @property {function(...*)} info - * @property {function(...*)} debug - */ - - /** - * @type {?Logger} - */ - #logger = null; - - #requestMap = {}; - - connectCallbacks = []; - - errorCallbacks = []; - - #defaultParams = { - port: null, - host: '127.0.0.1', - onConnectCb: null, - onErrorCb: null, - logger: { - error: console.error, - debug: console.debug, - info: console.info, - }, - }; - - /** - * Constructs a new Stream Manager client. Once connected, onConnectCb will be called and - * the client can then be used. - * - * @param {Object?} opts All these options are optional. - * @param {Number} opts.port - * @param {String} opts.host - * @param {Function?} opts.onConnectCb Optional callback to be called once the client has connected. - * @param {Function(Error)?} opts.onErrorCb Optional, but highly suggested callback to be called when a connection error occurs. - * @param {Logger?} opts.logger - */ - constructor(opts) { - let { - // eslint-disable-next-line prefer-const - port, host, onConnectCb, onErrorCb, logger, - } = { - // Apply defaults - ...this.#defaultParams, - // Then possibly override them with what the user set - ...opts, - }; - - if (port === null) { - port = parseInt(process.env.STREAM_MANAGER_SERVER_PORT || 8088, 10); - } - this.#logger = logger; - this.port = port; - this.host = host; - this.#authToken = process.env.AWS_CONTAINER_AUTHORIZATION_TOKEN || null; - - if (typeof onConnectCb === 'function') { - this.onConnected(onConnectCb); - } - if (typeof onErrorCb === 'function') { - this.onError(onErrorCb); - } - - this.__connect(); - } - - async __connect() { - try { - await new Promise((resolve, reject) => { - if (this.#closed) { - return reject(new exceptions.StreamManagerException('Client is closed and cannot be reopened')); - } - if (this.#connected) { - return resolve(); - } - - const newSock = net.createConnection({ - port: this.port, - host: this.host, - // Set high water mark so that we can read 1 full packet (1GB) at a time instead of needing to - // try to read multiple times and combine the results. The HWM adjusts how much the socket will - // buffer when reading. - readableHighWaterMark: util.MAX_PACKET_SIZE, - }, async () => { - try { - // Connection started - this.#logger.debug(`Opening connection to ${this.host}:${this.port}`); - this.#connected = false; - - const request = new smData.ConnectRequest() - .withProtocolVersion(PROTOCOL_VERSION) - .withSdkVersion(SDK_VERSION) - .withAuthToken(this.#authToken) - .withRequestId(util.uuidv4()); - - // Write the connect version - newSock.write(util.intToBuffer(CONNECT_VERSION, 1)); - - // Write request to socket - const frame = new smData.MessageFrame(smData.Operation.Connect, cbor.encode(request.asMap())); - const byteFrame = util.encodeFrame(frame); - newSock.write(byteFrame.header); - newSock.write(byteFrame.payload); - - await this.__read(newSock); - // Only now that we're connected should we set/replace the socket - this.#socket = newSock; - resolve(); - } catch (errors) { - reject(errors); - } - }); - - newSock.on('error', (e) => { - this.#logger.error(e); - this.errorCallbacks.forEach((f) => f(e)); - newSock.end(); - - if (!this.#connected) { - reject(e); - } - }); - - newSock.on('end', () => { - this.#logger.info('Socket is ending'); - }); - - newSock.on('close', () => { - newSock.destroy(); - this.#connected = false; - }); - }); - - // Set us to be in connected mode - this.#connected = true; - this.#logger.info('Successfully connected'); - this.connectCallbacks.forEach((f) => { - try { - f(); - } finally { - // After calling the connect callback remove it so we don't call it multiple times. - // A client should only connect once. - removeFromArray(this.connectCallbacks, f); - } - }); - } catch (e) { - this.#logger.error(e); - this.errorCallbacks.forEach((f) => f(e)); - throw e; - } - } - - __readSocket(n, socket, resolve = null, reject = null) { - if (resolve && reject) { - if (this.#closed) { - reject(); - } - - const r = socket.read(n); - if (r === null) { - socket.once('readable', () => { - this.__readSocket(n, socket, resolve, reject); - }); - return; - } - resolve(r); - return; - } - - return new Promise((res, rej) => { - if (this.#closed) { - rej(); - } - this.__readSocket(n, socket, res, rej); - }); - } - - async __read(socket = this.#socket) { - if (this.#connected) { - const frame = await this.__readMessageFrame(socket); - this.__handleReadResponse(cbor.decodeFirstSync(frame.payload), frame); - } else { - // Read connect version - const connectResponseVersion = util.intFromBuffer(await this.__readSocket(1, socket)); - if (connectResponseVersion !== CONNECT_VERSION) { - this.#logger.error('Unexpected response from the server, Connect version:', connectResponseVersion); - throw new exceptions.ConnectFailedException('Failed to establish connection with the server'); - } - - // Read connect response - let response = await this.__readMessageFrame(socket); - - if (response.operation === smData.Operation.ConnectResponse) { - const payload = cbor.decodeFirstSync(response.payload); - response = smData.ConnectResponse.fromMap(payload); - this.#logger.debug('Received ConnectResponse from server:', response); - } else { - this.#logger.error('Received data with unexpected operation', response.operation); - throw new exceptions.ConnectFailedException('Failed to establish connection with the server'); - } - - if (response.status !== smData.ResponseStatusCode.Success) { - this.#logger.error('Received ConnectResponse with unexpected status', response.status); - throw new exceptions.ConnectFailedException('Failed to establish connection with the server'); - } - } - - // Put ourselves back in the event loop to handle the next messages - setImmediate(async () => { - try { - await this.__read(); - } catch (e) { - // Only bubble up the errors when we're actually connected and not closed - if (this.#connected && !this.#closed) { - this.errorCallbacks.forEach((f) => f(e)); - } - } - }); - } - - async __readMessageFrame(socket) { - const length = util.intFromBuffer(await this.__readSocket(4, socket)); - const operation = util.intFromBuffer(await this.__readSocket(1, socket)); - - let op = smData.Operation.fromMap(operation); - if (typeof op === 'undefined') { - this.#logger.error('Found unknown operation', operation); - op = smData.Operation.Unknown; - } - - return new smData.MessageFrame(op, await this.__readSocket(length - 1, socket)); - } - - __handleReadResponse(data, frame) { - if (frame.operation === smData.Operation.ReadMessagesResponse) { - const response = smData.ReadMessagesResponse.fromMap(data); - this.#logger.debug('Received ReadMessagesResponse from server'); - this.#requestMap[response.requestId](response); - } else if (frame.operation === smData.Operation.CreateMessageStreamResponse) { - const response = smData.CreateMessageStreamResponse.fromMap(data); - this.#logger.debug('Received CreateMessageStreamResponse from server', frame); - this.#requestMap[response.requestId](response); - } else if (frame.operation === smData.Operation.DeleteMessageStreamResponse) { - const response = smData.DeleteMessageStreamResponse.fromMap(data); - this.#logger.debug('Received DeleteMessageStreamResponse from server', frame); - this.#requestMap[response.requestId](response); - } else if (frame.operation === smData.Operation.AppendMessageResponse) { - const response = smData.AppendMessageResponse.fromMap(data); - this.#logger.debug('Received AppendMessageResponse from server', frame); - this.#requestMap[response.requestId](response); - } else if (frame.operation === smData.Operation.ListStreamsResponse) { - const response = smData.ListStreamsResponse.fromMap(data); - this.#logger.debug('Received ListStreamsResponse from server', frame); - this.#requestMap[response.requestId](response); - } else if (frame.operation === smData.Operation.DescribeMessageStreamResponse) { - const response = smData.DescribeMessageStreamResponse.fromMap(data); - this.#logger.debug('Received DescribeMessageStreamResponse from server', frame); - this.#requestMap[response.requestId](response); - } else if (frame.operation === smData.Operation.Unknown) { - this.#logger.error('Received response with unknown operation from server', frame); - try { - const { requestId } = cbor.decodeFirstSync(frame.payload); - this.#requestMap[requestId](frame); - } catch { - // We tried our best to figure out the request id, but it failed. - // We already logged the unknown smData.Operation, so there's nothing - // else we can do at this point - } - } else { - this.#logger.error('Received data with unhandled operation', frame.operation); - } - } - - async _sendAndReceive(operation, data) { - if (this.#closed) { - throw new exceptions.StreamManagerException('Client is closed and cannot be reopened'); - } - - if (data.requestId === null) { - // eslint-disable-next-line no-param-reassign - data.requestId = util.uuidv4(); - } - - const validation = util.isInvalid(data); - if (validation) { - throw new exceptions.ValidationException(validation); - } - - // If we're not connected, immediately try to reconnect - if (!this.#connected) { - await this.__connect(); - } - - const promise = new Promise(((resolve, reject) => { - this.#requestMap[data.requestId] = (result) => { - // Drop async queue from request map - delete this.#requestMap[data.requestId]; - if (result instanceof smData.MessageFrame && result.operation === smData.Operation.Unknown) { - reject(new exceptions.ClientException('Received response with unknown operation from server')); - } - - resolve(result); - }; - })); - - // Write request to socket - const frame = new smData.MessageFrame(operation, cbor.encode(data.asMap())); - const byteFrame = util.encodeFrame(frame); - this.#socket.write(byteFrame.header); - this.#socket.write(byteFrame.payload); - - return promise; - } - - static __validateReadMessagesOptions(options) { - if (options !== null) { - if (!(options instanceof smData.ReadMessagesOptions)) { - throw new exceptions.ValidationException('options argument to read_messages must be a ReadMessageOptions object'); - } - const validation = util.isInvalid(options); - if (validation) { - throw new exceptions.ValidationException(validation); - } - - if ( - options.minMessageCount !== null - && options.maxMessageCount !== null - && options.minMessageCount > options.maxMessageCount - ) { - throw new exceptions.ValidationException('minMessageCount must be less than or equal to maxMessageCount'); - } - } - } - - /** - * Append a message into the specified message stream. Returns the sequence number of the message - * if it was successfully appended. - * - * @param streamName {string} The name of the stream to append to. - * @param data {Buffer} Buffer containing the data to be written. - * @returns {Promise} - */ - async appendMessage(streamName, data) { - const request = new smData.AppendMessageRequest().withName(streamName).withPayload(data); - const result = await this._sendAndReceive(smData.Operation.AppendMessage, request); - util.throwOnErrorResponse(result); - return result.sequenceNumber; - } - - /** - * Create a message stream with a given definition. - * - * @param definition {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} - * @returns {Promise} - */ - async createMessageStream(definition) { - if (!(definition instanceof smData.MessageStreamDefinition)) { - throw new exceptions.ValidationException('definition argument to create_stream must be a MessageStreamDefinition object'); - } - const request = new smData.CreateMessageStreamRequest().withDefinition(definition); - const result = await this._sendAndReceive(smData.Operation.CreateMessageStream, request); - util.throwOnErrorResponse(result); - } - - /** - * Deletes a message stream based on its name. Nothing is returned if the request succeeds. - * An error will be thrown if the request fails. - * - * @param streamName {string} The name of the stream to be deleted. - * @returns {Promise} - */ - async deleteMessageStream(streamName) { - const request = new smData.DeleteMessageStreamRequest().withName(streamName); - const result = await this._sendAndReceive(smData.Operation.DeleteMessageStream, request); - util.throwOnErrorResponse(result); - } - - /** - * Read message(s) from a chosen stream with options. If no options are specified it will try to read - * 1 message from the stream. - * - * @param streamName {string} The name of the stream to read from. - * @param options {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions?} Options used when reading from the stream of type {@linkcode aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions}. - * Defaults are: - *
    - *
  • desiredStartSequenceNumber: 0
  • - *
  • minMessageCount: 1
  • - *
  • maxMessageCount: 1
  • - *
  • readTimeoutMillis: 0
    // Where 0 here represents that the server will immediately return the messages
    -     * // or an exception if there were not enough messages available.
  • - *
- *

- * If desiredStartSequenceNumber is specified in the options and is less - * than the current beginning of the stream, returned messages will start - * at the beginning of the stream and not necessarily the desiredStartSequenceNumber. - *

- * @returns {Promise} List of one or more messages. - */ - async readMessages(streamName, options = null) { - StreamManagerClient.__validateReadMessagesOptions(options); - const request = new smData.ReadMessagesRequest().withStreamName(streamName).withReadMessagesOptions(options); - const result = await this._sendAndReceive(smData.Operation.ReadMessages, request); - util.throwOnErrorResponse(result); - return result.messages; - } - - /** - * List the streams in StreamManager. Returns a list of their names. - * - * @returns {Promise} - */ - async listStreams() { - const request = new smData.ListStreamsRequest(); - const result = await this._sendAndReceive(smData.Operation.ListStreams, request); - util.throwOnErrorResponse(result); - return result.streams; - } - - /** - * Describe a message stream to get metadata including the stream's definition, - * size, and exporter statuses. - * - * @param streamName {string} The name of the stream to describe - * @returns {Promise} - */ - async describeMessageStream(streamName) { - const request = new smData.DescribeMessageStreamRequest().withName(streamName); - const result = await this._sendAndReceive(smData.Operation.DescribeMessageStream, request); - util.throwOnErrorResponse(result); - return result.messageStreamInfo; - } - - /** - * Add a callback for when the client connects. - * @param f {function} - */ - onConnected(f) { - if (this.#connected) { - f(); - } else { - this.connectCallbacks.push(f); - } - } - - /** - * Add a callback for when an error occurs. - * @param f {function} - */ - onError(f) { - this.errorCallbacks.push(f); - } - - /** - * Close the connection - */ - close() { - if (this.#socket) { - this.#socket.end(); - } - this.#closed = true; - } -} - -module.exports = { - ...smData, - StreamManagerClient: StreamManagerClient, - ...exceptions, -}; diff --git a/aws-greengrass-core-sdk/stream-manager/data/index.js b/aws-greengrass-core-sdk/stream-manager/data/index.js deleted file mode 100644 index e720f69..0000000 --- a/aws-greengrass-core-sdk/stream-manager/data/index.js +++ /dev/null @@ -1,6194 +0,0 @@ -/** - * StrategyOnFull is used in the MessageStreamDefinition when creating a stream. - It defines the behavior when the stream has reached the maximum size. - RejectNewData: any append message request after the stream is full will be rejected with an exception. - OverwriteOldestData: the oldest stream segments will be deleted until there is room for the new message. - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class StrategyOnFull { - - #value = null; - constructor(value = null) { - if (!(value in Object.values(StrategyOnFull.options))) { - throw new Error("Value must be one of the enumerated options"); - } - this.#value = value; - } - - static fromMap(d) { - return StrategyOnFull[StrategyOnFull.optionsFlipped[d]]; - } - - asMap() { - return this.#value; - } -}; -Object.defineProperty(StrategyOnFull, "options", { - value: { - RejectNewData: 0, - OverwriteOldestData: 1, - } -}); -Object.defineProperty(StrategyOnFull, "optionsFlipped", { - value: { - 0: "RejectNewData", - 1: "OverwriteOldestData", - } -}); - -/** - * @member {aws-greengrass-core-sdk.StreamManager.StrategyOnFull} RejectNewData - * @memberOf aws-greengrass-core-sdk.StreamManager.StrategyOnFull# - * @readonly - */ -Object.defineProperty(StrategyOnFull, "RejectNewData", { - value: new StrategyOnFull(0) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.StrategyOnFull} OverwriteOldestData - * @memberOf aws-greengrass-core-sdk.StreamManager.StrategyOnFull# - * @readonly - */ -Object.defineProperty(StrategyOnFull, "OverwriteOldestData", { - value: new StrategyOnFull(1) -}); - -/** - * Stream persistence. If set to File, the file system will be used to persist messages long-term and is resilient to restarts. - Memory should be used when performance matters more than durability as it only stores the stream in memory and never writes to the disk. - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class Persistence { - - #value = null; - constructor(value = null) { - if (!(value in Object.values(Persistence.options))) { - throw new Error("Value must be one of the enumerated options"); - } - this.#value = value; - } - - static fromMap(d) { - return Persistence[Persistence.optionsFlipped[d]]; - } - - asMap() { - return this.#value; - } -}; -Object.defineProperty(Persistence, "options", { - value: { - File: 0, - Memory: 1, - } -}); -Object.defineProperty(Persistence, "optionsFlipped", { - value: { - 0: "File", - 1: "Memory", - } -}); - -/** - * @member {aws-greengrass-core-sdk.StreamManager.Persistence} File - * @memberOf aws-greengrass-core-sdk.StreamManager.Persistence# - * @readonly - */ -Object.defineProperty(Persistence, "File", { - value: new Persistence(0) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.Persistence} Memory - * @memberOf aws-greengrass-core-sdk.StreamManager.Persistence# - * @readonly - */ -Object.defineProperty(Persistence, "Memory", { - value: new Persistence(1) -}); - -/** - * (Internal Only) Request object to connect to the service - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class ConnectRequest { - #__requestId = null; - #__protocolVersion = null; - #__sdkVersion = null; - #__authToken = null; - - /** - * @param requestId {String} - * @param protocolVersion {String} - * @param sdkVersion {String} - * @param authToken {String} - */ - constructor( - requestId = null, - protocolVersion = null, - sdkVersion = null, - authToken = null, - ) { - if (requestId !== null && !(typeof requestId === "string")) { - throw new Error("requestId must be String"); - } - - if (protocolVersion !== null && !(typeof protocolVersion === "string")) { - throw new Error("protocolVersion must be String"); - } - - if (sdkVersion !== null && !(typeof sdkVersion === "string")) { - throw new Error("sdkVersion must be String"); - } - - if (authToken !== null && !(typeof authToken === "string")) { - throw new Error("authToken must be String"); - } - - this.#__requestId = requestId; - this.#__protocolVersion = protocolVersion; - this.#__sdkVersion = sdkVersion; - this.#__authToken = authToken; - } - - /** - * @returns {String} - - */ - get requestId() { - return this.#__requestId; - } - /** - * @param value {String} - */ - set requestId(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("requestId must be String"); - } - - this.#__requestId = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.ConnectRequest} - */ - withRequestId(value) { - this.requestId = value; - return this; - } - - /** - * @returns {String} - - */ - get protocolVersion() { - return this.#__protocolVersion; - } - /** - * @param value {String} - */ - set protocolVersion(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("protocolVersion must be String"); - } - - this.#__protocolVersion = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.ConnectRequest} - */ - withProtocolVersion(value) { - this.protocolVersion = value; - return this; - } - - /** - * @returns {String} - - */ - get sdkVersion() { - return this.#__sdkVersion; - } - /** - * @param value {String} - */ - set sdkVersion(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("sdkVersion must be String"); - } - - this.#__sdkVersion = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.ConnectRequest} - */ - withSdkVersion(value) { - this.sdkVersion = value; - return this; - } - - /** - * @returns {String} - - */ - get authToken() { - return this.#__authToken; - } - /** - * @param value {String} - */ - set authToken(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("authToken must be String"); - } - - this.#__authToken = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.ConnectRequest} - */ - withAuthToken(value) { - this.authToken = value; - return this; - } - - static fromMap(d) { - const ret = new ConnectRequest(); - if ("requestId" in d) { - ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"]; - } - if ("protocolVersion" in d) { - ret.protocolVersion = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["protocolVersion"]) : d["protocolVersion"]; - } - if ("sdkVersion" in d) { - ret.sdkVersion = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["sdkVersion"]) : d["sdkVersion"]; - } - if ("authToken" in d) { - ret.authToken = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["authToken"]) : d["authToken"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.requestId !== null) { - d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId; - } - if (this.protocolVersion !== null) { - d["protocolVersion"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.protocolVersion), "asMap") ? this.protocolVersion.asMap() : this.protocolVersion; - } - if (this.sdkVersion !== null) { - d["sdkVersion"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.sdkVersion), "asMap") ? this.sdkVersion.asMap() : this.sdkVersion; - } - if (this.authToken !== null) { - d["authToken"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.authToken), "asMap") ? this.authToken.asMap() : this.authToken; - } - return d; - } -}; - -Object.defineProperty(ConnectRequest, "typesMap", { - value: { - requestId: { - 'type': String, - 'subtype': null - }, - protocolVersion: { - 'type': String, - 'subtype': null - }, - sdkVersion: { - 'type': String, - 'subtype': null - }, - authToken: { - 'type': String, - 'subtype': null - }, - } -}); -Object.defineProperty(ConnectRequest, "formatsMap", { - value: {} -}); -Object.defineProperty(ConnectRequest, "validationsMap", { - value: { - 'requestId': { - 'required': true, - 'minLength': 1, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'protocolVersion': { - 'required': true, - }, - 'sdkVersion': { - 'required': false, - }, - 'authToken': { - 'required': false, - }, - } -}); - -/** - * (Internal Only) Enum defining possible response status codes from StreamManager server. - Success: Request succeeded. - UnknownFailure: Encountered unknown StreamManager server failure. - Unauthorized: Client is not authorized to perform this request. - InvalidRequest: Client request is invalid. - RequestPayloadTooLarge: Request payload is too large. - ResourceNotFound: The requested resource does not exist. - ServerTimeout: Server took too long and timed out. - ResponsePayloadTooLarge: Server response exceeded the max allowed response payload size by the protocol. - UnsupportedConnectVersion: Server does not support the Connect version presented by the Client. - UnexpectedOperation: Operation presented was not expected by the Server. - UnsupportedProtocolVersion: Protocol version presented by the Client is not compatible with the Server. - InvalidProtocolVersion: Protocol version presented by the Client is not valid. - FailedToConnect: Client failed to connect to the Server. - NotEnoughMessages: There is not enough messages to return. - MessageStoreReadError: Read messages encountered an error. - OutOfMemoryError: Server ran out of memory. - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class ResponseStatusCode { - - #value = null; - constructor(value = null) { - if (!(value in Object.values(ResponseStatusCode.options))) { - throw new Error("Value must be one of the enumerated options"); - } - this.#value = value; - } - - static fromMap(d) { - return ResponseStatusCode[ResponseStatusCode.optionsFlipped[d]]; - } - - asMap() { - return this.#value; - } -}; -Object.defineProperty(ResponseStatusCode, "options", { - value: { - Success: 0, - UnknownFailure: 1, - Unauthorized: 2, - InvalidRequest: 3, - RequestPayloadTooLarge: 4, - ResourceNotFound: 5, - ServerTimeout: 6, - ResponsePayloadTooLarge: 7, - UnsupportedConnectVersion: 8, - UnexpectedOperation: 9, - UnsupportedProtocolVersion: 10, - InvalidProtocolVersion: 11, - FailedToConnect: 12, - NotEnoughMessages: 13, - MessageStoreReadError: 14, - OutOfMemoryError: 15, - } -}); -Object.defineProperty(ResponseStatusCode, "optionsFlipped", { - value: { - 0: "Success", - 1: "UnknownFailure", - 2: "Unauthorized", - 3: "InvalidRequest", - 4: "RequestPayloadTooLarge", - 5: "ResourceNotFound", - 6: "ServerTimeout", - 7: "ResponsePayloadTooLarge", - 8: "UnsupportedConnectVersion", - 9: "UnexpectedOperation", - 10: "UnsupportedProtocolVersion", - 11: "InvalidProtocolVersion", - 12: "FailedToConnect", - 13: "NotEnoughMessages", - 14: "MessageStoreReadError", - 15: "OutOfMemoryError", - } -}); - -/** - * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} Success - * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode# - * @readonly - */ -Object.defineProperty(ResponseStatusCode, "Success", { - value: new ResponseStatusCode(0) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} UnknownFailure - * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode# - * @readonly - */ -Object.defineProperty(ResponseStatusCode, "UnknownFailure", { - value: new ResponseStatusCode(1) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} Unauthorized - * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode# - * @readonly - */ -Object.defineProperty(ResponseStatusCode, "Unauthorized", { - value: new ResponseStatusCode(2) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} InvalidRequest - * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode# - * @readonly - */ -Object.defineProperty(ResponseStatusCode, "InvalidRequest", { - value: new ResponseStatusCode(3) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} RequestPayloadTooLarge - * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode# - * @readonly - */ -Object.defineProperty(ResponseStatusCode, "RequestPayloadTooLarge", { - value: new ResponseStatusCode(4) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} ResourceNotFound - * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode# - * @readonly - */ -Object.defineProperty(ResponseStatusCode, "ResourceNotFound", { - value: new ResponseStatusCode(5) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} ServerTimeout - * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode# - * @readonly - */ -Object.defineProperty(ResponseStatusCode, "ServerTimeout", { - value: new ResponseStatusCode(6) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} ResponsePayloadTooLarge - * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode# - * @readonly - */ -Object.defineProperty(ResponseStatusCode, "ResponsePayloadTooLarge", { - value: new ResponseStatusCode(7) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} UnsupportedConnectVersion - * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode# - * @readonly - */ -Object.defineProperty(ResponseStatusCode, "UnsupportedConnectVersion", { - value: new ResponseStatusCode(8) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} UnexpectedOperation - * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode# - * @readonly - */ -Object.defineProperty(ResponseStatusCode, "UnexpectedOperation", { - value: new ResponseStatusCode(9) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} UnsupportedProtocolVersion - * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode# - * @readonly - */ -Object.defineProperty(ResponseStatusCode, "UnsupportedProtocolVersion", { - value: new ResponseStatusCode(10) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} InvalidProtocolVersion - * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode# - * @readonly - */ -Object.defineProperty(ResponseStatusCode, "InvalidProtocolVersion", { - value: new ResponseStatusCode(11) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} FailedToConnect - * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode# - * @readonly - */ -Object.defineProperty(ResponseStatusCode, "FailedToConnect", { - value: new ResponseStatusCode(12) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} NotEnoughMessages - * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode# - * @readonly - */ -Object.defineProperty(ResponseStatusCode, "NotEnoughMessages", { - value: new ResponseStatusCode(13) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} MessageStoreReadError - * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode# - * @readonly - */ -Object.defineProperty(ResponseStatusCode, "MessageStoreReadError", { - value: new ResponseStatusCode(14) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} OutOfMemoryError - * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode# - * @readonly - */ -Object.defineProperty(ResponseStatusCode, "OutOfMemoryError", { - value: new ResponseStatusCode(15) -}); - -/** - * Internal Only - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class ConnectResponse { - #__requestId = null; - #__status = null; - #__errorMessage = null; - #__protocolVersion = null; - #__supportedProtocolVersions = null; - #__serverVersion = null; - #__clientIdentifier = null; - - /** - * @param requestId {String} - * @param status {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - * @param errorMessage {String} - * @param protocolVersion {String} - * @param supportedProtocolVersions {String[]} - * @param serverVersion {String} - * @param clientIdentifier {String} - */ - constructor( - requestId = null, - status = null, - errorMessage = null, - protocolVersion = null, - supportedProtocolVersions = null, - serverVersion = null, - clientIdentifier = null, - ) { - if (requestId !== null && !(typeof requestId === "string")) { - throw new Error("requestId must be String"); - } - - if (status !== null && !(status instanceof ResponseStatusCode)) { - throw new Error("status must be ResponseStatusCode"); - } - - if (errorMessage !== null && !(typeof errorMessage === "string")) { - throw new Error("errorMessage must be String"); - } - - if (protocolVersion !== null && !(typeof protocolVersion === "string")) { - throw new Error("protocolVersion must be String"); - } - - if (supportedProtocolVersions !== null && !(supportedProtocolVersions instanceof Array)) { - throw new Error("supportedProtocolVersions must be Array"); - } - if (supportedProtocolVersions !== null && !supportedProtocolVersions.every((v) => typeof v === "string")) { - throw new Error("supportedProtocolVersions array values must be String"); - } - - if (serverVersion !== null && !(typeof serverVersion === "string")) { - throw new Error("serverVersion must be String"); - } - - if (clientIdentifier !== null && !(typeof clientIdentifier === "string")) { - throw new Error("clientIdentifier must be String"); - } - - this.#__requestId = requestId; - this.#__status = status; - this.#__errorMessage = errorMessage; - this.#__protocolVersion = protocolVersion; - this.#__supportedProtocolVersions = supportedProtocolVersions; - this.#__serverVersion = serverVersion; - this.#__clientIdentifier = clientIdentifier; - } - - /** - * @returns {String} - - */ - get requestId() { - return this.#__requestId; - } - /** - * @param value {String} - */ - set requestId(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("requestId must be String"); - } - - this.#__requestId = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.ConnectResponse} - */ - withRequestId(value) { - this.requestId = value; - return this; - } - - /** - * @returns {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - - */ - get status() { - return this.#__status; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - */ - set status(value) { - if (value !== null && !(value instanceof ResponseStatusCode)) { - throw new Error("status must be ResponseStatusCode"); - } - - this.#__status = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - * @returns {aws-greengrass-core-sdk.StreamManager.ConnectResponse} - */ - withStatus(value) { - this.status = value; - return this; - } - - /** - * @returns {String} - - */ - get errorMessage() { - return this.#__errorMessage; - } - /** - * @param value {String} - */ - set errorMessage(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("errorMessage must be String"); - } - - this.#__errorMessage = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.ConnectResponse} - */ - withErrorMessage(value) { - this.errorMessage = value; - return this; - } - - /** - * @returns {String} - - */ - get protocolVersion() { - return this.#__protocolVersion; - } - /** - * @param value {String} - */ - set protocolVersion(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("protocolVersion must be String"); - } - - this.#__protocolVersion = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.ConnectResponse} - */ - withProtocolVersion(value) { - this.protocolVersion = value; - return this; - } - - /** - * @returns {String[]} - - */ - get supportedProtocolVersions() { - return this.#__supportedProtocolVersions; - } - /** - * @param value {String[]} - */ - set supportedProtocolVersions(value) { - if (value !== null && !(value instanceof Array)) { - throw new Error("supportedProtocolVersions must be Array"); - } - if (value !== null && !value.every((v) => typeof v === "string")) { - throw new Error("supportedProtocolVersions array values must be String"); - } - - this.#__supportedProtocolVersions = value; - } - /** - * @param value {String[]} - * @returns {aws-greengrass-core-sdk.StreamManager.ConnectResponse} - */ - withSupportedProtocolVersions(value) { - this.supportedProtocolVersions = value; - return this; - } - - /** - * @returns {String} - - */ - get serverVersion() { - return this.#__serverVersion; - } - /** - * @param value {String} - */ - set serverVersion(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("serverVersion must be String"); - } - - this.#__serverVersion = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.ConnectResponse} - */ - withServerVersion(value) { - this.serverVersion = value; - return this; - } - - /** - * @returns {String} - - */ - get clientIdentifier() { - return this.#__clientIdentifier; - } - /** - * @param value {String} - */ - set clientIdentifier(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("clientIdentifier must be String"); - } - - this.#__clientIdentifier = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.ConnectResponse} - */ - withClientIdentifier(value) { - this.clientIdentifier = value; - return this; - } - - static fromMap(d) { - const ret = new ConnectResponse(); - if ("requestId" in d) { - ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"]; - } - if ("status" in d) { - ret.status = Object.prototype.hasOwnProperty.call(ResponseStatusCode, "fromMap") ? ResponseStatusCode.fromMap(d["status"]) : d["status"]; - } - if ("errorMessage" in d) { - ret.errorMessage = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["errorMessage"]) : d["errorMessage"]; - } - if ("protocolVersion" in d) { - ret.protocolVersion = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["protocolVersion"]) : d["protocolVersion"]; - } - if ("supportedProtocolVersions" in d) { - ret.supportedProtocolVersions = d["supportedProtocolVersions"].reduce((acc, v) => { - acc.push(Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(v) : v); - return acc; - }, []); - } - if ("serverVersion" in d) { - ret.serverVersion = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["serverVersion"]) : d["serverVersion"]; - } - if ("clientIdentifier" in d) { - ret.clientIdentifier = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["clientIdentifier"]) : d["clientIdentifier"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.requestId !== null) { - d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId; - } - if (this.status !== null) { - d["status"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.status), "asMap") ? this.status.asMap() : this.status; - } - if (this.errorMessage !== null) { - d["errorMessage"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.errorMessage), "asMap") ? this.errorMessage.asMap() : this.errorMessage; - } - if (this.protocolVersion !== null) { - d["protocolVersion"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.protocolVersion), "asMap") ? this.protocolVersion.asMap() : this.protocolVersion; - } - if (this.supportedProtocolVersions !== null) { - d["supportedProtocolVersions"] = this.supportedProtocolVersions.reduce((acc, v) => { - acc.push(Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(v), "asMap") ? v.asMap() : v); - return acc; - }, []); - } - if (this.serverVersion !== null) { - d["serverVersion"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.serverVersion), "asMap") ? this.serverVersion.asMap() : this.serverVersion; - } - if (this.clientIdentifier !== null) { - d["clientIdentifier"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.clientIdentifier), "asMap") ? this.clientIdentifier.asMap() : this.clientIdentifier; - } - return d; - } -}; - -Object.defineProperty(ConnectResponse, "typesMap", { - value: { - requestId: { - 'type': String, - 'subtype': null - }, - status: { - 'type': ResponseStatusCode, - 'subtype': null - }, - errorMessage: { - 'type': String, - 'subtype': null - }, - protocolVersion: { - 'type': String, - 'subtype': null - }, - supportedProtocolVersions: { - 'type': Array, - 'subtype': String - }, - serverVersion: { - 'type': String, - 'subtype': null - }, - clientIdentifier: { - 'type': String, - 'subtype': null - }, - } -}); -Object.defineProperty(ConnectResponse, "formatsMap", { - value: {} -}); -Object.defineProperty(ConnectResponse, "validationsMap", { - value: { - 'requestId': { - 'required': false, - 'minLength': 1, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'status': { - 'required': true, - }, - 'errorMessage': { - 'required': false, - }, - 'protocolVersion': { - 'required': false, - }, - 'supportedProtocolVersions': { - 'required': false, - }, - 'serverVersion': { - 'required': false, - }, - 'clientIdentifier': { - 'required': false, - }, - } -}); - -/** - * Internal Only - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class Operation { - - #value = null; - constructor(value = null) { - if (!(value in Object.values(Operation.options))) { - throw new Error("Value must be one of the enumerated options"); - } - this.#value = value; - } - - static fromMap(d) { - return Operation[Operation.optionsFlipped[d]]; - } - - asMap() { - return this.#value; - } -}; -Object.defineProperty(Operation, "options", { - value: { - Unknown: 0, - Connect: 1, - CreateMessageStream: 2, - DeleteMessageStream: 3, - AppendMessage: 4, - ReadMessages: 5, - ConnectResponse: 6, - CreateMessageStreamResponse: 7, - DeleteMessageStreamResponse: 8, - AppendMessageResponse: 9, - ReadMessagesResponse: 10, - ListStreams: 11, - ListStreamsResponse: 12, - DescribeMessageStream: 13, - DescribeMessageStreamResponse: 14, - } -}); -Object.defineProperty(Operation, "optionsFlipped", { - value: { - 0: "Unknown", - 1: "Connect", - 2: "CreateMessageStream", - 3: "DeleteMessageStream", - 4: "AppendMessage", - 5: "ReadMessages", - 6: "ConnectResponse", - 7: "CreateMessageStreamResponse", - 8: "DeleteMessageStreamResponse", - 9: "AppendMessageResponse", - 10: "ReadMessagesResponse", - 11: "ListStreams", - 12: "ListStreamsResponse", - 13: "DescribeMessageStream", - 14: "DescribeMessageStreamResponse", - } -}); - -/** - * @member {aws-greengrass-core-sdk.StreamManager.Operation} Unknown - * @memberOf aws-greengrass-core-sdk.StreamManager.Operation# - * @readonly - */ -Object.defineProperty(Operation, "Unknown", { - value: new Operation(0) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.Operation} Connect - * @memberOf aws-greengrass-core-sdk.StreamManager.Operation# - * @readonly - */ -Object.defineProperty(Operation, "Connect", { - value: new Operation(1) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.Operation} CreateMessageStream - * @memberOf aws-greengrass-core-sdk.StreamManager.Operation# - * @readonly - */ -Object.defineProperty(Operation, "CreateMessageStream", { - value: new Operation(2) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.Operation} DeleteMessageStream - * @memberOf aws-greengrass-core-sdk.StreamManager.Operation# - * @readonly - */ -Object.defineProperty(Operation, "DeleteMessageStream", { - value: new Operation(3) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.Operation} AppendMessage - * @memberOf aws-greengrass-core-sdk.StreamManager.Operation# - * @readonly - */ -Object.defineProperty(Operation, "AppendMessage", { - value: new Operation(4) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.Operation} ReadMessages - * @memberOf aws-greengrass-core-sdk.StreamManager.Operation# - * @readonly - */ -Object.defineProperty(Operation, "ReadMessages", { - value: new Operation(5) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.Operation} ConnectResponse - * @memberOf aws-greengrass-core-sdk.StreamManager.Operation# - * @readonly - */ -Object.defineProperty(Operation, "ConnectResponse", { - value: new Operation(6) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.Operation} CreateMessageStreamResponse - * @memberOf aws-greengrass-core-sdk.StreamManager.Operation# - * @readonly - */ -Object.defineProperty(Operation, "CreateMessageStreamResponse", { - value: new Operation(7) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.Operation} DeleteMessageStreamResponse - * @memberOf aws-greengrass-core-sdk.StreamManager.Operation# - * @readonly - */ -Object.defineProperty(Operation, "DeleteMessageStreamResponse", { - value: new Operation(8) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.Operation} AppendMessageResponse - * @memberOf aws-greengrass-core-sdk.StreamManager.Operation# - * @readonly - */ -Object.defineProperty(Operation, "AppendMessageResponse", { - value: new Operation(9) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.Operation} ReadMessagesResponse - * @memberOf aws-greengrass-core-sdk.StreamManager.Operation# - * @readonly - */ -Object.defineProperty(Operation, "ReadMessagesResponse", { - value: new Operation(10) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.Operation} ListStreams - * @memberOf aws-greengrass-core-sdk.StreamManager.Operation# - * @readonly - */ -Object.defineProperty(Operation, "ListStreams", { - value: new Operation(11) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.Operation} ListStreamsResponse - * @memberOf aws-greengrass-core-sdk.StreamManager.Operation# - * @readonly - */ -Object.defineProperty(Operation, "ListStreamsResponse", { - value: new Operation(12) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.Operation} DescribeMessageStream - * @memberOf aws-greengrass-core-sdk.StreamManager.Operation# - * @readonly - */ -Object.defineProperty(Operation, "DescribeMessageStream", { - value: new Operation(13) -}); -/** - * @member {aws-greengrass-core-sdk.StreamManager.Operation} DescribeMessageStreamResponse - * @memberOf aws-greengrass-core-sdk.StreamManager.Operation# - * @readonly - */ -Object.defineProperty(Operation, "DescribeMessageStreamResponse", { - value: new Operation(14) -}); - -/** - * Internal Only - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class MessageFrame { - #__operation = null; - #__payload = null; - - /** - * @param operation {aws-greengrass-core-sdk.StreamManager.Operation} - * @param payload {Buffer} - */ - constructor( - operation = null, - payload = null, - ) { - if (operation !== null && !(operation instanceof Operation)) { - throw new Error("operation must be Operation"); - } - - if (payload !== null && !(payload instanceof Buffer)) { - throw new Error("payload must be Buffer"); - } - - this.#__operation = operation; - this.#__payload = payload; - } - - /** - * @returns {aws-greengrass-core-sdk.StreamManager.Operation} - - */ - get operation() { - return this.#__operation; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.Operation} - */ - set operation(value) { - if (value !== null && !(value instanceof Operation)) { - throw new Error("operation must be Operation"); - } - - this.#__operation = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.Operation} - * @returns {aws-greengrass-core-sdk.StreamManager.MessageFrame} - */ - withOperation(value) { - this.operation = value; - return this; - } - - /** - * @returns {Buffer} - - */ - get payload() { - return this.#__payload; - } - /** - * @param value {Buffer} - */ - set payload(value) { - if (value !== null && !(value instanceof Buffer)) { - throw new Error("payload must be Buffer"); - } - - this.#__payload = value; - } - /** - * @param value {Buffer} - * @returns {aws-greengrass-core-sdk.StreamManager.MessageFrame} - */ - withPayload(value) { - this.payload = value; - return this; - } - - static fromMap(d) { - const ret = new MessageFrame(); - if ("operation" in d) { - ret.operation = Object.prototype.hasOwnProperty.call(Operation, "fromMap") ? Operation.fromMap(d["operation"]) : d["operation"]; - } - if ("payload" in d) { - ret.payload = Object.prototype.hasOwnProperty.call(Buffer, "fromMap") ? Buffer.fromMap(d["payload"]) : d["payload"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.operation !== null) { - d["operation"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.operation), "asMap") ? this.operation.asMap() : this.operation; - } - if (this.payload !== null) { - d["payload"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.payload), "asMap") ? this.payload.asMap() : this.payload; - } - return d; - } -}; - -Object.defineProperty(MessageFrame, "typesMap", { - value: { - operation: { - 'type': Operation, - 'subtype': null - }, - payload: { - 'type': Buffer, - 'subtype': null - }, - } -}); -Object.defineProperty(MessageFrame, "formatsMap", { - value: {} -}); -Object.defineProperty(MessageFrame, "validationsMap", { - value: { - 'operation': { - 'required': true, - }, - 'payload': { - 'required': true, - }, - } -}); - -/** - * This export destination is not supported! The interface may change at any time without notice and should not be relied on for any production use. - There are no guarantees around its correctness. - This configures an HTTP endpoint which sends a POST request to the provided URI. Each request contains a single message in the body of the request. - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class HTTPConfig { - #__identifier = null; - #__uri = null; - #__batchSize = null; - #__batchIntervalMillis = null; - #__priority = null; - - /** - * @param identifier {String} A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. - * @param uri {String} URL for HTTP endpoint which should receive the POST requests for export. - * @param batchSize {Number} The maximum size of a batch to send to the destination. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum batch size is 1 and the maximum is 500. - * @param batchIntervalMillis {Number} The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. - * @param priority {Number} Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority. - */ - constructor( - identifier = null, - uri = null, - batchSize = null, - batchIntervalMillis = null, - priority = null, - ) { - if (identifier !== null && !(typeof identifier === "string")) { - throw new Error("identifier must be String"); - } - - if (uri !== null && !(typeof uri === "string")) { - throw new Error("uri must be String"); - } - - if (batchSize !== null && !(typeof batchSize === "number")) { - throw new Error("batchSize must be Number"); - } - - if (batchIntervalMillis !== null && !(typeof batchIntervalMillis === "number")) { - throw new Error("batchIntervalMillis must be Number"); - } - - if (priority !== null && !(typeof priority === "number")) { - throw new Error("priority must be Number"); - } - - this.#__identifier = identifier; - this.#__uri = uri; - this.#__batchSize = batchSize; - this.#__batchIntervalMillis = batchIntervalMillis; - this.#__priority = priority; - } - - /** - * A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. - * @returns {String} - - */ - get identifier() { - return this.#__identifier; - } - /** - * @param value {String} A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. - */ - set identifier(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("identifier must be String"); - } - - this.#__identifier = value; - } - /** - * @param value {String} A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. - * @returns {aws-greengrass-core-sdk.StreamManager.HTTPConfig} - */ - withIdentifier(value) { - this.identifier = value; - return this; - } - - /** - * URL for HTTP endpoint which should receive the POST requests for export. - * @returns {String} - - */ - get uri() { - return this.#__uri; - } - /** - * @param value {String} URL for HTTP endpoint which should receive the POST requests for export. - */ - set uri(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("uri must be String"); - } - - this.#__uri = value; - } - /** - * @param value {String} URL for HTTP endpoint which should receive the POST requests for export. - * @returns {aws-greengrass-core-sdk.StreamManager.HTTPConfig} - */ - withUri(value) { - this.uri = value; - return this; - } - - /** - * The maximum size of a batch to send to the destination. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum batch size is 1 and the maximum is 500. - * @returns {Number} - - */ - get batchSize() { - return this.#__batchSize; - } - /** - * @param value {Number} The maximum size of a batch to send to the destination. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum batch size is 1 and the maximum is 500. - */ - set batchSize(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("batchSize must be Number"); - } - - this.#__batchSize = value; - } - /** - * @param value {Number} The maximum size of a batch to send to the destination. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum batch size is 1 and the maximum is 500. - * @returns {aws-greengrass-core-sdk.StreamManager.HTTPConfig} - */ - withBatchSize(value) { - this.batchSize = value; - return this; - } - - /** - * The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. - * @returns {Number} - - */ - get batchIntervalMillis() { - return this.#__batchIntervalMillis; - } - /** - * @param value {Number} The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. - */ - set batchIntervalMillis(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("batchIntervalMillis must be Number"); - } - - this.#__batchIntervalMillis = value; - } - /** - * @param value {Number} The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. - * @returns {aws-greengrass-core-sdk.StreamManager.HTTPConfig} - */ - withBatchIntervalMillis(value) { - this.batchIntervalMillis = value; - return this; - } - - /** - * Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority. - * @returns {Number} - - */ - get priority() { - return this.#__priority; - } - /** - * @param value {Number} Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority. - */ - set priority(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("priority must be Number"); - } - - this.#__priority = value; - } - /** - * @param value {Number} Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority. - * @returns {aws-greengrass-core-sdk.StreamManager.HTTPConfig} - */ - withPriority(value) { - this.priority = value; - return this; - } - - static fromMap(d) { - const ret = new HTTPConfig(); - if ("identifier" in d) { - ret.identifier = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["identifier"]) : d["identifier"]; - } - if ("uri" in d) { - ret.uri = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["uri"]) : d["uri"]; - } - if ("batchSize" in d) { - ret.batchSize = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["batchSize"]) : d["batchSize"]; - } - if ("batchIntervalMillis" in d) { - ret.batchIntervalMillis = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["batchIntervalMillis"]) : d["batchIntervalMillis"]; - } - if ("priority" in d) { - ret.priority = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["priority"]) : d["priority"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.identifier !== null) { - d["identifier"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.identifier), "asMap") ? this.identifier.asMap() : this.identifier; - } - if (this.uri !== null) { - d["uri"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.uri), "asMap") ? this.uri.asMap() : this.uri; - } - if (this.batchSize !== null) { - d["batchSize"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.batchSize), "asMap") ? this.batchSize.asMap() : this.batchSize; - } - if (this.batchIntervalMillis !== null) { - d["batchIntervalMillis"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.batchIntervalMillis), "asMap") ? this.batchIntervalMillis.asMap() : this.batchIntervalMillis; - } - if (this.priority !== null) { - d["priority"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.priority), "asMap") ? this.priority.asMap() : this.priority; - } - return d; - } -}; - -Object.defineProperty(HTTPConfig, "typesMap", { - value: { - identifier: { - 'type': String, - 'subtype': null - }, - uri: { - 'type': String, - 'subtype': null - }, - batchSize: { - 'type': Number, - 'subtype': null - }, - batchIntervalMillis: { - 'type': Number, - 'subtype': null - }, - priority: { - 'type': Number, - 'subtype': null - }, - } -}); -Object.defineProperty(HTTPConfig, "formatsMap", { - value: {} -}); -Object.defineProperty(HTTPConfig, "validationsMap", { - value: { - 'identifier': { - 'required': true, - 'minLength': 1, - 'maxLength': 255, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'uri': { - 'required': true, - 'minLength': 1, - }, - 'batchSize': { - 'required': false, - 'maximum': 500, - 'minimum': 1, - }, - 'batchIntervalMillis': { - 'required': false, - 'maximum': 9223372036854, - 'minimum': 60000, - }, - 'priority': { - 'required': false, - 'maximum': 10, - 'minimum': 1, - }, - } -}); - -/** - * Configuration object for IoT Analytics export destination. - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class IoTAnalyticsConfig { - #__identifier = null; - #__iotChannel = null; - #__iotMsgIdPrefix = null; - #__batchSize = null; - #__batchIntervalMillis = null; - #__priority = null; - - /** - * @param identifier {String} A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. - * @param iotChannel {String} The name of the IoT Analytics Channel that this exporter should upload to - * @param iotMsgIdPrefix {String} A string prefixed to each unique message id. After this prefix, StreamManager may append more data to make the message ID unique. - This prefix must be less than 32 characters. - * @param batchSize {Number} The maximum size of a batch to send to IoT Analytics. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The batch size must be between 1 and 100. - * @param batchIntervalMillis {Number} The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. - * @param priority {Number} Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority. - */ - constructor( - identifier = null, - iotChannel = null, - iotMsgIdPrefix = null, - batchSize = null, - batchIntervalMillis = null, - priority = null, - ) { - if (identifier !== null && !(typeof identifier === "string")) { - throw new Error("identifier must be String"); - } - - if (iotChannel !== null && !(typeof iotChannel === "string")) { - throw new Error("iotChannel must be String"); - } - - if (iotMsgIdPrefix !== null && !(typeof iotMsgIdPrefix === "string")) { - throw new Error("iotMsgIdPrefix must be String"); - } - - if (batchSize !== null && !(typeof batchSize === "number")) { - throw new Error("batchSize must be Number"); - } - - if (batchIntervalMillis !== null && !(typeof batchIntervalMillis === "number")) { - throw new Error("batchIntervalMillis must be Number"); - } - - if (priority !== null && !(typeof priority === "number")) { - throw new Error("priority must be Number"); - } - - this.#__identifier = identifier; - this.#__iotChannel = iotChannel; - this.#__iotMsgIdPrefix = iotMsgIdPrefix; - this.#__batchSize = batchSize; - this.#__batchIntervalMillis = batchIntervalMillis; - this.#__priority = priority; - } - - /** - * A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. - * @returns {String} - - */ - get identifier() { - return this.#__identifier; - } - /** - * @param value {String} A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. - */ - set identifier(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("identifier must be String"); - } - - this.#__identifier = value; - } - /** - * @param value {String} A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. - * @returns {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig} - */ - withIdentifier(value) { - this.identifier = value; - return this; - } - - /** - * The name of the IoT Analytics Channel that this exporter should upload to - * @returns {String} - - */ - get iotChannel() { - return this.#__iotChannel; - } - /** - * @param value {String} The name of the IoT Analytics Channel that this exporter should upload to - */ - set iotChannel(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("iotChannel must be String"); - } - - this.#__iotChannel = value; - } - /** - * @param value {String} The name of the IoT Analytics Channel that this exporter should upload to - * @returns {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig} - */ - withIotChannel(value) { - this.iotChannel = value; - return this; - } - - /** - * A string prefixed to each unique message id. After this prefix, StreamManager may append more data to make the message ID unique. - This prefix must be less than 32 characters. - * @returns {String} - - */ - get iotMsgIdPrefix() { - return this.#__iotMsgIdPrefix; - } - /** - * @param value {String} A string prefixed to each unique message id. After this prefix, StreamManager may append more data to make the message ID unique. - This prefix must be less than 32 characters. - */ - set iotMsgIdPrefix(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("iotMsgIdPrefix must be String"); - } - - this.#__iotMsgIdPrefix = value; - } - /** - * @param value {String} A string prefixed to each unique message id. After this prefix, StreamManager may append more data to make the message ID unique. - This prefix must be less than 32 characters. - * @returns {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig} - */ - withIotMsgIdPrefix(value) { - this.iotMsgIdPrefix = value; - return this; - } - - /** - * The maximum size of a batch to send to IoT Analytics. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The batch size must be between 1 and 100. - * @returns {Number} - - */ - get batchSize() { - return this.#__batchSize; - } - /** - * @param value {Number} The maximum size of a batch to send to IoT Analytics. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The batch size must be between 1 and 100. - */ - set batchSize(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("batchSize must be Number"); - } - - this.#__batchSize = value; - } - /** - * @param value {Number} The maximum size of a batch to send to IoT Analytics. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The batch size must be between 1 and 100. - * @returns {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig} - */ - withBatchSize(value) { - this.batchSize = value; - return this; - } - - /** - * The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. - * @returns {Number} - - */ - get batchIntervalMillis() { - return this.#__batchIntervalMillis; - } - /** - * @param value {Number} The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. - */ - set batchIntervalMillis(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("batchIntervalMillis must be Number"); - } - - this.#__batchIntervalMillis = value; - } - /** - * @param value {Number} The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. - * @returns {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig} - */ - withBatchIntervalMillis(value) { - this.batchIntervalMillis = value; - return this; - } - - /** - * Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority. - * @returns {Number} - - */ - get priority() { - return this.#__priority; - } - /** - * @param value {Number} Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority. - */ - set priority(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("priority must be Number"); - } - - this.#__priority = value; - } - /** - * @param value {Number} Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority. - * @returns {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig} - */ - withPriority(value) { - this.priority = value; - return this; - } - - static fromMap(d) { - const ret = new IoTAnalyticsConfig(); - if ("identifier" in d) { - ret.identifier = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["identifier"]) : d["identifier"]; - } - if ("iotChannel" in d) { - ret.iotChannel = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["iotChannel"]) : d["iotChannel"]; - } - if ("iotMsgIdPrefix" in d) { - ret.iotMsgIdPrefix = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["iotMsgIdPrefix"]) : d["iotMsgIdPrefix"]; - } - if ("batchSize" in d) { - ret.batchSize = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["batchSize"]) : d["batchSize"]; - } - if ("batchIntervalMillis" in d) { - ret.batchIntervalMillis = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["batchIntervalMillis"]) : d["batchIntervalMillis"]; - } - if ("priority" in d) { - ret.priority = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["priority"]) : d["priority"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.identifier !== null) { - d["identifier"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.identifier), "asMap") ? this.identifier.asMap() : this.identifier; - } - if (this.iotChannel !== null) { - d["iotChannel"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.iotChannel), "asMap") ? this.iotChannel.asMap() : this.iotChannel; - } - if (this.iotMsgIdPrefix !== null) { - d["iotMsgIdPrefix"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.iotMsgIdPrefix), "asMap") ? this.iotMsgIdPrefix.asMap() : this.iotMsgIdPrefix; - } - if (this.batchSize !== null) { - d["batchSize"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.batchSize), "asMap") ? this.batchSize.asMap() : this.batchSize; - } - if (this.batchIntervalMillis !== null) { - d["batchIntervalMillis"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.batchIntervalMillis), "asMap") ? this.batchIntervalMillis.asMap() : this.batchIntervalMillis; - } - if (this.priority !== null) { - d["priority"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.priority), "asMap") ? this.priority.asMap() : this.priority; - } - return d; - } -}; - -Object.defineProperty(IoTAnalyticsConfig, "typesMap", { - value: { - identifier: { - 'type': String, - 'subtype': null - }, - iotChannel: { - 'type': String, - 'subtype': null - }, - iotMsgIdPrefix: { - 'type': String, - 'subtype': null - }, - batchSize: { - 'type': Number, - 'subtype': null - }, - batchIntervalMillis: { - 'type': Number, - 'subtype': null - }, - priority: { - 'type': Number, - 'subtype': null - }, - } -}); -Object.defineProperty(IoTAnalyticsConfig, "formatsMap", { - value: {} -}); -Object.defineProperty(IoTAnalyticsConfig, "validationsMap", { - value: { - 'identifier': { - 'required': true, - 'minLength': 1, - 'maxLength': 255, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'iotChannel': { - 'required': true, - 'minLength': 1, - }, - 'iotMsgIdPrefix': { - 'required': false, - 'maxLength': 32, - }, - 'batchSize': { - 'required': false, - 'maximum': 100, - 'minimum': 1, - }, - 'batchIntervalMillis': { - 'required': false, - 'maximum': 9223372036854, - 'minimum': 60000, - }, - 'priority': { - 'required': false, - 'maximum': 10, - 'minimum': 1, - }, - } -}); - -/** - * Configuration object for Kinesis data streams export destination. - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class KinesisConfig { - #__identifier = null; - #__kinesisStreamName = null; - #__batchSize = null; - #__batchIntervalMillis = null; - #__priority = null; - - /** - * @param identifier {String} A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. - * @param kinesisStreamName {String} The name of the Kinesis data stream that this exporter should upload to - * @param batchSize {Number} The maximum size of a batch to send to Kinesis. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The batch size must be between 1 and 500. - * @param batchIntervalMillis {Number} The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. - * @param priority {Number} Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority. - */ - constructor( - identifier = null, - kinesisStreamName = null, - batchSize = null, - batchIntervalMillis = null, - priority = null, - ) { - if (identifier !== null && !(typeof identifier === "string")) { - throw new Error("identifier must be String"); - } - - if (kinesisStreamName !== null && !(typeof kinesisStreamName === "string")) { - throw new Error("kinesisStreamName must be String"); - } - - if (batchSize !== null && !(typeof batchSize === "number")) { - throw new Error("batchSize must be Number"); - } - - if (batchIntervalMillis !== null && !(typeof batchIntervalMillis === "number")) { - throw new Error("batchIntervalMillis must be Number"); - } - - if (priority !== null && !(typeof priority === "number")) { - throw new Error("priority must be Number"); - } - - this.#__identifier = identifier; - this.#__kinesisStreamName = kinesisStreamName; - this.#__batchSize = batchSize; - this.#__batchIntervalMillis = batchIntervalMillis; - this.#__priority = priority; - } - - /** - * A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. - * @returns {String} - - */ - get identifier() { - return this.#__identifier; - } - /** - * @param value {String} A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. - */ - set identifier(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("identifier must be String"); - } - - this.#__identifier = value; - } - /** - * @param value {String} A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. - * @returns {aws-greengrass-core-sdk.StreamManager.KinesisConfig} - */ - withIdentifier(value) { - this.identifier = value; - return this; - } - - /** - * The name of the Kinesis data stream that this exporter should upload to - * @returns {String} - - */ - get kinesisStreamName() { - return this.#__kinesisStreamName; - } - /** - * @param value {String} The name of the Kinesis data stream that this exporter should upload to - */ - set kinesisStreamName(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("kinesisStreamName must be String"); - } - - this.#__kinesisStreamName = value; - } - /** - * @param value {String} The name of the Kinesis data stream that this exporter should upload to - * @returns {aws-greengrass-core-sdk.StreamManager.KinesisConfig} - */ - withKinesisStreamName(value) { - this.kinesisStreamName = value; - return this; - } - - /** - * The maximum size of a batch to send to Kinesis. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The batch size must be between 1 and 500. - * @returns {Number} - - */ - get batchSize() { - return this.#__batchSize; - } - /** - * @param value {Number} The maximum size of a batch to send to Kinesis. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The batch size must be between 1 and 500. - */ - set batchSize(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("batchSize must be Number"); - } - - this.#__batchSize = value; - } - /** - * @param value {Number} The maximum size of a batch to send to Kinesis. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The batch size must be between 1 and 500. - * @returns {aws-greengrass-core-sdk.StreamManager.KinesisConfig} - */ - withBatchSize(value) { - this.batchSize = value; - return this; - } - - /** - * The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. - * @returns {Number} - - */ - get batchIntervalMillis() { - return this.#__batchIntervalMillis; - } - /** - * @param value {Number} The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. - */ - set batchIntervalMillis(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("batchIntervalMillis must be Number"); - } - - this.#__batchIntervalMillis = value; - } - /** - * @param value {Number} The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. - * @returns {aws-greengrass-core-sdk.StreamManager.KinesisConfig} - */ - withBatchIntervalMillis(value) { - this.batchIntervalMillis = value; - return this; - } - - /** - * Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority. - * @returns {Number} - - */ - get priority() { - return this.#__priority; - } - /** - * @param value {Number} Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority. - */ - set priority(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("priority must be Number"); - } - - this.#__priority = value; - } - /** - * @param value {Number} Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority. - * @returns {aws-greengrass-core-sdk.StreamManager.KinesisConfig} - */ - withPriority(value) { - this.priority = value; - return this; - } - - static fromMap(d) { - const ret = new KinesisConfig(); - if ("identifier" in d) { - ret.identifier = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["identifier"]) : d["identifier"]; - } - if ("kinesisStreamName" in d) { - ret.kinesisStreamName = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["kinesisStreamName"]) : d["kinesisStreamName"]; - } - if ("batchSize" in d) { - ret.batchSize = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["batchSize"]) : d["batchSize"]; - } - if ("batchIntervalMillis" in d) { - ret.batchIntervalMillis = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["batchIntervalMillis"]) : d["batchIntervalMillis"]; - } - if ("priority" in d) { - ret.priority = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["priority"]) : d["priority"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.identifier !== null) { - d["identifier"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.identifier), "asMap") ? this.identifier.asMap() : this.identifier; - } - if (this.kinesisStreamName !== null) { - d["kinesisStreamName"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.kinesisStreamName), "asMap") ? this.kinesisStreamName.asMap() : this.kinesisStreamName; - } - if (this.batchSize !== null) { - d["batchSize"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.batchSize), "asMap") ? this.batchSize.asMap() : this.batchSize; - } - if (this.batchIntervalMillis !== null) { - d["batchIntervalMillis"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.batchIntervalMillis), "asMap") ? this.batchIntervalMillis.asMap() : this.batchIntervalMillis; - } - if (this.priority !== null) { - d["priority"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.priority), "asMap") ? this.priority.asMap() : this.priority; - } - return d; - } -}; - -Object.defineProperty(KinesisConfig, "typesMap", { - value: { - identifier: { - 'type': String, - 'subtype': null - }, - kinesisStreamName: { - 'type': String, - 'subtype': null - }, - batchSize: { - 'type': Number, - 'subtype': null - }, - batchIntervalMillis: { - 'type': Number, - 'subtype': null - }, - priority: { - 'type': Number, - 'subtype': null - }, - } -}); -Object.defineProperty(KinesisConfig, "formatsMap", { - value: {} -}); -Object.defineProperty(KinesisConfig, "validationsMap", { - value: { - 'identifier': { - 'required': true, - 'minLength': 1, - 'maxLength': 255, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'kinesisStreamName': { - 'required': true, - 'minLength': 1, - }, - 'batchSize': { - 'required': false, - 'maximum': 500, - 'minimum': 1, - }, - 'batchIntervalMillis': { - 'required': false, - 'maximum': 9223372036854, - 'minimum': 60000, - }, - 'priority': { - 'required': false, - 'maximum': 10, - 'minimum': 1, - }, - } -}); - -/** - * Defines how and where the stream is uploaded - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class ExportDefinition { - #__http = null; - #__iotAnalytics = null; - #__kinesis = null; - - /** - * @param http {aws-greengrass-core-sdk.StreamManager.HTTPConfig[]} Defines how the stream is uploaded to an HTTP endpoint - * @param iotAnalytics {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig[]} Defines how the stream is uploaded to IoT Analytics - * @param kinesis {aws-greengrass-core-sdk.StreamManager.KinesisConfig[]} Defines how the stream is uploaded to Kinesis - */ - constructor( - http = null, - iotAnalytics = null, - kinesis = null, - ) { - if (http !== null && !(http instanceof Array)) { - throw new Error("http must be Array"); - } - if (http !== null && !http.every((v) => v instanceof HTTPConfig)) { - throw new Error("http array values must be HTTPConfig"); - } - - if (iotAnalytics !== null && !(iotAnalytics instanceof Array)) { - throw new Error("iotAnalytics must be Array"); - } - if (iotAnalytics !== null && !iotAnalytics.every((v) => v instanceof IoTAnalyticsConfig)) { - throw new Error("iotAnalytics array values must be IoTAnalyticsConfig"); - } - - if (kinesis !== null && !(kinesis instanceof Array)) { - throw new Error("kinesis must be Array"); - } - if (kinesis !== null && !kinesis.every((v) => v instanceof KinesisConfig)) { - throw new Error("kinesis array values must be KinesisConfig"); - } - - this.#__http = http; - this.#__iotAnalytics = iotAnalytics; - this.#__kinesis = kinesis; - } - - /** - * Defines how the stream is uploaded to an HTTP endpoint - * @returns {aws-greengrass-core-sdk.StreamManager.HTTPConfig[]} - - */ - get http() { - return this.#__http; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.HTTPConfig[]} Defines how the stream is uploaded to an HTTP endpoint - */ - set http(value) { - if (value !== null && !(value instanceof Array)) { - throw new Error("http must be Array"); - } - if (value !== null && !value.every((v) => v instanceof HTTPConfig)) { - throw new Error("http array values must be HTTPConfig"); - } - - this.#__http = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.HTTPConfig[]} Defines how the stream is uploaded to an HTTP endpoint - * @returns {aws-greengrass-core-sdk.StreamManager.ExportDefinition} - */ - withHttp(value) { - this.http = value; - return this; - } - - /** - * Defines how the stream is uploaded to IoT Analytics - * @returns {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig[]} - - */ - get iotAnalytics() { - return this.#__iotAnalytics; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig[]} Defines how the stream is uploaded to IoT Analytics - */ - set iotAnalytics(value) { - if (value !== null && !(value instanceof Array)) { - throw new Error("iotAnalytics must be Array"); - } - if (value !== null && !value.every((v) => v instanceof IoTAnalyticsConfig)) { - throw new Error("iotAnalytics array values must be IoTAnalyticsConfig"); - } - - this.#__iotAnalytics = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig[]} Defines how the stream is uploaded to IoT Analytics - * @returns {aws-greengrass-core-sdk.StreamManager.ExportDefinition} - */ - withIotAnalytics(value) { - this.iotAnalytics = value; - return this; - } - - /** - * Defines how the stream is uploaded to Kinesis - * @returns {aws-greengrass-core-sdk.StreamManager.KinesisConfig[]} - - */ - get kinesis() { - return this.#__kinesis; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.KinesisConfig[]} Defines how the stream is uploaded to Kinesis - */ - set kinesis(value) { - if (value !== null && !(value instanceof Array)) { - throw new Error("kinesis must be Array"); - } - if (value !== null && !value.every((v) => v instanceof KinesisConfig)) { - throw new Error("kinesis array values must be KinesisConfig"); - } - - this.#__kinesis = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.KinesisConfig[]} Defines how the stream is uploaded to Kinesis - * @returns {aws-greengrass-core-sdk.StreamManager.ExportDefinition} - */ - withKinesis(value) { - this.kinesis = value; - return this; - } - - static fromMap(d) { - const ret = new ExportDefinition(); - if ("http" in d) { - ret.http = d["http"].reduce((acc, v) => { - acc.push(Object.prototype.hasOwnProperty.call(HTTPConfig, "fromMap") ? HTTPConfig.fromMap(v) : v); - return acc; - }, []); - } - if ("iotAnalytics" in d) { - ret.iotAnalytics = d["iotAnalytics"].reduce((acc, v) => { - acc.push(Object.prototype.hasOwnProperty.call(IoTAnalyticsConfig, "fromMap") ? IoTAnalyticsConfig.fromMap(v) : v); - return acc; - }, []); - } - if ("kinesis" in d) { - ret.kinesis = d["kinesis"].reduce((acc, v) => { - acc.push(Object.prototype.hasOwnProperty.call(KinesisConfig, "fromMap") ? KinesisConfig.fromMap(v) : v); - return acc; - }, []); - } - return ret; - } - - asMap() { - const d = {}; - if (this.http !== null) { - d["http"] = this.http.reduce((acc, v) => { - acc.push(Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(v), "asMap") ? v.asMap() : v); - return acc; - }, []); - } - if (this.iotAnalytics !== null) { - d["iotAnalytics"] = this.iotAnalytics.reduce((acc, v) => { - acc.push(Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(v), "asMap") ? v.asMap() : v); - return acc; - }, []); - } - if (this.kinesis !== null) { - d["kinesis"] = this.kinesis.reduce((acc, v) => { - acc.push(Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(v), "asMap") ? v.asMap() : v); - return acc; - }, []); - } - return d; - } -}; - -Object.defineProperty(ExportDefinition, "typesMap", { - value: { - http: { - 'type': Array, - 'subtype': HTTPConfig - }, - iotAnalytics: { - 'type': Array, - 'subtype': IoTAnalyticsConfig - }, - kinesis: { - 'type': Array, - 'subtype': KinesisConfig - }, - } -}); -Object.defineProperty(ExportDefinition, "formatsMap", { - value: {} -}); -Object.defineProperty(ExportDefinition, "validationsMap", { - value: { - 'http': { - 'required': false, - }, - 'iotAnalytics': { - 'required': false, - }, - 'kinesis': { - 'required': false, - }, - } -}); - -/** - * Object defining a message stream used in the CreateMessageStream API. - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class MessageStreamDefinition { - #__name = null; - #__maxSize = null; - #__streamSegmentSize = null; - #__timeToLiveMillis = null; - #__strategyOnFull = null; - #__persistence = null; - #__flushOnWrite = null; - #__exportDefinition = null; - - /** - * @param name {String} The unique name of the stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. - * @param maxSize {Number} The maximum size in bytes for the entire stream. Set to 256MB by default with a minimum of 1KB and a maximum of 8192PB. - * @param streamSegmentSize {Number} The size of each segment of the stream. Set to 16MB by default with a minimum of 1KB and a maximum of 2GB. - Data is only deleted segment by segment, so the segment size is the smallest amount of data which can be deleted. - * @param timeToLiveMillis {Number} Time to live for each message in milliseconds. Data may be deleted at any time after the TTL expires; deletion is not guaranteed to occur immediately when the TTL expires. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. - * @param strategyOnFull {aws-greengrass-core-sdk.StreamManager.StrategyOnFull} What to do when the maximum size of the stream is reached. - RejectNewData: any append message request after the stream is full will be rejected with an exception. - OverwriteOldestData: the oldest stream segments will be deleted until there is room for the new message. - * @param persistence {aws-greengrass-core-sdk.StreamManager.Persistence} Stream persistence. If set to File, the file system will be used to persist messages long-term and is resilient to restarts. - Memory should be used when performance matters more than durability as it only stores the stream in memory and never writes to the disk. - * @param flushOnWrite {Boolean} This only applies when Persistence is set to File mode. - Waits for the filesystem to complete the write for every message. This is safer, but slower. Default is false. - * @param exportDefinition {aws-greengrass-core-sdk.StreamManager.ExportDefinition} Defines how and where the stream is uploaded. See the definition of the ExportDefinition object for more detail. - */ - constructor( - name = null, - maxSize = 268435456, - streamSegmentSize = 16777216, - timeToLiveMillis = null, - strategyOnFull = null, - persistence = null, - flushOnWrite = null, - exportDefinition = null, - ) { - if (name !== null && !(typeof name === "string")) { - throw new Error("name must be String"); - } - - if (maxSize !== null && !(typeof maxSize === "number")) { - throw new Error("maxSize must be Number"); - } - - if (streamSegmentSize !== null && !(typeof streamSegmentSize === "number")) { - throw new Error("streamSegmentSize must be Number"); - } - - if (timeToLiveMillis !== null && !(typeof timeToLiveMillis === "number")) { - throw new Error("timeToLiveMillis must be Number"); - } - - if (strategyOnFull !== null && !(strategyOnFull instanceof StrategyOnFull)) { - throw new Error("strategyOnFull must be StrategyOnFull"); - } - - if (persistence !== null && !(persistence instanceof Persistence)) { - throw new Error("persistence must be Persistence"); - } - - if (flushOnWrite !== null && !(typeof flushOnWrite === "boolean")) { - throw new Error("flushOnWrite must be Boolean"); - } - - if (exportDefinition !== null && !(exportDefinition instanceof ExportDefinition)) { - throw new Error("exportDefinition must be ExportDefinition"); - } - - this.#__name = name; - this.#__maxSize = maxSize; - this.#__streamSegmentSize = streamSegmentSize; - this.#__timeToLiveMillis = timeToLiveMillis; - this.#__strategyOnFull = strategyOnFull; - this.#__persistence = persistence; - this.#__flushOnWrite = flushOnWrite; - this.#__exportDefinition = exportDefinition; - } - - /** - * The unique name of the stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. - * @returns {String} - - */ - get name() { - return this.#__name; - } - /** - * @param value {String} The unique name of the stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. - */ - set name(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("name must be String"); - } - - this.#__name = value; - } - /** - * @param value {String} The unique name of the stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} - */ - withName(value) { - this.name = value; - return this; - } - - /** - * The maximum size in bytes for the entire stream. Set to 256MB by default with a minimum of 1KB and a maximum of 8192PB. - * @returns {Number} - - */ - get maxSize() { - return this.#__maxSize; - } - /** - * @param value {Number} The maximum size in bytes for the entire stream. Set to 256MB by default with a minimum of 1KB and a maximum of 8192PB. - */ - set maxSize(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("maxSize must be Number"); - } - - this.#__maxSize = value; - } - /** - * @param value {Number} The maximum size in bytes for the entire stream. Set to 256MB by default with a minimum of 1KB and a maximum of 8192PB. - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} - */ - withMaxSize(value) { - this.maxSize = value; - return this; - } - - /** - * The size of each segment of the stream. Set to 16MB by default with a minimum of 1KB and a maximum of 2GB. - Data is only deleted segment by segment, so the segment size is the smallest amount of data which can be deleted. - * @returns {Number} - - */ - get streamSegmentSize() { - return this.#__streamSegmentSize; - } - /** - * @param value {Number} The size of each segment of the stream. Set to 16MB by default with a minimum of 1KB and a maximum of 2GB. - Data is only deleted segment by segment, so the segment size is the smallest amount of data which can be deleted. - */ - set streamSegmentSize(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("streamSegmentSize must be Number"); - } - - this.#__streamSegmentSize = value; - } - /** - * @param value {Number} The size of each segment of the stream. Set to 16MB by default with a minimum of 1KB and a maximum of 2GB. - Data is only deleted segment by segment, so the segment size is the smallest amount of data which can be deleted. - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} - */ - withStreamSegmentSize(value) { - this.streamSegmentSize = value; - return this; - } - - /** - * Time to live for each message in milliseconds. Data may be deleted at any time after the TTL expires; deletion is not guaranteed to occur immediately when the TTL expires. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. - * @returns {Number} - - */ - get timeToLiveMillis() { - return this.#__timeToLiveMillis; - } - /** - * @param value {Number} Time to live for each message in milliseconds. Data may be deleted at any time after the TTL expires; deletion is not guaranteed to occur immediately when the TTL expires. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. - */ - set timeToLiveMillis(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("timeToLiveMillis must be Number"); - } - - this.#__timeToLiveMillis = value; - } - /** - * @param value {Number} Time to live for each message in milliseconds. Data may be deleted at any time after the TTL expires; deletion is not guaranteed to occur immediately when the TTL expires. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} - */ - withTimeToLiveMillis(value) { - this.timeToLiveMillis = value; - return this; - } - - /** - * What to do when the maximum size of the stream is reached. - RejectNewData: any append message request after the stream is full will be rejected with an exception. - OverwriteOldestData: the oldest stream segments will be deleted until there is room for the new message. - * @returns {aws-greengrass-core-sdk.StreamManager.StrategyOnFull} - - */ - get strategyOnFull() { - return this.#__strategyOnFull; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.StrategyOnFull} What to do when the maximum size of the stream is reached. - RejectNewData: any append message request after the stream is full will be rejected with an exception. - OverwriteOldestData: the oldest stream segments will be deleted until there is room for the new message. - */ - set strategyOnFull(value) { - if (value !== null && !(value instanceof StrategyOnFull)) { - throw new Error("strategyOnFull must be StrategyOnFull"); - } - - this.#__strategyOnFull = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.StrategyOnFull} What to do when the maximum size of the stream is reached. - RejectNewData: any append message request after the stream is full will be rejected with an exception. - OverwriteOldestData: the oldest stream segments will be deleted until there is room for the new message. - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} - */ - withStrategyOnFull(value) { - this.strategyOnFull = value; - return this; - } - - /** - * Stream persistence. If set to File, the file system will be used to persist messages long-term and is resilient to restarts. - Memory should be used when performance matters more than durability as it only stores the stream in memory and never writes to the disk. - * @returns {aws-greengrass-core-sdk.StreamManager.Persistence} - - */ - get persistence() { - return this.#__persistence; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.Persistence} Stream persistence. If set to File, the file system will be used to persist messages long-term and is resilient to restarts. - Memory should be used when performance matters more than durability as it only stores the stream in memory and never writes to the disk. - */ - set persistence(value) { - if (value !== null && !(value instanceof Persistence)) { - throw new Error("persistence must be Persistence"); - } - - this.#__persistence = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.Persistence} Stream persistence. If set to File, the file system will be used to persist messages long-term and is resilient to restarts. - Memory should be used when performance matters more than durability as it only stores the stream in memory and never writes to the disk. - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} - */ - withPersistence(value) { - this.persistence = value; - return this; - } - - /** - * This only applies when Persistence is set to File mode. - Waits for the filesystem to complete the write for every message. This is safer, but slower. Default is false. - * @returns {Boolean} - - */ - get flushOnWrite() { - return this.#__flushOnWrite; - } - /** - * @param value {Boolean} This only applies when Persistence is set to File mode. - Waits for the filesystem to complete the write for every message. This is safer, but slower. Default is false. - */ - set flushOnWrite(value) { - if (value !== null && !(typeof value === "boolean")) { - throw new Error("flushOnWrite must be Boolean"); - } - - this.#__flushOnWrite = value; - } - /** - * @param value {Boolean} This only applies when Persistence is set to File mode. - Waits for the filesystem to complete the write for every message. This is safer, but slower. Default is false. - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} - */ - withFlushOnWrite(value) { - this.flushOnWrite = value; - return this; - } - - /** - * Defines how and where the stream is uploaded. See the definition of the ExportDefinition object for more detail. - * @returns {aws-greengrass-core-sdk.StreamManager.ExportDefinition} - - */ - get exportDefinition() { - return this.#__exportDefinition; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.ExportDefinition} Defines how and where the stream is uploaded. See the definition of the ExportDefinition object for more detail. - */ - set exportDefinition(value) { - if (value !== null && !(value instanceof ExportDefinition)) { - throw new Error("exportDefinition must be ExportDefinition"); - } - - this.#__exportDefinition = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.ExportDefinition} Defines how and where the stream is uploaded. See the definition of the ExportDefinition object for more detail. - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} - */ - withExportDefinition(value) { - this.exportDefinition = value; - return this; - } - - static fromMap(d) { - const ret = new MessageStreamDefinition(); - if ("name" in d) { - ret.name = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["name"]) : d["name"]; - } - if ("maxSize" in d) { - ret.maxSize = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["maxSize"]) : d["maxSize"]; - } - if ("streamSegmentSize" in d) { - ret.streamSegmentSize = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["streamSegmentSize"]) : d["streamSegmentSize"]; - } - if ("timeToLiveMillis" in d) { - ret.timeToLiveMillis = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["timeToLiveMillis"]) : d["timeToLiveMillis"]; - } - if ("strategyOnFull" in d) { - ret.strategyOnFull = Object.prototype.hasOwnProperty.call(StrategyOnFull, "fromMap") ? StrategyOnFull.fromMap(d["strategyOnFull"]) : d["strategyOnFull"]; - } - if ("persistence" in d) { - ret.persistence = Object.prototype.hasOwnProperty.call(Persistence, "fromMap") ? Persistence.fromMap(d["persistence"]) : d["persistence"]; - } - if ("flushOnWrite" in d) { - ret.flushOnWrite = Object.prototype.hasOwnProperty.call(Boolean, "fromMap") ? Boolean.fromMap(d["flushOnWrite"]) : d["flushOnWrite"]; - } - if ("exportDefinition" in d) { - ret.exportDefinition = Object.prototype.hasOwnProperty.call(ExportDefinition, "fromMap") ? ExportDefinition.fromMap(d["exportDefinition"]) : d["exportDefinition"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.name !== null) { - d["name"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.name), "asMap") ? this.name.asMap() : this.name; - } - if (this.maxSize !== null) { - d["maxSize"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.maxSize), "asMap") ? this.maxSize.asMap() : this.maxSize; - } - if (this.streamSegmentSize !== null) { - d["streamSegmentSize"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.streamSegmentSize), "asMap") ? this.streamSegmentSize.asMap() : this.streamSegmentSize; - } - if (this.timeToLiveMillis !== null) { - d["timeToLiveMillis"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.timeToLiveMillis), "asMap") ? this.timeToLiveMillis.asMap() : this.timeToLiveMillis; - } - if (this.strategyOnFull !== null) { - d["strategyOnFull"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.strategyOnFull), "asMap") ? this.strategyOnFull.asMap() : this.strategyOnFull; - } - if (this.persistence !== null) { - d["persistence"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.persistence), "asMap") ? this.persistence.asMap() : this.persistence; - } - if (this.flushOnWrite !== null) { - d["flushOnWrite"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.flushOnWrite), "asMap") ? this.flushOnWrite.asMap() : this.flushOnWrite; - } - if (this.exportDefinition !== null) { - d["exportDefinition"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.exportDefinition), "asMap") ? this.exportDefinition.asMap() : this.exportDefinition; - } - return d; - } -}; - -Object.defineProperty(MessageStreamDefinition, "typesMap", { - value: { - name: { - 'type': String, - 'subtype': null - }, - maxSize: { - 'type': Number, - 'subtype': null - }, - streamSegmentSize: { - 'type': Number, - 'subtype': null - }, - timeToLiveMillis: { - 'type': Number, - 'subtype': null - }, - strategyOnFull: { - 'type': StrategyOnFull, - 'subtype': null - }, - persistence: { - 'type': Persistence, - 'subtype': null - }, - flushOnWrite: { - 'type': Boolean, - 'subtype': null - }, - exportDefinition: { - 'type': ExportDefinition, - 'subtype': null - }, - } -}); -Object.defineProperty(MessageStreamDefinition, "formatsMap", { - value: {} -}); -Object.defineProperty(MessageStreamDefinition, "validationsMap", { - value: { - 'name': { - 'required': true, - 'minLength': 1, - 'maxLength': 255, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'maxSize': { - 'required': false, - 'maximum': 9223372036854775807, - 'minimum': 1024, - }, - 'streamSegmentSize': { - 'required': false, - 'maximum': 2147483647, - 'minimum': 1024, - }, - 'timeToLiveMillis': { - 'required': false, - 'maximum': 9223372036854, - 'minimum': 60000, - }, - 'strategyOnFull': { - 'required': true, - }, - 'persistence': { - 'required': false, - }, - 'flushOnWrite': { - 'required': false, - }, - 'exportDefinition': { - 'required': false, - }, - } -}); - -/** - * Message stream information including its definition, storage status and export status - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class MessageStreamInfo { - #__definition = null; - #__storageStatus = null; - #__exportStatuses = null; - - /** - * @param definition {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} - * @param storageStatus {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus} Stream status including oldest/newest sequence number and total bytes - * @param exportStatuses {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses[]} - */ - constructor( - definition = null, - storageStatus = null, - exportStatuses = null, - ) { - if (definition !== null && !(definition instanceof MessageStreamDefinition)) { - throw new Error("definition must be MessageStreamDefinition"); - } - - if (storageStatus !== null && !(storageStatus instanceof MessageStreamInfo._storageStatus)) { - throw new Error("storageStatus must be MessageStreamInfo._storageStatus"); - } - - if (exportStatuses !== null && !(exportStatuses instanceof Array)) { - throw new Error("exportStatuses must be Array"); - } - if (exportStatuses !== null && !exportStatuses.every((v) => v instanceof MessageStreamInfo._exportStatuses)) { - throw new Error("exportStatuses array values must be MessageStreamInfo._exportStatuses"); - } - - this.#__definition = definition; - this.#__storageStatus = storageStatus; - this.#__exportStatuses = exportStatuses; - } - - /** - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} - - */ - get definition() { - return this.#__definition; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} - */ - set definition(value) { - if (value !== null && !(value instanceof MessageStreamDefinition)) { - throw new Error("definition must be MessageStreamDefinition"); - } - - this.#__definition = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo} - */ - withDefinition(value) { - this.definition = value; - return this; - } - - /** - * Stream status including oldest/newest sequence number and total bytes - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus} - - */ - get storageStatus() { - return this.#__storageStatus; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus} Stream status including oldest/newest sequence number and total bytes - */ - set storageStatus(value) { - if (value !== null && !(value instanceof MessageStreamInfo._storageStatus)) { - throw new Error("storageStatus must be MessageStreamInfo._storageStatus"); - } - - this.#__storageStatus = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus} Stream status including oldest/newest sequence number and total bytes - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo} - */ - withStorageStatus(value) { - this.storageStatus = value; - return this; - } - - /** - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses[]} - - */ - get exportStatuses() { - return this.#__exportStatuses; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses[]} - */ - set exportStatuses(value) { - if (value !== null && !(value instanceof Array)) { - throw new Error("exportStatuses must be Array"); - } - if (value !== null && !value.every((v) => v instanceof MessageStreamInfo._exportStatuses)) { - throw new Error("exportStatuses array values must be MessageStreamInfo._exportStatuses"); - } - - this.#__exportStatuses = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses[]} - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo} - */ - withExportStatuses(value) { - this.exportStatuses = value; - return this; - } - - static fromMap(d) { - const ret = new MessageStreamInfo(); - if ("definition" in d) { - ret.definition = Object.prototype.hasOwnProperty.call(MessageStreamDefinition, "fromMap") ? MessageStreamDefinition.fromMap(d["definition"]) : d["definition"]; - } - if ("storageStatus" in d) { - ret.storageStatus = Object.prototype.hasOwnProperty.call(MessageStreamInfo._storageStatus, "fromMap") ? MessageStreamInfo._storageStatus.fromMap(d["storageStatus"]) : d["storageStatus"]; - } - if ("exportStatuses" in d) { - ret.exportStatuses = d["exportStatuses"].reduce((acc, v) => { - acc.push(Object.prototype.hasOwnProperty.call(MessageStreamInfo._exportStatuses, "fromMap") ? MessageStreamInfo._exportStatuses.fromMap(v) : v); - return acc; - }, []); - } - return ret; - } - - asMap() { - const d = {}; - if (this.definition !== null) { - d["definition"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.definition), "asMap") ? this.definition.asMap() : this.definition; - } - if (this.storageStatus !== null) { - d["storageStatus"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.storageStatus), "asMap") ? this.storageStatus.asMap() : this.storageStatus; - } - if (this.exportStatuses !== null) { - d["exportStatuses"] = this.exportStatuses.reduce((acc, v) => { - acc.push(Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(v), "asMap") ? v.asMap() : v); - return acc; - }, []); - } - return d; - } -}; - -MessageStreamInfo._storageStatus = - /** - * Stream status including oldest/newest sequence number and total bytes - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ - class _storageStatus { - #__oldestSequenceNumber = null; - #__newestSequenceNumber = null; - #__totalBytes = null; - - /** - * @param oldestSequenceNumber {Number} The sequence number of the first message which is still accessible in the stream. - * @param newestSequenceNumber {Number} The sequence number of the last appended message. - * @param totalBytes {Number} The current total size of the stream in bytes. - */ - constructor( - oldestSequenceNumber = null, - newestSequenceNumber = null, - totalBytes = null, - ) { - if (oldestSequenceNumber !== null && !(typeof oldestSequenceNumber === "number")) { - throw new Error("oldestSequenceNumber must be Number"); - } - - if (newestSequenceNumber !== null && !(typeof newestSequenceNumber === "number")) { - throw new Error("newestSequenceNumber must be Number"); - } - - if (totalBytes !== null && !(typeof totalBytes === "number")) { - throw new Error("totalBytes must be Number"); - } - - this.#__oldestSequenceNumber = oldestSequenceNumber; - this.#__newestSequenceNumber = newestSequenceNumber; - this.#__totalBytes = totalBytes; - } - - /** - * The sequence number of the first message which is still accessible in the stream. - * @returns {Number} - - */ - get oldestSequenceNumber() { - return this.#__oldestSequenceNumber; - } - /** - * @param value {Number} The sequence number of the first message which is still accessible in the stream. - */ - set oldestSequenceNumber(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("oldestSequenceNumber must be Number"); - } - - this.#__oldestSequenceNumber = value; - } - /** - * @param value {Number} The sequence number of the first message which is still accessible in the stream. - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus} - */ - withOldestSequenceNumber(value) { - this.oldestSequenceNumber = value; - return this; - } - - /** - * The sequence number of the last appended message. - * @returns {Number} - - */ - get newestSequenceNumber() { - return this.#__newestSequenceNumber; - } - /** - * @param value {Number} The sequence number of the last appended message. - */ - set newestSequenceNumber(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("newestSequenceNumber must be Number"); - } - - this.#__newestSequenceNumber = value; - } - /** - * @param value {Number} The sequence number of the last appended message. - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus} - */ - withNewestSequenceNumber(value) { - this.newestSequenceNumber = value; - return this; - } - - /** - * The current total size of the stream in bytes. - * @returns {Number} - - */ - get totalBytes() { - return this.#__totalBytes; - } - /** - * @param value {Number} The current total size of the stream in bytes. - */ - set totalBytes(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("totalBytes must be Number"); - } - - this.#__totalBytes = value; - } - /** - * @param value {Number} The current total size of the stream in bytes. - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus} - */ - withTotalBytes(value) { - this.totalBytes = value; - return this; - } - - static fromMap(d) { - const ret = new MessageStreamInfo._storageStatus(); - if ("oldestSequenceNumber" in d) { - ret.oldestSequenceNumber = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["oldestSequenceNumber"]) : d["oldestSequenceNumber"]; - } - if ("newestSequenceNumber" in d) { - ret.newestSequenceNumber = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["newestSequenceNumber"]) : d["newestSequenceNumber"]; - } - if ("totalBytes" in d) { - ret.totalBytes = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["totalBytes"]) : d["totalBytes"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.oldestSequenceNumber !== null) { - d["oldestSequenceNumber"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.oldestSequenceNumber), "asMap") ? this.oldestSequenceNumber.asMap() : this.oldestSequenceNumber; - } - if (this.newestSequenceNumber !== null) { - d["newestSequenceNumber"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.newestSequenceNumber), "asMap") ? this.newestSequenceNumber.asMap() : this.newestSequenceNumber; - } - if (this.totalBytes !== null) { - d["totalBytes"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.totalBytes), "asMap") ? this.totalBytes.asMap() : this.totalBytes; - } - return d; - } - }; - -Object.defineProperty(MessageStreamInfo._storageStatus, "typesMap", { - value: { - oldestSequenceNumber: { - 'type': Number, - 'subtype': null - }, - newestSequenceNumber: { - 'type': Number, - 'subtype': null - }, - totalBytes: { - 'type': Number, - 'subtype': null - }, - } -}); -Object.defineProperty(MessageStreamInfo._storageStatus, "formatsMap", { - value: {} -}); -Object.defineProperty(MessageStreamInfo._storageStatus, "validationsMap", { - value: { - 'oldestSequenceNumber': { - 'required': false, - }, - 'newestSequenceNumber': { - 'required': false, - }, - 'totalBytes': { - 'required': false, - }, - } -}); - -MessageStreamInfo._exportStatuses = - /** - * Export status including the export identifier and the last exported sequence number for that export task - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ - class _exportStatuses { - #__exportConfigIdentifier = null; - #__lastExportedSequenceNumber = null; - #__lastExportTime = null; - #__errorMessage = null; - - /** - * @param exportConfigIdentifier {String} The unique export identifier. - * @param lastExportedSequenceNumber {Number} The sequence number of the last message which was successfully exported. - * @param lastExportTime {Number} The last time an export was attempted. Data is Unix epoch time in milliseconds. - * @param errorMessage {String} Error message from the last export attempt if it failed. - */ - constructor( - exportConfigIdentifier = null, - lastExportedSequenceNumber = null, - lastExportTime = null, - errorMessage = null, - ) { - if (exportConfigIdentifier !== null && !(typeof exportConfigIdentifier === "string")) { - throw new Error("exportConfigIdentifier must be String"); - } - - if (lastExportedSequenceNumber !== null && !(typeof lastExportedSequenceNumber === "number")) { - throw new Error("lastExportedSequenceNumber must be Number"); - } - - if (lastExportTime !== null && !(typeof lastExportTime === "number")) { - throw new Error("lastExportTime must be Number"); - } - - if (errorMessage !== null && !(typeof errorMessage === "string")) { - throw new Error("errorMessage must be String"); - } - - this.#__exportConfigIdentifier = exportConfigIdentifier; - this.#__lastExportedSequenceNumber = lastExportedSequenceNumber; - this.#__lastExportTime = lastExportTime; - this.#__errorMessage = errorMessage; - } - - /** - * The unique export identifier. - * @returns {String} - - */ - get exportConfigIdentifier() { - return this.#__exportConfigIdentifier; - } - /** - * @param value {String} The unique export identifier. - */ - set exportConfigIdentifier(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("exportConfigIdentifier must be String"); - } - - this.#__exportConfigIdentifier = value; - } - /** - * @param value {String} The unique export identifier. - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses} - */ - withExportConfigIdentifier(value) { - this.exportConfigIdentifier = value; - return this; - } - - /** - * The sequence number of the last message which was successfully exported. - * @returns {Number} - - */ - get lastExportedSequenceNumber() { - return this.#__lastExportedSequenceNumber; - } - /** - * @param value {Number} The sequence number of the last message which was successfully exported. - */ - set lastExportedSequenceNumber(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("lastExportedSequenceNumber must be Number"); - } - - this.#__lastExportedSequenceNumber = value; - } - /** - * @param value {Number} The sequence number of the last message which was successfully exported. - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses} - */ - withLastExportedSequenceNumber(value) { - this.lastExportedSequenceNumber = value; - return this; - } - - /** - * The last time an export was attempted. Data is Unix epoch time in milliseconds. - * @returns {Number} - - */ - get lastExportTime() { - return this.#__lastExportTime; - } - /** - * @param value {Number} The last time an export was attempted. Data is Unix epoch time in milliseconds. - */ - set lastExportTime(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("lastExportTime must be Number"); - } - - this.#__lastExportTime = value; - } - /** - * @param value {Number} The last time an export was attempted. Data is Unix epoch time in milliseconds. - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses} - */ - withLastExportTime(value) { - this.lastExportTime = value; - return this; - } - - /** - * Error message from the last export attempt if it failed. - * @returns {String} - - */ - get errorMessage() { - return this.#__errorMessage; - } - /** - * @param value {String} Error message from the last export attempt if it failed. - */ - set errorMessage(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("errorMessage must be String"); - } - - this.#__errorMessage = value; - } - /** - * @param value {String} Error message from the last export attempt if it failed. - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses} - */ - withErrorMessage(value) { - this.errorMessage = value; - return this; - } - - static fromMap(d) { - const ret = new MessageStreamInfo._exportStatuses(); - if ("exportConfigIdentifier" in d) { - ret.exportConfigIdentifier = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["exportConfigIdentifier"]) : d["exportConfigIdentifier"]; - } - if ("lastExportedSequenceNumber" in d) { - ret.lastExportedSequenceNumber = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["lastExportedSequenceNumber"]) : d["lastExportedSequenceNumber"]; - } - if ("lastExportTime" in d) { - ret.lastExportTime = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["lastExportTime"]) : d["lastExportTime"]; - } - if ("errorMessage" in d) { - ret.errorMessage = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["errorMessage"]) : d["errorMessage"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.exportConfigIdentifier !== null) { - d["exportConfigIdentifier"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.exportConfigIdentifier), "asMap") ? this.exportConfigIdentifier.asMap() : this.exportConfigIdentifier; - } - if (this.lastExportedSequenceNumber !== null) { - d["lastExportedSequenceNumber"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.lastExportedSequenceNumber), "asMap") ? this.lastExportedSequenceNumber.asMap() : this.lastExportedSequenceNumber; - } - if (this.lastExportTime !== null) { - d["lastExportTime"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.lastExportTime), "asMap") ? this.lastExportTime.asMap() : this.lastExportTime; - } - if (this.errorMessage !== null) { - d["errorMessage"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.errorMessage), "asMap") ? this.errorMessage.asMap() : this.errorMessage; - } - return d; - } - }; - -Object.defineProperty(MessageStreamInfo._exportStatuses, "typesMap", { - value: { - exportConfigIdentifier: { - 'type': String, - 'subtype': null - }, - lastExportedSequenceNumber: { - 'type': Number, - 'subtype': null - }, - lastExportTime: { - 'type': Number, - 'subtype': null - }, - errorMessage: { - 'type': String, - 'subtype': null - }, - } -}); -Object.defineProperty(MessageStreamInfo._exportStatuses, "formatsMap", { - value: {} -}); -Object.defineProperty(MessageStreamInfo._exportStatuses, "validationsMap", { - value: { - 'exportConfigIdentifier': { - 'required': false, - }, - 'lastExportedSequenceNumber': { - 'required': true, - }, - 'lastExportTime': { - 'required': false, - }, - 'errorMessage': { - 'required': false, - }, - } -}); - -Object.defineProperty(MessageStreamInfo, "typesMap", { - value: { - definition: { - 'type': MessageStreamDefinition, - 'subtype': null - }, - storageStatus: { - 'type': MessageStreamInfo._storageStatus, - 'subtype': null - }, - exportStatuses: { - 'type': Array, - 'subtype': MessageStreamInfo._exportStatuses - }, - } -}); -Object.defineProperty(MessageStreamInfo, "formatsMap", { - value: {} -}); -Object.defineProperty(MessageStreamInfo, "validationsMap", { - value: { - 'definition': { - 'required': true, - }, - 'storageStatus': { - 'required': true, - }, - 'exportStatuses': { - 'required': false, - }, - } -}); - -/** - * Message object containing metadata and the user's payload - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class Message { - #__streamName = null; - #__sequenceNumber = null; - #__ingestTime = null; - #__payload = null; - - /** - * @param streamName {String} The name of the stream which this message is in. - * @param sequenceNumber {Number} The sequence number of this message within the stream. - * @param ingestTime {Number} The time that the message was ingested to Stream Manager. Data is Unix epoch time in milliseconds. - * @param payload {Buffer} The binary message data. - */ - constructor( - streamName = null, - sequenceNumber = null, - ingestTime = null, - payload = null, - ) { - if (streamName !== null && !(typeof streamName === "string")) { - throw new Error("streamName must be String"); - } - - if (sequenceNumber !== null && !(typeof sequenceNumber === "number")) { - throw new Error("sequenceNumber must be Number"); - } - - if (ingestTime !== null && !(typeof ingestTime === "number")) { - throw new Error("ingestTime must be Number"); - } - - if (payload !== null && !(payload instanceof Buffer)) { - throw new Error("payload must be Buffer"); - } - - this.#__streamName = streamName; - this.#__sequenceNumber = sequenceNumber; - this.#__ingestTime = ingestTime; - this.#__payload = payload; - } - - /** - * The name of the stream which this message is in. - * @returns {String} - - */ - get streamName() { - return this.#__streamName; - } - /** - * @param value {String} The name of the stream which this message is in. - */ - set streamName(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("streamName must be String"); - } - - this.#__streamName = value; - } - /** - * @param value {String} The name of the stream which this message is in. - * @returns {aws-greengrass-core-sdk.StreamManager.Message} - */ - withStreamName(value) { - this.streamName = value; - return this; - } - - /** - * The sequence number of this message within the stream. - * @returns {Number} - - */ - get sequenceNumber() { - return this.#__sequenceNumber; - } - /** - * @param value {Number} The sequence number of this message within the stream. - */ - set sequenceNumber(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("sequenceNumber must be Number"); - } - - this.#__sequenceNumber = value; - } - /** - * @param value {Number} The sequence number of this message within the stream. - * @returns {aws-greengrass-core-sdk.StreamManager.Message} - */ - withSequenceNumber(value) { - this.sequenceNumber = value; - return this; - } - - /** - * The time that the message was ingested to Stream Manager. Data is Unix epoch time in milliseconds. - * @returns {Number} - - */ - get ingestTime() { - return this.#__ingestTime; - } - /** - * @param value {Number} The time that the message was ingested to Stream Manager. Data is Unix epoch time in milliseconds. - */ - set ingestTime(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("ingestTime must be Number"); - } - - this.#__ingestTime = value; - } - /** - * @param value {Number} The time that the message was ingested to Stream Manager. Data is Unix epoch time in milliseconds. - * @returns {aws-greengrass-core-sdk.StreamManager.Message} - */ - withIngestTime(value) { - this.ingestTime = value; - return this; - } - - /** - * The binary message data. - * @returns {Buffer} - - */ - get payload() { - return this.#__payload; - } - /** - * @param value {Buffer} The binary message data. - */ - set payload(value) { - if (value !== null && !(value instanceof Buffer)) { - throw new Error("payload must be Buffer"); - } - - this.#__payload = value; - } - /** - * @param value {Buffer} The binary message data. - * @returns {aws-greengrass-core-sdk.StreamManager.Message} - */ - withPayload(value) { - this.payload = value; - return this; - } - - static fromMap(d) { - const ret = new Message(); - if ("streamName" in d) { - ret.streamName = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["streamName"]) : d["streamName"]; - } - if ("sequenceNumber" in d) { - ret.sequenceNumber = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["sequenceNumber"]) : d["sequenceNumber"]; - } - if ("ingestTime" in d) { - ret.ingestTime = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["ingestTime"]) : d["ingestTime"]; - } - if ("payload" in d) { - ret.payload = Object.prototype.hasOwnProperty.call(Buffer, "fromMap") ? Buffer.fromMap(d["payload"]) : d["payload"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.streamName !== null) { - d["streamName"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.streamName), "asMap") ? this.streamName.asMap() : this.streamName; - } - if (this.sequenceNumber !== null) { - d["sequenceNumber"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.sequenceNumber), "asMap") ? this.sequenceNumber.asMap() : this.sequenceNumber; - } - if (this.ingestTime !== null) { - d["ingestTime"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.ingestTime), "asMap") ? this.ingestTime.asMap() : this.ingestTime; - } - if (this.payload !== null) { - d["payload"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.payload), "asMap") ? this.payload.asMap() : this.payload; - } - return d; - } -}; - -Object.defineProperty(Message, "typesMap", { - value: { - streamName: { - 'type': String, - 'subtype': null - }, - sequenceNumber: { - 'type': Number, - 'subtype': null - }, - ingestTime: { - 'type': Number, - 'subtype': null - }, - payload: { - 'type': Buffer, - 'subtype': null - }, - } -}); -Object.defineProperty(Message, "formatsMap", { - value: {} -}); -Object.defineProperty(Message, "validationsMap", { - value: { - 'streamName': { - 'required': true, - }, - 'sequenceNumber': { - 'required': false, - }, - 'ingestTime': { - 'required': false, - }, - 'payload': { - 'required': true, - }, - } -}); - -/** - * Options for the ReadMessages API. All fields are optional. - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class ReadMessagesOptions { - #__desiredStartSequenceNumber = null; - #__minMessageCount = null; - #__maxMessageCount = null; - #__readTimeoutMillis = null; - - /** - * @param desiredStartSequenceNumber {Number} The desired beginning sequence number to start reading from. If the desired sequence number is less than the current minimum of the stream, then it will instead start reading from the current minimum. - * @param minMessageCount {Number} The minimum number of messages that will be returned. If not enough messages are available for reading, then NotEnoughMessages exception will be thrown. - The minimum values is 1 and the maximum value is 2147483647. - * @param maxMessageCount {Number} The maximum number of messages that will be returned. - The minimum values is the value of the minimum message count and the maximum value is 2147483647. - * @param readTimeoutMillis {Number} The time to wait for messages in milliseconds. Default is 0, meaning that the server will not wait for messages. - If it can fulfill the minimum messages it will return them, but otherwise NotEnoughMessages exception will be thrown. - If the timeout is greater than zero, then the server will wait up to that time for more messages to be appended to the stream, waiting until the minimum number of messages is reached. - The maximum value is the value of the client timeout. - */ - constructor( - desiredStartSequenceNumber = null, - minMessageCount = 1, - maxMessageCount = null, - readTimeoutMillis = 0, - ) { - if (desiredStartSequenceNumber !== null && !(typeof desiredStartSequenceNumber === "number")) { - throw new Error("desiredStartSequenceNumber must be Number"); - } - - if (minMessageCount !== null && !(typeof minMessageCount === "number")) { - throw new Error("minMessageCount must be Number"); - } - - if (maxMessageCount !== null && !(typeof maxMessageCount === "number")) { - throw new Error("maxMessageCount must be Number"); - } - - if (readTimeoutMillis !== null && !(typeof readTimeoutMillis === "number")) { - throw new Error("readTimeoutMillis must be Number"); - } - - this.#__desiredStartSequenceNumber = desiredStartSequenceNumber; - this.#__minMessageCount = minMessageCount; - this.#__maxMessageCount = maxMessageCount; - this.#__readTimeoutMillis = readTimeoutMillis; - } - - /** - * The desired beginning sequence number to start reading from. If the desired sequence number is less than the current minimum of the stream, then it will instead start reading from the current minimum. - * @returns {Number} - - */ - get desiredStartSequenceNumber() { - return this.#__desiredStartSequenceNumber; - } - /** - * @param value {Number} The desired beginning sequence number to start reading from. If the desired sequence number is less than the current minimum of the stream, then it will instead start reading from the current minimum. - */ - set desiredStartSequenceNumber(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("desiredStartSequenceNumber must be Number"); - } - - this.#__desiredStartSequenceNumber = value; - } - /** - * @param value {Number} The desired beginning sequence number to start reading from. If the desired sequence number is less than the current minimum of the stream, then it will instead start reading from the current minimum. - * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions} - */ - withDesiredStartSequenceNumber(value) { - this.desiredStartSequenceNumber = value; - return this; - } - - /** - * The minimum number of messages that will be returned. If not enough messages are available for reading, then NotEnoughMessages exception will be thrown. - The minimum values is 1 and the maximum value is 2147483647. - * @returns {Number} - - */ - get minMessageCount() { - return this.#__minMessageCount; - } - /** - * @param value {Number} The minimum number of messages that will be returned. If not enough messages are available for reading, then NotEnoughMessages exception will be thrown. - The minimum values is 1 and the maximum value is 2147483647. - */ - set minMessageCount(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("minMessageCount must be Number"); - } - - this.#__minMessageCount = value; - } - /** - * @param value {Number} The minimum number of messages that will be returned. If not enough messages are available for reading, then NotEnoughMessages exception will be thrown. - The minimum values is 1 and the maximum value is 2147483647. - * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions} - */ - withMinMessageCount(value) { - this.minMessageCount = value; - return this; - } - - /** - * The maximum number of messages that will be returned. - The minimum values is the value of the minimum message count and the maximum value is 2147483647. - * @returns {Number} - - */ - get maxMessageCount() { - return this.#__maxMessageCount; - } - /** - * @param value {Number} The maximum number of messages that will be returned. - The minimum values is the value of the minimum message count and the maximum value is 2147483647. - */ - set maxMessageCount(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("maxMessageCount must be Number"); - } - - this.#__maxMessageCount = value; - } - /** - * @param value {Number} The maximum number of messages that will be returned. - The minimum values is the value of the minimum message count and the maximum value is 2147483647. - * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions} - */ - withMaxMessageCount(value) { - this.maxMessageCount = value; - return this; - } - - /** - * The time to wait for messages in milliseconds. Default is 0, meaning that the server will not wait for messages. - If it can fulfill the minimum messages it will return them, but otherwise NotEnoughMessages exception will be thrown. - If the timeout is greater than zero, then the server will wait up to that time for more messages to be appended to the stream, waiting until the minimum number of messages is reached. - The maximum value is the value of the client timeout. - * @returns {Number} - - */ - get readTimeoutMillis() { - return this.#__readTimeoutMillis; - } - /** - * @param value {Number} The time to wait for messages in milliseconds. Default is 0, meaning that the server will not wait for messages. - If it can fulfill the minimum messages it will return them, but otherwise NotEnoughMessages exception will be thrown. - If the timeout is greater than zero, then the server will wait up to that time for more messages to be appended to the stream, waiting until the minimum number of messages is reached. - The maximum value is the value of the client timeout. - */ - set readTimeoutMillis(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("readTimeoutMillis must be Number"); - } - - this.#__readTimeoutMillis = value; - } - /** - * @param value {Number} The time to wait for messages in milliseconds. Default is 0, meaning that the server will not wait for messages. - If it can fulfill the minimum messages it will return them, but otherwise NotEnoughMessages exception will be thrown. - If the timeout is greater than zero, then the server will wait up to that time for more messages to be appended to the stream, waiting until the minimum number of messages is reached. - The maximum value is the value of the client timeout. - * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions} - */ - withReadTimeoutMillis(value) { - this.readTimeoutMillis = value; - return this; - } - - static fromMap(d) { - const ret = new ReadMessagesOptions(); - if ("desiredStartSequenceNumber" in d) { - ret.desiredStartSequenceNumber = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["desiredStartSequenceNumber"]) : d["desiredStartSequenceNumber"]; - } - if ("minMessageCount" in d) { - ret.minMessageCount = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["minMessageCount"]) : d["minMessageCount"]; - } - if ("maxMessageCount" in d) { - ret.maxMessageCount = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["maxMessageCount"]) : d["maxMessageCount"]; - } - if ("readTimeoutMillis" in d) { - ret.readTimeoutMillis = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["readTimeoutMillis"]) : d["readTimeoutMillis"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.desiredStartSequenceNumber !== null) { - d["desiredStartSequenceNumber"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.desiredStartSequenceNumber), "asMap") ? this.desiredStartSequenceNumber.asMap() : this.desiredStartSequenceNumber; - } - if (this.minMessageCount !== null) { - d["minMessageCount"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.minMessageCount), "asMap") ? this.minMessageCount.asMap() : this.minMessageCount; - } - if (this.maxMessageCount !== null) { - d["maxMessageCount"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.maxMessageCount), "asMap") ? this.maxMessageCount.asMap() : this.maxMessageCount; - } - if (this.readTimeoutMillis !== null) { - d["readTimeoutMillis"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.readTimeoutMillis), "asMap") ? this.readTimeoutMillis.asMap() : this.readTimeoutMillis; - } - return d; - } -}; - -Object.defineProperty(ReadMessagesOptions, "typesMap", { - value: { - desiredStartSequenceNumber: { - 'type': Number, - 'subtype': null - }, - minMessageCount: { - 'type': Number, - 'subtype': null - }, - maxMessageCount: { - 'type': Number, - 'subtype': null - }, - readTimeoutMillis: { - 'type': Number, - 'subtype': null - }, - } -}); -Object.defineProperty(ReadMessagesOptions, "formatsMap", { - value: {} -}); -Object.defineProperty(ReadMessagesOptions, "validationsMap", { - value: { - 'desiredStartSequenceNumber': { - 'required': false, - 'maximum': 9223372036854775807, - 'minimum': 0, - }, - 'minMessageCount': { - 'required': false, - 'maximum': 2147483647, - 'minimum': 1, - }, - 'maxMessageCount': { - 'required': false, - 'maximum': 2147483647, - 'minimum': 1, - }, - 'readTimeoutMillis': { - 'required': false, - 'maximum': 9223372036854, - 'minimum': 0, - }, - } -}); - -/** - * (Internal Only) Request object for creating a message stream - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class CreateMessageStreamRequest { - #__requestId = null; - #__definition = null; - - /** - * @param requestId {String} - * @param definition {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} - */ - constructor( - requestId = null, - definition = null, - ) { - if (requestId !== null && !(typeof requestId === "string")) { - throw new Error("requestId must be String"); - } - - if (definition !== null && !(definition instanceof MessageStreamDefinition)) { - throw new Error("definition must be MessageStreamDefinition"); - } - - this.#__requestId = requestId; - this.#__definition = definition; - } - - /** - * @returns {String} - - */ - get requestId() { - return this.#__requestId; - } - /** - * @param value {String} - */ - set requestId(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("requestId must be String"); - } - - this.#__requestId = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.CreateMessageStreamRequest} - */ - withRequestId(value) { - this.requestId = value; - return this; - } - - /** - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} - - */ - get definition() { - return this.#__definition; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} - */ - set definition(value) { - if (value !== null && !(value instanceof MessageStreamDefinition)) { - throw new Error("definition must be MessageStreamDefinition"); - } - - this.#__definition = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} - * @returns {aws-greengrass-core-sdk.StreamManager.CreateMessageStreamRequest} - */ - withDefinition(value) { - this.definition = value; - return this; - } - - static fromMap(d) { - const ret = new CreateMessageStreamRequest(); - if ("requestId" in d) { - ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"]; - } - if ("definition" in d) { - ret.definition = Object.prototype.hasOwnProperty.call(MessageStreamDefinition, "fromMap") ? MessageStreamDefinition.fromMap(d["definition"]) : d["definition"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.requestId !== null) { - d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId; - } - if (this.definition !== null) { - d["definition"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.definition), "asMap") ? this.definition.asMap() : this.definition; - } - return d; - } -}; - -Object.defineProperty(CreateMessageStreamRequest, "typesMap", { - value: { - requestId: { - 'type': String, - 'subtype': null - }, - definition: { - 'type': MessageStreamDefinition, - 'subtype': null - }, - } -}); -Object.defineProperty(CreateMessageStreamRequest, "formatsMap", { - value: {} -}); -Object.defineProperty(CreateMessageStreamRequest, "validationsMap", { - value: { - 'requestId': { - 'required': true, - 'minLength': 1, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'definition': { - 'required': true, - }, - } -}); - -/** - * Internal Only - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class CreateMessageStreamResponse { - #__requestId = null; - #__status = null; - #__errorMessage = null; - - /** - * @param requestId {String} - * @param status {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - * @param errorMessage {String} - */ - constructor( - requestId = null, - status = null, - errorMessage = null, - ) { - if (requestId !== null && !(typeof requestId === "string")) { - throw new Error("requestId must be String"); - } - - if (status !== null && !(status instanceof ResponseStatusCode)) { - throw new Error("status must be ResponseStatusCode"); - } - - if (errorMessage !== null && !(typeof errorMessage === "string")) { - throw new Error("errorMessage must be String"); - } - - this.#__requestId = requestId; - this.#__status = status; - this.#__errorMessage = errorMessage; - } - - /** - * @returns {String} - - */ - get requestId() { - return this.#__requestId; - } - /** - * @param value {String} - */ - set requestId(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("requestId must be String"); - } - - this.#__requestId = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.CreateMessageStreamResponse} - */ - withRequestId(value) { - this.requestId = value; - return this; - } - - /** - * @returns {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - - */ - get status() { - return this.#__status; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - */ - set status(value) { - if (value !== null && !(value instanceof ResponseStatusCode)) { - throw new Error("status must be ResponseStatusCode"); - } - - this.#__status = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - * @returns {aws-greengrass-core-sdk.StreamManager.CreateMessageStreamResponse} - */ - withStatus(value) { - this.status = value; - return this; - } - - /** - * @returns {String} - - */ - get errorMessage() { - return this.#__errorMessage; - } - /** - * @param value {String} - */ - set errorMessage(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("errorMessage must be String"); - } - - this.#__errorMessage = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.CreateMessageStreamResponse} - */ - withErrorMessage(value) { - this.errorMessage = value; - return this; - } - - static fromMap(d) { - const ret = new CreateMessageStreamResponse(); - if ("requestId" in d) { - ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"]; - } - if ("status" in d) { - ret.status = Object.prototype.hasOwnProperty.call(ResponseStatusCode, "fromMap") ? ResponseStatusCode.fromMap(d["status"]) : d["status"]; - } - if ("errorMessage" in d) { - ret.errorMessage = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["errorMessage"]) : d["errorMessage"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.requestId !== null) { - d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId; - } - if (this.status !== null) { - d["status"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.status), "asMap") ? this.status.asMap() : this.status; - } - if (this.errorMessage !== null) { - d["errorMessage"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.errorMessage), "asMap") ? this.errorMessage.asMap() : this.errorMessage; - } - return d; - } -}; - -Object.defineProperty(CreateMessageStreamResponse, "typesMap", { - value: { - requestId: { - 'type': String, - 'subtype': null - }, - status: { - 'type': ResponseStatusCode, - 'subtype': null - }, - errorMessage: { - 'type': String, - 'subtype': null - }, - } -}); -Object.defineProperty(CreateMessageStreamResponse, "formatsMap", { - value: {} -}); -Object.defineProperty(CreateMessageStreamResponse, "validationsMap", { - value: { - 'requestId': { - 'required': true, - 'minLength': 1, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'status': { - 'required': true, - }, - 'errorMessage': { - 'required': false, - }, - } -}); - -/** - * (Internal Only) Request object for deleting a message stream - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class DeleteMessageStreamRequest { - #__requestId = null; - #__name = null; - - /** - * @param requestId {String} - * @param name {String} - */ - constructor( - requestId = null, - name = null, - ) { - if (requestId !== null && !(typeof requestId === "string")) { - throw new Error("requestId must be String"); - } - - if (name !== null && !(typeof name === "string")) { - throw new Error("name must be String"); - } - - this.#__requestId = requestId; - this.#__name = name; - } - - /** - * @returns {String} - - */ - get requestId() { - return this.#__requestId; - } - /** - * @param value {String} - */ - set requestId(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("requestId must be String"); - } - - this.#__requestId = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamRequest} - */ - withRequestId(value) { - this.requestId = value; - return this; - } - - /** - * @returns {String} - - */ - get name() { - return this.#__name; - } - /** - * @param value {String} - */ - set name(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("name must be String"); - } - - this.#__name = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamRequest} - */ - withName(value) { - this.name = value; - return this; - } - - static fromMap(d) { - const ret = new DeleteMessageStreamRequest(); - if ("requestId" in d) { - ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"]; - } - if ("name" in d) { - ret.name = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["name"]) : d["name"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.requestId !== null) { - d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId; - } - if (this.name !== null) { - d["name"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.name), "asMap") ? this.name.asMap() : this.name; - } - return d; - } -}; - -Object.defineProperty(DeleteMessageStreamRequest, "typesMap", { - value: { - requestId: { - 'type': String, - 'subtype': null - }, - name: { - 'type': String, - 'subtype': null - }, - } -}); -Object.defineProperty(DeleteMessageStreamRequest, "formatsMap", { - value: {} -}); -Object.defineProperty(DeleteMessageStreamRequest, "validationsMap", { - value: { - 'requestId': { - 'required': true, - 'minLength': 1, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'name': { - 'required': true, - 'minLength': 1, - 'maxLength': 255, - 'pattern': /^[\w ,.\-_]*$/, - }, - } -}); - -/** - * Internal Only - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class DeleteMessageStreamResponse { - #__requestId = null; - #__status = null; - #__errorMessage = null; - - /** - * @param requestId {String} - * @param status {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - * @param errorMessage {String} - */ - constructor( - requestId = null, - status = null, - errorMessage = null, - ) { - if (requestId !== null && !(typeof requestId === "string")) { - throw new Error("requestId must be String"); - } - - if (status !== null && !(status instanceof ResponseStatusCode)) { - throw new Error("status must be ResponseStatusCode"); - } - - if (errorMessage !== null && !(typeof errorMessage === "string")) { - throw new Error("errorMessage must be String"); - } - - this.#__requestId = requestId; - this.#__status = status; - this.#__errorMessage = errorMessage; - } - - /** - * @returns {String} - - */ - get requestId() { - return this.#__requestId; - } - /** - * @param value {String} - */ - set requestId(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("requestId must be String"); - } - - this.#__requestId = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamResponse} - */ - withRequestId(value) { - this.requestId = value; - return this; - } - - /** - * @returns {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - - */ - get status() { - return this.#__status; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - */ - set status(value) { - if (value !== null && !(value instanceof ResponseStatusCode)) { - throw new Error("status must be ResponseStatusCode"); - } - - this.#__status = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - * @returns {aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamResponse} - */ - withStatus(value) { - this.status = value; - return this; - } - - /** - * @returns {String} - - */ - get errorMessage() { - return this.#__errorMessage; - } - /** - * @param value {String} - */ - set errorMessage(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("errorMessage must be String"); - } - - this.#__errorMessage = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamResponse} - */ - withErrorMessage(value) { - this.errorMessage = value; - return this; - } - - static fromMap(d) { - const ret = new DeleteMessageStreamResponse(); - if ("requestId" in d) { - ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"]; - } - if ("status" in d) { - ret.status = Object.prototype.hasOwnProperty.call(ResponseStatusCode, "fromMap") ? ResponseStatusCode.fromMap(d["status"]) : d["status"]; - } - if ("errorMessage" in d) { - ret.errorMessage = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["errorMessage"]) : d["errorMessage"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.requestId !== null) { - d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId; - } - if (this.status !== null) { - d["status"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.status), "asMap") ? this.status.asMap() : this.status; - } - if (this.errorMessage !== null) { - d["errorMessage"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.errorMessage), "asMap") ? this.errorMessage.asMap() : this.errorMessage; - } - return d; - } -}; - -Object.defineProperty(DeleteMessageStreamResponse, "typesMap", { - value: { - requestId: { - 'type': String, - 'subtype': null - }, - status: { - 'type': ResponseStatusCode, - 'subtype': null - }, - errorMessage: { - 'type': String, - 'subtype': null - }, - } -}); -Object.defineProperty(DeleteMessageStreamResponse, "formatsMap", { - value: {} -}); -Object.defineProperty(DeleteMessageStreamResponse, "validationsMap", { - value: { - 'requestId': { - 'required': true, - 'minLength': 1, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'status': { - 'required': true, - }, - 'errorMessage': { - 'required': false, - }, - } -}); - -/** - * (Internal Only) Request object for describing a message stream - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class DescribeMessageStreamRequest { - #__requestId = null; - #__name = null; - - /** - * @param requestId {String} - * @param name {String} - */ - constructor( - requestId = null, - name = null, - ) { - if (requestId !== null && !(typeof requestId === "string")) { - throw new Error("requestId must be String"); - } - - if (name !== null && !(typeof name === "string")) { - throw new Error("name must be String"); - } - - this.#__requestId = requestId; - this.#__name = name; - } - - /** - * @returns {String} - - */ - get requestId() { - return this.#__requestId; - } - /** - * @param value {String} - */ - set requestId(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("requestId must be String"); - } - - this.#__requestId = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamRequest} - */ - withRequestId(value) { - this.requestId = value; - return this; - } - - /** - * @returns {String} - - */ - get name() { - return this.#__name; - } - /** - * @param value {String} - */ - set name(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("name must be String"); - } - - this.#__name = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamRequest} - */ - withName(value) { - this.name = value; - return this; - } - - static fromMap(d) { - const ret = new DescribeMessageStreamRequest(); - if ("requestId" in d) { - ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"]; - } - if ("name" in d) { - ret.name = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["name"]) : d["name"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.requestId !== null) { - d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId; - } - if (this.name !== null) { - d["name"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.name), "asMap") ? this.name.asMap() : this.name; - } - return d; - } -}; - -Object.defineProperty(DescribeMessageStreamRequest, "typesMap", { - value: { - requestId: { - 'type': String, - 'subtype': null - }, - name: { - 'type': String, - 'subtype': null - }, - } -}); -Object.defineProperty(DescribeMessageStreamRequest, "formatsMap", { - value: {} -}); -Object.defineProperty(DescribeMessageStreamRequest, "validationsMap", { - value: { - 'requestId': { - 'required': true, - 'minLength': 1, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'name': { - 'required': true, - 'minLength': 1, - 'maxLength': 255, - 'pattern': /^[\w ,.\-_]*$/, - }, - } -}); - -/** - * (Internal Only) Response object for describing a message stream - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class DescribeMessageStreamResponse { - #__requestId = null; - #__status = null; - #__errorMessage = null; - #__messageStreamInfo = null; - - /** - * @param requestId {String} - * @param status {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - * @param errorMessage {String} - * @param messageStreamInfo {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo} - */ - constructor( - requestId = null, - status = null, - errorMessage = null, - messageStreamInfo = null, - ) { - if (requestId !== null && !(typeof requestId === "string")) { - throw new Error("requestId must be String"); - } - - if (status !== null && !(status instanceof ResponseStatusCode)) { - throw new Error("status must be ResponseStatusCode"); - } - - if (errorMessage !== null && !(typeof errorMessage === "string")) { - throw new Error("errorMessage must be String"); - } - - if (messageStreamInfo !== null && !(messageStreamInfo instanceof MessageStreamInfo)) { - throw new Error("messageStreamInfo must be MessageStreamInfo"); - } - - this.#__requestId = requestId; - this.#__status = status; - this.#__errorMessage = errorMessage; - this.#__messageStreamInfo = messageStreamInfo; - } - - /** - * @returns {String} - - */ - get requestId() { - return this.#__requestId; - } - /** - * @param value {String} - */ - set requestId(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("requestId must be String"); - } - - this.#__requestId = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse} - */ - withRequestId(value) { - this.requestId = value; - return this; - } - - /** - * @returns {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - - */ - get status() { - return this.#__status; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - */ - set status(value) { - if (value !== null && !(value instanceof ResponseStatusCode)) { - throw new Error("status must be ResponseStatusCode"); - } - - this.#__status = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - * @returns {aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse} - */ - withStatus(value) { - this.status = value; - return this; - } - - /** - * @returns {String} - - */ - get errorMessage() { - return this.#__errorMessage; - } - /** - * @param value {String} - */ - set errorMessage(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("errorMessage must be String"); - } - - this.#__errorMessage = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse} - */ - withErrorMessage(value) { - this.errorMessage = value; - return this; - } - - /** - * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo} - - */ - get messageStreamInfo() { - return this.#__messageStreamInfo; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo} - */ - set messageStreamInfo(value) { - if (value !== null && !(value instanceof MessageStreamInfo)) { - throw new Error("messageStreamInfo must be MessageStreamInfo"); - } - - this.#__messageStreamInfo = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo} - * @returns {aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse} - */ - withMessageStreamInfo(value) { - this.messageStreamInfo = value; - return this; - } - - static fromMap(d) { - const ret = new DescribeMessageStreamResponse(); - if ("requestId" in d) { - ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"]; - } - if ("status" in d) { - ret.status = Object.prototype.hasOwnProperty.call(ResponseStatusCode, "fromMap") ? ResponseStatusCode.fromMap(d["status"]) : d["status"]; - } - if ("errorMessage" in d) { - ret.errorMessage = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["errorMessage"]) : d["errorMessage"]; - } - if ("messageStreamInfo" in d) { - ret.messageStreamInfo = Object.prototype.hasOwnProperty.call(MessageStreamInfo, "fromMap") ? MessageStreamInfo.fromMap(d["messageStreamInfo"]) : d["messageStreamInfo"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.requestId !== null) { - d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId; - } - if (this.status !== null) { - d["status"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.status), "asMap") ? this.status.asMap() : this.status; - } - if (this.errorMessage !== null) { - d["errorMessage"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.errorMessage), "asMap") ? this.errorMessage.asMap() : this.errorMessage; - } - if (this.messageStreamInfo !== null) { - d["messageStreamInfo"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.messageStreamInfo), "asMap") ? this.messageStreamInfo.asMap() : this.messageStreamInfo; - } - return d; - } -}; - -Object.defineProperty(DescribeMessageStreamResponse, "typesMap", { - value: { - requestId: { - 'type': String, - 'subtype': null - }, - status: { - 'type': ResponseStatusCode, - 'subtype': null - }, - errorMessage: { - 'type': String, - 'subtype': null - }, - messageStreamInfo: { - 'type': MessageStreamInfo, - 'subtype': null - }, - } -}); -Object.defineProperty(DescribeMessageStreamResponse, "formatsMap", { - value: {} -}); -Object.defineProperty(DescribeMessageStreamResponse, "validationsMap", { - value: { - 'requestId': { - 'required': true, - 'minLength': 1, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'status': { - 'required': true, - }, - 'errorMessage': { - 'required': false, - }, - 'messageStreamInfo': { - 'required': false, - }, - } -}); - -/** - * (Intenral Only) Request object for appending to a message stream - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class AppendMessageRequest { - #__requestId = null; - #__name = null; - #__payload = null; - - /** - * @param requestId {String} - * @param name {String} - * @param payload {Buffer} - */ - constructor( - requestId = null, - name = null, - payload = null, - ) { - if (requestId !== null && !(typeof requestId === "string")) { - throw new Error("requestId must be String"); - } - - if (name !== null && !(typeof name === "string")) { - throw new Error("name must be String"); - } - - if (payload !== null && !(payload instanceof Buffer)) { - throw new Error("payload must be Buffer"); - } - - this.#__requestId = requestId; - this.#__name = name; - this.#__payload = payload; - } - - /** - * @returns {String} - - */ - get requestId() { - return this.#__requestId; - } - /** - * @param value {String} - */ - set requestId(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("requestId must be String"); - } - - this.#__requestId = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.AppendMessageRequest} - */ - withRequestId(value) { - this.requestId = value; - return this; - } - - /** - * @returns {String} - - */ - get name() { - return this.#__name; - } - /** - * @param value {String} - */ - set name(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("name must be String"); - } - - this.#__name = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.AppendMessageRequest} - */ - withName(value) { - this.name = value; - return this; - } - - /** - * @returns {Buffer} - - */ - get payload() { - return this.#__payload; - } - /** - * @param value {Buffer} - */ - set payload(value) { - if (value !== null && !(value instanceof Buffer)) { - throw new Error("payload must be Buffer"); - } - - this.#__payload = value; - } - /** - * @param value {Buffer} - * @returns {aws-greengrass-core-sdk.StreamManager.AppendMessageRequest} - */ - withPayload(value) { - this.payload = value; - return this; - } - - static fromMap(d) { - const ret = new AppendMessageRequest(); - if ("requestId" in d) { - ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"]; - } - if ("name" in d) { - ret.name = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["name"]) : d["name"]; - } - if ("payload" in d) { - ret.payload = Object.prototype.hasOwnProperty.call(Buffer, "fromMap") ? Buffer.fromMap(d["payload"]) : d["payload"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.requestId !== null) { - d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId; - } - if (this.name !== null) { - d["name"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.name), "asMap") ? this.name.asMap() : this.name; - } - if (this.payload !== null) { - d["payload"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.payload), "asMap") ? this.payload.asMap() : this.payload; - } - return d; - } -}; - -Object.defineProperty(AppendMessageRequest, "typesMap", { - value: { - requestId: { - 'type': String, - 'subtype': null - }, - name: { - 'type': String, - 'subtype': null - }, - payload: { - 'type': Buffer, - 'subtype': null - }, - } -}); -Object.defineProperty(AppendMessageRequest, "formatsMap", { - value: {} -}); -Object.defineProperty(AppendMessageRequest, "validationsMap", { - value: { - 'requestId': { - 'required': true, - 'minLength': 1, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'name': { - 'required': true, - 'minLength': 1, - 'maxLength': 255, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'payload': { - 'required': true, - 'minLength': 1, - }, - } -}); - -/** - * Internal Only - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class AppendMessageResponse { - #__requestId = null; - #__status = null; - #__errorMessage = null; - #__sequenceNumber = null; - - /** - * @param requestId {String} - * @param status {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - * @param errorMessage {String} - * @param sequenceNumber {Number} - */ - constructor( - requestId = null, - status = null, - errorMessage = null, - sequenceNumber = null, - ) { - if (requestId !== null && !(typeof requestId === "string")) { - throw new Error("requestId must be String"); - } - - if (status !== null && !(status instanceof ResponseStatusCode)) { - throw new Error("status must be ResponseStatusCode"); - } - - if (errorMessage !== null && !(typeof errorMessage === "string")) { - throw new Error("errorMessage must be String"); - } - - if (sequenceNumber !== null && !(typeof sequenceNumber === "number")) { - throw new Error("sequenceNumber must be Number"); - } - - this.#__requestId = requestId; - this.#__status = status; - this.#__errorMessage = errorMessage; - this.#__sequenceNumber = sequenceNumber; - } - - /** - * @returns {String} - - */ - get requestId() { - return this.#__requestId; - } - /** - * @param value {String} - */ - set requestId(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("requestId must be String"); - } - - this.#__requestId = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.AppendMessageResponse} - */ - withRequestId(value) { - this.requestId = value; - return this; - } - - /** - * @returns {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - - */ - get status() { - return this.#__status; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - */ - set status(value) { - if (value !== null && !(value instanceof ResponseStatusCode)) { - throw new Error("status must be ResponseStatusCode"); - } - - this.#__status = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - * @returns {aws-greengrass-core-sdk.StreamManager.AppendMessageResponse} - */ - withStatus(value) { - this.status = value; - return this; - } - - /** - * @returns {String} - - */ - get errorMessage() { - return this.#__errorMessage; - } - /** - * @param value {String} - */ - set errorMessage(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("errorMessage must be String"); - } - - this.#__errorMessage = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.AppendMessageResponse} - */ - withErrorMessage(value) { - this.errorMessage = value; - return this; - } - - /** - * @returns {Number} - - */ - get sequenceNumber() { - return this.#__sequenceNumber; - } - /** - * @param value {Number} - */ - set sequenceNumber(value) { - if (value !== null && !(typeof value === "number")) { - throw new Error("sequenceNumber must be Number"); - } - - this.#__sequenceNumber = value; - } - /** - * @param value {Number} - * @returns {aws-greengrass-core-sdk.StreamManager.AppendMessageResponse} - */ - withSequenceNumber(value) { - this.sequenceNumber = value; - return this; - } - - static fromMap(d) { - const ret = new AppendMessageResponse(); - if ("requestId" in d) { - ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"]; - } - if ("status" in d) { - ret.status = Object.prototype.hasOwnProperty.call(ResponseStatusCode, "fromMap") ? ResponseStatusCode.fromMap(d["status"]) : d["status"]; - } - if ("errorMessage" in d) { - ret.errorMessage = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["errorMessage"]) : d["errorMessage"]; - } - if ("sequenceNumber" in d) { - ret.sequenceNumber = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["sequenceNumber"]) : d["sequenceNumber"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.requestId !== null) { - d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId; - } - if (this.status !== null) { - d["status"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.status), "asMap") ? this.status.asMap() : this.status; - } - if (this.errorMessage !== null) { - d["errorMessage"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.errorMessage), "asMap") ? this.errorMessage.asMap() : this.errorMessage; - } - if (this.sequenceNumber !== null) { - d["sequenceNumber"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.sequenceNumber), "asMap") ? this.sequenceNumber.asMap() : this.sequenceNumber; - } - return d; - } -}; - -Object.defineProperty(AppendMessageResponse, "typesMap", { - value: { - requestId: { - 'type': String, - 'subtype': null - }, - status: { - 'type': ResponseStatusCode, - 'subtype': null - }, - errorMessage: { - 'type': String, - 'subtype': null - }, - sequenceNumber: { - 'type': Number, - 'subtype': null - }, - } -}); -Object.defineProperty(AppendMessageResponse, "formatsMap", { - value: {} -}); -Object.defineProperty(AppendMessageResponse, "validationsMap", { - value: { - 'requestId': { - 'required': true, - 'minLength': 1, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'status': { - 'required': true, - }, - 'errorMessage': { - 'required': false, - }, - 'sequenceNumber': { - 'required': false, - }, - } -}); - -/** - * (Internal Only) Request object for reading from a message stream. readMessagesOptions is optional. - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class ReadMessagesRequest { - #__requestId = null; - #__streamName = null; - #__readMessagesOptions = null; - - /** - * @param requestId {String} - * @param streamName {String} - * @param readMessagesOptions {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions} - */ - constructor( - requestId = null, - streamName = null, - readMessagesOptions = null, - ) { - if (requestId !== null && !(typeof requestId === "string")) { - throw new Error("requestId must be String"); - } - - if (streamName !== null && !(typeof streamName === "string")) { - throw new Error("streamName must be String"); - } - - if (readMessagesOptions !== null && !(readMessagesOptions instanceof ReadMessagesOptions)) { - throw new Error("readMessagesOptions must be ReadMessagesOptions"); - } - - this.#__requestId = requestId; - this.#__streamName = streamName; - this.#__readMessagesOptions = readMessagesOptions; - } - - /** - * @returns {String} - - */ - get requestId() { - return this.#__requestId; - } - /** - * @param value {String} - */ - set requestId(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("requestId must be String"); - } - - this.#__requestId = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesRequest} - */ - withRequestId(value) { - this.requestId = value; - return this; - } - - /** - * @returns {String} - - */ - get streamName() { - return this.#__streamName; - } - /** - * @param value {String} - */ - set streamName(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("streamName must be String"); - } - - this.#__streamName = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesRequest} - */ - withStreamName(value) { - this.streamName = value; - return this; - } - - /** - * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions} - - */ - get readMessagesOptions() { - return this.#__readMessagesOptions; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions} - */ - set readMessagesOptions(value) { - if (value !== null && !(value instanceof ReadMessagesOptions)) { - throw new Error("readMessagesOptions must be ReadMessagesOptions"); - } - - this.#__readMessagesOptions = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions} - * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesRequest} - */ - withReadMessagesOptions(value) { - this.readMessagesOptions = value; - return this; - } - - static fromMap(d) { - const ret = new ReadMessagesRequest(); - if ("requestId" in d) { - ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"]; - } - if ("streamName" in d) { - ret.streamName = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["streamName"]) : d["streamName"]; - } - if ("readMessagesOptions" in d) { - ret.readMessagesOptions = Object.prototype.hasOwnProperty.call(ReadMessagesOptions, "fromMap") ? ReadMessagesOptions.fromMap(d["readMessagesOptions"]) : d["readMessagesOptions"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.requestId !== null) { - d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId; - } - if (this.streamName !== null) { - d["streamName"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.streamName), "asMap") ? this.streamName.asMap() : this.streamName; - } - if (this.readMessagesOptions !== null) { - d["readMessagesOptions"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.readMessagesOptions), "asMap") ? this.readMessagesOptions.asMap() : this.readMessagesOptions; - } - return d; - } -}; - -Object.defineProperty(ReadMessagesRequest, "typesMap", { - value: { - requestId: { - 'type': String, - 'subtype': null - }, - streamName: { - 'type': String, - 'subtype': null - }, - readMessagesOptions: { - 'type': ReadMessagesOptions, - 'subtype': null - }, - } -}); -Object.defineProperty(ReadMessagesRequest, "formatsMap", { - value: {} -}); -Object.defineProperty(ReadMessagesRequest, "validationsMap", { - value: { - 'requestId': { - 'required': true, - 'minLength': 1, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'streamName': { - 'required': true, - 'minLength': 1, - 'maxLength': 255, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'readMessagesOptions': { - 'required': false, - }, - } -}); - -/** - * Internal Only - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class ReadMessagesResponse { - #__requestId = null; - #__messages = null; - #__status = null; - #__errorMessage = null; - - /** - * @param requestId {String} - * @param messages {aws-greengrass-core-sdk.StreamManager.Message[]} - * @param status {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - * @param errorMessage {String} - */ - constructor( - requestId = null, - messages = null, - status = null, - errorMessage = null, - ) { - if (requestId !== null && !(typeof requestId === "string")) { - throw new Error("requestId must be String"); - } - - if (messages !== null && !(messages instanceof Array)) { - throw new Error("messages must be Array"); - } - if (messages !== null && !messages.every((v) => v instanceof Message)) { - throw new Error("messages array values must be Message"); - } - - if (status !== null && !(status instanceof ResponseStatusCode)) { - throw new Error("status must be ResponseStatusCode"); - } - - if (errorMessage !== null && !(typeof errorMessage === "string")) { - throw new Error("errorMessage must be String"); - } - - this.#__requestId = requestId; - this.#__messages = messages; - this.#__status = status; - this.#__errorMessage = errorMessage; - } - - /** - * @returns {String} - - */ - get requestId() { - return this.#__requestId; - } - /** - * @param value {String} - */ - set requestId(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("requestId must be String"); - } - - this.#__requestId = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse} - */ - withRequestId(value) { - this.requestId = value; - return this; - } - - /** - * @returns {aws-greengrass-core-sdk.StreamManager.Message[]} - - */ - get messages() { - return this.#__messages; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.Message[]} - */ - set messages(value) { - if (value !== null && !(value instanceof Array)) { - throw new Error("messages must be Array"); - } - if (value !== null && !value.every((v) => v instanceof Message)) { - throw new Error("messages array values must be Message"); - } - - this.#__messages = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.Message[]} - * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse} - */ - withMessages(value) { - this.messages = value; - return this; - } - - /** - * @returns {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - - */ - get status() { - return this.#__status; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - */ - set status(value) { - if (value !== null && !(value instanceof ResponseStatusCode)) { - throw new Error("status must be ResponseStatusCode"); - } - - this.#__status = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse} - */ - withStatus(value) { - this.status = value; - return this; - } - - /** - * @returns {String} - - */ - get errorMessage() { - return this.#__errorMessage; - } - /** - * @param value {String} - */ - set errorMessage(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("errorMessage must be String"); - } - - this.#__errorMessage = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse} - */ - withErrorMessage(value) { - this.errorMessage = value; - return this; - } - - static fromMap(d) { - const ret = new ReadMessagesResponse(); - if ("requestId" in d) { - ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"]; - } - if ("messages" in d) { - ret.messages = d["messages"].reduce((acc, v) => { - acc.push(Object.prototype.hasOwnProperty.call(Message, "fromMap") ? Message.fromMap(v) : v); - return acc; - }, []); - } - if ("status" in d) { - ret.status = Object.prototype.hasOwnProperty.call(ResponseStatusCode, "fromMap") ? ResponseStatusCode.fromMap(d["status"]) : d["status"]; - } - if ("errorMessage" in d) { - ret.errorMessage = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["errorMessage"]) : d["errorMessage"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.requestId !== null) { - d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId; - } - if (this.messages !== null) { - d["messages"] = this.messages.reduce((acc, v) => { - acc.push(Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(v), "asMap") ? v.asMap() : v); - return acc; - }, []); - } - if (this.status !== null) { - d["status"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.status), "asMap") ? this.status.asMap() : this.status; - } - if (this.errorMessage !== null) { - d["errorMessage"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.errorMessage), "asMap") ? this.errorMessage.asMap() : this.errorMessage; - } - return d; - } -}; - -Object.defineProperty(ReadMessagesResponse, "typesMap", { - value: { - requestId: { - 'type': String, - 'subtype': null - }, - messages: { - 'type': Array, - 'subtype': Message - }, - status: { - 'type': ResponseStatusCode, - 'subtype': null - }, - errorMessage: { - 'type': String, - 'subtype': null - }, - } -}); -Object.defineProperty(ReadMessagesResponse, "formatsMap", { - value: {} -}); -Object.defineProperty(ReadMessagesResponse, "validationsMap", { - value: { - 'requestId': { - 'required': false, - 'minLength': 1, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'messages': { - 'required': false, - }, - 'status': { - 'required': false, - }, - 'errorMessage': { - 'required': false, - }, - } -}); - -/** - * (Internal Only) Request object to list all available streams. There are no options. - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class ListStreamsRequest { - #__requestId = null; - - /** - * @param requestId {String} - */ - constructor( - requestId = null, - ) { - if (requestId !== null && !(typeof requestId === "string")) { - throw new Error("requestId must be String"); - } - - this.#__requestId = requestId; - } - - /** - * @returns {String} - - */ - get requestId() { - return this.#__requestId; - } - /** - * @param value {String} - */ - set requestId(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("requestId must be String"); - } - - this.#__requestId = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.ListStreamsRequest} - */ - withRequestId(value) { - this.requestId = value; - return this; - } - - static fromMap(d) { - const ret = new ListStreamsRequest(); - if ("requestId" in d) { - ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"]; - } - return ret; - } - - asMap() { - const d = {}; - if (this.requestId !== null) { - d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId; - } - return d; - } -}; - -Object.defineProperty(ListStreamsRequest, "typesMap", { - value: { - requestId: { - 'type': String, - 'subtype': null - }, - } -}); -Object.defineProperty(ListStreamsRequest, "formatsMap", { - value: {} -}); -Object.defineProperty(ListStreamsRequest, "validationsMap", { - value: { - 'requestId': { - 'required': true, - 'minLength': 1, - 'pattern': /^[\w ,.\-_]*$/, - }, - } -}); - -/** - * Internal Only - * - * @class - * @memberOf aws-greengrass-core-sdk.StreamManager - */ -class ListStreamsResponse { - #__requestId = null; - #__status = null; - #__errorMessage = null; - #__streams = null; - - /** - * @param requestId {String} - * @param status {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - * @param errorMessage {String} - * @param streams {String[]} - */ - constructor( - requestId = null, - status = null, - errorMessage = null, - streams = null, - ) { - if (requestId !== null && !(typeof requestId === "string")) { - throw new Error("requestId must be String"); - } - - if (status !== null && !(status instanceof ResponseStatusCode)) { - throw new Error("status must be ResponseStatusCode"); - } - - if (errorMessage !== null && !(typeof errorMessage === "string")) { - throw new Error("errorMessage must be String"); - } - - if (streams !== null && !(streams instanceof Array)) { - throw new Error("streams must be Array"); - } - if (streams !== null && !streams.every((v) => typeof v === "string")) { - throw new Error("streams array values must be String"); - } - - this.#__requestId = requestId; - this.#__status = status; - this.#__errorMessage = errorMessage; - this.#__streams = streams; - } - - /** - * @returns {String} - - */ - get requestId() { - return this.#__requestId; - } - /** - * @param value {String} - */ - set requestId(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("requestId must be String"); - } - - this.#__requestId = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.ListStreamsResponse} - */ - withRequestId(value) { - this.requestId = value; - return this; - } - - /** - * @returns {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - - */ - get status() { - return this.#__status; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - */ - set status(value) { - if (value !== null && !(value instanceof ResponseStatusCode)) { - throw new Error("status must be ResponseStatusCode"); - } - - this.#__status = value; - } - /** - * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} - * @returns {aws-greengrass-core-sdk.StreamManager.ListStreamsResponse} - */ - withStatus(value) { - this.status = value; - return this; - } - - /** - * @returns {String} - - */ - get errorMessage() { - return this.#__errorMessage; - } - /** - * @param value {String} - */ - set errorMessage(value) { - if (value !== null && !(typeof value === "string")) { - throw new Error("errorMessage must be String"); - } - - this.#__errorMessage = value; - } - /** - * @param value {String} - * @returns {aws-greengrass-core-sdk.StreamManager.ListStreamsResponse} - */ - withErrorMessage(value) { - this.errorMessage = value; - return this; - } - - /** - * @returns {String[]} - - */ - get streams() { - return this.#__streams; - } - /** - * @param value {String[]} - */ - set streams(value) { - if (value !== null && !(value instanceof Array)) { - throw new Error("streams must be Array"); - } - if (value !== null && !value.every((v) => typeof v === "string")) { - throw new Error("streams array values must be String"); - } - - this.#__streams = value; - } - /** - * @param value {String[]} - * @returns {aws-greengrass-core-sdk.StreamManager.ListStreamsResponse} - */ - withStreams(value) { - this.streams = value; - return this; - } - - static fromMap(d) { - const ret = new ListStreamsResponse(); - if ("requestId" in d) { - ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"]; - } - if ("status" in d) { - ret.status = Object.prototype.hasOwnProperty.call(ResponseStatusCode, "fromMap") ? ResponseStatusCode.fromMap(d["status"]) : d["status"]; - } - if ("errorMessage" in d) { - ret.errorMessage = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["errorMessage"]) : d["errorMessage"]; - } - if ("streams" in d) { - ret.streams = d["streams"].reduce((acc, v) => { - acc.push(Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(v) : v); - return acc; - }, []); - } - return ret; - } - - asMap() { - const d = {}; - if (this.requestId !== null) { - d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId; - } - if (this.status !== null) { - d["status"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.status), "asMap") ? this.status.asMap() : this.status; - } - if (this.errorMessage !== null) { - d["errorMessage"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.errorMessage), "asMap") ? this.errorMessage.asMap() : this.errorMessage; - } - if (this.streams !== null) { - d["streams"] = this.streams.reduce((acc, v) => { - acc.push(Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(v), "asMap") ? v.asMap() : v); - return acc; - }, []); - } - return d; - } -}; - -Object.defineProperty(ListStreamsResponse, "typesMap", { - value: { - requestId: { - 'type': String, - 'subtype': null - }, - status: { - 'type': ResponseStatusCode, - 'subtype': null - }, - errorMessage: { - 'type': String, - 'subtype': null - }, - streams: { - 'type': Array, - 'subtype': String - }, - } -}); -Object.defineProperty(ListStreamsResponse, "formatsMap", { - value: {} -}); -Object.defineProperty(ListStreamsResponse, "validationsMap", { - value: { - 'requestId': { - 'required': true, - 'minLength': 1, - 'pattern': /^[\w ,.\-_]*$/, - }, - 'status': { - 'required': true, - }, - 'errorMessage': { - 'required': false, - }, - 'streams': { - 'required': false, - }, - } -}); - -/** - * @type {{ -StrategyOnFull: StrategyOnFull, -Persistence: Persistence, -ConnectRequest: ConnectRequest, -ResponseStatusCode: ResponseStatusCode, -ConnectResponse: ConnectResponse, -Operation: Operation, -MessageFrame: MessageFrame, -HTTPConfig: HTTPConfig, -IoTAnalyticsConfig: IoTAnalyticsConfig, -KinesisConfig: KinesisConfig, -ExportDefinition: ExportDefinition, -MessageStreamDefinition: MessageStreamDefinition, -MessageStreamInfo: MessageStreamInfo, -Message: Message, -ReadMessagesOptions: ReadMessagesOptions, -CreateMessageStreamRequest: CreateMessageStreamRequest, -CreateMessageStreamResponse: CreateMessageStreamResponse, -DeleteMessageStreamRequest: DeleteMessageStreamRequest, -DeleteMessageStreamResponse: DeleteMessageStreamResponse, -DescribeMessageStreamRequest: DescribeMessageStreamRequest, -DescribeMessageStreamResponse: DescribeMessageStreamResponse, -AppendMessageRequest: AppendMessageRequest, -AppendMessageResponse: AppendMessageResponse, -ReadMessagesRequest: ReadMessagesRequest, -ReadMessagesResponse: ReadMessagesResponse, -ListStreamsRequest: ListStreamsRequest, -ListStreamsResponse: ListStreamsResponse -}} - */ -module.exports = { - StrategyOnFull, - Persistence, - ConnectRequest, - ResponseStatusCode, - ConnectResponse, - Operation, - MessageFrame, - HTTPConfig, - IoTAnalyticsConfig, - KinesisConfig, - ExportDefinition, - MessageStreamDefinition, - MessageStreamInfo, - Message, - ReadMessagesOptions, - CreateMessageStreamRequest, - CreateMessageStreamResponse, - DeleteMessageStreamRequest, - DeleteMessageStreamResponse, - DescribeMessageStreamRequest, - DescribeMessageStreamResponse, - AppendMessageRequest, - AppendMessageResponse, - ReadMessagesRequest, - ReadMessagesResponse, - ListStreamsRequest, - ListStreamsResponse, -}; \ No newline at end of file diff --git a/aws-greengrass-core-sdk/stream-manager/exceptions.js b/aws-greengrass-core-sdk/stream-manager/exceptions.js deleted file mode 100644 index d1b4377..0000000 --- a/aws-greengrass-core-sdk/stream-manager/exceptions.js +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. - */ - -// eslint-disable-next-line max-classes-per-file -class StreamManagerException extends Error { - constructor(message = '', status = null, requestId = null) { - super(message); - this.status = status; - this.requestId = requestId; - } -} - -class ClientException extends StreamManagerException {} -class ConnectFailedException extends ClientException {} -class InvalidRequestException extends StreamManagerException {} -class MessageStoreReadErrorException extends StreamManagerException {} -class NotEnoughMessagesException extends StreamManagerException {} -class RequestPayloadTooLargeException extends StreamManagerException {} -class ResourceNotFoundException extends StreamManagerException {} -class ResponsePayloadTooLargeException extends StreamManagerException {} -class ServerOutOfMemoryException extends StreamManagerException {} -class ServerTimeoutException extends StreamManagerException {} -class UnauthorizedException extends StreamManagerException {} -class UnknownFailureException extends StreamManagerException {} -class ValidationException extends ClientException {} - -module.exports = { - ClientException, - ConnectFailedException, - InvalidRequestException, - MessageStoreReadErrorException, - NotEnoughMessagesException, - RequestPayloadTooLargeException, - ResourceNotFoundException, - ResponsePayloadTooLargeException, - ServerOutOfMemoryException, - ServerTimeoutException, - StreamManagerException, - UnauthorizedException, - UnknownFailureException, - ValidationException, -}; diff --git a/aws-greengrass-core-sdk/stream-manager/index.js b/aws-greengrass-core-sdk/stream-manager/index.js deleted file mode 100644 index 33820d4..0000000 --- a/aws-greengrass-core-sdk/stream-manager/index.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Copyright (c) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. - */ - -/** - * @namespace aws-greengrass-core-sdk.StreamManager - */ - -module.exports = require('./client'); diff --git a/aws-greengrass-core-sdk/stream-manager/util.js b/aws-greengrass-core-sdk/stream-manager/util.js deleted file mode 100644 index 1ed8a3f..0000000 --- a/aws-greengrass-core-sdk/stream-manager/util.js +++ /dev/null @@ -1,188 +0,0 @@ -/* eslint-disable no-restricted-syntax */ -/* - * Copyright (c) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. - */ - -const smData = require('aws-greengrass-core-sdk/stream-manager/data'); -const exceptions = require('./exceptions'); - -// eslint-disable-next-line no-bitwise -const MAX_PACKET_SIZE = 1 << 30; -const LENGTH_FIELD_SIZE_BYTES = 4; -const OP_FIELD_SIZE_BYTES = 1; -const HEADER_SIZE_BYTES = LENGTH_FIELD_SIZE_BYTES + OP_FIELD_SIZE_BYTES; - -const intToBuffer = (i, length = 4) => { - const buf = Buffer.alloc(length); - if (length === 4) { - buf.writeInt32BE(i, 0); - } else if (length === 1) { - buf.writeInt8(i, 0); - } else { - throw new Error('Illegal value specified for intToBuffer length. Must be 1 or 4.'); - } - return buf; -}; - -const intFromBuffer = (b) => { - if (b.length >= 4) { - return b.readInt32BE(0); - } else { - return b.readInt8(0); - } -}; - -const encodeFrame = (frame) => { - if (frame.payload.length + 1 > MAX_PACKET_SIZE) { - throw new exceptions.RequestPayloadTooLargeException(); - } - - const buf = Buffer.alloc(HEADER_SIZE_BYTES); - buf.writeInt32BE(frame.payload.length + 1, 0); - buf.writeInt8(frame.operation.asMap(), LENGTH_FIELD_SIZE_BYTES); - return { header: buf, payload: frame.payload }; -}; - -/** - * From https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript - * @ignore - * @returns {string} - */ -const uuidv4 = () => 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => { - // eslint-disable-next-line no-bitwise - const r = Math.random() * 16 | 0; - const - // eslint-disable-next-line no-bitwise,no-mixed-operators - v = c === 'x' ? r : (r & 0x3 | 0x8); - return v.toString(16); -}); - -const isInvalid = (o) => { - if (o === null || typeof o === 'undefined') { - return false; - } - if (!Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(o).constructor, 'validationsMap')) { - return false; - } - - for (const [propName, validations] of Object.entries(Object.getPrototypeOf(o).constructor.validationsMap)) { - if (!(propName in o)) { - return `Object is malformed, missing property: ${propName}`; - } - - // Validate all properties on arrays - if (o[propName] instanceof Array) { - for (const [i, v] of o[propName].entries()) { - const result = isInvalid(v); - if (result) { - return `Property ${propName}[${i}] is invalid because ${result}`; - } - } - } - - // Validate the property - if ('required' in validations && validations.required && o[propName] === null) { - return `Property ${propName} is required, but was null`; - } - if ( - 'minLength' in validations - && o[propName] !== null - && o[propName].length < validations.minLength - ) { - return `Property ${propName} must have a minimum length of ${validations.minLength}, but found length of ${o[propName].length}`; - } - if ( - 'maxLength' in validations - && o[propName] !== null - && o[propName].length > validations.maxLength - ) { - return `Property ${propName} must have a maximum length of ${validations.maxLength}, but found length of ${o[propName].length}`; - } - if ( - 'minItems' in validations - && o[propName] !== null - && o[propName].length < validations.minItems - ) { - return `Property ${propName} must have at least ${validations.minItems} items, but found ${o[propName].length}`; - } - if ( - 'maxItems' in validations - && o[propName] !== null - && o[propName].length > validations.maxItems - ) { - return `Property ${propName} must have at most ${validations.maxItems} items, but found ${o[propName].length}`; - } - if ( - 'maximum' in validations - && o[propName] !== null - && o[propName] > validations.maximum - ) { - return `Property ${propName} must be at most ${validations.maximum}`; - } - if ( - 'minimum' in validations - && o[propName] !== null - && o[propName] < validations.minimum - ) { - return `Property ${propName} must be at least ${validations.minimum}`; - } - if ( - 'pattern' in validations - && o[propName] !== null - && o[propName].match(validations.pattern) === null - ) { - return `Property ${propName} must match regex ${validations.pattern}`; - } - } - - // Recurse down to check validity of objects within objects - for (const propName of Object.keys(Object.getPrototypeOf(o).constructor.validationsMap)) { - const result = isInvalid(o[propName]); - if (result) { - return `Property ${propName} is invalid because ${result}`; - } - } - - return false; -}; - -const throwOnErrorResponse = (response) => { - // eslint-disable-next-line no-empty - if (response.status === smData.ResponseStatusCode.Success) { - - } else if (response.status === smData.ResponseStatusCode.InvalidRequest) { - throw new exceptions.InvalidRequestException(response.errorMessage, response.status, response.requestId); - } else if (response.status === smData.ResponseStatusCode.RequestPayloadTooLarge) { - throw new exceptions.RequestPayloadTooLargeException(response.errorMessage, response.status, response.requestId); - } else if (response.status === smData.ResponseStatusCode.ResourceNotFound) { - throw new exceptions.ResourceNotFoundException(response.errorMessage, response.status, response.requestId); - } else if (response.status === smData.ResponseStatusCode.ResponsePayloadTooLarge) { - throw new exceptions.ResponsePayloadTooLargeException(response.errorMessage, response.status, response.requestId); - } else if (response.status === smData.ResponseStatusCode.ServerTimeout) { - throw new exceptions.ServerTimeoutException(response.errorMessage, response.status, response.requestId); - } else if (response.status === smData.ResponseStatusCode.Unauthorized) { - throw new exceptions.UnauthorizedException(response.errorMessage, response.status, response.requestId); - } else if (response.status === smData.ResponseStatusCode.UnknownFailure) { - throw new exceptions.UnknownFailureException(response.errorMessage, response.status, response.requestId); - } else if (response.status === smData.ResponseStatusCode.NotEnoughMessages) { - throw new exceptions.NotEnoughMessagesException(response.errorMessage, response.status, response.requestId); - } else if (response.status === smData.ResponseStatusCode.MessageStoreReadError) { - throw new exceptions.MessageStoreReadErrorException(response.errorMessage, response.status, response.requestId); - } else if (response.status === smData.ResponseStatusCode.OutOfMemoryError) { - throw new exceptions.ServerOutOfMemoryException(response.errorMessage, response.status, response.requestId); - } else { - throw new exceptions.StreamManagerException( - 'Client is not able to understand this server response status code', 'Unrecognized', response.requestId, - ); - } -}; - -module.exports = { - intToBuffer, - intFromBuffer, - encodeFrame, - uuidv4, - isInvalid, - throwOnErrorResponse, - MAX_PACKET_SIZE, -}; diff --git a/aws-greengrass-core-sdk/util.js b/aws-greengrass-core-sdk/util.js deleted file mode 100644 index b73fe3c..0000000 --- a/aws-greengrass-core-sdk/util.js +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - */ - -const base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/; -const qualifierRegex = /(|[a-zA-Z0-9$_-]+)/; - -exports.getParameter = function _getParameter(params, desiredParam) { - if (!Object.prototype.hasOwnProperty.call(params, desiredParam)) { - return; - } - return params[desiredParam]; -}; - -exports.isValidJSON = function _isValidJSON(str) { - try { - JSON.parse(str); - } catch (e) { - return false; - } - return true; -}; - -exports.isValidContext = function _isValidContext(context) { - if (!base64Regex.test(context)) { - return false; - } - try { - JSON.stringify(context); - } catch (e) { - return false; - } - return true; -}; - -exports.isValidQualifier = function _isValidQualifier(qualifier) { - if (!qualifierRegex.test(qualifier)) { - return false; - } - return true; -}; diff --git a/docs/.nojekyll b/docs/.nojekyll deleted file mode 100644 index e69de29..0000000 diff --git a/docs/aws-greengrass-core-sdk.IotData.html b/docs/aws-greengrass-core-sdk.IotData.html deleted file mode 100644 index 157c447..0000000 --- a/docs/aws-greengrass-core-sdk.IotData.html +++ /dev/null @@ -1,1145 +0,0 @@ - - - - - JSDoc: Class: IotData - - - - - - - - - - -
- -

Class: IotData

- - - - - - -
- -
- -

- aws-greengrass-core-sdk~IotData()

- -
Constructs a service interface object. Each API operation is exposed as a function on service.
- - -
- -
-
- - - - -

Constructor

- - - -

new IotData()

- - - - - - -
- Constructs a service object. This object has one method for each API operation. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - -
Example
- -

Constructing a IotData object

- -
var iotdata = new GG.IotData();
- - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

deleteThingShadow(params, callback)

- - - - - - -
- Call shadow lambda to delete the shadow state. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
params - - -Object - - - - -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
thingName - - -String - - - - The name of the thing whose shadow should be deleted.
- -
callback - - -iotDataCallback - - - - The callback.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

getThingShadow(params, callback)

- - - - - - -
- Gets the thing shadow for the specified thing. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
params - - -Object - - - - -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
thingName - - -String - - - - The name of the thing.
- -
callback - - -iotDataCallback - - - - The callback.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - -
Example
- -

Calling the getThingShadow operation

- -
var params = {
-  thingName: 'STRING_VALUE' // required
-};
-iotdata.getThingShadow(params, function(err, data) {
-  if (err) console.log(err, err.stack); // an error occurred
-  else     console.log(data);           // successful response
-});
- - - - - - - - - -

publish(params, callback)

- - - - - - -
- Publishes a message within Greengrass. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
params - - -Object - - - - -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
topic - - -String - - - - The name of the MQTT topic.
payload - - -Buffer -| - -TypedArray -| - -Blob -| - -String - - - - The payload to be sent.
queueFullPolicy - - -'AllOrError' -| - -'BestEffort' - - - - Specify whether to enforce message delivery to all destinations. Options are 'AllOrError' and 'BestEffort'. Defaults to 'BestEffort' when omitted.
- -
callback - - -iotDataCallback - - - - The callback.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - -
Example
- -

Calling the publish operation

- -
var params = {
-  topic: 'STRING_VALUE', // required
-  payload: new Buffer('...') || 'STRING_VALUE',
-  queueFullPolicy: 'AllOrError' || 'BestEffort'
-};
-iotdata.publish(params, function(err, data) {
-  if (err) console.log(err, err.stack); // an error occurred
-  else     console.log(data);           // successful response
-});
- - - - - - - - - -

updateThingShadow(params, callback)

- - - - - - -
- Updates the thing shadow for the specified thing. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
params - - -Object - - - - -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
thingName - - -String - - - - The name of the thing.
payload - - -String - - - - The state information as a JSON string.
- -
callback - - -iotDataCallback - - - - The callback.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - -
Example
- -

Calling the updateThingShadow operation

- -
var params = {
-  payload: 'Proper JSON data', // required
-  thingName: 'STRING_VALUE' // required
-};
-iotdata.updateThingShadow(params, function(err, data) {
-  if (err) console.log(err, err.stack); // an error occurred
-  else     console.log(data);           // successful response
-});
- - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.Lambda.html b/docs/aws-greengrass-core-sdk.Lambda.html deleted file mode 100644 index fcacd25..0000000 --- a/docs/aws-greengrass-core-sdk.Lambda.html +++ /dev/null @@ -1,585 +0,0 @@ - - - - - JSDoc: Class: Lambda - - - - - - - - - - -
- -

Class: Lambda

- - - - - - -
- -
- -

- aws-greengrass-core-sdk~Lambda()

- -
Constructs a service interface object. Each API operation is exposed as a function on service.
- - -
- -
-
- - - - -

Constructor

- - - -

new Lambda()

- - - - - - -
- Constructs a service object. This object has one method for each API operation. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - -
Example
- -

Constructing a Lambda object

- -
var lambda = new GG.Lambda();
- - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

invoke(params, callback)

- - - - - - -
- Invokes a specific Lambda function.
-In Greengrass, version of the Lambda which you would like to invoke needs to be provided. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
params - - -Object - - - - -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
FunctionName - - -String - - - - - - - - - - The Lambda function name. You can specify Amazon Resource Name (ARN) of the function (for example, arn:aws:lambda:us-west-2:account-id:function:ThumbNail).
InvocationType - - -String - - - - - - - - <nullable>
- - - -
By default, the Invoke API assumes RequestResponse invocation type. -You can optionally request asynchronous execution by specifying Event as the InvocationType. Possible values include: -
  • "Event"
  • "RequestResponse"
ClientContext - - -String - - - - - - - - <nullable>
- - - -
Using the ClientContext you can pass client-specific information to the Lambda function you are invoking. -You can then process the client information in your Lambda function as you choose through the context variable. -For an example of a ClientContext JSON, see the main page or an example folder for an example. -
The ClientContext JSON must be base64-encoded.
Payload - - -Buffer -| - -TypedArray -| - -Blob -| - -String - - - - - - - - - - Payload that you want to provide to your Lambda function as input.
Qualifier - - -String - - - - - - - - <nullable>
- - - -
You can use this optional parameter to specify a Lambda function version if it was not included in the FunctionName field. -If you specify a function version, the API uses the qualified function ARN to invoke a specific Lambda function. -
If you don't provide this parameter, then the API uses the FunctionName field only. If it does not have a version number of the target lambda, the call will fail.
- -
callback - - -lambdaCallback - - - - The callback.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - -
Examples
- -

To invoke a Lambda function

- -
//This operation invokes a Lambda function
-
-var params = {
-  ClientContext: "MyApp",
-  FunctionName: "MyFunction",
-  InvocationType: "Event",
-  Payload: <json | binary>,
-  Qualifier: "1"
-};
-lambda.invoke(params, function(err, data) {
-  if (err) console.log(err, err.stack); // an error occurred
-  else     console.log(data);           // successful response
-});
- -

Calling the invoke operation

- -
var params = {
-  FunctionName: 'STRING_VALUE', // required
-  ClientContext: 'STRING_VALUE',
-  InvocationType: Event | RequestResponse,
-  Payload: <json | binary>,
-  Qualifier: 'STRING_VALUE'
-};
-lambda.invoke(params, function(err, data) {
-  if (err) console.log(err, err.stack); // an error occurred
-  else     console.log(data);           // successful response
-});
- - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.SecretsManager.html b/docs/aws-greengrass-core-sdk.SecretsManager.html deleted file mode 100644 index be53b80..0000000 --- a/docs/aws-greengrass-core-sdk.SecretsManager.html +++ /dev/null @@ -1,435 +0,0 @@ - - - - - JSDoc: Class: SecretsManager - - - - - - - - - - -
- -

Class: SecretsManager

- - - - - - -
- -
- -

- aws-greengrass-core-sdk~SecretsManager()

- -
Constructs a service interface object. Each API operation is exposed as a function on service.
- - -
- -
-
- - - - -

Constructor

- - - -

new SecretsManager()

- - - - - - -
- Constructs a service object. This object has one method for each API operation. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - -
Example
- -

Constructing a SecretsManager object

- -
var secretsmanager = new GG.SecretsManager();
- - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

getSecretValue(params, callback)

- - - - - - -
- Retrieves a specific local secret value. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
params - - -Object - - - - -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
SecretId - - -String - - - - Specifies the secret containing the version that you want to retrieve. You can specify either the Amazon Resource Name (ARN) or the friendly name of the secret.
VersionStage - - -String - - - - Specifies the secret version that you want to retrieve by the staging label attached to the version. -
Staging labels are used to keep track of different versions during the rotation process.
- -
callback - - -secretsManagerCallback - - - - The callback.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - -
Example
- -

Retrieving a local secret value

- -
// This operation retrieves a local secret value
-
-var params = {
-  SecretId: "STRING_VALUE",
-  VersionStage: "STRING_VALUE"
-};
-secretsmanager.getSecretValue(params, function(err, data) {
-  if (err) console.log(err, err.stack); // an error occurred
-  else     console.log(data);           // successful response
-});
- - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.AppendMessageRequest.html b/docs/aws-greengrass-core-sdk.StreamManager.AppendMessageRequest.html deleted file mode 100644 index 0bf24a0..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.AppendMessageRequest.html +++ /dev/null @@ -1,1095 +0,0 @@ - - - - - JSDoc: Class: AppendMessageRequest - - - - - - - - - - -
- -

Class: AppendMessageRequest

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~AppendMessageRequest(requestId, name, payload)

- -
(Intenral Only) Request object for appending to a message stream
- - -
- -
-
- - - - -

Constructor

- - - -

new AppendMessageRequest(requestId, name, payload)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
requestId - - -String - - - - - - null - -
name - - -String - - - - - - null - -
payload - - -Buffer - - - - - - null - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

name

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

name

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

payload

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

payload

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withName(value) → {aws-greengrass-core-sdk.StreamManager.AppendMessageRequest}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.AppendMessageRequest - - -
-
- - - - - - - - - - - - - -

withPayload(value) → {aws-greengrass-core-sdk.StreamManager.AppendMessageRequest}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Buffer - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.AppendMessageRequest - - -
-
- - - - - - - - - - - - - -

withRequestId(value) → {aws-greengrass-core-sdk.StreamManager.AppendMessageRequest}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.AppendMessageRequest - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.AppendMessageResponse.html b/docs/aws-greengrass-core-sdk.StreamManager.AppendMessageResponse.html deleted file mode 100644 index 0080d13..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.AppendMessageResponse.html +++ /dev/null @@ -1,1391 +0,0 @@ - - - - - JSDoc: Class: AppendMessageResponse - - - - - - - - - - -
- -

Class: AppendMessageResponse

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~AppendMessageResponse(requestId, status, errorMessage, sequenceNumber)

- -
Internal Only
- - -
- -
-
- - - - -

Constructor

- - - -

new AppendMessageResponse(requestId, status, errorMessage, sequenceNumber)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
requestId - - -String - - - - - - null - -
status - - -aws-greengrass-core-sdk.StreamManager.ResponseStatusCode - - - - - - null - -
errorMessage - - -String - - - - - - null - -
sequenceNumber - - -Number - - - - - - null - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

errorMessage

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

errorMessage

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

sequenceNumber

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

sequenceNumber

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

status

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

status

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withErrorMessage(value) → {aws-greengrass-core-sdk.StreamManager.AppendMessageResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.AppendMessageResponse - - -
-
- - - - - - - - - - - - - -

withRequestId(value) → {aws-greengrass-core-sdk.StreamManager.AppendMessageResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.AppendMessageResponse - - -
-
- - - - - - - - - - - - - -

withSequenceNumber(value) → {aws-greengrass-core-sdk.StreamManager.AppendMessageResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.AppendMessageResponse - - -
-
- - - - - - - - - - - - - -

withStatus(value) → {aws-greengrass-core-sdk.StreamManager.AppendMessageResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -aws-greengrass-core-sdk.StreamManager.ResponseStatusCode - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.AppendMessageResponse - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.ConnectRequest.html b/docs/aws-greengrass-core-sdk.StreamManager.ConnectRequest.html deleted file mode 100644 index fe7066a..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.ConnectRequest.html +++ /dev/null @@ -1,1391 +0,0 @@ - - - - - JSDoc: Class: ConnectRequest - - - - - - - - - - -
- -

Class: ConnectRequest

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~ConnectRequest(requestId, protocolVersion, sdkVersion, authToken)

- -
(Internal Only) Request object to connect to the service
- - -
- -
-
- - - - -

Constructor

- - - -

new ConnectRequest(requestId, protocolVersion, sdkVersion, authToken)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
requestId - - -String - - - - - - null - -
protocolVersion - - -String - - - - - - null - -
sdkVersion - - -String - - - - - - null - -
authToken - - -String - - - - - - null - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

authToken

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

authToken

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

protocolVersion

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

protocolVersion

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

sdkVersion

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

sdkVersion

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withAuthToken(value) → {aws-greengrass-core-sdk.StreamManager.ConnectRequest}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ConnectRequest - - -
-
- - - - - - - - - - - - - -

withProtocolVersion(value) → {aws-greengrass-core-sdk.StreamManager.ConnectRequest}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ConnectRequest - - -
-
- - - - - - - - - - - - - -

withRequestId(value) → {aws-greengrass-core-sdk.StreamManager.ConnectRequest}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ConnectRequest - - -
-
- - - - - - - - - - - - - -

withSdkVersion(value) → {aws-greengrass-core-sdk.StreamManager.ConnectRequest}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ConnectRequest - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.ConnectResponse.html b/docs/aws-greengrass-core-sdk.StreamManager.ConnectResponse.html deleted file mode 100644 index 7cb6642..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.ConnectResponse.html +++ /dev/null @@ -1,2279 +0,0 @@ - - - - - JSDoc: Class: ConnectResponse - - - - - - - - - - -
- -

Class: ConnectResponse

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~ConnectResponse(requestId, status, errorMessage, protocolVersion, supportedProtocolVersions, serverVersion, clientIdentifier)

- -
Internal Only
- - -
- -
-
- - - - -

Constructor

- - - -

new ConnectResponse(requestId, status, errorMessage, protocolVersion, supportedProtocolVersions, serverVersion, clientIdentifier)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
requestId - - -String - - - - - - null - -
status - - -aws-greengrass-core-sdk.StreamManager.ResponseStatusCode - - - - - - null - -
errorMessage - - -String - - - - - - null - -
protocolVersion - - -String - - - - - - null - -
supportedProtocolVersions - - -Array.<String> - - - - - - null - -
serverVersion - - -String - - - - - - null - -
clientIdentifier - - -String - - - - - - null - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

clientIdentifier

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

clientIdentifier

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

errorMessage

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

errorMessage

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

protocolVersion

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

protocolVersion

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

serverVersion

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

serverVersion

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

status

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

status

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

supportedProtocolVersions

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

supportedProtocolVersions

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withClientIdentifier(value) → {aws-greengrass-core-sdk.StreamManager.ConnectResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ConnectResponse - - -
-
- - - - - - - - - - - - - -

withErrorMessage(value) → {aws-greengrass-core-sdk.StreamManager.ConnectResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ConnectResponse - - -
-
- - - - - - - - - - - - - -

withProtocolVersion(value) → {aws-greengrass-core-sdk.StreamManager.ConnectResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ConnectResponse - - -
-
- - - - - - - - - - - - - -

withRequestId(value) → {aws-greengrass-core-sdk.StreamManager.ConnectResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ConnectResponse - - -
-
- - - - - - - - - - - - - -

withServerVersion(value) → {aws-greengrass-core-sdk.StreamManager.ConnectResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ConnectResponse - - -
-
- - - - - - - - - - - - - -

withStatus(value) → {aws-greengrass-core-sdk.StreamManager.ConnectResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -aws-greengrass-core-sdk.StreamManager.ResponseStatusCode - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ConnectResponse - - -
-
- - - - - - - - - - - - - -

withSupportedProtocolVersions(value) → {aws-greengrass-core-sdk.StreamManager.ConnectResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Array.<String> - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ConnectResponse - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.CreateMessageStreamRequest.html b/docs/aws-greengrass-core-sdk.StreamManager.CreateMessageStreamRequest.html deleted file mode 100644 index 0102bc9..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.CreateMessageStreamRequest.html +++ /dev/null @@ -1,799 +0,0 @@ - - - - - JSDoc: Class: CreateMessageStreamRequest - - - - - - - - - - -
- -

Class: CreateMessageStreamRequest

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~CreateMessageStreamRequest(requestId, definition)

- -
(Internal Only) Request object for creating a message stream
- - -
- -
-
- - - - -

Constructor

- - - -

new CreateMessageStreamRequest(requestId, definition)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
requestId - - -String - - - - - - null - -
definition - - -aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition - - - - - - null - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

definition

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

definition

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withDefinition(value) → {aws-greengrass-core-sdk.StreamManager.CreateMessageStreamRequest}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.CreateMessageStreamRequest - - -
-
- - - - - - - - - - - - - -

withRequestId(value) → {aws-greengrass-core-sdk.StreamManager.CreateMessageStreamRequest}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.CreateMessageStreamRequest - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.CreateMessageStreamResponse.html b/docs/aws-greengrass-core-sdk.StreamManager.CreateMessageStreamResponse.html deleted file mode 100644 index 1ae8e62..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.CreateMessageStreamResponse.html +++ /dev/null @@ -1,1095 +0,0 @@ - - - - - JSDoc: Class: CreateMessageStreamResponse - - - - - - - - - - -
- -

Class: CreateMessageStreamResponse

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~CreateMessageStreamResponse(requestId, status, errorMessage)

- -
Internal Only
- - -
- -
-
- - - - -

Constructor

- - - -

new CreateMessageStreamResponse(requestId, status, errorMessage)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
requestId - - -String - - - - - - null - -
status - - -aws-greengrass-core-sdk.StreamManager.ResponseStatusCode - - - - - - null - -
errorMessage - - -String - - - - - - null - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

errorMessage

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

errorMessage

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

status

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

status

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withErrorMessage(value) → {aws-greengrass-core-sdk.StreamManager.CreateMessageStreamResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.CreateMessageStreamResponse - - -
-
- - - - - - - - - - - - - -

withRequestId(value) → {aws-greengrass-core-sdk.StreamManager.CreateMessageStreamResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.CreateMessageStreamResponse - - -
-
- - - - - - - - - - - - - -

withStatus(value) → {aws-greengrass-core-sdk.StreamManager.CreateMessageStreamResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -aws-greengrass-core-sdk.StreamManager.ResponseStatusCode - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.CreateMessageStreamResponse - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamRequest.html b/docs/aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamRequest.html deleted file mode 100644 index 5109414..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamRequest.html +++ /dev/null @@ -1,799 +0,0 @@ - - - - - JSDoc: Class: DeleteMessageStreamRequest - - - - - - - - - - -
- -

Class: DeleteMessageStreamRequest

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~DeleteMessageStreamRequest(requestId, name)

- -
(Internal Only) Request object for deleting a message stream
- - -
- -
-
- - - - -

Constructor

- - - -

new DeleteMessageStreamRequest(requestId, name)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
requestId - - -String - - - - - - null - -
name - - -String - - - - - - null - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

name

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

name

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withName(value) → {aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamRequest}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamRequest - - -
-
- - - - - - - - - - - - - -

withRequestId(value) → {aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamRequest}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamRequest - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamResponse.html b/docs/aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamResponse.html deleted file mode 100644 index e1f745a..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamResponse.html +++ /dev/null @@ -1,1095 +0,0 @@ - - - - - JSDoc: Class: DeleteMessageStreamResponse - - - - - - - - - - -
- -

Class: DeleteMessageStreamResponse

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~DeleteMessageStreamResponse(requestId, status, errorMessage)

- -
Internal Only
- - -
- -
-
- - - - -

Constructor

- - - -

new DeleteMessageStreamResponse(requestId, status, errorMessage)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
requestId - - -String - - - - - - null - -
status - - -aws-greengrass-core-sdk.StreamManager.ResponseStatusCode - - - - - - null - -
errorMessage - - -String - - - - - - null - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

errorMessage

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

errorMessage

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

status

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

status

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withErrorMessage(value) → {aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamResponse - - -
-
- - - - - - - - - - - - - -

withRequestId(value) → {aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamResponse - - -
-
- - - - - - - - - - - - - -

withStatus(value) → {aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -aws-greengrass-core-sdk.StreamManager.ResponseStatusCode - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamResponse - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamRequest.html b/docs/aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamRequest.html deleted file mode 100644 index 336266f..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamRequest.html +++ /dev/null @@ -1,799 +0,0 @@ - - - - - JSDoc: Class: DescribeMessageStreamRequest - - - - - - - - - - -
- -

Class: DescribeMessageStreamRequest

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~DescribeMessageStreamRequest(requestId, name)

- -
(Internal Only) Request object for describing a message stream
- - -
- -
-
- - - - -

Constructor

- - - -

new DescribeMessageStreamRequest(requestId, name)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
requestId - - -String - - - - - - null - -
name - - -String - - - - - - null - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

name

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

name

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withName(value) → {aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamRequest}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamRequest - - -
-
- - - - - - - - - - - - - -

withRequestId(value) → {aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamRequest}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamRequest - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse.html b/docs/aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse.html deleted file mode 100644 index 7ea3231..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse.html +++ /dev/null @@ -1,1391 +0,0 @@ - - - - - JSDoc: Class: DescribeMessageStreamResponse - - - - - - - - - - -
- -

Class: DescribeMessageStreamResponse

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~DescribeMessageStreamResponse(requestId, status, errorMessage, messageStreamInfo)

- -
(Internal Only) Response object for describing a message stream
- - -
- -
-
- - - - -

Constructor

- - - -

new DescribeMessageStreamResponse(requestId, status, errorMessage, messageStreamInfo)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
requestId - - -String - - - - - - null - -
status - - -aws-greengrass-core-sdk.StreamManager.ResponseStatusCode - - - - - - null - -
errorMessage - - -String - - - - - - null - -
messageStreamInfo - - -aws-greengrass-core-sdk.StreamManager.MessageStreamInfo - - - - - - null - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

errorMessage

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

errorMessage

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

messageStreamInfo

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

messageStreamInfo

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

status

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

status

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withErrorMessage(value) → {aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse - - -
-
- - - - - - - - - - - - - -

withMessageStreamInfo(value) → {aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -aws-greengrass-core-sdk.StreamManager.MessageStreamInfo - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse - - -
-
- - - - - - - - - - - - - -

withRequestId(value) → {aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse - - -
-
- - - - - - - - - - - - - -

withStatus(value) → {aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -aws-greengrass-core-sdk.StreamManager.ResponseStatusCode - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.ExportDefinition.html b/docs/aws-greengrass-core-sdk.StreamManager.ExportDefinition.html deleted file mode 100644 index 94c5b19..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.ExportDefinition.html +++ /dev/null @@ -1,1107 +0,0 @@ - - - - - JSDoc: Class: ExportDefinition - - - - - - - - - - -
- -

Class: ExportDefinition

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~ExportDefinition(http, iotAnalytics, kinesis)

- -
Defines how and where the stream is uploaded
- - -
- -
-
- - - - -

Constructor

- - - -

new ExportDefinition(http, iotAnalytics, kinesis)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
http - - -Array.<aws-greengrass-core-sdk.StreamManager.HTTPConfig> - - - - - - null - - Defines how the stream is uploaded to an HTTP endpoint
iotAnalytics - - -Array.<aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig> - - - - - - null - - Defines how the stream is uploaded to IoT Analytics
kinesis - - -Array.<aws-greengrass-core-sdk.StreamManager.KinesisConfig> - - - - - - null - - Defines how the stream is uploaded to Kinesis
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

http

- - - - -
- Defines how the stream is uploaded to an HTTP endpoint -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

http

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

iotAnalytics

- - - - -
- Defines how the stream is uploaded to IoT Analytics -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

iotAnalytics

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

kinesis

- - - - -
- Defines how the stream is uploaded to Kinesis -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

kinesis

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withHttp(value) → {aws-greengrass-core-sdk.StreamManager.ExportDefinition}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Array.<aws-greengrass-core-sdk.StreamManager.HTTPConfig> - - - - Defines how the stream is uploaded to an HTTP endpoint
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ExportDefinition - - -
-
- - - - - - - - - - - - - -

withIotAnalytics(value) → {aws-greengrass-core-sdk.StreamManager.ExportDefinition}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Array.<aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig> - - - - Defines how the stream is uploaded to IoT Analytics
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ExportDefinition - - -
-
- - - - - - - - - - - - - -

withKinesis(value) → {aws-greengrass-core-sdk.StreamManager.ExportDefinition}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Array.<aws-greengrass-core-sdk.StreamManager.KinesisConfig> - - - - Defines how the stream is uploaded to Kinesis
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ExportDefinition - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.HTTPConfig.html b/docs/aws-greengrass-core-sdk.StreamManager.HTTPConfig.html deleted file mode 100644 index 0bab041..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.HTTPConfig.html +++ /dev/null @@ -1,1724 +0,0 @@ - - - - - JSDoc: Class: HTTPConfig - - - - - - - - - - -
- -

Class: HTTPConfig

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~HTTPConfig(identifier, uri, batchSize, batchIntervalMillis, priority)

- -
This export destination is not supported! The interface may change at any time without notice and should not be relied on for any production use. - There are no guarantees around its correctness. - This configures an HTTP endpoint which sends a POST request to the provided URI. Each request contains a single message in the body of the request.
- - -
- -
-
- - - - -

Constructor

- - - -

new HTTPConfig(identifier, uri, batchSize, batchIntervalMillis, priority)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
identifier - - -String - - - - - - null - - A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
uri - - -String - - - - - - null - - URL for HTTP endpoint which should receive the POST requests for export.
batchSize - - -Number - - - - - - null - - The maximum size of a batch to send to the destination. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum batch size is 1 and the maximum is 500.
batchIntervalMillis - - -Number - - - - - - null - - The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
priority - - -Number - - - - - - null - - Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

batchIntervalMillis

- - - - -
- The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

batchIntervalMillis

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

batchSize

- - - - -
- The maximum size of a batch to send to the destination. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum batch size is 1 and the maximum is 500. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

batchSize

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

identifier

- - - - -
- A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

identifier

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

priority

- - - - -
- Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

priority

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

uri

- - - - -
- URL for HTTP endpoint which should receive the POST requests for export. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

uri

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withBatchIntervalMillis(value) → {aws-greengrass-core-sdk.StreamManager.HTTPConfig}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.HTTPConfig - - -
-
- - - - - - - - - - - - - -

withBatchSize(value) → {aws-greengrass-core-sdk.StreamManager.HTTPConfig}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The maximum size of a batch to send to the destination. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum batch size is 1 and the maximum is 500.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.HTTPConfig - - -
-
- - - - - - - - - - - - - -

withIdentifier(value) → {aws-greengrass-core-sdk.StreamManager.HTTPConfig}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - - A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.HTTPConfig - - -
-
- - - - - - - - - - - - - -

withPriority(value) → {aws-greengrass-core-sdk.StreamManager.HTTPConfig}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.HTTPConfig - - -
-
- - - - - - - - - - - - - -

withUri(value) → {aws-greengrass-core-sdk.StreamManager.HTTPConfig}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - - URL for HTTP endpoint which should receive the POST requests for export.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.HTTPConfig - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig.html b/docs/aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig.html deleted file mode 100644 index 02941c3..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig.html +++ /dev/null @@ -1,2025 +0,0 @@ - - - - - JSDoc: Class: IoTAnalyticsConfig - - - - - - - - - - -
- -

Class: IoTAnalyticsConfig

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~IoTAnalyticsConfig(identifier, iotChannel, iotMsgIdPrefix, batchSize, batchIntervalMillis, priority)

- -
Configuration object for IoT Analytics export destination.
- - -
- -
-
- - - - -

Constructor

- - - -

new IoTAnalyticsConfig(identifier, iotChannel, iotMsgIdPrefix, batchSize, batchIntervalMillis, priority)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
identifier - - -String - - - - - - null - - A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
iotChannel - - -String - - - - - - null - - The name of the IoT Analytics Channel that this exporter should upload to
iotMsgIdPrefix - - -String - - - - - - null - - A string prefixed to each unique message id. After this prefix, StreamManager may append more data to make the message ID unique. - This prefix must be less than 32 characters.
batchSize - - -Number - - - - - - null - - The maximum size of a batch to send to IoT Analytics. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The batch size must be between 1 and 100.
batchIntervalMillis - - -Number - - - - - - null - - The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
priority - - -Number - - - - - - null - - Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

batchIntervalMillis

- - - - -
- The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

batchIntervalMillis

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

batchSize

- - - - -
- The maximum size of a batch to send to IoT Analytics. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The batch size must be between 1 and 100. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

batchSize

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

identifier

- - - - -
- A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

identifier

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

iotChannel

- - - - -
- The name of the IoT Analytics Channel that this exporter should upload to -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

iotChannel

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

iotMsgIdPrefix

- - - - -
- A string prefixed to each unique message id. After this prefix, StreamManager may append more data to make the message ID unique. - This prefix must be less than 32 characters. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

iotMsgIdPrefix

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

priority

- - - - -
- Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

priority

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withBatchIntervalMillis(value) → {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig - - -
-
- - - - - - - - - - - - - -

withBatchSize(value) → {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The maximum size of a batch to send to IoT Analytics. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The batch size must be between 1 and 100.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig - - -
-
- - - - - - - - - - - - - -

withIdentifier(value) → {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - - A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig - - -
-
- - - - - - - - - - - - - -

withIotChannel(value) → {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - - The name of the IoT Analytics Channel that this exporter should upload to
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig - - -
-
- - - - - - - - - - - - - -

withIotMsgIdPrefix(value) → {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - - A string prefixed to each unique message id. After this prefix, StreamManager may append more data to make the message ID unique. - This prefix must be less than 32 characters.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig - - -
-
- - - - - - - - - - - - - -

withPriority(value) → {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.KinesisConfig.html b/docs/aws-greengrass-core-sdk.StreamManager.KinesisConfig.html deleted file mode 100644 index 8aa65c7..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.KinesisConfig.html +++ /dev/null @@ -1,1722 +0,0 @@ - - - - - JSDoc: Class: KinesisConfig - - - - - - - - - - -
- -

Class: KinesisConfig

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~KinesisConfig(identifier, kinesisStreamName, batchSize, batchIntervalMillis, priority)

- -
Configuration object for Kinesis data streams export destination.
- - -
- -
-
- - - - -

Constructor

- - - -

new KinesisConfig(identifier, kinesisStreamName, batchSize, batchIntervalMillis, priority)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
identifier - - -String - - - - - - null - - A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
kinesisStreamName - - -String - - - - - - null - - The name of the Kinesis data stream that this exporter should upload to
batchSize - - -Number - - - - - - null - - The maximum size of a batch to send to Kinesis. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The batch size must be between 1 and 500.
batchIntervalMillis - - -Number - - - - - - null - - The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
priority - - -Number - - - - - - null - - Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

batchIntervalMillis

- - - - -
- The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

batchIntervalMillis

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

batchSize

- - - - -
- The maximum size of a batch to send to Kinesis. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The batch size must be between 1 and 500. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

batchSize

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

identifier

- - - - -
- A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

identifier

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

kinesisStreamName

- - - - -
- The name of the Kinesis data stream that this exporter should upload to -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

kinesisStreamName

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

priority

- - - - -
- Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

priority

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withBatchIntervalMillis(value) → {aws-greengrass-core-sdk.StreamManager.KinesisConfig}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.KinesisConfig - - -
-
- - - - - - - - - - - - - -

withBatchSize(value) → {aws-greengrass-core-sdk.StreamManager.KinesisConfig}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The maximum size of a batch to send to Kinesis. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1. - If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met. - The batch size must be between 1 and 500.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.KinesisConfig - - -
-
- - - - - - - - - - - - - -

withIdentifier(value) → {aws-greengrass-core-sdk.StreamManager.KinesisConfig}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - - A unique identifier to identify this individual upload stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.KinesisConfig - - -
-
- - - - - - - - - - - - - -

withKinesisStreamName(value) → {aws-greengrass-core-sdk.StreamManager.KinesisConfig}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - - The name of the Kinesis data stream that this exporter should upload to
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.KinesisConfig - - -
-
- - - - - - - - - - - - - -

withPriority(value) → {aws-greengrass-core-sdk.StreamManager.KinesisConfig}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.KinesisConfig - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.ListStreamsRequest.html b/docs/aws-greengrass-core-sdk.StreamManager.ListStreamsRequest.html deleted file mode 100644 index ec994bd..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.ListStreamsRequest.html +++ /dev/null @@ -1,503 +0,0 @@ - - - - - JSDoc: Class: ListStreamsRequest - - - - - - - - - - -
- -

Class: ListStreamsRequest

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~ListStreamsRequest(requestId)

- -
(Internal Only) Request object to list all available streams. There are no options.
- - -
- -
-
- - - - -

Constructor

- - - -

new ListStreamsRequest(requestId)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
requestId - - -String - - - - - - null - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withRequestId(value) → {aws-greengrass-core-sdk.StreamManager.ListStreamsRequest}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ListStreamsRequest - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.ListStreamsResponse.html b/docs/aws-greengrass-core-sdk.StreamManager.ListStreamsResponse.html deleted file mode 100644 index 4234da3..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.ListStreamsResponse.html +++ /dev/null @@ -1,1391 +0,0 @@ - - - - - JSDoc: Class: ListStreamsResponse - - - - - - - - - - -
- -

Class: ListStreamsResponse

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~ListStreamsResponse(requestId, status, errorMessage, streams)

- -
Internal Only
- - -
- -
-
- - - - -

Constructor

- - - -

new ListStreamsResponse(requestId, status, errorMessage, streams)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
requestId - - -String - - - - - - null - -
status - - -aws-greengrass-core-sdk.StreamManager.ResponseStatusCode - - - - - - null - -
errorMessage - - -String - - - - - - null - -
streams - - -Array.<String> - - - - - - null - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

errorMessage

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

errorMessage

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

status

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

status

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

streams

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

streams

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withErrorMessage(value) → {aws-greengrass-core-sdk.StreamManager.ListStreamsResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ListStreamsResponse - - -
-
- - - - - - - - - - - - - -

withRequestId(value) → {aws-greengrass-core-sdk.StreamManager.ListStreamsResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ListStreamsResponse - - -
-
- - - - - - - - - - - - - -

withStatus(value) → {aws-greengrass-core-sdk.StreamManager.ListStreamsResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -aws-greengrass-core-sdk.StreamManager.ResponseStatusCode - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ListStreamsResponse - - -
-
- - - - - - - - - - - - - -

withStreams(value) → {aws-greengrass-core-sdk.StreamManager.ListStreamsResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Array.<String> - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ListStreamsResponse - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.Message.html b/docs/aws-greengrass-core-sdk.StreamManager.Message.html deleted file mode 100644 index f9c857c..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.Message.html +++ /dev/null @@ -1,1407 +0,0 @@ - - - - - JSDoc: Class: Message - - - - - - - - - - -
- -

Class: Message

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~Message(streamName, sequenceNumber, ingestTime, payload)

- -
Message object containing metadata and the user's payload
- - -
- -
-
- - - - -

Constructor

- - - -

new Message(streamName, sequenceNumber, ingestTime, payload)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
streamName - - -String - - - - - - null - - The name of the stream which this message is in.
sequenceNumber - - -Number - - - - - - null - - The sequence number of this message within the stream.
ingestTime - - -Number - - - - - - null - - The time that the message was ingested to Stream Manager. Data is Unix epoch time in milliseconds.
payload - - -Buffer - - - - - - null - - The binary message data.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

ingestTime

- - - - -
- The time that the message was ingested to Stream Manager. Data is Unix epoch time in milliseconds. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

ingestTime

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

payload

- - - - -
- The binary message data. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

payload

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

sequenceNumber

- - - - -
- The sequence number of this message within the stream. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

sequenceNumber

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

streamName

- - - - -
- The name of the stream which this message is in. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

streamName

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withIngestTime(value) → {aws-greengrass-core-sdk.StreamManager.Message}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The time that the message was ingested to Stream Manager. Data is Unix epoch time in milliseconds.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.Message - - -
-
- - - - - - - - - - - - - -

withPayload(value) → {aws-greengrass-core-sdk.StreamManager.Message}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Buffer - - - - The binary message data.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.Message - - -
-
- - - - - - - - - - - - - -

withSequenceNumber(value) → {aws-greengrass-core-sdk.StreamManager.Message}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The sequence number of this message within the stream.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.Message - - -
-
- - - - - - - - - - - - - -

withStreamName(value) → {aws-greengrass-core-sdk.StreamManager.Message}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - - The name of the stream which this message is in.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.Message - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.MessageFrame.html b/docs/aws-greengrass-core-sdk.StreamManager.MessageFrame.html deleted file mode 100644 index dac15b3..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.MessageFrame.html +++ /dev/null @@ -1,799 +0,0 @@ - - - - - JSDoc: Class: MessageFrame - - - - - - - - - - -
- -

Class: MessageFrame

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~MessageFrame(operation, payload)

- -
Internal Only
- - -
- -
-
- - - - -

Constructor

- - - -

new MessageFrame(operation, payload)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
operation - - -aws-greengrass-core-sdk.StreamManager.Operation - - - - - - null - -
payload - - -Buffer - - - - - - null - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

operation

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

operation

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

payload

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

payload

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withOperation(value) → {aws-greengrass-core-sdk.StreamManager.MessageFrame}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -aws-greengrass-core-sdk.StreamManager.Operation - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageFrame - - -
-
- - - - - - - - - - - - - -

withPayload(value) → {aws-greengrass-core-sdk.StreamManager.MessageFrame}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Buffer - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageFrame - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition.html b/docs/aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition.html deleted file mode 100644 index 100d875..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition.html +++ /dev/null @@ -1,2628 +0,0 @@ - - - - - JSDoc: Class: MessageStreamDefinition - - - - - - - - - - -
- -

Class: MessageStreamDefinition

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~MessageStreamDefinition(name, maxSize, streamSegmentSize, timeToLiveMillis, strategyOnFull, persistence, flushOnWrite, exportDefinition)

- -
Object defining a message stream used in the CreateMessageStream API.
- - -
- -
-
- - - - -

Constructor

- - - -

new MessageStreamDefinition(name, maxSize, streamSegmentSize, timeToLiveMillis, strategyOnFull, persistence, flushOnWrite, exportDefinition)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
name - - -String - - - - - - null - - The unique name of the stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
maxSize - - -Number - - - - - - 268435456 - - The maximum size in bytes for the entire stream. Set to 256MB by default with a minimum of 1KB and a maximum of 8192PB.
streamSegmentSize - - -Number - - - - - - 16777216 - - The size of each segment of the stream. Set to 16MB by default with a minimum of 1KB and a maximum of 2GB. - Data is only deleted segment by segment, so the segment size is the smallest amount of data which can be deleted.
timeToLiveMillis - - -Number - - - - - - null - - Time to live for each message in milliseconds. Data may be deleted at any time after the TTL expires; deletion is not guaranteed to occur immediately when the TTL expires. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
strategyOnFull - - -aws-greengrass-core-sdk.StreamManager.StrategyOnFull - - - - - - null - - What to do when the maximum size of the stream is reached. - RejectNewData: any append message request after the stream is full will be rejected with an exception. - OverwriteOldestData: the oldest stream segments will be deleted until there is room for the new message.
persistence - - -aws-greengrass-core-sdk.StreamManager.Persistence - - - - - - null - - Stream persistence. If set to File, the file system will be used to persist messages long-term and is resilient to restarts. - Memory should be used when performance matters more than durability as it only stores the stream in memory and never writes to the disk.
flushOnWrite - - -Boolean - - - - - - null - - This only applies when Persistence is set to File mode. - Waits for the filesystem to complete the write for every message. This is safer, but slower. Default is false.
exportDefinition - - -aws-greengrass-core-sdk.StreamManager.ExportDefinition - - - - - - null - - Defines how and where the stream is uploaded. See the definition of the ExportDefinition object for more detail.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

exportDefinition

- - - - -
- Defines how and where the stream is uploaded. See the definition of the ExportDefinition object for more detail. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

exportDefinition

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

flushOnWrite

- - - - -
- This only applies when Persistence is set to File mode. - Waits for the filesystem to complete the write for every message. This is safer, but slower. Default is false. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

flushOnWrite

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

maxSize

- - - - -
- The maximum size in bytes for the entire stream. Set to 256MB by default with a minimum of 1KB and a maximum of 8192PB. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

maxSize

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

name

- - - - -
- The unique name of the stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

name

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

persistence

- - - - -
- Stream persistence. If set to File, the file system will be used to persist messages long-term and is resilient to restarts. - Memory should be used when performance matters more than durability as it only stores the stream in memory and never writes to the disk. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

persistence

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

strategyOnFull

- - - - -
- What to do when the maximum size of the stream is reached. - RejectNewData: any append message request after the stream is full will be rejected with an exception. - OverwriteOldestData: the oldest stream segments will be deleted until there is room for the new message. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

strategyOnFull

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

streamSegmentSize

- - - - -
- The size of each segment of the stream. Set to 16MB by default with a minimum of 1KB and a maximum of 2GB. - Data is only deleted segment by segment, so the segment size is the smallest amount of data which can be deleted. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

streamSegmentSize

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

timeToLiveMillis

- - - - -
- Time to live for each message in milliseconds. Data may be deleted at any time after the TTL expires; deletion is not guaranteed to occur immediately when the TTL expires. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

timeToLiveMillis

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withExportDefinition(value) → {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -aws-greengrass-core-sdk.StreamManager.ExportDefinition - - - - Defines how and where the stream is uploaded. See the definition of the ExportDefinition object for more detail.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition - - -
-
- - - - - - - - - - - - - -

withFlushOnWrite(value) → {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Boolean - - - - This only applies when Persistence is set to File mode. - Waits for the filesystem to complete the write for every message. This is safer, but slower. Default is false.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition - - -
-
- - - - - - - - - - - - - -

withMaxSize(value) → {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The maximum size in bytes for the entire stream. Set to 256MB by default with a minimum of 1KB and a maximum of 8192PB.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition - - -
-
- - - - - - - - - - - - - -

withName(value) → {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - - The unique name of the stream. - Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition - - -
-
- - - - - - - - - - - - - -

withPersistence(value) → {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -aws-greengrass-core-sdk.StreamManager.Persistence - - - - Stream persistence. If set to File, the file system will be used to persist messages long-term and is resilient to restarts. - Memory should be used when performance matters more than durability as it only stores the stream in memory and never writes to the disk.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition - - -
-
- - - - - - - - - - - - - -

withStrategyOnFull(value) → {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -aws-greengrass-core-sdk.StreamManager.StrategyOnFull - - - - What to do when the maximum size of the stream is reached. - RejectNewData: any append message request after the stream is full will be rejected with an exception. - OverwriteOldestData: the oldest stream segments will be deleted until there is room for the new message.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition - - -
-
- - - - - - - - - - - - - -

withStreamSegmentSize(value) → {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The size of each segment of the stream. Set to 16MB by default with a minimum of 1KB and a maximum of 2GB. - Data is only deleted segment by segment, so the segment size is the smallest amount of data which can be deleted.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition - - -
-
- - - - - - - - - - - - - -

withTimeToLiveMillis(value) → {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - Time to live for each message in milliseconds. Data may be deleted at any time after the TTL expires; deletion is not guaranteed to occur immediately when the TTL expires. - The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.MessageStreamInfo-MessageStreamInfo._exportStatuses.html b/docs/aws-greengrass-core-sdk.StreamManager.MessageStreamInfo-MessageStreamInfo._exportStatuses.html deleted file mode 100644 index 0532b7c..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.MessageStreamInfo-MessageStreamInfo._exportStatuses.html +++ /dev/null @@ -1,310 +0,0 @@ - - - - - JSDoc: Class: _exportStatuses - - - - - - - - - - -
- -

Class: _exportStatuses

- - - - - - -
- -
- -

_exportStatuses(exportConfigIdentifier, lastExportedSequenceNumber, lastExportTime, errorMessage)

- - -
- -
-
- - - - - - -

new _exportStatuses(exportConfigIdentifier, lastExportedSequenceNumber, lastExportTime, errorMessage)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
exportConfigIdentifier - - -String - - - - - - null - - The unique export identifier.
lastExportedSequenceNumber - - -Number - - - - - - null - - The sequence number of the last message which was successfully exported.
lastExportTime - - -Number - - - - - - null - - The last time an export was attempted. Data is Unix epoch time in milliseconds.
errorMessage - - -String - - - - - - null - - Error message from the last export attempt if it failed.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.MessageStreamInfo-MessageStreamInfo._storageStatus.html b/docs/aws-greengrass-core-sdk.StreamManager.MessageStreamInfo-MessageStreamInfo._storageStatus.html deleted file mode 100644 index d6b0f56..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.MessageStreamInfo-MessageStreamInfo._storageStatus.html +++ /dev/null @@ -1,281 +0,0 @@ - - - - - JSDoc: Class: _storageStatus - - - - - - - - - - -
- -

Class: _storageStatus

- - - - - - -
- -
- -

_storageStatus(oldestSequenceNumber, newestSequenceNumber, totalBytes)

- - -
- -
-
- - - - - - -

new _storageStatus(oldestSequenceNumber, newestSequenceNumber, totalBytes)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
oldestSequenceNumber - - -Number - - - - - - null - - The sequence number of the first message which is still accessible in the stream.
newestSequenceNumber - - -Number - - - - - - null - - The sequence number of the last appended message.
totalBytes - - -Number - - - - - - null - - The current total size of the stream in bytes.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.MessageStreamInfo.html b/docs/aws-greengrass-core-sdk.StreamManager.MessageStreamInfo.html deleted file mode 100644 index 126f6c1..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.MessageStreamInfo.html +++ /dev/null @@ -1,2996 +0,0 @@ - - - - - JSDoc: Class: MessageStreamInfo - - - - - - - - - - -
- -

Class: MessageStreamInfo

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~MessageStreamInfo(definition, storageStatus, exportStatuses)

- -
Message stream information including its definition, storage status and export status
- - -
- -
-
- - - - -

Constructor

- - - -

new MessageStreamInfo(definition, storageStatus, exportStatuses)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
definition - - -aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition - - - - - - null - -
storageStatus - - -aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus - - - - - - null - - Stream status including oldest/newest sequence number and total bytes
exportStatuses - - -Array.<aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses> - - - - - - null - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

(static) _exportStatuses#errorMessage

- - - - -
- Error message from the last export attempt if it failed. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) _exportStatuses#errorMessage

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) _exportStatuses#exportConfigIdentifier

- - - - -
- The unique export identifier. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) _exportStatuses#exportConfigIdentifier

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) _exportStatuses#lastExportedSequenceNumber

- - - - -
- The sequence number of the last message which was successfully exported. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) _exportStatuses#lastExportedSequenceNumber

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) _exportStatuses#lastExportTime

- - - - -
- The last time an export was attempted. Data is Unix epoch time in milliseconds. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) _exportStatuses#lastExportTime

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) _storageStatus#newestSequenceNumber

- - - - -
- The sequence number of the last appended message. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) _storageStatus#newestSequenceNumber

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) _storageStatus#oldestSequenceNumber

- - - - -
- The sequence number of the first message which is still accessible in the stream. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) _storageStatus#oldestSequenceNumber

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) _storageStatus#totalBytes

- - - - -
- The current total size of the stream in bytes. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(static) _storageStatus#totalBytes

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

definition

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

definition

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

exportStatuses

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

exportStatuses

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

storageStatus

- - - - -
- Stream status including oldest/newest sequence number and total bytes -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

storageStatus

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

(static) _exportStatuses#withErrorMessage(value) → {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - - Error message from the last export attempt if it failed.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses - - -
-
- - - - - - - - - - - - - -

(static) _exportStatuses#withExportConfigIdentifier(value) → {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - - The unique export identifier.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses - - -
-
- - - - - - - - - - - - - -

(static) _exportStatuses#withLastExportedSequenceNumber(value) → {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The sequence number of the last message which was successfully exported.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses - - -
-
- - - - - - - - - - - - - -

(static) _exportStatuses#withLastExportTime(value) → {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The last time an export was attempted. Data is Unix epoch time in milliseconds.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses - - -
-
- - - - - - - - - - - - - -

(static) _storageStatus#withNewestSequenceNumber(value) → {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The sequence number of the last appended message.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus - - -
-
- - - - - - - - - - - - - -

(static) _storageStatus#withOldestSequenceNumber(value) → {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The sequence number of the first message which is still accessible in the stream.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus - - -
-
- - - - - - - - - - - - - -

(static) _storageStatus#withTotalBytes(value) → {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The current total size of the stream in bytes.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus - - -
-
- - - - - - - - - - - - - -

withDefinition(value) → {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageStreamInfo - - -
-
- - - - - - - - - - - - - -

withExportStatuses(value) → {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Array.<aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses> - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageStreamInfo - - -
-
- - - - - - - - - - - - - -

withStorageStatus(value) → {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus - - - - Stream status including oldest/newest sequence number and total bytes
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.MessageStreamInfo - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.Operation.html b/docs/aws-greengrass-core-sdk.StreamManager.Operation.html deleted file mode 100644 index 79fbde0..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.Operation.html +++ /dev/null @@ -1,1195 +0,0 @@ - - - - - JSDoc: Class: Operation - - - - - - - - - - -
- -

Class: Operation

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~Operation()

- -
Internal Only
- - -
- -
-
- - - - -

Constructor

- - - -

new Operation()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

(readonly) AppendMessage :aws-greengrass-core-sdk.StreamManager.Operation

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) AppendMessageResponse :aws-greengrass-core-sdk.StreamManager.Operation

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) Connect :aws-greengrass-core-sdk.StreamManager.Operation

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) ConnectResponse :aws-greengrass-core-sdk.StreamManager.Operation

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) CreateMessageStream :aws-greengrass-core-sdk.StreamManager.Operation

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) CreateMessageStreamResponse :aws-greengrass-core-sdk.StreamManager.Operation

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) DeleteMessageStream :aws-greengrass-core-sdk.StreamManager.Operation

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) DeleteMessageStreamResponse :aws-greengrass-core-sdk.StreamManager.Operation

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) DescribeMessageStream :aws-greengrass-core-sdk.StreamManager.Operation

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) DescribeMessageStreamResponse :aws-greengrass-core-sdk.StreamManager.Operation

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) ListStreams :aws-greengrass-core-sdk.StreamManager.Operation

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) ListStreamsResponse :aws-greengrass-core-sdk.StreamManager.Operation

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) ReadMessages :aws-greengrass-core-sdk.StreamManager.Operation

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) ReadMessagesResponse :aws-greengrass-core-sdk.StreamManager.Operation

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) Unknown :aws-greengrass-core-sdk.StreamManager.Operation

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.Persistence.html b/docs/aws-greengrass-core-sdk.StreamManager.Persistence.html deleted file mode 100644 index 8502306..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.Persistence.html +++ /dev/null @@ -1,312 +0,0 @@ - - - - - JSDoc: Class: Persistence - - - - - - - - - - -
- -

Class: Persistence

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~Persistence()

- -
Stream persistence. If set to File, the file system will be used to persist messages long-term and is resilient to restarts. - Memory should be used when performance matters more than durability as it only stores the stream in memory and never writes to the disk.
- - -
- -
-
- - - - -

Constructor

- - - -

new Persistence()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

(readonly) File :aws-greengrass-core-sdk.StreamManager.Persistence

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) Memory :aws-greengrass-core-sdk.StreamManager.Persistence

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions.html b/docs/aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions.html deleted file mode 100644 index 8e45025..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions.html +++ /dev/null @@ -1,1422 +0,0 @@ - - - - - JSDoc: Class: ReadMessagesOptions - - - - - - - - - - -
- -

Class: ReadMessagesOptions

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~ReadMessagesOptions(desiredStartSequenceNumber, minMessageCount, maxMessageCount, readTimeoutMillis)

- -
Options for the ReadMessages API. All fields are optional.
- - -
- -
-
- - - - -

Constructor

- - - -

new ReadMessagesOptions(desiredStartSequenceNumber, minMessageCount, maxMessageCount, readTimeoutMillis)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
desiredStartSequenceNumber - - -Number - - - - - - null - - The desired beginning sequence number to start reading from. If the desired sequence number is less than the current minimum of the stream, then it will instead start reading from the current minimum.
minMessageCount - - -Number - - - - - - 1 - - The minimum number of messages that will be returned. If not enough messages are available for reading, then NotEnoughMessages exception will be thrown. - The minimum values is 1 and the maximum value is 2147483647.
maxMessageCount - - -Number - - - - - - null - - The maximum number of messages that will be returned. - The minimum values is the value of the minimum message count and the maximum value is 2147483647.
readTimeoutMillis - - -Number - - - - - - 0 - - The time to wait for messages in milliseconds. Default is 0, meaning that the server will not wait for messages. - If it can fulfill the minimum messages it will return them, but otherwise NotEnoughMessages exception will be thrown. - If the timeout is greater than zero, then the server will wait up to that time for more messages to be appended to the stream, waiting until the minimum number of messages is reached. - The maximum value is the value of the client timeout.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

desiredStartSequenceNumber

- - - - -
- The desired beginning sequence number to start reading from. If the desired sequence number is less than the current minimum of the stream, then it will instead start reading from the current minimum. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

desiredStartSequenceNumber

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

maxMessageCount

- - - - -
- The maximum number of messages that will be returned. - The minimum values is the value of the minimum message count and the maximum value is 2147483647. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

maxMessageCount

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

minMessageCount

- - - - -
- The minimum number of messages that will be returned. If not enough messages are available for reading, then NotEnoughMessages exception will be thrown. - The minimum values is 1 and the maximum value is 2147483647. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

minMessageCount

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

readTimeoutMillis

- - - - -
- The time to wait for messages in milliseconds. Default is 0, meaning that the server will not wait for messages. - If it can fulfill the minimum messages it will return them, but otherwise NotEnoughMessages exception will be thrown. - If the timeout is greater than zero, then the server will wait up to that time for more messages to be appended to the stream, waiting until the minimum number of messages is reached. - The maximum value is the value of the client timeout. -
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

readTimeoutMillis

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withDesiredStartSequenceNumber(value) → {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The desired beginning sequence number to start reading from. If the desired sequence number is less than the current minimum of the stream, then it will instead start reading from the current minimum.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions - - -
-
- - - - - - - - - - - - - -

withMaxMessageCount(value) → {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The maximum number of messages that will be returned. - The minimum values is the value of the minimum message count and the maximum value is 2147483647.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions - - -
-
- - - - - - - - - - - - - -

withMinMessageCount(value) → {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The minimum number of messages that will be returned. If not enough messages are available for reading, then NotEnoughMessages exception will be thrown. - The minimum values is 1 and the maximum value is 2147483647.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions - - -
-
- - - - - - - - - - - - - -

withReadTimeoutMillis(value) → {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Number - - - - The time to wait for messages in milliseconds. Default is 0, meaning that the server will not wait for messages. - If it can fulfill the minimum messages it will return them, but otherwise NotEnoughMessages exception will be thrown. - If the timeout is greater than zero, then the server will wait up to that time for more messages to be appended to the stream, waiting until the minimum number of messages is reached. - The maximum value is the value of the client timeout.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.ReadMessagesRequest.html b/docs/aws-greengrass-core-sdk.StreamManager.ReadMessagesRequest.html deleted file mode 100644 index a8eb002..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.ReadMessagesRequest.html +++ /dev/null @@ -1,1095 +0,0 @@ - - - - - JSDoc: Class: ReadMessagesRequest - - - - - - - - - - -
- -

Class: ReadMessagesRequest

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~ReadMessagesRequest(requestId, streamName, readMessagesOptions)

- -
(Internal Only) Request object for reading from a message stream. readMessagesOptions is optional.
- - -
- -
-
- - - - -

Constructor

- - - -

new ReadMessagesRequest(requestId, streamName, readMessagesOptions)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
requestId - - -String - - - - - - null - -
streamName - - -String - - - - - - null - -
readMessagesOptions - - -aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions - - - - - - null - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

readMessagesOptions

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

readMessagesOptions

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

streamName

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

streamName

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withReadMessagesOptions(value) → {aws-greengrass-core-sdk.StreamManager.ReadMessagesRequest}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ReadMessagesRequest - - -
-
- - - - - - - - - - - - - -

withRequestId(value) → {aws-greengrass-core-sdk.StreamManager.ReadMessagesRequest}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ReadMessagesRequest - - -
-
- - - - - - - - - - - - - -

withStreamName(value) → {aws-greengrass-core-sdk.StreamManager.ReadMessagesRequest}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ReadMessagesRequest - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse.html b/docs/aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse.html deleted file mode 100644 index b3a470c..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse.html +++ /dev/null @@ -1,1391 +0,0 @@ - - - - - JSDoc: Class: ReadMessagesResponse - - - - - - - - - - -
- -

Class: ReadMessagesResponse

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~ReadMessagesResponse(requestId, messages, status, errorMessage)

- -
Internal Only
- - -
- -
-
- - - - -

Constructor

- - - -

new ReadMessagesResponse(requestId, messages, status, errorMessage)

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDefaultDescription
requestId - - -String - - - - - - null - -
messages - - -Array.<aws-greengrass-core-sdk.StreamManager.Message> - - - - - - null - -
status - - -aws-greengrass-core-sdk.StreamManager.ResponseStatusCode - - - - - - null - -
errorMessage - - -String - - - - - - null - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

errorMessage

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

errorMessage

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

messages

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

messages

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

requestId

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

status

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

status

- - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - -

Methods

- - - - - - - -

withErrorMessage(value) → {aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse - - -
-
- - - - - - - - - - - - - -

withMessages(value) → {aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -Array.<aws-greengrass-core-sdk.StreamManager.Message> - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse - - -
-
- - - - - - - - - - - - - -

withRequestId(value) → {aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -String - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse - - -
-
- - - - - - - - - - - - - -

withStatus(value) → {aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse}

- - - - - - - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
value - - -aws-greengrass-core-sdk.StreamManager.ResponseStatusCode - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.ResponseStatusCode.html b/docs/aws-greengrass-core-sdk.StreamManager.ResponseStatusCode.html deleted file mode 100644 index 0a03c7d..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.ResponseStatusCode.html +++ /dev/null @@ -1,1279 +0,0 @@ - - - - - JSDoc: Class: ResponseStatusCode - - - - - - - - - - -
- -

Class: ResponseStatusCode

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~ResponseStatusCode()

- -
(Internal Only) Enum defining possible response status codes from StreamManager server. - Success: Request succeeded. - UnknownFailure: Encountered unknown StreamManager server failure. - Unauthorized: Client is not authorized to perform this request. - InvalidRequest: Client request is invalid. - RequestPayloadTooLarge: Request payload is too large. - ResourceNotFound: The requested resource does not exist. - ServerTimeout: Server took too long and timed out. - ResponsePayloadTooLarge: Server response exceeded the max allowed response payload size by the protocol. - UnsupportedConnectVersion: Server does not support the Connect version presented by the Client. - UnexpectedOperation: Operation presented was not expected by the Server. - UnsupportedProtocolVersion: Protocol version presented by the Client is not compatible with the Server. - InvalidProtocolVersion: Protocol version presented by the Client is not valid. - FailedToConnect: Client failed to connect to the Server. - NotEnoughMessages: There is not enough messages to return. - MessageStoreReadError: Read messages encountered an error. - OutOfMemoryError: Server ran out of memory.
- - -
- -
-
- - - - -

Constructor

- - - -

new ResponseStatusCode()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

(readonly) FailedToConnect :aws-greengrass-core-sdk.StreamManager.ResponseStatusCode

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) InvalidProtocolVersion :aws-greengrass-core-sdk.StreamManager.ResponseStatusCode

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) InvalidRequest :aws-greengrass-core-sdk.StreamManager.ResponseStatusCode

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) MessageStoreReadError :aws-greengrass-core-sdk.StreamManager.ResponseStatusCode

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) NotEnoughMessages :aws-greengrass-core-sdk.StreamManager.ResponseStatusCode

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) OutOfMemoryError :aws-greengrass-core-sdk.StreamManager.ResponseStatusCode

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) RequestPayloadTooLarge :aws-greengrass-core-sdk.StreamManager.ResponseStatusCode

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) ResourceNotFound :aws-greengrass-core-sdk.StreamManager.ResponseStatusCode

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) ResponsePayloadTooLarge :aws-greengrass-core-sdk.StreamManager.ResponseStatusCode

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) ServerTimeout :aws-greengrass-core-sdk.StreamManager.ResponseStatusCode

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) Success :aws-greengrass-core-sdk.StreamManager.ResponseStatusCode

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) Unauthorized :aws-greengrass-core-sdk.StreamManager.ResponseStatusCode

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) UnexpectedOperation :aws-greengrass-core-sdk.StreamManager.ResponseStatusCode

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) UnknownFailure :aws-greengrass-core-sdk.StreamManager.ResponseStatusCode

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) UnsupportedConnectVersion :aws-greengrass-core-sdk.StreamManager.ResponseStatusCode

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) UnsupportedProtocolVersion :aws-greengrass-core-sdk.StreamManager.ResponseStatusCode

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.StrategyOnFull.html b/docs/aws-greengrass-core-sdk.StreamManager.StrategyOnFull.html deleted file mode 100644 index 716c144..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.StrategyOnFull.html +++ /dev/null @@ -1,314 +0,0 @@ - - - - - JSDoc: Class: StrategyOnFull - - - - - - - - - - -
- -

Class: StrategyOnFull

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~StrategyOnFull()

- -
StrategyOnFull is used in the MessageStreamDefinition when creating a stream. - It defines the behavior when the stream has reached the maximum size. - RejectNewData: any append message request after the stream is full will be rejected with an exception. - OverwriteOldestData: the oldest stream segments will be deleted until there is room for the new message.
- - -
- -
-
- - - - -

Constructor

- - - -

new StrategyOnFull()

- - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - -

Members

- - - -

(readonly) OverwriteOldestData :aws-greengrass-core-sdk.StreamManager.StrategyOnFull

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - -

(readonly) RejectNewData :aws-greengrass-core-sdk.StreamManager.StrategyOnFull

- - - - - - -
Type:
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.StreamManagerClient.html b/docs/aws-greengrass-core-sdk.StreamManager.StreamManagerClient.html deleted file mode 100644 index 4153078..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.StreamManagerClient.html +++ /dev/null @@ -1,1783 +0,0 @@ - - - - - JSDoc: Class: StreamManagerClient - - - - - - - - - - -
- -

Class: StreamManagerClient

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager~StreamManagerClient(optsnullable)

- -
Stream manager client
- - -
- -
-
- - - - -

Constructor

- - - -

new StreamManagerClient(optsnullable)

- - - - - - -
- Constructs a new Stream Manager client. Once connected, onConnectCb will be called and -the client can then be used. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
opts - - -Object - - - - - - - - <nullable>
- - - -
All these options are optional. -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDescription
port - - -Number - - - - - - - - - -
host - - -String - - - - - - - - - -
onConnectCb - - -function - - - - - - - - <nullable>
- - - -
Optional callback to be called once the client has connected.
onErrorCb - - -function - - - - - - - - <nullable>
- - - -
Optional, but highly suggested callback to be called when a connection error occurs.
logger - - -Logger - - - - - - - - <nullable>
- - - -
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - -
Example
- -

StreamManager Usage

- -
const { StreamManagerClient } = require('aws-greengrass-core-sdk/stream-manager');
-const client = new StreamManagerClient();
-c.onConnected(async () => {
-    // Do work with the client (c) here.
-});
- - - - -
- - - - - - - - - - - - - - - - -

Methods

- - - - - - - -

(async) appendMessage(streamName, data) → {Promise.<Number>}

- - - - - - -
- Append a message into the specified message stream. Returns the sequence number of the message -if it was successfully appended. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
streamName - - -string - - - - The name of the stream to append to.
data - - -Buffer - - - - Buffer containing the data to be written.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -Promise.<Number> - - -
-
- - - - - - - - - - - - - -

close()

- - - - - - -
- Close the connection -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) createMessageStream(definition) → {Promise.<void>}

- - - - - - -
- Create a message stream with a given definition. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
definition - - -aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -Promise.<void> - - -
-
- - - - - - - - - - - - - -

(async) deleteMessageStream(streamName) → {Promise.<void>}

- - - - - - -
- Deletes a message stream based on its name. Nothing is returned if the request succeeds. -An error will be thrown if the request fails. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
streamName - - -string - - - - The name of the stream to be deleted.
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -Promise.<void> - - -
-
- - - - - - - - - - - - - -

(async) describeMessageStream(streamName) → {Promise.<aws-greengrass-core-sdk.StreamManager.MessageStreamInfo>}

- - - - - - -
- Describe a message stream to get metadata including the stream's definition, -size, and exporter statuses. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
streamName - - -string - - - - The name of the stream to describe
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -Promise.<aws-greengrass-core-sdk.StreamManager.MessageStreamInfo> - - -
-
- - - - - - - - - - - - - -

(async) listStreams() → {Promise.<Array.<String>>}

- - - - - - -
- List the streams in StreamManager. Returns a list of their names. -
- - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - - - -
-
- Type -
-
- -Promise.<Array.<String>> - - -
-
- - - - - - - - - - - - - -

onConnected(f)

- - - - - - -
- Add a callback for when the client connects. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
f - - -function - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

onError(f)

- - - - - - -
- Add a callback for when an error occurs. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
f - - -function - - - -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

(async) readMessages(streamName, optionsnullable) → {Promise.<Array.<aws-greengrass-core-sdk.StreamManager.Message>>}

- - - - - - -
- Read message(s) from a chosen stream with options. If no options are specified it will try to read -1 message from the stream. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeAttributesDefaultDescription
streamName - - -string - - - - - - - - - - - - The name of the stream to read from.
options - - -aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions - - - - - - - - <nullable>
- - - -
- - null - - Options used when reading from the stream of type aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions. - Defaults are: -
    -
  • desiredStartSequenceNumber: 0
  • -
  • minMessageCount: 1
  • -
  • maxMessageCount: 1
  • -
  • readTimeoutMillis: 0
    // Where 0 here represents that the server will immediately return the messages
    -// or an exception if there were not enough messages available.
  • -
-

- If desiredStartSequenceNumber is specified in the options and is less - than the current beginning of the stream, returned messages will start - at the beginning of the stream and not necessarily the desiredStartSequenceNumber. -

- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - -
Returns:
- - -
- List of one or more messages. -
- - - -
-
- Type -
-
- -Promise.<Array.<aws-greengrass-core-sdk.StreamManager.Message>> - - -
-
- - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.StreamManager.html b/docs/aws-greengrass-core-sdk.StreamManager.html deleted file mode 100644 index c23c902..0000000 --- a/docs/aws-greengrass-core-sdk.StreamManager.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - - JSDoc: Namespace: StreamManager - - - - - - - - - - -
- -

Namespace: StreamManager

- - - - - - -
- -
- -

- aws-greengrass-core-sdk.StreamManager

- - -
- -
-
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - -
- - - - - - -

Classes

- -
-
AppendMessageRequest
-
- -
AppendMessageResponse
-
- -
ConnectRequest
-
- -
ConnectResponse
-
- -
CreateMessageStreamRequest
-
- -
CreateMessageStreamResponse
-
- -
DeleteMessageStreamRequest
-
- -
DeleteMessageStreamResponse
-
- -
DescribeMessageStreamRequest
-
- -
DescribeMessageStreamResponse
-
- -
ExportDefinition
-
- -
HTTPConfig
-
- -
IoTAnalyticsConfig
-
- -
KinesisConfig
-
- -
ListStreamsRequest
-
- -
ListStreamsResponse
-
- -
Message
-
- -
MessageFrame
-
- -
MessageStreamDefinition
-
- -
MessageStreamInfo
-
- -
Operation
-
- -
Persistence
-
- -
ReadMessagesOptions
-
- -
ReadMessagesRequest
-
- -
ReadMessagesResponse
-
- -
ResponseStatusCode
-
- -
StrategyOnFull
-
- -
StreamManagerClient
-
-
- - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/aws-greengrass-core-sdk.html b/docs/aws-greengrass-core-sdk.html deleted file mode 100644 index fa4a38d..0000000 --- a/docs/aws-greengrass-core-sdk.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - JSDoc: Namespace: aws-greengrass-core-sdk - - - - - - - - - - -
- -

Namespace: aws-greengrass-core-sdk

- - - - - - -
- -
- -

aws-greengrass-core-sdk

- - -
- -
-
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - -
- - - - - - -

Classes

- -
-
IotData
-
- -
Lambda
-
- -
SecretsManager
-
-
- - - - - - - -

Namespaces

- -
-
StreamManager
-
-
- - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-Bold-webfont.eot b/docs/fonts/OpenSans-Bold-webfont.eot deleted file mode 100644 index 5d20d916338a5890a033952e2e07ba7380f5a7d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19544 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 diff --git a/docs/fonts/OpenSans-Bold-webfont.svg b/docs/fonts/OpenSans-Bold-webfont.svg deleted file mode 100644 index 3ed7be4..0000000 --- a/docs/fonts/OpenSans-Bold-webfont.svg +++ /dev/null @@ -1,1830 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-Bold-webfont.woff b/docs/fonts/OpenSans-Bold-webfont.woff deleted file mode 100644 index 1205787b0ed50db71ebd4f8a7f85d106721ff258..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22432 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 ig3W - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-BoldItalic-webfont.woff b/docs/fonts/OpenSans-BoldItalic-webfont.woff deleted file mode 100644 index ed760c0628b6a0026041f5b8bba466a0471fd2e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23048 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-Italic-webfont.woff b/docs/fonts/OpenSans-Italic-webfont.woff deleted file mode 100644 index ff652e64356b538c001423b6aedefcf1ee66cd17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23188 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 diff --git a/docs/fonts/OpenSans-Light-webfont.svg b/docs/fonts/OpenSans-Light-webfont.svg deleted file mode 100644 index 11a472c..0000000 --- a/docs/fonts/OpenSans-Light-webfont.svg +++ /dev/null @@ -1,1831 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-Light-webfont.woff b/docs/fonts/OpenSans-Light-webfont.woff deleted file mode 100644 index e786074813a27d0a7a249047832988d5bf0fe756..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22248 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 diff --git a/docs/fonts/OpenSans-LightItalic-webfont.eot b/docs/fonts/OpenSans-LightItalic-webfont.eot deleted file mode 100644 index 8f445929ffb03b50e98c2a2f7d831a0cb1b276a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20535 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 Z%0#`NexefPFV?Xj51H#Y#AC7WXn+Jg($4?@ diff --git a/docs/fonts/OpenSans-LightItalic-webfont.svg b/docs/fonts/OpenSans-LightItalic-webfont.svg deleted file mode 100644 index 431d7e3..0000000 --- a/docs/fonts/OpenSans-LightItalic-webfont.svg +++ /dev/null @@ -1,1835 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-LightItalic-webfont.woff b/docs/fonts/OpenSans-LightItalic-webfont.woff deleted file mode 100644 index 43e8b9e6cc061ff17fd2903075cbde12715512b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23400 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
- -

Global

- - - - - - -
- -
- -

- - -
- -
-
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -
- - - - - - - - - - - - - - - - - - -

Type Definitions

- - - - - - - -

iotDataCallback(err, data)

- - - - - - -
- Called when a response from the service is returned. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
err - - -Error - - - - The error object returned from the request. Set to null if the request is successful.
data - - -Object - - - - The de-serialized data returned from the request. Set to null if a request error occurs. -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
payload - - -Buffer -| - -TypedArray -| - -Blob -| - -String - - - - The state information in JSON format
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -

lambdaCallback(err, data)

- - - - - - -
- Called when a response from the service is returned. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
err - - -Error - - - - The error object returned from the request. Set to null if the request is successful.
data - - -Object - - - - The de-serialized data returned from the request. Set to null if a request error occurs. -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
StatusCode - - -Integer - - - - The HTTP status code will be in the 200 range for successful request. For the RequestResponse invocation type this status code will be 200. -For the Event invocation type this status code will be 202.
FunctionError - - -String - - - - Indicates whether an error occurred while executing the Lambda function. If an error occurred this field will have one of two values; Handled or Unhandled. -Handled errors are errors that are reported by the function while the Unhandled errors are those detected and reported by AWS Lambda. -Unhandled errors include out of memory errors and function timeouts. For information about how to report an Handled error, -see Programming Model.
Payload - - -Buffer -| - -TypedArray -| - -Blob -| - -String - - - - It is the result returned by the Lambda function. This is present only if the invocation type is RequestResponse. -
In the event of a function error this field contains a message describing the error. For the Handled errors the Lambda function will report this message. For Unhandled errors AWS Lambda reports the message.
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - -

Logger

- - - - - - -
Type:
-
    -
  • - -Object - - -
  • -
- - - - - -
Properties:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
error - - -function - - - -
info - - -function - - - -
debug - - -function - - - -
- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - -

secretsManagerCallback(err, data)

- - - - - - -
- Called when a response from the service is returned. -
- - - - - - - - - -
Parameters:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
err - - -Error - - - - The error object returned from the request. Set to null if the request is successful.
data - - -Object - - - - The de-serialized data returned from the request. Set to null if a request error occurs. -
Properties
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
ARN - - -String - - - - The ARN of the secret.
Name - - -String - - - - The friendly name of the secret.
VersionId - - -String - - - - The unique identifier of this version of the secret.
SecretBinary - - -Buffer -| - -TypedArray -| - -Blob -| - -String - - - - The decrypted part of the protected secret information that was originally provided as binary data in the form of a byte array. -The response parameter represents the binary data as a base64-encoded string.
SecretString - - -String - - - - The decrypted part of the protected secret information that was originally provided as a string.
VersionStages - - -Array.<String> - - - - Specifies the secret version that you want to retrieve by the staging label attached to the version. -
Staging labels are used to keep track of different versions during the rotation process.
- -
- - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Source:
-
- - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index d15983f..0000000 --- a/docs/index.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - JSDoc: Home - - - - - - - - - - -
- -

Home

- - - - - - - - -

- - - - - - - - - - - - - - - -
-

AWS Greengrass Core SDK for JavaScript

-

The AWS Greengrass Core SDK for JavaScript allows developers to write JavaScript Lambda functions which will run within Greengrass.

-

Overview

-

This document provides instructions for preparing your Greengrass Core environment to run Lambda functions written in JavaScript. It also includes examples on how to develop a Lambda function in JavaScript as well as packaging and running an example Hello World file in JavaScript for your Greengrass core.

-

Preparing your Greengrass to run NodeJS Lambda functions

-

The environment where Greengrass is running on needs to be able to run NodeJS 12.x applications.

-
    -
  • Install NodeJS 12 for your platform. You can download the newest NodeJS from https://nodejs.org/en/download/.
  • -
  • When you untar the package downloaded from NodeJS website, you will find node file under bin directory.
  • -
  • Copy the file to /usr/bin or /usr/local/bin folder.
  • -
  • Rename the file to nodejs12.x
  • -
-

Getting Started - Hello World

-
    -
  • Copy samples/HelloWorld folder to your workspace.
  • -
  • Create a folder node_modules under HelloWorld folder.
  • -
  • Unzip aws-greengrass-core-sdk-js.zip into the folder. It should create a folder HelloWorld/node_modules/aws-greengrass-core-sdk
  • -
  • Use NPM to install the required dependency, cbor. npm i cbor@5.0.1.
  • -
  • Zip up the content of HelloWorld folder so that the index.js is on the top of the zip file structure.
  • -
  • Go to AWS Lambda Console.
  • -
  • Create a new function.
  • -
  • Choose the Runtime as Node.js 12.x
  • -
  • Upload the zip file in Lambda function code section.
  • -
  • Handler is index.handler
  • -
  • Choose any role as the role is not used within Greengrass.
  • -
  • After creating the function, publish the Lambda.
  • -
  • Create an Alias and point to the Published version (not $LATEST).
  • -
  • Go to your Greengrass Group and add the Lambda under Lambdas section.
  • -
  • Click on the Lambda and change the Lambda lifecycle to Make this function long-lived and keep it running indefinitely.
  • -
  • Add a Subscription with the following configuration: -
      -
    • Source: Lambda which you just created and added to the group
    • -
    • Target: IoT Cloud
    • -
    • Topic: hello/world
    • -
    -
  • -
  • Deploy. A message from your Lambda should be published to the topic hello/world in the cloud every 5 seconds. You can check this by going to AWS IoT's Test page and subscribing to topic hello/world.
  • -
-

Including aws-greengrass-core-sdk with your function

-

Unzip the SDK into your node_modules folder of your function. This should create a aws-greengrass-core-sdk folder which includes the SDK.

-

Logging in NodeJS Lambdas

-

Your console.log operation will be logged as INFO. A console.error operation will be logged as ERROR. Currently, our NodeJS SDK only allows you to log at INFO or ERROR level only.

-

Supported Datatypes

-

From GGC version 1.5, you can send both JSON and binary data as a payload when you invoking other Lambdas or publishing a message using IotData service. In order to make your lambda be able to handle binary payload, you need to configure the lambda in Greengrass console to mark it using binary input payload so that GGC can know how to deal with the data.

-

Supported Context

-

In Greengrass, you can send a context object in a JSON format to be passed to another Lambda that is being invoked. The context format looks like this: { custom: { customData: 'customData', }, }

-
-

CompatibilityΒΆ

-

As new features are added to AWS Greengrass, previous versions of the Greengrass SDK will be incompatible with newer versions of the AWS Greengrass core. The following table lists the compatible SDKs for all GGC releases.

- - - - - - - - - - - - - - - - - - - - - - - -
GGC VersionCompatible SDK Versions
1.0.x-1.6.x1.0.x-1.2.x
1.7.x-1.8.x1.0.x-1.3.x
1.9.x1.0.x-1.4.x
1.10.x1.0.x-1.6.x
-
-
-

1.6.0 UpdatesΒΆ

-

Added support for StreamManager, see AWS Docs -for more information.

-

Compatibility

-

StreamManager has adds a new dependency to this package, cbor==5.0.1. -Please make sure to include it in your lambda or else the SDK will not function. -In addition to the new dependency, the 1.6.0 version of this SDK now requires NodeJS version 12 -or greater since NodeJS 6 and 8 are end-of-life. See https://docs.aws.amazon.com/lambda/latest/dg/runtime-support-policy.html.

-

StreamManager Usage

-
const {
-    StreamManagerClient
-} = require('aws-greengrass-core-sdk').StreamManager;
-
-const c = new StreamManagerClient({
-    onConnectCb: async () => {
-        try {
-            // Let's start with something simple.
-            // Just print out all the available stream names on the server 
-            console.log(await c.listStreams());
-        } finally {
-            c.close(); // Always close the client when you're done
-        }
-    }
-});
-
-
-
-

1.5.0 UpdatesΒΆ

-

Added support for publish() parameter queueFullPolicy which can be set to 'AllOrError' to enforce that the published message is either delivered to all subscription destinations or delivered to no destinations and returns an error when Greengrass Core's internal work queue is full.

-
-
-

1.4.0 UpdatesΒΆ

-

Added support for Node.js 8.10 Lambda runtime. Lambda functions that use Node.js 8.10 runtime can now run on an AWS IoT Greengrass core. (Existing Lambda functions that use Node.js 6.10 runtime can still run on Greengrass core, but they can't be updated after 5/30/2019. Please refer to AWS Lambda Runtimes Support Policy.)

-
-
-

1.3.1 UpdatesΒΆ

-

Improved log level granularity.

-
-
-

1.3.0 UpdatesΒΆ

-

SDK supports SecretsManager client.

-
-
-

1.2.0 UpdatesΒΆ

-

SDK and GGC compatibility check takes place in the background.

-
-
-

1.1.0 UpdatesΒΆ

-

Lambda only accepted payload in JSON format. With this update, Invoking or publishing binary payload to a lambda is supported.

-
-
-

1.0.1 UpdatesΒΆ

-

Shadow operations were not receiving responses from the local shadow properly. This has been fixed.

-

Lambda Invoke function's InvocationType's default value was Event. This has been changed to RequestResponse.

-
-

Getting Help

- -

License

-

Apache 2.0

-
- - - - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - \ No newline at end of file diff --git a/docs/index.js.html b/docs/index.js.html deleted file mode 100644 index 160909e..0000000 --- a/docs/index.js.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - - JSDoc: Source: index.js - - - - - - - - - - -
- -

Source: index.js

- - - - - - -
-
-
/*
- * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
- */
-exports.GreengrassInterfaceVersion = '1.5';
-
-/**
- * @namespace aws-greengrass-core-sdk
- */
-
-const fail = (name, error) => {
-    console.error(`Unable to load aws-greengrass-core-sdk.${name} due to: `, error);
-};
-
-try {
-    exports.Lambda = require('./lambda');
-} catch (e) {
-    fail('Lambda', e);
-}
-try {
-    exports.IotData = require('./iotdata');
-} catch (e) {
-    fail('IotData', e);
-}
-try {
-    exports.SecretsManager = require('./secretsmanager');
-} catch (e) {
-    fail('SecretsManager', e);
-}
-try {
-    exports.StreamManager = require('./stream-manager');
-} catch (e) {
-    fail('StreamManager', e);
-}
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - diff --git a/docs/iotdata.js.html b/docs/iotdata.js.html deleted file mode 100644 index 1cf26dc..0000000 --- a/docs/iotdata.js.html +++ /dev/null @@ -1,283 +0,0 @@ - - - - - JSDoc: Source: iotdata.js - - - - - - - - - - -
- -

Source: iotdata.js

- - - - - - -
-
-
/*
- * Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
- */
-
-const { Buffer } = require('buffer');
-
-const GreengrassCommon = require('aws-greengrass-common-js');
-const Lambda = require('./lambda');
-const Util = require('./util');
-
-const { envVars } = GreengrassCommon;
-const { MY_FUNCTION_ARN } = envVars;
-const { SHADOW_FUNCTION_ARN } = envVars;
-const { ROUTER_FUNCTION_ARN } = envVars;
-
-/**
- * Constructs a service interface object. Each API operation is exposed as a function on service.
- *
- * @class
- * @memberOf aws-greengrass-core-sdk
- *
- * @example <caption>Sending a Request Using IotData</caption>
- * var iotdata = new GG.IotData();
- * iotdata.getThingShadow(params, function (err, data) {
- *   if (err) console.log(err, err.stack); // an error occurred
- *   else     console.log(data);           // successful response
- * });
- */
-class IotData {
-    /**
-     * Constructs a service object. This object has one method for each API operation.
-     *
-     * @example <caption>Constructing a IotData object</caption>
-     * var iotdata = new GG.IotData();
-     */
-    constructor() {
-        this.lambda = new Lambda();
-    }
-
-    /**
-     * Called when a response from the service is returned.
-     *
-     * @callback iotDataCallback
-     * @param err {Error} The error object returned from the request. Set to <tt>null</tt> if the request is successful.
-     * @param data {Object} The de-serialized data returned from the request. Set to <tt>null</tt> if a request error occurs.
-     * @param data.payload {Buffer|TypedArray|Blob|String} The state information in JSON format
-     */
-    /**
-     * Gets the thing shadow for the specified thing.
-     *
-     * @param params {Object}
-     * @param params.thingName {String} The name of the thing.
-     * @param callback {iotDataCallback} The callback.
-     *
-     * @example <caption>Calling the getThingShadow operation</caption>
-     * var params = {
-     *   thingName: 'STRING_VALUE' // required
-     * };
-     * iotdata.getThingShadow(params, function(err, data) {
-     *   if (err) console.log(err, err.stack); // an error occurred
-     *   else     console.log(data);           // successful response
-     * });
-     */
-    getThingShadow(params, callback) {
-        const thingName = Util.getParameter(params, 'thingName');
-        if (thingName === undefined) {
-            callback(new Error('"thingName" is a required parameter.'), null);
-            return;
-        }
-
-        const payload = '';
-        this._shadowOperation('get', thingName, payload, callback);
-    }
-
-    /**
-     * Updates the thing shadow for the specified thing.
-     *
-     * @param params {Object}
-     * @param params.thingName {String} The name of the thing.
-     * @param params.payload {String} The state information as a JSON string.
-     * @param callback {iotDataCallback} The callback.
-     *
-     * @example <caption>Calling the updateThingShadow operation</caption>
-     * var params = {
-     *   payload: 'Proper JSON data', // required
-     *   thingName: 'STRING_VALUE' // required
-     * };
-     * iotdata.updateThingShadow(params, function(err, data) {
-     *   if (err) console.log(err, err.stack); // an error occurred
-     *   else     console.log(data);           // successful response
-     * });
-     */
-    updateThingShadow(params, callback) {
-        const thingName = Util.getParameter(params, 'thingName');
-        if (thingName === undefined) {
-            callback(new Error('"thingName" is a required parameter.'), null);
-            return;
-        }
-
-        const payload = Util.getParameter(params, 'payload');
-        if (payload === undefined) {
-            callback(new Error('"payload" is a required parameter.'), null);
-            return;
-        }
-
-        this._shadowOperation('update', thingName, payload, callback);
-    }
-
-    /**
-     * Call shadow lambda to delete the shadow state.
-     *
-     * @param params {Object}
-     * @param params.thingName {String} The name of the thing whose shadow should be deleted.
-     * @param callback {iotDataCallback} The callback.
-     */
-    deleteThingShadow(params, callback) {
-        const thingName = Util.getParameter(params, 'thingName');
-        if (thingName === undefined) {
-            callback(new Error('"thingName" is a required parameter.'), null);
-            return;
-        }
-
-        const payload = '';
-        this._shadowOperation('delete', thingName, payload, callback);
-    }
-
-    /**
-     * Publishes a message within Greengrass.
-     *
-     * @param params {Object}
-     * @param params.topic {String} The name of the MQTT topic.
-     * @param params.payload {Buffer|TypedArray|Blob|String} The payload to be sent.
-     * @param params.queueFullPolicy {'AllOrError'|'BestEffort'} Specify whether to enforce message delivery to all destinations. Options are 'AllOrError' and 'BestEffort'. Defaults to 'BestEffort' when omitted.
-     * @param callback {iotDataCallback} The callback.
-     *
-     * @example <caption>Calling the publish operation</caption>
-     * var params = {
-     *   topic: 'STRING_VALUE', // required
-     *   payload: new Buffer('...') || 'STRING_VALUE',
-     *   queueFullPolicy: 'AllOrError' || 'BestEffort'
-     * };
-     * iotdata.publish(params, function(err, data) {
-     *   if (err) console.log(err, err.stack); // an error occurred
-     *   else     console.log(data);           // successful response
-     * });
-     */
-    publish(params, callback) {
-        const topic = Util.getParameter(params, 'topic');
-        if (topic === undefined) {
-            callback(new Error('"topic" is a required parameter'), null);
-            return;
-        }
-
-        const payload = Util.getParameter(params, 'payload');
-        if (payload === undefined) {
-            callback(new Error('"payload" is a required parameter'), null);
-            return;
-        }
-
-        // this is an optional parameter
-        const queueFullPolicy = Util.getParameter(params, 'queueFullPolicy');
-
-        const context = {
-            custom: {
-                source: MY_FUNCTION_ARN,
-                subject: topic,
-                queueFullPolicy: '',
-            },
-        };
-
-        switch (queueFullPolicy) {
-            case 'BestEffort':
-            case 'AllOrError':
-                context.custom.queueFullPolicy = queueFullPolicy;
-                break;
-            case '':
-            case undefined:
-            case null:
-                break;
-            default:
-                callback(new Error(`queueFullPolicy "${queueFullPolicy}" is not supported`), null);
-                break;
-        }
-
-        const buff = Buffer.from(JSON.stringify(context));
-        const clientContext = buff.toString('base64');
-
-        const invokeParams = {
-            FunctionName: ROUTER_FUNCTION_ARN,
-            InvocationType: 'Event',
-            ClientContext: clientContext,
-            Payload: payload,
-        };
-
-        console.log(`Publishing message on topic "${topic}" with Payload "${payload}"`);
-
-        this.lambda.invoke(invokeParams, (err, data) => {
-            if (err) {
-                callback(err, null); // an error occurred
-            } else {
-                callback(null, data); // successful response
-            }
-        });
-    }
-
-    _shadowOperation(operation, thingName, payload, callback) {
-        const topic = `$aws/things/${thingName}/shadow/${operation}`;
-        const context = {
-            custom: {
-                subject: topic,
-            },
-        };
-
-        const clientContext = Buffer.from(JSON.stringify(context)).toString('base64');
-        const invokeParams = {
-            FunctionName: SHADOW_FUNCTION_ARN,
-            ClientContext: clientContext,
-            Payload: payload,
-        };
-
-        console.log(`Calling shadow service on topic "${topic}" with payload "${payload}"`);
-        this.lambda.invoke(invokeParams, (err, data) => {
-            if (err) {
-                callback(err, null);
-            } else {
-                callback(null, data);
-            }
-        });
-    }
-}
-
-module.exports = IotData;
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - diff --git a/docs/lambda.js.html b/docs/lambda.js.html deleted file mode 100644 index ecb5e0d..0000000 --- a/docs/lambda.js.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - - JSDoc: Source: lambda.js - - - - - - - - - - -
- -

Source: lambda.js

- - - - - - -
-
-
/*
- * Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
- */
-
-const IPCClient = require('aws-greengrass-ipc-sdk-js');
-const GreengrassCommon = require('aws-greengrass-common-js');
-const { logging } = require('aws-greengrass-common-js');
-const Util = require('./util');
-
-const { AUTH_TOKEN } = GreengrassCommon.envVars;
-
-const logger = new logging.LocalWatchLogger();
-
-/**
- * Constructs a service interface object. Each API operation is exposed as a function on service.
- * @class
- * @memberOf aws-greengrass-core-sdk
- */
-class Lambda {
-    /**
-     * Constructs a service object. This object has one method for each API operation.
-     *
-     * @example <caption>Constructing a Lambda object</caption>
-     * var lambda = new GG.Lambda();
-     */
-    constructor() {
-        this.ipc = new IPCClient(AUTH_TOKEN);
-    }
-
-    /**
-     * Called when a response from the service is returned.
-     *
-     * @callback lambdaCallback
-     * @param err {Error} The error object returned from the request. Set to <tt>null</tt> if the request is successful.
-     * @param data {Object} The de-serialized data returned from the request. Set to <tt>null</tt> if a request error occurs.
-     * @param data.StatusCode {Integer} The HTTP status code will be in the 200 range for successful request. For the <tt>RequestResponse</tt> invocation type this status code will be 200.
-     * For the <tt>Event</tt> invocation type this status code will be 202.
-     * @param data.FunctionError {String} Indicates whether an error occurred while executing the Lambda function. If an error occurred this field will have one of two values; <tt>Handled</tt> or <tt>Unhandled</tt>.
-     * <tt>Handled</tt> errors are errors that are reported by the function while the Unhandled errors are those detected and reported by AWS Lambda.
-     * <tt>Unhandled</tt> errors include out of memory errors and function timeouts. For information about how to report an <tt>Handled</tt> error,
-     * see <a href="http://docs.aws.amazon.com/lambda/latest/dg/programming-model.html">Programming Model</a>.
-     * @param data.Payload {Buffer|TypedArray|Blob|String} It is the result returned by the Lambda function. This is present only if the invocation type is <tt>RequestResponse</tt>.
-     * <br/>In the event of a function error this field contains a message describing the error. For the <tt>Handled</tt> errors the Lambda function will report this message. For <tt>Unhandled</tt> errors AWS Lambda reports the message.
-     */
-
-    /**
-     * Invokes a specific Lambda function.<br/>
-     * In Greengrass, version of the Lambda which you would like to invoke needs to be provided.
-     *
-     * @param params {Object}
-     * @param params.FunctionName {String} The Lambda function name. You can specify Amazon Resource Name (ARN) of the function (for example, <tt>arn:aws:lambda:us-west-2:account-id:function:ThumbNail</tt>).
-     * @param params.InvocationType {String?} By default, the <tt>Invoke</tt> API assumes <tt>RequestResponse</tt> invocation type.
-     * You can optionally request asynchronous execution by specifying <tt>Event</tt> as the <tt>InvocationType</tt>. Possible values include:
-     * <ul><li>"Event"</li><li>"RequestResponse"</li></ul>
-     * @param params.ClientContext {String?} Using the <tt>ClientContext</tt> you can pass client-specific information to the Lambda function you are invoking.
-     * You can then process the client information in your Lambda function as you choose through the context variable.
-     * For an example of a <tt>ClientContext</tt> JSON, see the main page or an example folder for an example.
-     * <br/>The <tt>ClientContext</tt> JSON must be base64-encoded.
-     * @param params.Payload {Buffer|TypedArray|Blob|String} Payload that you want to provide to your Lambda function as input.
-     * @param params.Qualifier {String?} You can use this optional parameter to specify a Lambda function version if it was not included in the FunctionName field.
-     * If you specify a function version, the API uses the qualified function ARN to invoke a specific Lambda function.
-     * <br/>If you don't provide this parameter, then the API uses the FunctionName field only. If it does not have a version number of the target lambda, the call will fail.
-     * @param callback {lambdaCallback} The callback.
-     *
-     * @example <caption>To invoke a Lambda function</caption>
-     * //This operation invokes a Lambda function
-     *
-     * var params = {
-     *   ClientContext: "MyApp",
-     *   FunctionName: "MyFunction",
-     *   InvocationType: "Event",
-     *   Payload: <json | binary>,
-     *   Qualifier: "1"
-     * };
-     * lambda.invoke(params, function(err, data) {
-     *   if (err) console.log(err, err.stack); // an error occurred
-     *   else     console.log(data);           // successful response
-     * });
-     *
-     * @example <caption>Calling the invoke operation</caption>
-     * var params = {
-     *   FunctionName: 'STRING_VALUE', // required
-     *   ClientContext: 'STRING_VALUE',
-     *   InvocationType: Event | RequestResponse,
-     *   Payload: <json | binary>,
-     *   Qualifier: 'STRING_VALUE'
-     * };
-     * lambda.invoke(params, function(err, data) {
-     *   if (err) console.log(err, err.stack); // an error occurred
-     *   else     console.log(data);           // successful response
-     * });
-     */
-    invoke(params, callback) {
-        const functionName = Util.getParameter(params, 'FunctionName');
-        if (functionName === undefined) {
-            callback(new Error('"FunctionName" is a required parameter'), null);
-            return;
-        }
-
-        let arnFields;
-        try {
-            arnFields = new GreengrassCommon.FunctionArnFields(functionName);
-        } catch (e) {
-            callback(new Error(`FunctionName is malformed: ${e}`), null);
-            return;
-        }
-
-        let invocationType;
-        if (params.InvocationType === undefined || params.InvocationType === null) {
-            invocationType = 'RequestResponse';
-        } else {
-            invocationType = params.InvocationType;
-        }
-
-        if (invocationType !== 'Event' && invocationType !== 'RequestResponse') {
-            callback(new Error(`InvocationType '${invocationType}' is incorrect, should be 'Event' or 'RequestResponse'`), null);
-            return;
-        }
-
-        const clientContext = params.ClientContext ? params.ClientContext : '';
-        const payload = params.Payload;
-        const qualifier = params.Qualifier;
-
-        if (!Util.isValidQualifier(qualifier)) {
-            callback(new Error(`Qualifier '${qualifier}' is incorrect`), null);
-            return;
-        }
-
-        const qualifierInternal = arnFields.qualifier;
-
-        // generate the right full function arn with qualifier
-        if (qualifierInternal && qualifier && qualifierInternal !== qualifier) {
-            callback(new Error(`Qualifier '${qualifier}' does not match the version in FunctionName`), null);
-            return;
-        }
-
-        const finalQualifier = qualifierInternal === undefined || qualifierInternal == null ? qualifier : qualifierInternal;
-
-        let functionArn;
-        if (typeof GreengrassCommon.buildFunctionArn === 'function') {
-            // GGC v1.9.0 or newer
-            functionArn = GreengrassCommon.buildFunctionArn(
-                arnFields.unqualifiedArn,
-                finalQualifier,
-            );
-        } else {
-            // older version of GGC
-            throw new Error('Function buildFunctionArn not found. buildFunctionArn is introduced in GGC v1.9.0. '
-                    + 'Please check your GGC version.');
-        }
-
-        // verify client context is base64 encoded
-        if (Object.prototype.hasOwnProperty.call(params, 'ClientContext')) {
-            const cxt = params.ClientContext;
-            if (!Util.isValidContext(cxt)) {
-                callback(new Error('Client Context is invalid'), null);
-                return;
-            }
-        }
-
-        logger.debug(`Invoking local lambda ${functionArn} with payload ${payload} and client context ${clientContext}`);
-
-        this.ipc.postWork(functionArn, payload, clientContext, invocationType, (postWorkErr, invocationId) => {
-            if (postWorkErr) {
-                logger.error(`Failed to invoke function due to ${postWorkErr}`);
-                callback(postWorkErr, null);
-                return;
-            }
-
-            if (invocationType === 'RequestResponse') {
-                this.ipc.getWorkResult(functionArn, invocationId, (getWorkResultErr, body, functionErr, statusCode) => {
-                    if (getWorkResultErr) {
-                        logger.error(`Failed to get work result due to ${getWorkResultErr}`);
-                        callback(getWorkResultErr, null);
-                        return;
-                    }
-                    const data = {
-                        FunctionError: functionErr,
-                        StatusCode: statusCode,
-                        Payload: body,
-                    };
-                    callback(null, data);
-                });
-            } else {
-                callback(null, invocationId);
-            }
-        });
-    }
-}
-
-module.exports = Lambda;
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - diff --git a/docs/scripts/linenumber.js b/docs/scripts/linenumber.js deleted file mode 100644 index 4354785..0000000 --- a/docs/scripts/linenumber.js +++ /dev/null @@ -1,25 +0,0 @@ -/*global document */ -(() => { - const source = document.getElementsByClassName('prettyprint source linenums'); - let i = 0; - let lineNumber = 0; - let lineId; - let lines; - let totalLines; - let anchorHash; - - if (source && source[0]) { - anchorHash = document.location.hash.substring(1); - lines = source[0].getElementsByTagName('li'); - totalLines = lines.length; - - for (; i < totalLines; i++) { - lineNumber++; - lineId = `line${lineNumber}`; - lines[i].id = lineId; - if (lineId === anchorHash) { - lines[i].className += ' selected'; - } - } - } -})(); diff --git a/docs/scripts/prettify/Apache-License-2.0.txt b/docs/scripts/prettify/Apache-License-2.0.txt deleted file mode 100644 index d645695..0000000 --- a/docs/scripts/prettify/Apache-License-2.0.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/docs/scripts/prettify/lang-css.js b/docs/scripts/prettify/lang-css.js deleted file mode 100644 index 041e1f5..0000000 --- a/docs/scripts/prettify/lang-css.js +++ /dev/null @@ -1,2 +0,0 @@ -PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", -/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); diff --git a/docs/scripts/prettify/prettify.js b/docs/scripts/prettify/prettify.js deleted file mode 100644 index eef5ad7..0000000 --- a/docs/scripts/prettify/prettify.js +++ /dev/null @@ -1,28 +0,0 @@ -var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; -(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= -[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), -l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, -q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, -q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, -"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), -a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} -for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], -"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], -H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], -J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ -I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), -["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", -/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), -["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", -hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= -!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p - - - - JSDoc: Source: secretsmanager.js - - - - - - - - - - -
- -

Source: secretsmanager.js

- - - - - - -
-
-
/*
- * Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
- */
-const { Buffer } = require('buffer');
-
-const GreengrassCommon = require('aws-greengrass-common-js');
-const Lambda = require('./lambda');
-const Util = require('./util');
-
-const KEY_SECRET_ID = 'SecretId';
-const KEY_VERSION_ID = 'VersionId';
-const KEY_VERSION_STAGE = 'VersionStage';
-const KEY_SECRET_ARN = 'ARN';
-const KEY_SECRET_NAME = 'Name';
-const KEY_CREATED_DATE = 'CreatedDate';
-
-const { envVars } = GreengrassCommon;
-const { SECRETS_MANAGER_FUNCTION_ARN } = envVars;
-
-/**
- * Constructs a service interface object. Each API operation is exposed as a function on service.
- * @class
- * @memberOf aws-greengrass-core-sdk
- */
-class SecretsManager {
-    /**
-     * Constructs a service object. This object has one method for each API operation.
-     *
-     * @example <caption>Constructing a SecretsManager object</caption>
-     * var secretsmanager = new GG.SecretsManager();
-     */
-    constructor() {
-        this.lambda = new Lambda();
-    }
-
-    /**
-     * Called when a response from the service is returned.
-     *
-     * @callback secretsManagerCallback
-     * @param err {Error} The error object returned from the request. Set to <tt>null</tt> if the request is successful.
-     * @param data {Object} The de-serialized data returned from the request. Set to <tt>null</tt> if a request error occurs.
-     * @param data.ARN {String} The ARN of the secret.
-     * @param data.Name {String} The friendly name of the secret.
-     * @param data.VersionId {String} The unique identifier of this version of the secret.
-     * @param data.SecretBinary {Buffer|TypedArray|Blob|String} The decrypted part of the protected secret information that was originally provided as binary data in the form of a byte array.
-     * The response parameter represents the binary data as a base64-encoded string.
-     * @param data.SecretString {String} The decrypted part of the protected secret information that was originally provided as a string.
-     * @param data.VersionStages {String[]} Specifies the secret version that you want to retrieve by the staging label attached to the version.
-     * <br/>Staging labels are used to keep track of different versions during the rotation process.
-     */
-
-    /**
-     * Retrieves a specific local secret value.
-     *
-     * @param params {Object}
-     * @param params.SecretId {String} Specifies the secret containing the version that you want to retrieve. You can specify either the Amazon Resource Name (ARN) or the friendly name of the secret.
-     * @param params.VersionStage {String} Specifies the secret version that you want to retrieve by the staging label attached to the version.
-     * <br/>Staging labels are used to keep track of different versions during the rotation process.
-     * @param callback {secretsManagerCallback} The callback.
-     *
-     * @example <caption>Retrieving a local secret value</caption>
-     * // This operation retrieves a local secret value
-     *
-     * var params = {
-     *   SecretId: "STRING_VALUE",
-     *   VersionStage: "STRING_VALUE"
-     * };
-     * secretsmanager.getSecretValue(params, function(err, data) {
-     *   if (err) console.log(err, err.stack); // an error occurred
-     *   else     console.log(data);           // successful response
-     * });
-     */
-    getSecretValue(params, callback) {
-        const secretId = Util.getParameter(params, KEY_SECRET_ID);
-        const versionId = Util.getParameter(params, KEY_VERSION_ID);
-        const versionStage = Util.getParameter(params, KEY_VERSION_STAGE);
-
-        if (secretId === undefined) {
-            callback(new Error(`"${KEY_SECRET_ID}" is a required parameter`), null);
-            return;
-        }
-        // TODO: Remove this once we support query by VersionId
-        if (versionId !== undefined) {
-            callback(new Error('Query by VersionId is not yet supported'), null);
-            return;
-        }
-        if (versionId !== undefined && versionStage !== undefined) {
-            callback(new Error('VersionId and VersionStage cannot both be specified at the same time'), null);
-            return;
-        }
-
-        const getSecretValueRequestBytes = SecretsManager._generateGetSecretValueRequestBytes(secretId, versionId, versionStage);
-
-        const invokeParams = {
-            FunctionName: SECRETS_MANAGER_FUNCTION_ARN,
-            Payload: getSecretValueRequestBytes,
-        };
-
-        console.log(`Getting secret value from secrets manager: ${getSecretValueRequestBytes}`);
-
-        this.lambda.invoke(invokeParams, (err, data) => {
-            if (err) {
-                callback(err, null); // an error occurred
-            } else if (SecretsManager._is200Response(data.Payload)) {
-                callback(null, data.Payload); // successful response
-            } else {
-                callback(new Error(JSON.stringify(data.Payload)), null); // error response
-            }
-        });
-    }
-
-    static _generateGetSecretValueRequestBytes(secretId, versionId, versionStage) {
-        const request = {
-            SecretId: secretId,
-        };
-
-        if (versionStage !== undefined) {
-            request.VersionStage = versionStage;
-        }
-
-        if (versionId !== undefined) {
-            request.VersionId = versionId;
-        }
-
-        return Buffer.from(JSON.stringify(request));
-    }
-
-    static _is200Response(payload) {
-        const hasSecretArn = this._stringContains(payload, KEY_SECRET_ARN);
-        const hasSecretName = this._stringContains(payload, KEY_SECRET_NAME);
-        const hasVersionId = this._stringContains(payload, KEY_VERSION_ID);
-        const hasCreatedDate = this._stringContains(payload, KEY_CREATED_DATE);
-
-        return hasSecretArn && hasSecretName && hasVersionId && hasCreatedDate;
-    }
-
-    static _stringContains(src, target) {
-        return src.indexOf(target) > -1;
-    }
-}
-
-module.exports = SecretsManager;
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - diff --git a/docs/stream-manager_client.js.html b/docs/stream-manager_client.js.html deleted file mode 100644 index 44f7fe6..0000000 --- a/docs/stream-manager_client.js.html +++ /dev/null @@ -1,571 +0,0 @@ - - - - - JSDoc: Source: stream-manager/client.js - - - - - - - - - - -
- -

Source: stream-manager/client.js

- - - - - - -
-
-
'use strict';
-
-/* eslint-disable no-restricted-syntax */
-/*
- * Copyright (c) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
- */
-
-const cbor = require('cbor');
-const net = require('net');
-const smData = require('aws-greengrass-core-sdk/stream-manager/data');
-const exceptions = require('./exceptions');
-const util = require('./util');
-
-// Consts
-const PROTOCOL_VERSION = '1.0.0';
-const SDK_VERSION = '1.0.0';
-const CONNECT_VERSION = 1;
-
-const removeFromArray = (arr, f) => {
-    arr.indexOf(f) !== -1 && arr.splice(arr.indexOf(f), 1);
-};
-
-/**
- * Stream manager client
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- *
- * @example <caption>StreamManager Usage</caption>
- * const { StreamManagerClient } = require('aws-greengrass-core-sdk/stream-manager');
- * const client = new StreamManagerClient();
- * c.onConnected(async () => {
- *     // Do work with the client (c) here.
- * });
- */
-class StreamManagerClient {
-    #closed = false;
-
-    /**
-     * @type {module:net.Socket}
-     */
-    #socket = null;
-
-    #authToken = null;
-
-    #connected = false;
-
-    /**
-     * @typedef Logger
-     * @type {Object}
-     * @property {function(...*)} error
-     * @property {function(...*)} info
-     * @property {function(...*)} debug
-     */
-
-    /**
-     * @type {?Logger}
-     */
-    #logger = null;
-
-    #requestMap = {};
-
-    connectCallbacks = [];
-
-    errorCallbacks = [];
-
-    #defaultParams = {
-        port: null,
-        host: '127.0.0.1',
-        onConnectCb: null,
-        onErrorCb: null,
-        logger: {
-            error: console.error,
-            debug: console.debug,
-            info: console.info,
-        },
-    };
-
-    /**
-     * Constructs a new Stream Manager client. Once connected, <tt>onConnectCb</tt> will be called and
-     * the client can then be used.
-     *
-     * @param {Object?} opts All these options are optional.
-     * @param {Number} opts.port
-     * @param {String} opts.host
-     * @param {Function?} opts.onConnectCb Optional callback to be called once the client has connected.
-     * @param {Function(Error)?} opts.onErrorCb Optional, but highly suggested callback to be called when a connection error occurs.
-     * @param {Logger?} opts.logger
-     */
-    constructor(opts) {
-        let {
-            // eslint-disable-next-line prefer-const
-            port, host, onConnectCb, onErrorCb, logger,
-        } = {
-            // Apply defaults
-            ...this.#defaultParams,
-            // Then possibly override them with what the user set
-            ...opts,
-        };
-
-        if (port === null) {
-            port = parseInt(process.env.STREAM_MANAGER_SERVER_PORT || 8088, 10);
-        }
-        this.#logger = logger;
-        this.port = port;
-        this.host = host;
-        this.#authToken = process.env.AWS_CONTAINER_AUTHORIZATION_TOKEN || null;
-
-        if (typeof onConnectCb === 'function') {
-            this.onConnected(onConnectCb);
-        }
-        if (typeof onErrorCb === 'function') {
-            this.onError(onErrorCb);
-        }
-
-        this.__connect();
-    }
-
-    async __connect() {
-        try {
-            await new Promise((resolve, reject) => {
-                if (this.#closed) {
-                    return reject(new exceptions.StreamManagerException('Client is closed and cannot be reopened'));
-                }
-                if (this.#connected) {
-                    return resolve();
-                }
-
-                const newSock = net.createConnection({
-                    port: this.port,
-                    host: this.host,
-                    // Set high water mark so that we can read 1 full packet (1GB) at a time instead of needing to
-                    // try to read multiple times and combine the results. The HWM adjusts how much the socket will
-                    // buffer when reading.
-                    readableHighWaterMark: util.MAX_PACKET_SIZE,
-                }, async () => {
-                    try {
-                        // Connection started
-                        this.#logger.debug(`Opening connection to ${this.host}:${this.port}`);
-                        this.#connected = false;
-
-                        const request = new smData.ConnectRequest()
-                            .withProtocolVersion(PROTOCOL_VERSION)
-                            .withSdkVersion(SDK_VERSION)
-                            .withAuthToken(this.#authToken)
-                            .withRequestId(util.uuidv4());
-
-                        // Write the connect version
-                        newSock.write(util.intToBuffer(CONNECT_VERSION, 1));
-
-                        // Write request to socket
-                        const frame = new smData.MessageFrame(smData.Operation.Connect, cbor.encode(request.asMap()));
-                        const byteFrame = util.encodeFrame(frame);
-                        newSock.write(byteFrame.header);
-                        newSock.write(byteFrame.payload);
-
-                        await this.__read(newSock);
-                        // Only now that we're connected should we set/replace the socket
-                        this.#socket = newSock;
-                        resolve();
-                    } catch (errors) {
-                        reject(errors);
-                    }
-                });
-
-                newSock.on('error', (e) => {
-                    this.#logger.error(e);
-                    this.errorCallbacks.forEach((f) => f(e));
-                    newSock.end();
-
-                    if (!this.#connected) {
-                        reject(e);
-                    }
-                });
-
-                newSock.on('end', () => {
-                    this.#logger.info('Socket is ending');
-                });
-
-                newSock.on('close', () => {
-                    newSock.destroy();
-                    this.#connected = false;
-                });
-            });
-
-            // Set us to be in connected mode
-            this.#connected = true;
-            this.#logger.info('Successfully connected');
-            this.connectCallbacks.forEach((f) => {
-                try {
-                    f();
-                } finally {
-                    // After calling the connect callback remove it so we don't call it multiple times.
-                    // A client should only connect once.
-                    removeFromArray(this.connectCallbacks, f);
-                }
-            });
-        } catch (e) {
-            this.#logger.error(e);
-            this.errorCallbacks.forEach((f) => f(e));
-            throw e;
-        }
-    }
-
-    __readSocket(n, socket, resolve = null, reject = null) {
-        if (resolve && reject) {
-            if (this.#closed) {
-                reject();
-            }
-
-            const r = socket.read(n);
-            if (r === null) {
-                socket.once('readable', () => {
-                    this.__readSocket(n, socket, resolve, reject);
-                });
-                return;
-            }
-            resolve(r);
-            return;
-        }
-
-        return new Promise((res, rej) => {
-            if (this.#closed) {
-                rej();
-            }
-            this.__readSocket(n, socket, res, rej);
-        });
-    }
-
-    async __read(socket = this.#socket) {
-        if (this.#connected) {
-            const frame = await this.__readMessageFrame(socket);
-            this.__handleReadResponse(cbor.decodeFirstSync(frame.payload), frame);
-        } else {
-            // Read connect version
-            const connectResponseVersion = util.intFromBuffer(await this.__readSocket(1, socket));
-            if (connectResponseVersion !== CONNECT_VERSION) {
-                this.#logger.error('Unexpected response from the server, Connect version:', connectResponseVersion);
-                throw new exceptions.ConnectFailedException('Failed to establish connection with the server');
-            }
-
-            // Read connect response
-            let response = await this.__readMessageFrame(socket);
-
-            if (response.operation === smData.Operation.ConnectResponse) {
-                const payload = cbor.decodeFirstSync(response.payload);
-                response = smData.ConnectResponse.fromMap(payload);
-                this.#logger.debug('Received ConnectResponse from server:', response);
-            } else {
-                this.#logger.error('Received data with unexpected operation', response.operation);
-                throw new exceptions.ConnectFailedException('Failed to establish connection with the server');
-            }
-
-            if (response.status !== smData.ResponseStatusCode.Success) {
-                this.#logger.error('Received ConnectResponse with unexpected status', response.status);
-                throw new exceptions.ConnectFailedException('Failed to establish connection with the server');
-            }
-        }
-
-        // Put ourselves back in the event loop to handle the next messages
-        setImmediate(async () => {
-            try {
-                await this.__read();
-            } catch (e) {
-                // Only bubble up the errors when we're actually connected and not closed
-                if (this.#connected && !this.#closed) {
-                    this.errorCallbacks.forEach((f) => f(e));
-                }
-            }
-        });
-    }
-
-    async __readMessageFrame(socket) {
-        const length = util.intFromBuffer(await this.__readSocket(4, socket));
-        const operation = util.intFromBuffer(await this.__readSocket(1, socket));
-
-        let op = smData.Operation.fromMap(operation);
-        if (typeof op === 'undefined') {
-            this.#logger.error('Found unknown operation', operation);
-            op = smData.Operation.Unknown;
-        }
-
-        return new smData.MessageFrame(op, await this.__readSocket(length - 1, socket));
-    }
-
-    __handleReadResponse(data, frame) {
-        if (frame.operation === smData.Operation.ReadMessagesResponse) {
-            const response = smData.ReadMessagesResponse.fromMap(data);
-            this.#logger.debug('Received ReadMessagesResponse from server');
-            this.#requestMap[response.requestId](response);
-        } else if (frame.operation === smData.Operation.CreateMessageStreamResponse) {
-            const response = smData.CreateMessageStreamResponse.fromMap(data);
-            this.#logger.debug('Received CreateMessageStreamResponse from server', frame);
-            this.#requestMap[response.requestId](response);
-        } else if (frame.operation === smData.Operation.DeleteMessageStreamResponse) {
-            const response = smData.DeleteMessageStreamResponse.fromMap(data);
-            this.#logger.debug('Received DeleteMessageStreamResponse from server', frame);
-            this.#requestMap[response.requestId](response);
-        } else if (frame.operation === smData.Operation.AppendMessageResponse) {
-            const response = smData.AppendMessageResponse.fromMap(data);
-            this.#logger.debug('Received AppendMessageResponse from server', frame);
-            this.#requestMap[response.requestId](response);
-        } else if (frame.operation === smData.Operation.ListStreamsResponse) {
-            const response = smData.ListStreamsResponse.fromMap(data);
-            this.#logger.debug('Received ListStreamsResponse from server', frame);
-            this.#requestMap[response.requestId](response);
-        } else if (frame.operation === smData.Operation.DescribeMessageStreamResponse) {
-            const response = smData.DescribeMessageStreamResponse.fromMap(data);
-            this.#logger.debug('Received DescribeMessageStreamResponse from server', frame);
-            this.#requestMap[response.requestId](response);
-        } else if (frame.operation === smData.Operation.Unknown) {
-            this.#logger.error('Received response with unknown operation from server', frame);
-            try {
-                const { requestId } = cbor.decodeFirstSync(frame.payload);
-                this.#requestMap[requestId](frame);
-            } catch {
-                // We tried our best to figure out the request id, but it failed.
-                // We already logged the unknown smData.Operation, so there's nothing
-                // else we can do at this point
-            }
-        } else {
-            this.#logger.error('Received data with unhandled operation', frame.operation);
-        }
-    }
-
-    async _sendAndReceive(operation, data) {
-        if (this.#closed) {
-            throw new exceptions.StreamManagerException('Client is closed and cannot be reopened');
-        }
-
-        if (data.requestId === null) {
-            // eslint-disable-next-line no-param-reassign
-            data.requestId = util.uuidv4();
-        }
-
-        const validation = util.isInvalid(data);
-        if (validation) {
-            throw new exceptions.ValidationException(validation);
-        }
-
-        // If we're not connected, immediately try to reconnect
-        if (!this.#connected) {
-            await this.__connect();
-        }
-
-        const promise = new Promise(((resolve, reject) => {
-            this.#requestMap[data.requestId] = (result) => {
-                // Drop async queue from request map
-                delete this.#requestMap[data.requestId];
-                if (result instanceof smData.MessageFrame && result.operation === smData.Operation.Unknown) {
-                    reject(new exceptions.ClientException('Received response with unknown operation from server'));
-                }
-
-                resolve(result);
-            };
-        }));
-
-        // Write request to socket
-        const frame = new smData.MessageFrame(operation, cbor.encode(data.asMap()));
-        const byteFrame = util.encodeFrame(frame);
-        this.#socket.write(byteFrame.header);
-        this.#socket.write(byteFrame.payload);
-
-        return promise;
-    }
-
-    static __validateReadMessagesOptions(options) {
-        if (options !== null) {
-            if (!(options instanceof smData.ReadMessagesOptions)) {
-                throw new exceptions.ValidationException('options argument to read_messages must be a ReadMessageOptions object');
-            }
-            const validation = util.isInvalid(options);
-            if (validation) {
-                throw new exceptions.ValidationException(validation);
-            }
-
-            if (
-                options.minMessageCount !== null
-                && options.maxMessageCount !== null
-                && options.minMessageCount > options.maxMessageCount
-            ) {
-                throw new exceptions.ValidationException('minMessageCount must be less than or equal to maxMessageCount');
-            }
-        }
-    }
-
-    /**
-     * Append a message into the specified message stream. Returns the sequence number of the message
-     * if it was successfully appended.
-     *
-     * @param streamName {string} The name of the stream to append to.
-     * @param data {Buffer} Buffer containing the data to be written.
-     * @returns {Promise<Number>}
-     */
-    async appendMessage(streamName, data) {
-        const request = new smData.AppendMessageRequest().withName(streamName).withPayload(data);
-        const result = await this._sendAndReceive(smData.Operation.AppendMessage, request);
-        util.throwOnErrorResponse(result);
-        return result.sequenceNumber;
-    }
-
-    /**
-     * Create a message stream with a given definition.
-     *
-     * @param definition {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}
-     * @returns {Promise<void>}
-     */
-    async createMessageStream(definition) {
-        if (!(definition instanceof smData.MessageStreamDefinition)) {
-            throw new exceptions.ValidationException('definition argument to create_stream must be a MessageStreamDefinition object');
-        }
-        const request = new smData.CreateMessageStreamRequest().withDefinition(definition);
-        const result = await this._sendAndReceive(smData.Operation.CreateMessageStream, request);
-        util.throwOnErrorResponse(result);
-    }
-
-    /**
-     * Deletes a message stream based on its name. Nothing is returned if the request succeeds.
-     * An error will be thrown if the request fails.
-     *
-     * @param streamName {string} The name of the stream to be deleted.
-     * @returns {Promise<void>}
-     */
-    async deleteMessageStream(streamName) {
-        const request = new smData.DeleteMessageStreamRequest().withName(streamName);
-        const result = await this._sendAndReceive(smData.Operation.DeleteMessageStream, request);
-        util.throwOnErrorResponse(result);
-    }
-
-    /**
-     * Read message(s) from a chosen stream with options. If no options are specified it will try to read
-     * 1 message from the stream.
-     *
-     * @param streamName {string} The name of the stream to read from.
-     * @param options {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions?} Options used when reading from the stream of type {@linkcode aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions}.
-     *     Defaults are:
-     * <ul>
-     *     <li>desiredStartSequenceNumber: 0</li>
-     *     <li>minMessageCount: 1</li>
-     *     <li>maxMessageCount: 1</li>
-     *     <li>readTimeoutMillis: 0 <pre>// Where 0 here represents that the server will immediately return the messages
-     * // or an exception if there were not enough messages available.</pre></li>
-     * </ul>
-     * <p>
-     *     If desiredStartSequenceNumber is specified in the options and is less
-     *     than the current beginning of the stream, returned messages will start
-     *     at the beginning of the stream and not necessarily the desiredStartSequenceNumber.
-     * </p>
-     * @returns {Promise<aws-greengrass-core-sdk.StreamManager.Message[]>} List of one or more messages.
-     */
-    async readMessages(streamName, options = null) {
-        StreamManagerClient.__validateReadMessagesOptions(options);
-        const request = new smData.ReadMessagesRequest().withStreamName(streamName).withReadMessagesOptions(options);
-        const result = await this._sendAndReceive(smData.Operation.ReadMessages, request);
-        util.throwOnErrorResponse(result);
-        return result.messages;
-    }
-
-    /**
-     * List the streams in StreamManager. Returns a list of their names.
-     *
-     * @returns {Promise<String[]>}
-     */
-    async listStreams() {
-        const request = new smData.ListStreamsRequest();
-        const result = await this._sendAndReceive(smData.Operation.ListStreams, request);
-        util.throwOnErrorResponse(result);
-        return result.streams;
-    }
-
-    /**
-     * Describe a message stream to get metadata including the stream's definition,
-     * size, and exporter statuses.
-     *
-     * @param streamName {string} The name of the stream to describe
-     * @returns {Promise<aws-greengrass-core-sdk.StreamManager.MessageStreamInfo>}
-     */
-    async describeMessageStream(streamName) {
-        const request = new smData.DescribeMessageStreamRequest().withName(streamName);
-        const result = await this._sendAndReceive(smData.Operation.DescribeMessageStream, request);
-        util.throwOnErrorResponse(result);
-        return result.messageStreamInfo;
-    }
-
-    /**
-     * Add a callback for when the client connects.
-     * @param f {function}
-     */
-    onConnected(f) {
-        if (this.#connected) {
-            f();
-        } else {
-            this.connectCallbacks.push(f);
-        }
-    }
-
-    /**
-     * Add a callback for when an error occurs.
-     * @param f {function}
-     */
-    onError(f) {
-        this.errorCallbacks.push(f);
-    }
-
-    /**
-     * Close the connection
-     */
-    close() {
-        if (this.#socket) {
-            this.#socket.end();
-        }
-        this.#closed = true;
-    }
-}
-
-module.exports = {
-    ...smData,
-    StreamManagerClient: StreamManagerClient,
-    ...exceptions,
-};
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - diff --git a/docs/stream-manager_data_index.js.html b/docs/stream-manager_data_index.js.html deleted file mode 100644 index 6069a1a..0000000 --- a/docs/stream-manager_data_index.js.html +++ /dev/null @@ -1,6244 +0,0 @@ - - - - - JSDoc: Source: stream-manager/data/index.js - - - - - - - - - - -
- -

Source: stream-manager/data/index.js

- - - - - - -
-
-
/**
- * StrategyOnFull is used in the MessageStreamDefinition when creating a stream.
-   It defines the behavior when the stream has reached the maximum size.
-   RejectNewData: any append message request after the stream is full will be rejected with an exception.
-   OverwriteOldestData: the oldest stream segments will be deleted until there is room for the new message.
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class StrategyOnFull {
-
-    #value = null;
-    constructor(value = null) {
-        if (!(value in Object.values(StrategyOnFull.options))) {
-            throw new Error("Value must be one of the enumerated options");
-        }
-        this.#value = value;
-    }
-
-    static fromMap(d) {
-        return StrategyOnFull[StrategyOnFull.optionsFlipped[d]];
-    }
-
-    asMap() {
-        return this.#value;
-    }
-};
-Object.defineProperty(StrategyOnFull, "options", {
-    value: {
-        RejectNewData: 0,
-        OverwriteOldestData: 1,
-    }
-});
-Object.defineProperty(StrategyOnFull, "optionsFlipped", {
-    value: {
-        0: "RejectNewData",
-        1: "OverwriteOldestData",
-    }
-});
-
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.StrategyOnFull} RejectNewData
- * @memberOf aws-greengrass-core-sdk.StreamManager.StrategyOnFull#
- * @readonly
- */
-Object.defineProperty(StrategyOnFull, "RejectNewData", {
-    value: new StrategyOnFull(0)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.StrategyOnFull} OverwriteOldestData
- * @memberOf aws-greengrass-core-sdk.StreamManager.StrategyOnFull#
- * @readonly
- */
-Object.defineProperty(StrategyOnFull, "OverwriteOldestData", {
-    value: new StrategyOnFull(1)
-});
-
-/**
- * Stream persistence. If set to File, the file system will be used to persist messages long-term and is resilient to restarts.
-   Memory should be used when performance matters more than durability as it only stores the stream in memory and never writes to the disk.
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class Persistence {
-
-    #value = null;
-    constructor(value = null) {
-        if (!(value in Object.values(Persistence.options))) {
-            throw new Error("Value must be one of the enumerated options");
-        }
-        this.#value = value;
-    }
-
-    static fromMap(d) {
-        return Persistence[Persistence.optionsFlipped[d]];
-    }
-
-    asMap() {
-        return this.#value;
-    }
-};
-Object.defineProperty(Persistence, "options", {
-    value: {
-        File: 0,
-        Memory: 1,
-    }
-});
-Object.defineProperty(Persistence, "optionsFlipped", {
-    value: {
-        0: "File",
-        1: "Memory",
-    }
-});
-
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.Persistence} File
- * @memberOf aws-greengrass-core-sdk.StreamManager.Persistence#
- * @readonly
- */
-Object.defineProperty(Persistence, "File", {
-    value: new Persistence(0)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.Persistence} Memory
- * @memberOf aws-greengrass-core-sdk.StreamManager.Persistence#
- * @readonly
- */
-Object.defineProperty(Persistence, "Memory", {
-    value: new Persistence(1)
-});
-
-/**
- * (Internal Only) Request object to connect to the service
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class ConnectRequest {
-    #__requestId = null;
-    #__protocolVersion = null;
-    #__sdkVersion = null;
-    #__authToken = null;
-
-    /**
-     * @param requestId {String} 
-     * @param protocolVersion {String} 
-     * @param sdkVersion {String} 
-     * @param authToken {String} 
-     */
-    constructor(
-        requestId = null,
-        protocolVersion = null,
-        sdkVersion = null,
-        authToken = null,
-    ) {
-        if (requestId !== null && !(typeof requestId === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        if (protocolVersion !== null && !(typeof protocolVersion === "string")) {
-            throw new Error("protocolVersion must be String");
-        }
-
-        if (sdkVersion !== null && !(typeof sdkVersion === "string")) {
-            throw new Error("sdkVersion must be String");
-        }
-
-        if (authToken !== null && !(typeof authToken === "string")) {
-            throw new Error("authToken must be String");
-        }
-
-        this.#__requestId = requestId;
-        this.#__protocolVersion = protocolVersion;
-        this.#__sdkVersion = sdkVersion;
-        this.#__authToken = authToken;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get requestId() {
-        return this.#__requestId;
-    }
-    /**
-     * @param value {String} 
-     */
-    set requestId(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        this.#__requestId = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ConnectRequest}
-     */
-    withRequestId(value) {
-        this.requestId = value;
-        return this;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get protocolVersion() {
-        return this.#__protocolVersion;
-    }
-    /**
-     * @param value {String} 
-     */
-    set protocolVersion(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("protocolVersion must be String");
-        }
-
-        this.#__protocolVersion = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ConnectRequest}
-     */
-    withProtocolVersion(value) {
-        this.protocolVersion = value;
-        return this;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get sdkVersion() {
-        return this.#__sdkVersion;
-    }
-    /**
-     * @param value {String} 
-     */
-    set sdkVersion(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("sdkVersion must be String");
-        }
-
-        this.#__sdkVersion = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ConnectRequest}
-     */
-    withSdkVersion(value) {
-        this.sdkVersion = value;
-        return this;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get authToken() {
-        return this.#__authToken;
-    }
-    /**
-     * @param value {String} 
-     */
-    set authToken(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("authToken must be String");
-        }
-
-        this.#__authToken = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ConnectRequest}
-     */
-    withAuthToken(value) {
-        this.authToken = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new ConnectRequest();
-        if ("requestId" in d) {
-            ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"];
-        }
-        if ("protocolVersion" in d) {
-            ret.protocolVersion = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["protocolVersion"]) : d["protocolVersion"];
-        }
-        if ("sdkVersion" in d) {
-            ret.sdkVersion = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["sdkVersion"]) : d["sdkVersion"];
-        }
-        if ("authToken" in d) {
-            ret.authToken = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["authToken"]) : d["authToken"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.requestId !== null) {
-            d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId;
-        }
-        if (this.protocolVersion !== null) {
-            d["protocolVersion"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.protocolVersion), "asMap") ? this.protocolVersion.asMap() : this.protocolVersion;
-        }
-        if (this.sdkVersion !== null) {
-            d["sdkVersion"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.sdkVersion), "asMap") ? this.sdkVersion.asMap() : this.sdkVersion;
-        }
-        if (this.authToken !== null) {
-            d["authToken"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.authToken), "asMap") ? this.authToken.asMap() : this.authToken;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(ConnectRequest, "typesMap", {
-    value: {
-        requestId: {
-            'type': String,
-            'subtype': null
-        },
-        protocolVersion: {
-            'type': String,
-            'subtype': null
-        },
-        sdkVersion: {
-            'type': String,
-            'subtype': null
-        },
-        authToken: {
-            'type': String,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(ConnectRequest, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(ConnectRequest, "validationsMap", {
-    value: {
-        'requestId': {
-            'required': true,
-            'minLength': 1,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'protocolVersion': {
-            'required': true,
-        },
-        'sdkVersion': {
-            'required': false,
-        },
-        'authToken': {
-            'required': false,
-        },
-    }
-});
-
-/**
- * (Internal Only) Enum defining possible response status codes from StreamManager server.
-   Success: Request succeeded.
-   UnknownFailure: Encountered unknown StreamManager server failure.
-   Unauthorized: Client is not authorized to perform this request.
-   InvalidRequest: Client request is invalid.
-   RequestPayloadTooLarge: Request payload is too large.
-   ResourceNotFound: The requested resource does not exist.
-   ServerTimeout: Server took too long and timed out.
-   ResponsePayloadTooLarge: Server response exceeded the max allowed response payload size by the protocol.
-   UnsupportedConnectVersion: Server does not support the Connect version presented by the Client.
-   UnexpectedOperation: Operation presented was not expected by the Server.
-   UnsupportedProtocolVersion: Protocol version presented by the Client is not compatible with the Server.
-   InvalidProtocolVersion: Protocol version presented by the Client is not valid.
-   FailedToConnect: Client failed to connect to the Server.
-   NotEnoughMessages: There is not enough messages to return.
-   MessageStoreReadError: Read messages encountered an error.
-   OutOfMemoryError: Server ran out of memory.
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class ResponseStatusCode {
-
-    #value = null;
-    constructor(value = null) {
-        if (!(value in Object.values(ResponseStatusCode.options))) {
-            throw new Error("Value must be one of the enumerated options");
-        }
-        this.#value = value;
-    }
-
-    static fromMap(d) {
-        return ResponseStatusCode[ResponseStatusCode.optionsFlipped[d]];
-    }
-
-    asMap() {
-        return this.#value;
-    }
-};
-Object.defineProperty(ResponseStatusCode, "options", {
-    value: {
-        Success: 0,
-        UnknownFailure: 1,
-        Unauthorized: 2,
-        InvalidRequest: 3,
-        RequestPayloadTooLarge: 4,
-        ResourceNotFound: 5,
-        ServerTimeout: 6,
-        ResponsePayloadTooLarge: 7,
-        UnsupportedConnectVersion: 8,
-        UnexpectedOperation: 9,
-        UnsupportedProtocolVersion: 10,
-        InvalidProtocolVersion: 11,
-        FailedToConnect: 12,
-        NotEnoughMessages: 13,
-        MessageStoreReadError: 14,
-        OutOfMemoryError: 15,
-    }
-});
-Object.defineProperty(ResponseStatusCode, "optionsFlipped", {
-    value: {
-        0: "Success",
-        1: "UnknownFailure",
-        2: "Unauthorized",
-        3: "InvalidRequest",
-        4: "RequestPayloadTooLarge",
-        5: "ResourceNotFound",
-        6: "ServerTimeout",
-        7: "ResponsePayloadTooLarge",
-        8: "UnsupportedConnectVersion",
-        9: "UnexpectedOperation",
-        10: "UnsupportedProtocolVersion",
-        11: "InvalidProtocolVersion",
-        12: "FailedToConnect",
-        13: "NotEnoughMessages",
-        14: "MessageStoreReadError",
-        15: "OutOfMemoryError",
-    }
-});
-
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} Success
- * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode#
- * @readonly
- */
-Object.defineProperty(ResponseStatusCode, "Success", {
-    value: new ResponseStatusCode(0)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} UnknownFailure
- * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode#
- * @readonly
- */
-Object.defineProperty(ResponseStatusCode, "UnknownFailure", {
-    value: new ResponseStatusCode(1)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} Unauthorized
- * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode#
- * @readonly
- */
-Object.defineProperty(ResponseStatusCode, "Unauthorized", {
-    value: new ResponseStatusCode(2)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} InvalidRequest
- * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode#
- * @readonly
- */
-Object.defineProperty(ResponseStatusCode, "InvalidRequest", {
-    value: new ResponseStatusCode(3)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} RequestPayloadTooLarge
- * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode#
- * @readonly
- */
-Object.defineProperty(ResponseStatusCode, "RequestPayloadTooLarge", {
-    value: new ResponseStatusCode(4)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} ResourceNotFound
- * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode#
- * @readonly
- */
-Object.defineProperty(ResponseStatusCode, "ResourceNotFound", {
-    value: new ResponseStatusCode(5)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} ServerTimeout
- * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode#
- * @readonly
- */
-Object.defineProperty(ResponseStatusCode, "ServerTimeout", {
-    value: new ResponseStatusCode(6)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} ResponsePayloadTooLarge
- * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode#
- * @readonly
- */
-Object.defineProperty(ResponseStatusCode, "ResponsePayloadTooLarge", {
-    value: new ResponseStatusCode(7)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} UnsupportedConnectVersion
- * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode#
- * @readonly
- */
-Object.defineProperty(ResponseStatusCode, "UnsupportedConnectVersion", {
-    value: new ResponseStatusCode(8)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} UnexpectedOperation
- * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode#
- * @readonly
- */
-Object.defineProperty(ResponseStatusCode, "UnexpectedOperation", {
-    value: new ResponseStatusCode(9)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} UnsupportedProtocolVersion
- * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode#
- * @readonly
- */
-Object.defineProperty(ResponseStatusCode, "UnsupportedProtocolVersion", {
-    value: new ResponseStatusCode(10)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} InvalidProtocolVersion
- * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode#
- * @readonly
- */
-Object.defineProperty(ResponseStatusCode, "InvalidProtocolVersion", {
-    value: new ResponseStatusCode(11)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} FailedToConnect
- * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode#
- * @readonly
- */
-Object.defineProperty(ResponseStatusCode, "FailedToConnect", {
-    value: new ResponseStatusCode(12)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} NotEnoughMessages
- * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode#
- * @readonly
- */
-Object.defineProperty(ResponseStatusCode, "NotEnoughMessages", {
-    value: new ResponseStatusCode(13)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} MessageStoreReadError
- * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode#
- * @readonly
- */
-Object.defineProperty(ResponseStatusCode, "MessageStoreReadError", {
-    value: new ResponseStatusCode(14)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} OutOfMemoryError
- * @memberOf aws-greengrass-core-sdk.StreamManager.ResponseStatusCode#
- * @readonly
- */
-Object.defineProperty(ResponseStatusCode, "OutOfMemoryError", {
-    value: new ResponseStatusCode(15)
-});
-
-/**
- * Internal Only
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class ConnectResponse {
-    #__requestId = null;
-    #__status = null;
-    #__errorMessage = null;
-    #__protocolVersion = null;
-    #__supportedProtocolVersions = null;
-    #__serverVersion = null;
-    #__clientIdentifier = null;
-
-    /**
-     * @param requestId {String} 
-     * @param status {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     * @param errorMessage {String} 
-     * @param protocolVersion {String} 
-     * @param supportedProtocolVersions {String[]} 
-     * @param serverVersion {String} 
-     * @param clientIdentifier {String} 
-     */
-    constructor(
-        requestId = null,
-        status = null,
-        errorMessage = null,
-        protocolVersion = null,
-        supportedProtocolVersions = null,
-        serverVersion = null,
-        clientIdentifier = null,
-    ) {
-        if (requestId !== null && !(typeof requestId === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        if (status !== null && !(status instanceof ResponseStatusCode)) {
-            throw new Error("status must be ResponseStatusCode");
-        }
-
-        if (errorMessage !== null && !(typeof errorMessage === "string")) {
-            throw new Error("errorMessage must be String");
-        }
-
-        if (protocolVersion !== null && !(typeof protocolVersion === "string")) {
-            throw new Error("protocolVersion must be String");
-        }
-
-        if (supportedProtocolVersions !== null && !(supportedProtocolVersions instanceof Array)) {
-            throw new Error("supportedProtocolVersions must be Array");
-        }
-        if (supportedProtocolVersions !== null && !supportedProtocolVersions.every((v) => typeof v === "string")) {
-            throw new Error("supportedProtocolVersions array values must be String");
-        }
-
-        if (serverVersion !== null && !(typeof serverVersion === "string")) {
-            throw new Error("serverVersion must be String");
-        }
-
-        if (clientIdentifier !== null && !(typeof clientIdentifier === "string")) {
-            throw new Error("clientIdentifier must be String");
-        }
-
-        this.#__requestId = requestId;
-        this.#__status = status;
-        this.#__errorMessage = errorMessage;
-        this.#__protocolVersion = protocolVersion;
-        this.#__supportedProtocolVersions = supportedProtocolVersions;
-        this.#__serverVersion = serverVersion;
-        this.#__clientIdentifier = clientIdentifier;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get requestId() {
-        return this.#__requestId;
-    }
-    /**
-     * @param value {String} 
-     */
-    set requestId(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        this.#__requestId = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ConnectResponse}
-     */
-    withRequestId(value) {
-        this.requestId = value;
-        return this;
-    }
-
-    /**
-     * @returns {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode}
-     
-     */
-    get status() {
-        return this.#__status;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     */
-    set status(value) {
-        if (value !== null && !(value instanceof ResponseStatusCode)) {
-            throw new Error("status must be ResponseStatusCode");
-        }
-
-        this.#__status = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ConnectResponse}
-     */
-    withStatus(value) {
-        this.status = value;
-        return this;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get errorMessage() {
-        return this.#__errorMessage;
-    }
-    /**
-     * @param value {String} 
-     */
-    set errorMessage(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("errorMessage must be String");
-        }
-
-        this.#__errorMessage = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ConnectResponse}
-     */
-    withErrorMessage(value) {
-        this.errorMessage = value;
-        return this;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get protocolVersion() {
-        return this.#__protocolVersion;
-    }
-    /**
-     * @param value {String} 
-     */
-    set protocolVersion(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("protocolVersion must be String");
-        }
-
-        this.#__protocolVersion = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ConnectResponse}
-     */
-    withProtocolVersion(value) {
-        this.protocolVersion = value;
-        return this;
-    }
-
-    /**
-     * @returns {String[]}
-     
-     */
-    get supportedProtocolVersions() {
-        return this.#__supportedProtocolVersions;
-    }
-    /**
-     * @param value {String[]} 
-     */
-    set supportedProtocolVersions(value) {
-        if (value !== null && !(value instanceof Array)) {
-            throw new Error("supportedProtocolVersions must be Array");
-        }
-        if (value !== null && !value.every((v) => typeof v === "string")) {
-            throw new Error("supportedProtocolVersions array values must be String");
-        }
-
-        this.#__supportedProtocolVersions = value;
-    }
-    /**
-     * @param value {String[]} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ConnectResponse}
-     */
-    withSupportedProtocolVersions(value) {
-        this.supportedProtocolVersions = value;
-        return this;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get serverVersion() {
-        return this.#__serverVersion;
-    }
-    /**
-     * @param value {String} 
-     */
-    set serverVersion(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("serverVersion must be String");
-        }
-
-        this.#__serverVersion = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ConnectResponse}
-     */
-    withServerVersion(value) {
-        this.serverVersion = value;
-        return this;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get clientIdentifier() {
-        return this.#__clientIdentifier;
-    }
-    /**
-     * @param value {String} 
-     */
-    set clientIdentifier(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("clientIdentifier must be String");
-        }
-
-        this.#__clientIdentifier = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ConnectResponse}
-     */
-    withClientIdentifier(value) {
-        this.clientIdentifier = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new ConnectResponse();
-        if ("requestId" in d) {
-            ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"];
-        }
-        if ("status" in d) {
-            ret.status = Object.prototype.hasOwnProperty.call(ResponseStatusCode, "fromMap") ? ResponseStatusCode.fromMap(d["status"]) : d["status"];
-        }
-        if ("errorMessage" in d) {
-            ret.errorMessage = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["errorMessage"]) : d["errorMessage"];
-        }
-        if ("protocolVersion" in d) {
-            ret.protocolVersion = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["protocolVersion"]) : d["protocolVersion"];
-        }
-        if ("supportedProtocolVersions" in d) {
-            ret.supportedProtocolVersions = d["supportedProtocolVersions"].reduce((acc, v) => {
-                acc.push(Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(v) : v);
-                return acc;
-            }, []);
-        }
-        if ("serverVersion" in d) {
-            ret.serverVersion = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["serverVersion"]) : d["serverVersion"];
-        }
-        if ("clientIdentifier" in d) {
-            ret.clientIdentifier = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["clientIdentifier"]) : d["clientIdentifier"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.requestId !== null) {
-            d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId;
-        }
-        if (this.status !== null) {
-            d["status"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.status), "asMap") ? this.status.asMap() : this.status;
-        }
-        if (this.errorMessage !== null) {
-            d["errorMessage"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.errorMessage), "asMap") ? this.errorMessage.asMap() : this.errorMessage;
-        }
-        if (this.protocolVersion !== null) {
-            d["protocolVersion"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.protocolVersion), "asMap") ? this.protocolVersion.asMap() : this.protocolVersion;
-        }
-        if (this.supportedProtocolVersions !== null) {
-            d["supportedProtocolVersions"] = this.supportedProtocolVersions.reduce((acc, v) => {
-                acc.push(Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(v), "asMap") ? v.asMap() : v);
-                return acc;
-            }, []);
-        }
-        if (this.serverVersion !== null) {
-            d["serverVersion"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.serverVersion), "asMap") ? this.serverVersion.asMap() : this.serverVersion;
-        }
-        if (this.clientIdentifier !== null) {
-            d["clientIdentifier"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.clientIdentifier), "asMap") ? this.clientIdentifier.asMap() : this.clientIdentifier;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(ConnectResponse, "typesMap", {
-    value: {
-        requestId: {
-            'type': String,
-            'subtype': null
-        },
-        status: {
-            'type': ResponseStatusCode,
-            'subtype': null
-        },
-        errorMessage: {
-            'type': String,
-            'subtype': null
-        },
-        protocolVersion: {
-            'type': String,
-            'subtype': null
-        },
-        supportedProtocolVersions: {
-            'type': Array,
-            'subtype': String
-        },
-        serverVersion: {
-            'type': String,
-            'subtype': null
-        },
-        clientIdentifier: {
-            'type': String,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(ConnectResponse, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(ConnectResponse, "validationsMap", {
-    value: {
-        'requestId': {
-            'required': false,
-            'minLength': 1,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'status': {
-            'required': true,
-        },
-        'errorMessage': {
-            'required': false,
-        },
-        'protocolVersion': {
-            'required': false,
-        },
-        'supportedProtocolVersions': {
-            'required': false,
-        },
-        'serverVersion': {
-            'required': false,
-        },
-        'clientIdentifier': {
-            'required': false,
-        },
-    }
-});
-
-/**
- * Internal Only
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class Operation {
-
-    #value = null;
-    constructor(value = null) {
-        if (!(value in Object.values(Operation.options))) {
-            throw new Error("Value must be one of the enumerated options");
-        }
-        this.#value = value;
-    }
-
-    static fromMap(d) {
-        return Operation[Operation.optionsFlipped[d]];
-    }
-
-    asMap() {
-        return this.#value;
-    }
-};
-Object.defineProperty(Operation, "options", {
-    value: {
-        Unknown: 0,
-        Connect: 1,
-        CreateMessageStream: 2,
-        DeleteMessageStream: 3,
-        AppendMessage: 4,
-        ReadMessages: 5,
-        ConnectResponse: 6,
-        CreateMessageStreamResponse: 7,
-        DeleteMessageStreamResponse: 8,
-        AppendMessageResponse: 9,
-        ReadMessagesResponse: 10,
-        ListStreams: 11,
-        ListStreamsResponse: 12,
-        DescribeMessageStream: 13,
-        DescribeMessageStreamResponse: 14,
-    }
-});
-Object.defineProperty(Operation, "optionsFlipped", {
-    value: {
-        0: "Unknown",
-        1: "Connect",
-        2: "CreateMessageStream",
-        3: "DeleteMessageStream",
-        4: "AppendMessage",
-        5: "ReadMessages",
-        6: "ConnectResponse",
-        7: "CreateMessageStreamResponse",
-        8: "DeleteMessageStreamResponse",
-        9: "AppendMessageResponse",
-        10: "ReadMessagesResponse",
-        11: "ListStreams",
-        12: "ListStreamsResponse",
-        13: "DescribeMessageStream",
-        14: "DescribeMessageStreamResponse",
-    }
-});
-
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.Operation} Unknown
- * @memberOf aws-greengrass-core-sdk.StreamManager.Operation#
- * @readonly
- */
-Object.defineProperty(Operation, "Unknown", {
-    value: new Operation(0)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.Operation} Connect
- * @memberOf aws-greengrass-core-sdk.StreamManager.Operation#
- * @readonly
- */
-Object.defineProperty(Operation, "Connect", {
-    value: new Operation(1)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.Operation} CreateMessageStream
- * @memberOf aws-greengrass-core-sdk.StreamManager.Operation#
- * @readonly
- */
-Object.defineProperty(Operation, "CreateMessageStream", {
-    value: new Operation(2)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.Operation} DeleteMessageStream
- * @memberOf aws-greengrass-core-sdk.StreamManager.Operation#
- * @readonly
- */
-Object.defineProperty(Operation, "DeleteMessageStream", {
-    value: new Operation(3)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.Operation} AppendMessage
- * @memberOf aws-greengrass-core-sdk.StreamManager.Operation#
- * @readonly
- */
-Object.defineProperty(Operation, "AppendMessage", {
-    value: new Operation(4)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.Operation} ReadMessages
- * @memberOf aws-greengrass-core-sdk.StreamManager.Operation#
- * @readonly
- */
-Object.defineProperty(Operation, "ReadMessages", {
-    value: new Operation(5)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.Operation} ConnectResponse
- * @memberOf aws-greengrass-core-sdk.StreamManager.Operation#
- * @readonly
- */
-Object.defineProperty(Operation, "ConnectResponse", {
-    value: new Operation(6)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.Operation} CreateMessageStreamResponse
- * @memberOf aws-greengrass-core-sdk.StreamManager.Operation#
- * @readonly
- */
-Object.defineProperty(Operation, "CreateMessageStreamResponse", {
-    value: new Operation(7)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.Operation} DeleteMessageStreamResponse
- * @memberOf aws-greengrass-core-sdk.StreamManager.Operation#
- * @readonly
- */
-Object.defineProperty(Operation, "DeleteMessageStreamResponse", {
-    value: new Operation(8)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.Operation} AppendMessageResponse
- * @memberOf aws-greengrass-core-sdk.StreamManager.Operation#
- * @readonly
- */
-Object.defineProperty(Operation, "AppendMessageResponse", {
-    value: new Operation(9)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.Operation} ReadMessagesResponse
- * @memberOf aws-greengrass-core-sdk.StreamManager.Operation#
- * @readonly
- */
-Object.defineProperty(Operation, "ReadMessagesResponse", {
-    value: new Operation(10)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.Operation} ListStreams
- * @memberOf aws-greengrass-core-sdk.StreamManager.Operation#
- * @readonly
- */
-Object.defineProperty(Operation, "ListStreams", {
-    value: new Operation(11)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.Operation} ListStreamsResponse
- * @memberOf aws-greengrass-core-sdk.StreamManager.Operation#
- * @readonly
- */
-Object.defineProperty(Operation, "ListStreamsResponse", {
-    value: new Operation(12)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.Operation} DescribeMessageStream
- * @memberOf aws-greengrass-core-sdk.StreamManager.Operation#
- * @readonly
- */
-Object.defineProperty(Operation, "DescribeMessageStream", {
-    value: new Operation(13)
-});
-/**
- * @member {aws-greengrass-core-sdk.StreamManager.Operation} DescribeMessageStreamResponse
- * @memberOf aws-greengrass-core-sdk.StreamManager.Operation#
- * @readonly
- */
-Object.defineProperty(Operation, "DescribeMessageStreamResponse", {
-    value: new Operation(14)
-});
-
-/**
- * Internal Only
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class MessageFrame {
-    #__operation = null;
-    #__payload = null;
-
-    /**
-     * @param operation {aws-greengrass-core-sdk.StreamManager.Operation} 
-     * @param payload {Buffer} 
-     */
-    constructor(
-        operation = null,
-        payload = null,
-    ) {
-        if (operation !== null && !(operation instanceof Operation)) {
-            throw new Error("operation must be Operation");
-        }
-
-        if (payload !== null && !(payload instanceof Buffer)) {
-            throw new Error("payload must be Buffer");
-        }
-
-        this.#__operation = operation;
-        this.#__payload = payload;
-    }
-
-    /**
-     * @returns {aws-greengrass-core-sdk.StreamManager.Operation}
-     
-     */
-    get operation() {
-        return this.#__operation;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.Operation} 
-     */
-    set operation(value) {
-        if (value !== null && !(value instanceof Operation)) {
-            throw new Error("operation must be Operation");
-        }
-
-        this.#__operation = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.Operation} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.MessageFrame}
-     */
-    withOperation(value) {
-        this.operation = value;
-        return this;
-    }
-
-    /**
-     * @returns {Buffer}
-     
-     */
-    get payload() {
-        return this.#__payload;
-    }
-    /**
-     * @param value {Buffer} 
-     */
-    set payload(value) {
-        if (value !== null && !(value instanceof Buffer)) {
-            throw new Error("payload must be Buffer");
-        }
-
-        this.#__payload = value;
-    }
-    /**
-     * @param value {Buffer} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.MessageFrame}
-     */
-    withPayload(value) {
-        this.payload = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new MessageFrame();
-        if ("operation" in d) {
-            ret.operation = Object.prototype.hasOwnProperty.call(Operation, "fromMap") ? Operation.fromMap(d["operation"]) : d["operation"];
-        }
-        if ("payload" in d) {
-            ret.payload = Object.prototype.hasOwnProperty.call(Buffer, "fromMap") ? Buffer.fromMap(d["payload"]) : d["payload"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.operation !== null) {
-            d["operation"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.operation), "asMap") ? this.operation.asMap() : this.operation;
-        }
-        if (this.payload !== null) {
-            d["payload"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.payload), "asMap") ? this.payload.asMap() : this.payload;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(MessageFrame, "typesMap", {
-    value: {
-        operation: {
-            'type': Operation,
-            'subtype': null
-        },
-        payload: {
-            'type': Buffer,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(MessageFrame, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(MessageFrame, "validationsMap", {
-    value: {
-        'operation': {
-            'required': true,
-        },
-        'payload': {
-            'required': true,
-        },
-    }
-});
-
-/**
- * This export destination is not supported! The interface may change at any time without notice and should not be relied on for any production use.
-   There are no guarantees around its correctness.
-   This configures an HTTP endpoint which sends a POST request to the provided URI. Each request contains a single message in the body of the request.
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class HTTPConfig {
-    #__identifier = null;
-    #__uri = null;
-    #__batchSize = null;
-    #__batchIntervalMillis = null;
-    #__priority = null;
-
-    /**
-     * @param identifier {String} A unique identifier to identify this individual upload stream.
-       Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
-     * @param uri {String} URL for HTTP endpoint which should receive the POST requests for export.
-     * @param batchSize {Number} The maximum size of a batch to send to the destination. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The minimum batch size is 1 and the maximum is 500.
-     * @param batchIntervalMillis {Number} The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
-     * @param priority {Number} Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority.
-     */
-    constructor(
-        identifier = null,
-        uri = null,
-        batchSize = null,
-        batchIntervalMillis = null,
-        priority = null,
-    ) {
-        if (identifier !== null && !(typeof identifier === "string")) {
-            throw new Error("identifier must be String");
-        }
-
-        if (uri !== null && !(typeof uri === "string")) {
-            throw new Error("uri must be String");
-        }
-
-        if (batchSize !== null && !(typeof batchSize === "number")) {
-            throw new Error("batchSize must be Number");
-        }
-
-        if (batchIntervalMillis !== null && !(typeof batchIntervalMillis === "number")) {
-            throw new Error("batchIntervalMillis must be Number");
-        }
-
-        if (priority !== null && !(typeof priority === "number")) {
-            throw new Error("priority must be Number");
-        }
-
-        this.#__identifier = identifier;
-        this.#__uri = uri;
-        this.#__batchSize = batchSize;
-        this.#__batchIntervalMillis = batchIntervalMillis;
-        this.#__priority = priority;
-    }
-
-    /**
-     * A unique identifier to identify this individual upload stream.
-       Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
-     * @returns {String}
-
-     */
-    get identifier() {
-        return this.#__identifier;
-    }
-    /**
-     * @param value {String} A unique identifier to identify this individual upload stream.
-       Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
-     */
-    set identifier(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("identifier must be String");
-        }
-
-        this.#__identifier = value;
-    }
-    /**
-     * @param value {String} A unique identifier to identify this individual upload stream.
-       Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
-     * @returns {aws-greengrass-core-sdk.StreamManager.HTTPConfig}
-     */
-    withIdentifier(value) {
-        this.identifier = value;
-        return this;
-    }
-
-    /**
-     * URL for HTTP endpoint which should receive the POST requests for export.
-     * @returns {String}
-     
-     */
-    get uri() {
-        return this.#__uri;
-    }
-    /**
-     * @param value {String} URL for HTTP endpoint which should receive the POST requests for export.
-     */
-    set uri(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("uri must be String");
-        }
-
-        this.#__uri = value;
-    }
-    /**
-     * @param value {String} URL for HTTP endpoint which should receive the POST requests for export.
-     * @returns {aws-greengrass-core-sdk.StreamManager.HTTPConfig}
-     */
-    withUri(value) {
-        this.uri = value;
-        return this;
-    }
-
-    /**
-     * The maximum size of a batch to send to the destination. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The minimum batch size is 1 and the maximum is 500.
-     * @returns {Number}
-
-     */
-    get batchSize() {
-        return this.#__batchSize;
-    }
-    /**
-     * @param value {Number} The maximum size of a batch to send to the destination. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The minimum batch size is 1 and the maximum is 500.
-     */
-    set batchSize(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("batchSize must be Number");
-        }
-
-        this.#__batchSize = value;
-    }
-    /**
-     * @param value {Number} The maximum size of a batch to send to the destination. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The minimum batch size is 1 and the maximum is 500.
-     * @returns {aws-greengrass-core-sdk.StreamManager.HTTPConfig}
-     */
-    withBatchSize(value) {
-        this.batchSize = value;
-        return this;
-    }
-
-    /**
-     * The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
-     * @returns {Number}
-
-     */
-    get batchIntervalMillis() {
-        return this.#__batchIntervalMillis;
-    }
-    /**
-     * @param value {Number} The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
-     */
-    set batchIntervalMillis(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("batchIntervalMillis must be Number");
-        }
-
-        this.#__batchIntervalMillis = value;
-    }
-    /**
-     * @param value {Number} The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
-     * @returns {aws-greengrass-core-sdk.StreamManager.HTTPConfig}
-     */
-    withBatchIntervalMillis(value) {
-        this.batchIntervalMillis = value;
-        return this;
-    }
-
-    /**
-     * Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority.
-     * @returns {Number}
-     
-     */
-    get priority() {
-        return this.#__priority;
-    }
-    /**
-     * @param value {Number} Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority.
-     */
-    set priority(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("priority must be Number");
-        }
-
-        this.#__priority = value;
-    }
-    /**
-     * @param value {Number} Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority.
-     * @returns {aws-greengrass-core-sdk.StreamManager.HTTPConfig}
-     */
-    withPriority(value) {
-        this.priority = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new HTTPConfig();
-        if ("identifier" in d) {
-            ret.identifier = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["identifier"]) : d["identifier"];
-        }
-        if ("uri" in d) {
-            ret.uri = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["uri"]) : d["uri"];
-        }
-        if ("batchSize" in d) {
-            ret.batchSize = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["batchSize"]) : d["batchSize"];
-        }
-        if ("batchIntervalMillis" in d) {
-            ret.batchIntervalMillis = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["batchIntervalMillis"]) : d["batchIntervalMillis"];
-        }
-        if ("priority" in d) {
-            ret.priority = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["priority"]) : d["priority"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.identifier !== null) {
-            d["identifier"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.identifier), "asMap") ? this.identifier.asMap() : this.identifier;
-        }
-        if (this.uri !== null) {
-            d["uri"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.uri), "asMap") ? this.uri.asMap() : this.uri;
-        }
-        if (this.batchSize !== null) {
-            d["batchSize"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.batchSize), "asMap") ? this.batchSize.asMap() : this.batchSize;
-        }
-        if (this.batchIntervalMillis !== null) {
-            d["batchIntervalMillis"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.batchIntervalMillis), "asMap") ? this.batchIntervalMillis.asMap() : this.batchIntervalMillis;
-        }
-        if (this.priority !== null) {
-            d["priority"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.priority), "asMap") ? this.priority.asMap() : this.priority;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(HTTPConfig, "typesMap", {
-    value: {
-        identifier: {
-            'type': String,
-            'subtype': null
-        },
-        uri: {
-            'type': String,
-            'subtype': null
-        },
-        batchSize: {
-            'type': Number,
-            'subtype': null
-        },
-        batchIntervalMillis: {
-            'type': Number,
-            'subtype': null
-        },
-        priority: {
-            'type': Number,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(HTTPConfig, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(HTTPConfig, "validationsMap", {
-    value: {
-        'identifier': {
-            'required': true,
-            'minLength': 1,
-            'maxLength': 255,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'uri': {
-            'required': true,
-            'minLength': 1,
-        },
-        'batchSize': {
-            'required': false,
-            'maximum': 500,
-            'minimum': 1,
-        },
-        'batchIntervalMillis': {
-            'required': false,
-            'maximum': 9223372036854,
-            'minimum': 60000,
-        },
-        'priority': {
-            'required': false,
-            'maximum': 10,
-            'minimum': 1,
-        },
-    }
-});
-
-/**
- * Configuration object for IoT Analytics export destination.
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class IoTAnalyticsConfig {
-    #__identifier = null;
-    #__iotChannel = null;
-    #__iotMsgIdPrefix = null;
-    #__batchSize = null;
-    #__batchIntervalMillis = null;
-    #__priority = null;
-
-    /**
-     * @param identifier {String} A unique identifier to identify this individual upload stream.
-       Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
-     * @param iotChannel {String} The name of the IoT Analytics Channel that this exporter should upload to
-     * @param iotMsgIdPrefix {String} A string prefixed to each unique message id. After this prefix, StreamManager may append more data to make the message ID unique.
-       This prefix must be less than 32 characters.
-     * @param batchSize {Number} The maximum size of a batch to send to IoT Analytics. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The batch size must be between 1 and 100.
-     * @param batchIntervalMillis {Number} The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
-     * @param priority {Number} Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority.
-     */
-    constructor(
-        identifier = null,
-        iotChannel = null,
-        iotMsgIdPrefix = null,
-        batchSize = null,
-        batchIntervalMillis = null,
-        priority = null,
-    ) {
-        if (identifier !== null && !(typeof identifier === "string")) {
-            throw new Error("identifier must be String");
-        }
-
-        if (iotChannel !== null && !(typeof iotChannel === "string")) {
-            throw new Error("iotChannel must be String");
-        }
-
-        if (iotMsgIdPrefix !== null && !(typeof iotMsgIdPrefix === "string")) {
-            throw new Error("iotMsgIdPrefix must be String");
-        }
-
-        if (batchSize !== null && !(typeof batchSize === "number")) {
-            throw new Error("batchSize must be Number");
-        }
-
-        if (batchIntervalMillis !== null && !(typeof batchIntervalMillis === "number")) {
-            throw new Error("batchIntervalMillis must be Number");
-        }
-
-        if (priority !== null && !(typeof priority === "number")) {
-            throw new Error("priority must be Number");
-        }
-
-        this.#__identifier = identifier;
-        this.#__iotChannel = iotChannel;
-        this.#__iotMsgIdPrefix = iotMsgIdPrefix;
-        this.#__batchSize = batchSize;
-        this.#__batchIntervalMillis = batchIntervalMillis;
-        this.#__priority = priority;
-    }
-
-    /**
-     * A unique identifier to identify this individual upload stream.
-       Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
-     * @returns {String}
-
-     */
-    get identifier() {
-        return this.#__identifier;
-    }
-    /**
-     * @param value {String} A unique identifier to identify this individual upload stream.
-       Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
-     */
-    set identifier(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("identifier must be String");
-        }
-
-        this.#__identifier = value;
-    }
-    /**
-     * @param value {String} A unique identifier to identify this individual upload stream.
-       Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
-     * @returns {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig}
-     */
-    withIdentifier(value) {
-        this.identifier = value;
-        return this;
-    }
-
-    /**
-     * The name of the IoT Analytics Channel that this exporter should upload to
-     * @returns {String}
-     
-     */
-    get iotChannel() {
-        return this.#__iotChannel;
-    }
-    /**
-     * @param value {String} The name of the IoT Analytics Channel that this exporter should upload to
-     */
-    set iotChannel(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("iotChannel must be String");
-        }
-
-        this.#__iotChannel = value;
-    }
-    /**
-     * @param value {String} The name of the IoT Analytics Channel that this exporter should upload to
-     * @returns {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig}
-     */
-    withIotChannel(value) {
-        this.iotChannel = value;
-        return this;
-    }
-
-    /**
-     * A string prefixed to each unique message id. After this prefix, StreamManager may append more data to make the message ID unique.
-       This prefix must be less than 32 characters.
-     * @returns {String}
-
-     */
-    get iotMsgIdPrefix() {
-        return this.#__iotMsgIdPrefix;
-    }
-    /**
-     * @param value {String} A string prefixed to each unique message id. After this prefix, StreamManager may append more data to make the message ID unique.
-       This prefix must be less than 32 characters.
-     */
-    set iotMsgIdPrefix(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("iotMsgIdPrefix must be String");
-        }
-
-        this.#__iotMsgIdPrefix = value;
-    }
-    /**
-     * @param value {String} A string prefixed to each unique message id. After this prefix, StreamManager may append more data to make the message ID unique.
-       This prefix must be less than 32 characters.
-     * @returns {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig}
-     */
-    withIotMsgIdPrefix(value) {
-        this.iotMsgIdPrefix = value;
-        return this;
-    }
-
-    /**
-     * The maximum size of a batch to send to IoT Analytics. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The batch size must be between 1 and 100.
-     * @returns {Number}
-
-     */
-    get batchSize() {
-        return this.#__batchSize;
-    }
-    /**
-     * @param value {Number} The maximum size of a batch to send to IoT Analytics. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The batch size must be between 1 and 100.
-     */
-    set batchSize(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("batchSize must be Number");
-        }
-
-        this.#__batchSize = value;
-    }
-    /**
-     * @param value {Number} The maximum size of a batch to send to IoT Analytics. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The batch size must be between 1 and 100.
-     * @returns {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig}
-     */
-    withBatchSize(value) {
-        this.batchSize = value;
-        return this;
-    }
-
-    /**
-     * The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
-     * @returns {Number}
-
-     */
-    get batchIntervalMillis() {
-        return this.#__batchIntervalMillis;
-    }
-    /**
-     * @param value {Number} The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
-     */
-    set batchIntervalMillis(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("batchIntervalMillis must be Number");
-        }
-
-        this.#__batchIntervalMillis = value;
-    }
-    /**
-     * @param value {Number} The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
-     * @returns {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig}
-     */
-    withBatchIntervalMillis(value) {
-        this.batchIntervalMillis = value;
-        return this;
-    }
-
-    /**
-     * Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority.
-     * @returns {Number}
-     
-     */
-    get priority() {
-        return this.#__priority;
-    }
-    /**
-     * @param value {Number} Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority.
-     */
-    set priority(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("priority must be Number");
-        }
-
-        this.#__priority = value;
-    }
-    /**
-     * @param value {Number} Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority.
-     * @returns {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig}
-     */
-    withPriority(value) {
-        this.priority = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new IoTAnalyticsConfig();
-        if ("identifier" in d) {
-            ret.identifier = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["identifier"]) : d["identifier"];
-        }
-        if ("iotChannel" in d) {
-            ret.iotChannel = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["iotChannel"]) : d["iotChannel"];
-        }
-        if ("iotMsgIdPrefix" in d) {
-            ret.iotMsgIdPrefix = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["iotMsgIdPrefix"]) : d["iotMsgIdPrefix"];
-        }
-        if ("batchSize" in d) {
-            ret.batchSize = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["batchSize"]) : d["batchSize"];
-        }
-        if ("batchIntervalMillis" in d) {
-            ret.batchIntervalMillis = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["batchIntervalMillis"]) : d["batchIntervalMillis"];
-        }
-        if ("priority" in d) {
-            ret.priority = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["priority"]) : d["priority"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.identifier !== null) {
-            d["identifier"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.identifier), "asMap") ? this.identifier.asMap() : this.identifier;
-        }
-        if (this.iotChannel !== null) {
-            d["iotChannel"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.iotChannel), "asMap") ? this.iotChannel.asMap() : this.iotChannel;
-        }
-        if (this.iotMsgIdPrefix !== null) {
-            d["iotMsgIdPrefix"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.iotMsgIdPrefix), "asMap") ? this.iotMsgIdPrefix.asMap() : this.iotMsgIdPrefix;
-        }
-        if (this.batchSize !== null) {
-            d["batchSize"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.batchSize), "asMap") ? this.batchSize.asMap() : this.batchSize;
-        }
-        if (this.batchIntervalMillis !== null) {
-            d["batchIntervalMillis"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.batchIntervalMillis), "asMap") ? this.batchIntervalMillis.asMap() : this.batchIntervalMillis;
-        }
-        if (this.priority !== null) {
-            d["priority"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.priority), "asMap") ? this.priority.asMap() : this.priority;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(IoTAnalyticsConfig, "typesMap", {
-    value: {
-        identifier: {
-            'type': String,
-            'subtype': null
-        },
-        iotChannel: {
-            'type': String,
-            'subtype': null
-        },
-        iotMsgIdPrefix: {
-            'type': String,
-            'subtype': null
-        },
-        batchSize: {
-            'type': Number,
-            'subtype': null
-        },
-        batchIntervalMillis: {
-            'type': Number,
-            'subtype': null
-        },
-        priority: {
-            'type': Number,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(IoTAnalyticsConfig, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(IoTAnalyticsConfig, "validationsMap", {
-    value: {
-        'identifier': {
-            'required': true,
-            'minLength': 1,
-            'maxLength': 255,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'iotChannel': {
-            'required': true,
-            'minLength': 1,
-        },
-        'iotMsgIdPrefix': {
-            'required': false,
-            'maxLength': 32,
-        },
-        'batchSize': {
-            'required': false,
-            'maximum': 100,
-            'minimum': 1,
-        },
-        'batchIntervalMillis': {
-            'required': false,
-            'maximum': 9223372036854,
-            'minimum': 60000,
-        },
-        'priority': {
-            'required': false,
-            'maximum': 10,
-            'minimum': 1,
-        },
-    }
-});
-
-/**
- * Configuration object for Kinesis data streams export destination.
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class KinesisConfig {
-    #__identifier = null;
-    #__kinesisStreamName = null;
-    #__batchSize = null;
-    #__batchIntervalMillis = null;
-    #__priority = null;
-
-    /**
-     * @param identifier {String} A unique identifier to identify this individual upload stream.
-       Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
-     * @param kinesisStreamName {String} The name of the Kinesis data stream that this exporter should upload to
-     * @param batchSize {Number} The maximum size of a batch to send to Kinesis. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The batch size must be between 1 and 500.
-     * @param batchIntervalMillis {Number} The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
-     * @param priority {Number} Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority.
-     */
-    constructor(
-        identifier = null,
-        kinesisStreamName = null,
-        batchSize = null,
-        batchIntervalMillis = null,
-        priority = null,
-    ) {
-        if (identifier !== null && !(typeof identifier === "string")) {
-            throw new Error("identifier must be String");
-        }
-
-        if (kinesisStreamName !== null && !(typeof kinesisStreamName === "string")) {
-            throw new Error("kinesisStreamName must be String");
-        }
-
-        if (batchSize !== null && !(typeof batchSize === "number")) {
-            throw new Error("batchSize must be Number");
-        }
-
-        if (batchIntervalMillis !== null && !(typeof batchIntervalMillis === "number")) {
-            throw new Error("batchIntervalMillis must be Number");
-        }
-
-        if (priority !== null && !(typeof priority === "number")) {
-            throw new Error("priority must be Number");
-        }
-
-        this.#__identifier = identifier;
-        this.#__kinesisStreamName = kinesisStreamName;
-        this.#__batchSize = batchSize;
-        this.#__batchIntervalMillis = batchIntervalMillis;
-        this.#__priority = priority;
-    }
-
-    /**
-     * A unique identifier to identify this individual upload stream.
-       Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
-     * @returns {String}
-
-     */
-    get identifier() {
-        return this.#__identifier;
-    }
-    /**
-     * @param value {String} A unique identifier to identify this individual upload stream.
-       Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
-     */
-    set identifier(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("identifier must be String");
-        }
-
-        this.#__identifier = value;
-    }
-    /**
-     * @param value {String} A unique identifier to identify this individual upload stream.
-       Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
-     * @returns {aws-greengrass-core-sdk.StreamManager.KinesisConfig}
-     */
-    withIdentifier(value) {
-        this.identifier = value;
-        return this;
-    }
-
-    /**
-     * The name of the Kinesis data stream that this exporter should upload to
-     * @returns {String}
-     
-     */
-    get kinesisStreamName() {
-        return this.#__kinesisStreamName;
-    }
-    /**
-     * @param value {String} The name of the Kinesis data stream that this exporter should upload to
-     */
-    set kinesisStreamName(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("kinesisStreamName must be String");
-        }
-
-        this.#__kinesisStreamName = value;
-    }
-    /**
-     * @param value {String} The name of the Kinesis data stream that this exporter should upload to
-     * @returns {aws-greengrass-core-sdk.StreamManager.KinesisConfig}
-     */
-    withKinesisStreamName(value) {
-        this.kinesisStreamName = value;
-        return this;
-    }
-
-    /**
-     * The maximum size of a batch to send to Kinesis. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The batch size must be between 1 and 500.
-     * @returns {Number}
-
-     */
-    get batchSize() {
-        return this.#__batchSize;
-    }
-    /**
-     * @param value {Number} The maximum size of a batch to send to Kinesis. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The batch size must be between 1 and 500.
-     */
-    set batchSize(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("batchSize must be Number");
-        }
-
-        this.#__batchSize = value;
-    }
-    /**
-     * @param value {Number} The maximum size of a batch to send to Kinesis. Messages will be queued until the batch size is reached, after which they will then be uploaded. If unspecified the default will be 1.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The batch size must be between 1 and 500.
-     * @returns {aws-greengrass-core-sdk.StreamManager.KinesisConfig}
-     */
-    withBatchSize(value) {
-        this.batchSize = value;
-        return this;
-    }
-
-    /**
-     * The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
-     * @returns {Number}
-
-     */
-    get batchIntervalMillis() {
-        return this.#__batchIntervalMillis;
-    }
-    /**
-     * @param value {Number} The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
-     */
-    set batchIntervalMillis(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("batchIntervalMillis must be Number");
-        }
-
-        this.#__batchIntervalMillis = value;
-    }
-    /**
-     * @param value {Number} The time in milliseconds between the earliest un-uploaded message and the current time. If this time is exceeded, messages will be uploaded in the next batch. If unspecified messages will be eligible for upload immediately.
-       If both batchSize and batchIntervalMillis are specified, then messages will be eligible for upload when either condition is met.
-       The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
-     * @returns {aws-greengrass-core-sdk.StreamManager.KinesisConfig}
-     */
-    withBatchIntervalMillis(value) {
-        this.batchIntervalMillis = value;
-        return this;
-    }
-
-    /**
-     * Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority.
-     * @returns {Number}
-     
-     */
-    get priority() {
-        return this.#__priority;
-    }
-    /**
-     * @param value {Number} Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority.
-     */
-    set priority(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("priority must be Number");
-        }
-
-        this.#__priority = value;
-    }
-    /**
-     * @param value {Number} Priority for this upload stream. Lower values are higher priority. If not specified it will have the lowest priority.
-     * @returns {aws-greengrass-core-sdk.StreamManager.KinesisConfig}
-     */
-    withPriority(value) {
-        this.priority = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new KinesisConfig();
-        if ("identifier" in d) {
-            ret.identifier = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["identifier"]) : d["identifier"];
-        }
-        if ("kinesisStreamName" in d) {
-            ret.kinesisStreamName = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["kinesisStreamName"]) : d["kinesisStreamName"];
-        }
-        if ("batchSize" in d) {
-            ret.batchSize = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["batchSize"]) : d["batchSize"];
-        }
-        if ("batchIntervalMillis" in d) {
-            ret.batchIntervalMillis = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["batchIntervalMillis"]) : d["batchIntervalMillis"];
-        }
-        if ("priority" in d) {
-            ret.priority = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["priority"]) : d["priority"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.identifier !== null) {
-            d["identifier"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.identifier), "asMap") ? this.identifier.asMap() : this.identifier;
-        }
-        if (this.kinesisStreamName !== null) {
-            d["kinesisStreamName"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.kinesisStreamName), "asMap") ? this.kinesisStreamName.asMap() : this.kinesisStreamName;
-        }
-        if (this.batchSize !== null) {
-            d["batchSize"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.batchSize), "asMap") ? this.batchSize.asMap() : this.batchSize;
-        }
-        if (this.batchIntervalMillis !== null) {
-            d["batchIntervalMillis"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.batchIntervalMillis), "asMap") ? this.batchIntervalMillis.asMap() : this.batchIntervalMillis;
-        }
-        if (this.priority !== null) {
-            d["priority"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.priority), "asMap") ? this.priority.asMap() : this.priority;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(KinesisConfig, "typesMap", {
-    value: {
-        identifier: {
-            'type': String,
-            'subtype': null
-        },
-        kinesisStreamName: {
-            'type': String,
-            'subtype': null
-        },
-        batchSize: {
-            'type': Number,
-            'subtype': null
-        },
-        batchIntervalMillis: {
-            'type': Number,
-            'subtype': null
-        },
-        priority: {
-            'type': Number,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(KinesisConfig, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(KinesisConfig, "validationsMap", {
-    value: {
-        'identifier': {
-            'required': true,
-            'minLength': 1,
-            'maxLength': 255,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'kinesisStreamName': {
-            'required': true,
-            'minLength': 1,
-        },
-        'batchSize': {
-            'required': false,
-            'maximum': 500,
-            'minimum': 1,
-        },
-        'batchIntervalMillis': {
-            'required': false,
-            'maximum': 9223372036854,
-            'minimum': 60000,
-        },
-        'priority': {
-            'required': false,
-            'maximum': 10,
-            'minimum': 1,
-        },
-    }
-});
-
-/**
- * Defines how and where the stream is uploaded
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class ExportDefinition {
-    #__http = null;
-    #__iotAnalytics = null;
-    #__kinesis = null;
-
-    /**
-     * @param http {aws-greengrass-core-sdk.StreamManager.HTTPConfig[]} Defines how the stream is uploaded to an HTTP endpoint
-     * @param iotAnalytics {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig[]} Defines how the stream is uploaded to IoT Analytics
-     * @param kinesis {aws-greengrass-core-sdk.StreamManager.KinesisConfig[]} Defines how the stream is uploaded to Kinesis
-     */
-    constructor(
-        http = null,
-        iotAnalytics = null,
-        kinesis = null,
-    ) {
-        if (http !== null && !(http instanceof Array)) {
-            throw new Error("http must be Array");
-        }
-        if (http !== null && !http.every((v) => v instanceof HTTPConfig)) {
-            throw new Error("http array values must be HTTPConfig");
-        }
-
-        if (iotAnalytics !== null && !(iotAnalytics instanceof Array)) {
-            throw new Error("iotAnalytics must be Array");
-        }
-        if (iotAnalytics !== null && !iotAnalytics.every((v) => v instanceof IoTAnalyticsConfig)) {
-            throw new Error("iotAnalytics array values must be IoTAnalyticsConfig");
-        }
-
-        if (kinesis !== null && !(kinesis instanceof Array)) {
-            throw new Error("kinesis must be Array");
-        }
-        if (kinesis !== null && !kinesis.every((v) => v instanceof KinesisConfig)) {
-            throw new Error("kinesis array values must be KinesisConfig");
-        }
-
-        this.#__http = http;
-        this.#__iotAnalytics = iotAnalytics;
-        this.#__kinesis = kinesis;
-    }
-
-    /**
-     * Defines how the stream is uploaded to an HTTP endpoint
-     * @returns {aws-greengrass-core-sdk.StreamManager.HTTPConfig[]}
-     
-     */
-    get http() {
-        return this.#__http;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.HTTPConfig[]} Defines how the stream is uploaded to an HTTP endpoint
-     */
-    set http(value) {
-        if (value !== null && !(value instanceof Array)) {
-            throw new Error("http must be Array");
-        }
-        if (value !== null && !value.every((v) => v instanceof HTTPConfig)) {
-            throw new Error("http array values must be HTTPConfig");
-        }
-
-        this.#__http = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.HTTPConfig[]} Defines how the stream is uploaded to an HTTP endpoint
-     * @returns {aws-greengrass-core-sdk.StreamManager.ExportDefinition}
-     */
-    withHttp(value) {
-        this.http = value;
-        return this;
-    }
-
-    /**
-     * Defines how the stream is uploaded to IoT Analytics
-     * @returns {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig[]}
-     
-     */
-    get iotAnalytics() {
-        return this.#__iotAnalytics;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig[]} Defines how the stream is uploaded to IoT Analytics
-     */
-    set iotAnalytics(value) {
-        if (value !== null && !(value instanceof Array)) {
-            throw new Error("iotAnalytics must be Array");
-        }
-        if (value !== null && !value.every((v) => v instanceof IoTAnalyticsConfig)) {
-            throw new Error("iotAnalytics array values must be IoTAnalyticsConfig");
-        }
-
-        this.#__iotAnalytics = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.IoTAnalyticsConfig[]} Defines how the stream is uploaded to IoT Analytics
-     * @returns {aws-greengrass-core-sdk.StreamManager.ExportDefinition}
-     */
-    withIotAnalytics(value) {
-        this.iotAnalytics = value;
-        return this;
-    }
-
-    /**
-     * Defines how the stream is uploaded to Kinesis
-     * @returns {aws-greengrass-core-sdk.StreamManager.KinesisConfig[]}
-     
-     */
-    get kinesis() {
-        return this.#__kinesis;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.KinesisConfig[]} Defines how the stream is uploaded to Kinesis
-     */
-    set kinesis(value) {
-        if (value !== null && !(value instanceof Array)) {
-            throw new Error("kinesis must be Array");
-        }
-        if (value !== null && !value.every((v) => v instanceof KinesisConfig)) {
-            throw new Error("kinesis array values must be KinesisConfig");
-        }
-
-        this.#__kinesis = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.KinesisConfig[]} Defines how the stream is uploaded to Kinesis
-     * @returns {aws-greengrass-core-sdk.StreamManager.ExportDefinition}
-     */
-    withKinesis(value) {
-        this.kinesis = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new ExportDefinition();
-        if ("http" in d) {
-            ret.http = d["http"].reduce((acc, v) => {
-                acc.push(Object.prototype.hasOwnProperty.call(HTTPConfig, "fromMap") ? HTTPConfig.fromMap(v) : v);
-                return acc;
-            }, []);
-        }
-        if ("iotAnalytics" in d) {
-            ret.iotAnalytics = d["iotAnalytics"].reduce((acc, v) => {
-                acc.push(Object.prototype.hasOwnProperty.call(IoTAnalyticsConfig, "fromMap") ? IoTAnalyticsConfig.fromMap(v) : v);
-                return acc;
-            }, []);
-        }
-        if ("kinesis" in d) {
-            ret.kinesis = d["kinesis"].reduce((acc, v) => {
-                acc.push(Object.prototype.hasOwnProperty.call(KinesisConfig, "fromMap") ? KinesisConfig.fromMap(v) : v);
-                return acc;
-            }, []);
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.http !== null) {
-            d["http"] = this.http.reduce((acc, v) => {
-                acc.push(Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(v), "asMap") ? v.asMap() : v);
-                return acc;
-            }, []);
-        }
-        if (this.iotAnalytics !== null) {
-            d["iotAnalytics"] = this.iotAnalytics.reduce((acc, v) => {
-                acc.push(Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(v), "asMap") ? v.asMap() : v);
-                return acc;
-            }, []);
-        }
-        if (this.kinesis !== null) {
-            d["kinesis"] = this.kinesis.reduce((acc, v) => {
-                acc.push(Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(v), "asMap") ? v.asMap() : v);
-                return acc;
-            }, []);
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(ExportDefinition, "typesMap", {
-    value: {
-        http: {
-            'type': Array,
-            'subtype': HTTPConfig
-        },
-        iotAnalytics: {
-            'type': Array,
-            'subtype': IoTAnalyticsConfig
-        },
-        kinesis: {
-            'type': Array,
-            'subtype': KinesisConfig
-        },
-    }
-});
-Object.defineProperty(ExportDefinition, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(ExportDefinition, "validationsMap", {
-    value: {
-        'http': {
-            'required': false,
-        },
-        'iotAnalytics': {
-            'required': false,
-        },
-        'kinesis': {
-            'required': false,
-        },
-    }
-});
-
-/**
- * Object defining a message stream used in the CreateMessageStream API.
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class MessageStreamDefinition {
-    #__name = null;
-    #__maxSize = null;
-    #__streamSegmentSize = null;
-    #__timeToLiveMillis = null;
-    #__strategyOnFull = null;
-    #__persistence = null;
-    #__flushOnWrite = null;
-    #__exportDefinition = null;
-
-    /**
-     * @param name {String} The unique name of the stream.
-       Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
-     * @param maxSize {Number} The maximum size in bytes for the entire stream. Set to 256MB by default with a minimum of 1KB and a maximum of 8192PB.
-     * @param streamSegmentSize {Number} The size of each segment of the stream. Set to 16MB by default with a minimum of 1KB and a maximum of 2GB.
-       Data is only deleted segment by segment, so the segment size is the smallest amount of data which can be deleted.
-     * @param timeToLiveMillis {Number} Time to live for each message in milliseconds. Data may be deleted at any time after the TTL expires; deletion is not guaranteed to occur immediately when the TTL expires.
-       The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
-     * @param strategyOnFull {aws-greengrass-core-sdk.StreamManager.StrategyOnFull} What to do when the maximum size of the stream is reached.
-       RejectNewData: any append message request after the stream is full will be rejected with an exception.
-       OverwriteOldestData: the oldest stream segments will be deleted until there is room for the new message.
-     * @param persistence {aws-greengrass-core-sdk.StreamManager.Persistence} Stream persistence. If set to File, the file system will be used to persist messages long-term and is resilient to restarts.
-       Memory should be used when performance matters more than durability as it only stores the stream in memory and never writes to the disk.
-     * @param flushOnWrite {Boolean} This only applies when Persistence is set to File mode.
-       Waits for the filesystem to complete the write for every message. This is safer, but slower. Default is false.
-     * @param exportDefinition {aws-greengrass-core-sdk.StreamManager.ExportDefinition} Defines how and where the stream is uploaded. See the definition of the ExportDefinition object for more detail.
-     */
-    constructor(
-        name = null,
-        maxSize = 268435456,
-        streamSegmentSize = 16777216,
-        timeToLiveMillis = null,
-        strategyOnFull = null,
-        persistence = null,
-        flushOnWrite = null,
-        exportDefinition = null,
-    ) {
-        if (name !== null && !(typeof name === "string")) {
-            throw new Error("name must be String");
-        }
-
-        if (maxSize !== null && !(typeof maxSize === "number")) {
-            throw new Error("maxSize must be Number");
-        }
-
-        if (streamSegmentSize !== null && !(typeof streamSegmentSize === "number")) {
-            throw new Error("streamSegmentSize must be Number");
-        }
-
-        if (timeToLiveMillis !== null && !(typeof timeToLiveMillis === "number")) {
-            throw new Error("timeToLiveMillis must be Number");
-        }
-
-        if (strategyOnFull !== null && !(strategyOnFull instanceof StrategyOnFull)) {
-            throw new Error("strategyOnFull must be StrategyOnFull");
-        }
-
-        if (persistence !== null && !(persistence instanceof Persistence)) {
-            throw new Error("persistence must be Persistence");
-        }
-
-        if (flushOnWrite !== null && !(typeof flushOnWrite === "boolean")) {
-            throw new Error("flushOnWrite must be Boolean");
-        }
-
-        if (exportDefinition !== null && !(exportDefinition instanceof ExportDefinition)) {
-            throw new Error("exportDefinition must be ExportDefinition");
-        }
-
-        this.#__name = name;
-        this.#__maxSize = maxSize;
-        this.#__streamSegmentSize = streamSegmentSize;
-        this.#__timeToLiveMillis = timeToLiveMillis;
-        this.#__strategyOnFull = strategyOnFull;
-        this.#__persistence = persistence;
-        this.#__flushOnWrite = flushOnWrite;
-        this.#__exportDefinition = exportDefinition;
-    }
-
-    /**
-     * The unique name of the stream.
-       Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
-     * @returns {String}
-
-     */
-    get name() {
-        return this.#__name;
-    }
-    /**
-     * @param value {String} The unique name of the stream.
-       Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
-     */
-    set name(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("name must be String");
-        }
-
-        this.#__name = value;
-    }
-    /**
-     * @param value {String} The unique name of the stream.
-       Must be an alphanumeric string including spaces, commas, periods, hyphens, and underscores with length between 1 and 255.
-     * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}
-     */
-    withName(value) {
-        this.name = value;
-        return this;
-    }
-
-    /**
-     * The maximum size in bytes for the entire stream. Set to 256MB by default with a minimum of 1KB and a maximum of 8192PB.
-     * @returns {Number}
-     
-     */
-    get maxSize() {
-        return this.#__maxSize;
-    }
-    /**
-     * @param value {Number} The maximum size in bytes for the entire stream. Set to 256MB by default with a minimum of 1KB and a maximum of 8192PB.
-     */
-    set maxSize(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("maxSize must be Number");
-        }
-
-        this.#__maxSize = value;
-    }
-    /**
-     * @param value {Number} The maximum size in bytes for the entire stream. Set to 256MB by default with a minimum of 1KB and a maximum of 8192PB.
-     * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}
-     */
-    withMaxSize(value) {
-        this.maxSize = value;
-        return this;
-    }
-
-    /**
-     * The size of each segment of the stream. Set to 16MB by default with a minimum of 1KB and a maximum of 2GB.
-       Data is only deleted segment by segment, so the segment size is the smallest amount of data which can be deleted.
-     * @returns {Number}
-
-     */
-    get streamSegmentSize() {
-        return this.#__streamSegmentSize;
-    }
-    /**
-     * @param value {Number} The size of each segment of the stream. Set to 16MB by default with a minimum of 1KB and a maximum of 2GB.
-       Data is only deleted segment by segment, so the segment size is the smallest amount of data which can be deleted.
-     */
-    set streamSegmentSize(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("streamSegmentSize must be Number");
-        }
-
-        this.#__streamSegmentSize = value;
-    }
-    /**
-     * @param value {Number} The size of each segment of the stream. Set to 16MB by default with a minimum of 1KB and a maximum of 2GB.
-       Data is only deleted segment by segment, so the segment size is the smallest amount of data which can be deleted.
-     * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}
-     */
-    withStreamSegmentSize(value) {
-        this.streamSegmentSize = value;
-        return this;
-    }
-
-    /**
-     * Time to live for each message in milliseconds. Data may be deleted at any time after the TTL expires; deletion is not guaranteed to occur immediately when the TTL expires.
-       The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
-     * @returns {Number}
-
-     */
-    get timeToLiveMillis() {
-        return this.#__timeToLiveMillis;
-    }
-    /**
-     * @param value {Number} Time to live for each message in milliseconds. Data may be deleted at any time after the TTL expires; deletion is not guaranteed to occur immediately when the TTL expires.
-       The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
-     */
-    set timeToLiveMillis(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("timeToLiveMillis must be Number");
-        }
-
-        this.#__timeToLiveMillis = value;
-    }
-    /**
-     * @param value {Number} Time to live for each message in milliseconds. Data may be deleted at any time after the TTL expires; deletion is not guaranteed to occur immediately when the TTL expires.
-       The minimum value is 60000 milliseconds and the maximum is 9223372036854 milliseconds.
-     * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}
-     */
-    withTimeToLiveMillis(value) {
-        this.timeToLiveMillis = value;
-        return this;
-    }
-
-    /**
-     * What to do when the maximum size of the stream is reached.
-       RejectNewData: any append message request after the stream is full will be rejected with an exception.
-       OverwriteOldestData: the oldest stream segments will be deleted until there is room for the new message.
-     * @returns {aws-greengrass-core-sdk.StreamManager.StrategyOnFull}
-
-     */
-    get strategyOnFull() {
-        return this.#__strategyOnFull;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.StrategyOnFull} What to do when the maximum size of the stream is reached.
-       RejectNewData: any append message request after the stream is full will be rejected with an exception.
-       OverwriteOldestData: the oldest stream segments will be deleted until there is room for the new message.
-     */
-    set strategyOnFull(value) {
-        if (value !== null && !(value instanceof StrategyOnFull)) {
-            throw new Error("strategyOnFull must be StrategyOnFull");
-        }
-
-        this.#__strategyOnFull = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.StrategyOnFull} What to do when the maximum size of the stream is reached.
-       RejectNewData: any append message request after the stream is full will be rejected with an exception.
-       OverwriteOldestData: the oldest stream segments will be deleted until there is room for the new message.
-     * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}
-     */
-    withStrategyOnFull(value) {
-        this.strategyOnFull = value;
-        return this;
-    }
-
-    /**
-     * Stream persistence. If set to File, the file system will be used to persist messages long-term and is resilient to restarts.
-       Memory should be used when performance matters more than durability as it only stores the stream in memory and never writes to the disk.
-     * @returns {aws-greengrass-core-sdk.StreamManager.Persistence}
-
-     */
-    get persistence() {
-        return this.#__persistence;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.Persistence} Stream persistence. If set to File, the file system will be used to persist messages long-term and is resilient to restarts.
-       Memory should be used when performance matters more than durability as it only stores the stream in memory and never writes to the disk.
-     */
-    set persistence(value) {
-        if (value !== null && !(value instanceof Persistence)) {
-            throw new Error("persistence must be Persistence");
-        }
-
-        this.#__persistence = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.Persistence} Stream persistence. If set to File, the file system will be used to persist messages long-term and is resilient to restarts.
-       Memory should be used when performance matters more than durability as it only stores the stream in memory and never writes to the disk.
-     * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}
-     */
-    withPersistence(value) {
-        this.persistence = value;
-        return this;
-    }
-
-    /**
-     * This only applies when Persistence is set to File mode.
-       Waits for the filesystem to complete the write for every message. This is safer, but slower. Default is false.
-     * @returns {Boolean}
-
-     */
-    get flushOnWrite() {
-        return this.#__flushOnWrite;
-    }
-    /**
-     * @param value {Boolean} This only applies when Persistence is set to File mode.
-       Waits for the filesystem to complete the write for every message. This is safer, but slower. Default is false.
-     */
-    set flushOnWrite(value) {
-        if (value !== null && !(typeof value === "boolean")) {
-            throw new Error("flushOnWrite must be Boolean");
-        }
-
-        this.#__flushOnWrite = value;
-    }
-    /**
-     * @param value {Boolean} This only applies when Persistence is set to File mode.
-       Waits for the filesystem to complete the write for every message. This is safer, but slower. Default is false.
-     * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}
-     */
-    withFlushOnWrite(value) {
-        this.flushOnWrite = value;
-        return this;
-    }
-
-    /**
-     * Defines how and where the stream is uploaded. See the definition of the ExportDefinition object for more detail.
-     * @returns {aws-greengrass-core-sdk.StreamManager.ExportDefinition}
-     
-     */
-    get exportDefinition() {
-        return this.#__exportDefinition;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.ExportDefinition} Defines how and where the stream is uploaded. See the definition of the ExportDefinition object for more detail.
-     */
-    set exportDefinition(value) {
-        if (value !== null && !(value instanceof ExportDefinition)) {
-            throw new Error("exportDefinition must be ExportDefinition");
-        }
-
-        this.#__exportDefinition = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.ExportDefinition} Defines how and where the stream is uploaded. See the definition of the ExportDefinition object for more detail.
-     * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}
-     */
-    withExportDefinition(value) {
-        this.exportDefinition = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new MessageStreamDefinition();
-        if ("name" in d) {
-            ret.name = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["name"]) : d["name"];
-        }
-        if ("maxSize" in d) {
-            ret.maxSize = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["maxSize"]) : d["maxSize"];
-        }
-        if ("streamSegmentSize" in d) {
-            ret.streamSegmentSize = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["streamSegmentSize"]) : d["streamSegmentSize"];
-        }
-        if ("timeToLiveMillis" in d) {
-            ret.timeToLiveMillis = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["timeToLiveMillis"]) : d["timeToLiveMillis"];
-        }
-        if ("strategyOnFull" in d) {
-            ret.strategyOnFull = Object.prototype.hasOwnProperty.call(StrategyOnFull, "fromMap") ? StrategyOnFull.fromMap(d["strategyOnFull"]) : d["strategyOnFull"];
-        }
-        if ("persistence" in d) {
-            ret.persistence = Object.prototype.hasOwnProperty.call(Persistence, "fromMap") ? Persistence.fromMap(d["persistence"]) : d["persistence"];
-        }
-        if ("flushOnWrite" in d) {
-            ret.flushOnWrite = Object.prototype.hasOwnProperty.call(Boolean, "fromMap") ? Boolean.fromMap(d["flushOnWrite"]) : d["flushOnWrite"];
-        }
-        if ("exportDefinition" in d) {
-            ret.exportDefinition = Object.prototype.hasOwnProperty.call(ExportDefinition, "fromMap") ? ExportDefinition.fromMap(d["exportDefinition"]) : d["exportDefinition"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.name !== null) {
-            d["name"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.name), "asMap") ? this.name.asMap() : this.name;
-        }
-        if (this.maxSize !== null) {
-            d["maxSize"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.maxSize), "asMap") ? this.maxSize.asMap() : this.maxSize;
-        }
-        if (this.streamSegmentSize !== null) {
-            d["streamSegmentSize"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.streamSegmentSize), "asMap") ? this.streamSegmentSize.asMap() : this.streamSegmentSize;
-        }
-        if (this.timeToLiveMillis !== null) {
-            d["timeToLiveMillis"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.timeToLiveMillis), "asMap") ? this.timeToLiveMillis.asMap() : this.timeToLiveMillis;
-        }
-        if (this.strategyOnFull !== null) {
-            d["strategyOnFull"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.strategyOnFull), "asMap") ? this.strategyOnFull.asMap() : this.strategyOnFull;
-        }
-        if (this.persistence !== null) {
-            d["persistence"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.persistence), "asMap") ? this.persistence.asMap() : this.persistence;
-        }
-        if (this.flushOnWrite !== null) {
-            d["flushOnWrite"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.flushOnWrite), "asMap") ? this.flushOnWrite.asMap() : this.flushOnWrite;
-        }
-        if (this.exportDefinition !== null) {
-            d["exportDefinition"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.exportDefinition), "asMap") ? this.exportDefinition.asMap() : this.exportDefinition;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(MessageStreamDefinition, "typesMap", {
-    value: {
-        name: {
-            'type': String,
-            'subtype': null
-        },
-        maxSize: {
-            'type': Number,
-            'subtype': null
-        },
-        streamSegmentSize: {
-            'type': Number,
-            'subtype': null
-        },
-        timeToLiveMillis: {
-            'type': Number,
-            'subtype': null
-        },
-        strategyOnFull: {
-            'type': StrategyOnFull,
-            'subtype': null
-        },
-        persistence: {
-            'type': Persistence,
-            'subtype': null
-        },
-        flushOnWrite: {
-            'type': Boolean,
-            'subtype': null
-        },
-        exportDefinition: {
-            'type': ExportDefinition,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(MessageStreamDefinition, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(MessageStreamDefinition, "validationsMap", {
-    value: {
-        'name': {
-            'required': true,
-            'minLength': 1,
-            'maxLength': 255,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'maxSize': {
-            'required': false,
-            'maximum': 9223372036854775807,
-            'minimum': 1024,
-        },
-        'streamSegmentSize': {
-            'required': false,
-            'maximum': 2147483647,
-            'minimum': 1024,
-        },
-        'timeToLiveMillis': {
-            'required': false,
-            'maximum': 9223372036854,
-            'minimum': 60000,
-        },
-        'strategyOnFull': {
-            'required': true,
-        },
-        'persistence': {
-            'required': false,
-        },
-        'flushOnWrite': {
-            'required': false,
-        },
-        'exportDefinition': {
-            'required': false,
-        },
-    }
-});
-
-/**
- * Message stream information including its definition, storage status and export status
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class MessageStreamInfo {
-    #__definition = null;
-    #__storageStatus = null;
-    #__exportStatuses = null;
-
-    /**
-     * @param definition {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} 
-     * @param storageStatus {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus} Stream status including oldest/newest sequence number and total bytes
-     * @param exportStatuses {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses[]} 
-     */
-    constructor(
-        definition = null,
-        storageStatus = null,
-        exportStatuses = null,
-    ) {
-        if (definition !== null && !(definition instanceof MessageStreamDefinition)) {
-            throw new Error("definition must be MessageStreamDefinition");
-        }
-
-        if (storageStatus !== null && !(storageStatus instanceof MessageStreamInfo._storageStatus)) {
-            throw new Error("storageStatus must be MessageStreamInfo._storageStatus");
-        }
-
-        if (exportStatuses !== null && !(exportStatuses instanceof Array)) {
-            throw new Error("exportStatuses must be Array");
-        }
-        if (exportStatuses !== null && !exportStatuses.every((v) => v instanceof MessageStreamInfo._exportStatuses)) {
-            throw new Error("exportStatuses array values must be MessageStreamInfo._exportStatuses");
-        }
-
-        this.#__definition = definition;
-        this.#__storageStatus = storageStatus;
-        this.#__exportStatuses = exportStatuses;
-    }
-
-    /**
-     * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}
-     
-     */
-    get definition() {
-        return this.#__definition;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} 
-     */
-    set definition(value) {
-        if (value !== null && !(value instanceof MessageStreamDefinition)) {
-            throw new Error("definition must be MessageStreamDefinition");
-        }
-
-        this.#__definition = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo}
-     */
-    withDefinition(value) {
-        this.definition = value;
-        return this;
-    }
-
-    /**
-     * Stream status including oldest/newest sequence number and total bytes
-     * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus}
-     
-     */
-    get storageStatus() {
-        return this.#__storageStatus;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus} Stream status including oldest/newest sequence number and total bytes
-     */
-    set storageStatus(value) {
-        if (value !== null && !(value instanceof MessageStreamInfo._storageStatus)) {
-            throw new Error("storageStatus must be MessageStreamInfo._storageStatus");
-        }
-
-        this.#__storageStatus = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus} Stream status including oldest/newest sequence number and total bytes
-     * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo}
-     */
-    withStorageStatus(value) {
-        this.storageStatus = value;
-        return this;
-    }
-
-    /**
-     * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses[]}
-     
-     */
-    get exportStatuses() {
-        return this.#__exportStatuses;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses[]} 
-     */
-    set exportStatuses(value) {
-        if (value !== null && !(value instanceof Array)) {
-            throw new Error("exportStatuses must be Array");
-        }
-        if (value !== null && !value.every((v) => v instanceof MessageStreamInfo._exportStatuses)) {
-            throw new Error("exportStatuses array values must be MessageStreamInfo._exportStatuses");
-        }
-
-        this.#__exportStatuses = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses[]} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo}
-     */
-    withExportStatuses(value) {
-        this.exportStatuses = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new MessageStreamInfo();
-        if ("definition" in d) {
-            ret.definition = Object.prototype.hasOwnProperty.call(MessageStreamDefinition, "fromMap") ? MessageStreamDefinition.fromMap(d["definition"]) : d["definition"];
-        }
-        if ("storageStatus" in d) {
-            ret.storageStatus = Object.prototype.hasOwnProperty.call(MessageStreamInfo._storageStatus, "fromMap") ? MessageStreamInfo._storageStatus.fromMap(d["storageStatus"]) : d["storageStatus"];
-        }
-        if ("exportStatuses" in d) {
-            ret.exportStatuses = d["exportStatuses"].reduce((acc, v) => {
-                acc.push(Object.prototype.hasOwnProperty.call(MessageStreamInfo._exportStatuses, "fromMap") ? MessageStreamInfo._exportStatuses.fromMap(v) : v);
-                return acc;
-            }, []);
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.definition !== null) {
-            d["definition"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.definition), "asMap") ? this.definition.asMap() : this.definition;
-        }
-        if (this.storageStatus !== null) {
-            d["storageStatus"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.storageStatus), "asMap") ? this.storageStatus.asMap() : this.storageStatus;
-        }
-        if (this.exportStatuses !== null) {
-            d["exportStatuses"] = this.exportStatuses.reduce((acc, v) => {
-                acc.push(Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(v), "asMap") ? v.asMap() : v);
-                return acc;
-            }, []);
-        }
-        return d;
-    }
-};
-
-MessageStreamInfo._storageStatus =
-    /**
-     * Stream status including oldest/newest sequence number and total bytes
-     *
-     * @class
-     * @memberOf aws-greengrass-core-sdk.StreamManager
-     */
-    class _storageStatus {
-        #__oldestSequenceNumber = null;
-        #__newestSequenceNumber = null;
-        #__totalBytes = null;
-
-        /**
-         * @param oldestSequenceNumber {Number} The sequence number of the first message which is still accessible in the stream.
-         * @param newestSequenceNumber {Number} The sequence number of the last appended message.
-         * @param totalBytes {Number} The current total size of the stream in bytes.
-         */
-        constructor(
-            oldestSequenceNumber = null,
-            newestSequenceNumber = null,
-            totalBytes = null,
-        ) {
-            if (oldestSequenceNumber !== null && !(typeof oldestSequenceNumber === "number")) {
-                throw new Error("oldestSequenceNumber must be Number");
-            }
-
-            if (newestSequenceNumber !== null && !(typeof newestSequenceNumber === "number")) {
-                throw new Error("newestSequenceNumber must be Number");
-            }
-
-            if (totalBytes !== null && !(typeof totalBytes === "number")) {
-                throw new Error("totalBytes must be Number");
-            }
-
-            this.#__oldestSequenceNumber = oldestSequenceNumber;
-            this.#__newestSequenceNumber = newestSequenceNumber;
-            this.#__totalBytes = totalBytes;
-        }
-
-        /**
-         * The sequence number of the first message which is still accessible in the stream.
-         * @returns {Number}
-         
-         */
-        get oldestSequenceNumber() {
-            return this.#__oldestSequenceNumber;
-        }
-        /**
-         * @param value {Number} The sequence number of the first message which is still accessible in the stream.
-         */
-        set oldestSequenceNumber(value) {
-            if (value !== null && !(typeof value === "number")) {
-                throw new Error("oldestSequenceNumber must be Number");
-            }
-
-            this.#__oldestSequenceNumber = value;
-        }
-        /**
-         * @param value {Number} The sequence number of the first message which is still accessible in the stream.
-         * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus}
-         */
-        withOldestSequenceNumber(value) {
-            this.oldestSequenceNumber = value;
-            return this;
-        }
-
-        /**
-         * The sequence number of the last appended message.
-         * @returns {Number}
-         
-         */
-        get newestSequenceNumber() {
-            return this.#__newestSequenceNumber;
-        }
-        /**
-         * @param value {Number} The sequence number of the last appended message.
-         */
-        set newestSequenceNumber(value) {
-            if (value !== null && !(typeof value === "number")) {
-                throw new Error("newestSequenceNumber must be Number");
-            }
-
-            this.#__newestSequenceNumber = value;
-        }
-        /**
-         * @param value {Number} The sequence number of the last appended message.
-         * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus}
-         */
-        withNewestSequenceNumber(value) {
-            this.newestSequenceNumber = value;
-            return this;
-        }
-
-        /**
-         * The current total size of the stream in bytes.
-         * @returns {Number}
-         
-         */
-        get totalBytes() {
-            return this.#__totalBytes;
-        }
-        /**
-         * @param value {Number} The current total size of the stream in bytes.
-         */
-        set totalBytes(value) {
-            if (value !== null && !(typeof value === "number")) {
-                throw new Error("totalBytes must be Number");
-            }
-
-            this.#__totalBytes = value;
-        }
-        /**
-         * @param value {Number} The current total size of the stream in bytes.
-         * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._storageStatus}
-         */
-        withTotalBytes(value) {
-            this.totalBytes = value;
-            return this;
-        }
-
-        static fromMap(d) {
-            const ret = new MessageStreamInfo._storageStatus();
-            if ("oldestSequenceNumber" in d) {
-                ret.oldestSequenceNumber = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["oldestSequenceNumber"]) : d["oldestSequenceNumber"];
-            }
-            if ("newestSequenceNumber" in d) {
-                ret.newestSequenceNumber = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["newestSequenceNumber"]) : d["newestSequenceNumber"];
-            }
-            if ("totalBytes" in d) {
-                ret.totalBytes = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["totalBytes"]) : d["totalBytes"];
-            }
-            return ret;
-        }
-
-        asMap() {
-            const d = {};
-            if (this.oldestSequenceNumber !== null) {
-                d["oldestSequenceNumber"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.oldestSequenceNumber), "asMap") ? this.oldestSequenceNumber.asMap() : this.oldestSequenceNumber;
-            }
-            if (this.newestSequenceNumber !== null) {
-                d["newestSequenceNumber"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.newestSequenceNumber), "asMap") ? this.newestSequenceNumber.asMap() : this.newestSequenceNumber;
-            }
-            if (this.totalBytes !== null) {
-                d["totalBytes"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.totalBytes), "asMap") ? this.totalBytes.asMap() : this.totalBytes;
-            }
-            return d;
-        }
-    };
-
-Object.defineProperty(MessageStreamInfo._storageStatus, "typesMap", {
-    value: {
-        oldestSequenceNumber: {
-            'type': Number,
-            'subtype': null
-        },
-        newestSequenceNumber: {
-            'type': Number,
-            'subtype': null
-        },
-        totalBytes: {
-            'type': Number,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(MessageStreamInfo._storageStatus, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(MessageStreamInfo._storageStatus, "validationsMap", {
-    value: {
-        'oldestSequenceNumber': {
-            'required': false,
-        },
-        'newestSequenceNumber': {
-            'required': false,
-        },
-        'totalBytes': {
-            'required': false,
-        },
-    }
-});
-
-MessageStreamInfo._exportStatuses =
-    /**
-     * Export status including the export identifier and the last exported sequence number for that export task
-     *
-     * @class
-     * @memberOf aws-greengrass-core-sdk.StreamManager
-     */
-    class _exportStatuses {
-        #__exportConfigIdentifier = null;
-        #__lastExportedSequenceNumber = null;
-        #__lastExportTime = null;
-        #__errorMessage = null;
-
-        /**
-         * @param exportConfigIdentifier {String} The unique export identifier.
-         * @param lastExportedSequenceNumber {Number} The sequence number of the last message which was successfully exported.
-         * @param lastExportTime {Number} The last time an export was attempted. Data is Unix epoch time in milliseconds.
-         * @param errorMessage {String} Error message from the last export attempt if it failed.
-         */
-        constructor(
-            exportConfigIdentifier = null,
-            lastExportedSequenceNumber = null,
-            lastExportTime = null,
-            errorMessage = null,
-        ) {
-            if (exportConfigIdentifier !== null && !(typeof exportConfigIdentifier === "string")) {
-                throw new Error("exportConfigIdentifier must be String");
-            }
-
-            if (lastExportedSequenceNumber !== null && !(typeof lastExportedSequenceNumber === "number")) {
-                throw new Error("lastExportedSequenceNumber must be Number");
-            }
-
-            if (lastExportTime !== null && !(typeof lastExportTime === "number")) {
-                throw new Error("lastExportTime must be Number");
-            }
-
-            if (errorMessage !== null && !(typeof errorMessage === "string")) {
-                throw new Error("errorMessage must be String");
-            }
-
-            this.#__exportConfigIdentifier = exportConfigIdentifier;
-            this.#__lastExportedSequenceNumber = lastExportedSequenceNumber;
-            this.#__lastExportTime = lastExportTime;
-            this.#__errorMessage = errorMessage;
-        }
-
-        /**
-         * The unique export identifier.
-         * @returns {String}
-         
-         */
-        get exportConfigIdentifier() {
-            return this.#__exportConfigIdentifier;
-        }
-        /**
-         * @param value {String} The unique export identifier.
-         */
-        set exportConfigIdentifier(value) {
-            if (value !== null && !(typeof value === "string")) {
-                throw new Error("exportConfigIdentifier must be String");
-            }
-
-            this.#__exportConfigIdentifier = value;
-        }
-        /**
-         * @param value {String} The unique export identifier.
-         * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses}
-         */
-        withExportConfigIdentifier(value) {
-            this.exportConfigIdentifier = value;
-            return this;
-        }
-
-        /**
-         * The sequence number of the last message which was successfully exported.
-         * @returns {Number}
-         
-         */
-        get lastExportedSequenceNumber() {
-            return this.#__lastExportedSequenceNumber;
-        }
-        /**
-         * @param value {Number} The sequence number of the last message which was successfully exported.
-         */
-        set lastExportedSequenceNumber(value) {
-            if (value !== null && !(typeof value === "number")) {
-                throw new Error("lastExportedSequenceNumber must be Number");
-            }
-
-            this.#__lastExportedSequenceNumber = value;
-        }
-        /**
-         * @param value {Number} The sequence number of the last message which was successfully exported.
-         * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses}
-         */
-        withLastExportedSequenceNumber(value) {
-            this.lastExportedSequenceNumber = value;
-            return this;
-        }
-
-        /**
-         * The last time an export was attempted. Data is Unix epoch time in milliseconds.
-         * @returns {Number}
-         
-         */
-        get lastExportTime() {
-            return this.#__lastExportTime;
-        }
-        /**
-         * @param value {Number} The last time an export was attempted. Data is Unix epoch time in milliseconds.
-         */
-        set lastExportTime(value) {
-            if (value !== null && !(typeof value === "number")) {
-                throw new Error("lastExportTime must be Number");
-            }
-
-            this.#__lastExportTime = value;
-        }
-        /**
-         * @param value {Number} The last time an export was attempted. Data is Unix epoch time in milliseconds.
-         * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses}
-         */
-        withLastExportTime(value) {
-            this.lastExportTime = value;
-            return this;
-        }
-
-        /**
-         * Error message from the last export attempt if it failed.
-         * @returns {String}
-         
-         */
-        get errorMessage() {
-            return this.#__errorMessage;
-        }
-        /**
-         * @param value {String} Error message from the last export attempt if it failed.
-         */
-        set errorMessage(value) {
-            if (value !== null && !(typeof value === "string")) {
-                throw new Error("errorMessage must be String");
-            }
-
-            this.#__errorMessage = value;
-        }
-        /**
-         * @param value {String} Error message from the last export attempt if it failed.
-         * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo~MessageStreamInfo._exportStatuses}
-         */
-        withErrorMessage(value) {
-            this.errorMessage = value;
-            return this;
-        }
-
-        static fromMap(d) {
-            const ret = new MessageStreamInfo._exportStatuses();
-            if ("exportConfigIdentifier" in d) {
-                ret.exportConfigIdentifier = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["exportConfigIdentifier"]) : d["exportConfigIdentifier"];
-            }
-            if ("lastExportedSequenceNumber" in d) {
-                ret.lastExportedSequenceNumber = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["lastExportedSequenceNumber"]) : d["lastExportedSequenceNumber"];
-            }
-            if ("lastExportTime" in d) {
-                ret.lastExportTime = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["lastExportTime"]) : d["lastExportTime"];
-            }
-            if ("errorMessage" in d) {
-                ret.errorMessage = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["errorMessage"]) : d["errorMessage"];
-            }
-            return ret;
-        }
-
-        asMap() {
-            const d = {};
-            if (this.exportConfigIdentifier !== null) {
-                d["exportConfigIdentifier"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.exportConfigIdentifier), "asMap") ? this.exportConfigIdentifier.asMap() : this.exportConfigIdentifier;
-            }
-            if (this.lastExportedSequenceNumber !== null) {
-                d["lastExportedSequenceNumber"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.lastExportedSequenceNumber), "asMap") ? this.lastExportedSequenceNumber.asMap() : this.lastExportedSequenceNumber;
-            }
-            if (this.lastExportTime !== null) {
-                d["lastExportTime"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.lastExportTime), "asMap") ? this.lastExportTime.asMap() : this.lastExportTime;
-            }
-            if (this.errorMessage !== null) {
-                d["errorMessage"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.errorMessage), "asMap") ? this.errorMessage.asMap() : this.errorMessage;
-            }
-            return d;
-        }
-    };
-
-Object.defineProperty(MessageStreamInfo._exportStatuses, "typesMap", {
-    value: {
-        exportConfigIdentifier: {
-            'type': String,
-            'subtype': null
-        },
-        lastExportedSequenceNumber: {
-            'type': Number,
-            'subtype': null
-        },
-        lastExportTime: {
-            'type': Number,
-            'subtype': null
-        },
-        errorMessage: {
-            'type': String,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(MessageStreamInfo._exportStatuses, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(MessageStreamInfo._exportStatuses, "validationsMap", {
-    value: {
-        'exportConfigIdentifier': {
-            'required': false,
-        },
-        'lastExportedSequenceNumber': {
-            'required': true,
-        },
-        'lastExportTime': {
-            'required': false,
-        },
-        'errorMessage': {
-            'required': false,
-        },
-    }
-});
-
-Object.defineProperty(MessageStreamInfo, "typesMap", {
-    value: {
-        definition: {
-            'type': MessageStreamDefinition,
-            'subtype': null
-        },
-        storageStatus: {
-            'type': MessageStreamInfo._storageStatus,
-            'subtype': null
-        },
-        exportStatuses: {
-            'type': Array,
-            'subtype': MessageStreamInfo._exportStatuses
-        },
-    }
-});
-Object.defineProperty(MessageStreamInfo, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(MessageStreamInfo, "validationsMap", {
-    value: {
-        'definition': {
-            'required': true,
-        },
-        'storageStatus': {
-            'required': true,
-        },
-        'exportStatuses': {
-            'required': false,
-        },
-    }
-});
-
-/**
- * Message object containing metadata and the user's payload
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class Message {
-    #__streamName = null;
-    #__sequenceNumber = null;
-    #__ingestTime = null;
-    #__payload = null;
-
-    /**
-     * @param streamName {String} The name of the stream which this message is in.
-     * @param sequenceNumber {Number} The sequence number of this message within the stream.
-     * @param ingestTime {Number} The time that the message was ingested to Stream Manager. Data is Unix epoch time in milliseconds.
-     * @param payload {Buffer} The binary message data.
-     */
-    constructor(
-        streamName = null,
-        sequenceNumber = null,
-        ingestTime = null,
-        payload = null,
-    ) {
-        if (streamName !== null && !(typeof streamName === "string")) {
-            throw new Error("streamName must be String");
-        }
-
-        if (sequenceNumber !== null && !(typeof sequenceNumber === "number")) {
-            throw new Error("sequenceNumber must be Number");
-        }
-
-        if (ingestTime !== null && !(typeof ingestTime === "number")) {
-            throw new Error("ingestTime must be Number");
-        }
-
-        if (payload !== null && !(payload instanceof Buffer)) {
-            throw new Error("payload must be Buffer");
-        }
-
-        this.#__streamName = streamName;
-        this.#__sequenceNumber = sequenceNumber;
-        this.#__ingestTime = ingestTime;
-        this.#__payload = payload;
-    }
-
-    /**
-     * The name of the stream which this message is in.
-     * @returns {String}
-     
-     */
-    get streamName() {
-        return this.#__streamName;
-    }
-    /**
-     * @param value {String} The name of the stream which this message is in.
-     */
-    set streamName(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("streamName must be String");
-        }
-
-        this.#__streamName = value;
-    }
-    /**
-     * @param value {String} The name of the stream which this message is in.
-     * @returns {aws-greengrass-core-sdk.StreamManager.Message}
-     */
-    withStreamName(value) {
-        this.streamName = value;
-        return this;
-    }
-
-    /**
-     * The sequence number of this message within the stream.
-     * @returns {Number}
-     
-     */
-    get sequenceNumber() {
-        return this.#__sequenceNumber;
-    }
-    /**
-     * @param value {Number} The sequence number of this message within the stream.
-     */
-    set sequenceNumber(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("sequenceNumber must be Number");
-        }
-
-        this.#__sequenceNumber = value;
-    }
-    /**
-     * @param value {Number} The sequence number of this message within the stream.
-     * @returns {aws-greengrass-core-sdk.StreamManager.Message}
-     */
-    withSequenceNumber(value) {
-        this.sequenceNumber = value;
-        return this;
-    }
-
-    /**
-     * The time that the message was ingested to Stream Manager. Data is Unix epoch time in milliseconds.
-     * @returns {Number}
-     
-     */
-    get ingestTime() {
-        return this.#__ingestTime;
-    }
-    /**
-     * @param value {Number} The time that the message was ingested to Stream Manager. Data is Unix epoch time in milliseconds.
-     */
-    set ingestTime(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("ingestTime must be Number");
-        }
-
-        this.#__ingestTime = value;
-    }
-    /**
-     * @param value {Number} The time that the message was ingested to Stream Manager. Data is Unix epoch time in milliseconds.
-     * @returns {aws-greengrass-core-sdk.StreamManager.Message}
-     */
-    withIngestTime(value) {
-        this.ingestTime = value;
-        return this;
-    }
-
-    /**
-     * The binary message data.
-     * @returns {Buffer}
-     
-     */
-    get payload() {
-        return this.#__payload;
-    }
-    /**
-     * @param value {Buffer} The binary message data.
-     */
-    set payload(value) {
-        if (value !== null && !(value instanceof Buffer)) {
-            throw new Error("payload must be Buffer");
-        }
-
-        this.#__payload = value;
-    }
-    /**
-     * @param value {Buffer} The binary message data.
-     * @returns {aws-greengrass-core-sdk.StreamManager.Message}
-     */
-    withPayload(value) {
-        this.payload = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new Message();
-        if ("streamName" in d) {
-            ret.streamName = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["streamName"]) : d["streamName"];
-        }
-        if ("sequenceNumber" in d) {
-            ret.sequenceNumber = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["sequenceNumber"]) : d["sequenceNumber"];
-        }
-        if ("ingestTime" in d) {
-            ret.ingestTime = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["ingestTime"]) : d["ingestTime"];
-        }
-        if ("payload" in d) {
-            ret.payload = Object.prototype.hasOwnProperty.call(Buffer, "fromMap") ? Buffer.fromMap(d["payload"]) : d["payload"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.streamName !== null) {
-            d["streamName"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.streamName), "asMap") ? this.streamName.asMap() : this.streamName;
-        }
-        if (this.sequenceNumber !== null) {
-            d["sequenceNumber"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.sequenceNumber), "asMap") ? this.sequenceNumber.asMap() : this.sequenceNumber;
-        }
-        if (this.ingestTime !== null) {
-            d["ingestTime"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.ingestTime), "asMap") ? this.ingestTime.asMap() : this.ingestTime;
-        }
-        if (this.payload !== null) {
-            d["payload"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.payload), "asMap") ? this.payload.asMap() : this.payload;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(Message, "typesMap", {
-    value: {
-        streamName: {
-            'type': String,
-            'subtype': null
-        },
-        sequenceNumber: {
-            'type': Number,
-            'subtype': null
-        },
-        ingestTime: {
-            'type': Number,
-            'subtype': null
-        },
-        payload: {
-            'type': Buffer,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(Message, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(Message, "validationsMap", {
-    value: {
-        'streamName': {
-            'required': true,
-        },
-        'sequenceNumber': {
-            'required': false,
-        },
-        'ingestTime': {
-            'required': false,
-        },
-        'payload': {
-            'required': true,
-        },
-    }
-});
-
-/**
- * Options for the ReadMessages API. All fields are optional.
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class ReadMessagesOptions {
-    #__desiredStartSequenceNumber = null;
-    #__minMessageCount = null;
-    #__maxMessageCount = null;
-    #__readTimeoutMillis = null;
-
-    /**
-     * @param desiredStartSequenceNumber {Number} The desired beginning sequence number to start reading from. If the desired sequence number is less than the current minimum of the stream, then it will instead start reading from the current minimum.
-     * @param minMessageCount {Number} The minimum number of messages that will be returned. If not enough messages are available for reading, then NotEnoughMessages exception will be thrown.
-       The minimum values is 1 and the maximum value is 2147483647.
-     * @param maxMessageCount {Number} The maximum number of messages that will be returned.
-       The minimum values is the value of the minimum message count and the maximum value is 2147483647.
-     * @param readTimeoutMillis {Number} The time to wait for messages in milliseconds. Default is 0, meaning that the server will not wait for messages.
-       If it can fulfill the minimum messages it will return them, but otherwise NotEnoughMessages exception will be thrown.
-       If the timeout is greater than zero, then the server will wait up to that time for more messages to be appended to the stream, waiting until the minimum number of messages is reached.
-       The maximum value is the value of the client timeout.
-     */
-    constructor(
-        desiredStartSequenceNumber = null,
-        minMessageCount = 1,
-        maxMessageCount = null,
-        readTimeoutMillis = 0,
-    ) {
-        if (desiredStartSequenceNumber !== null && !(typeof desiredStartSequenceNumber === "number")) {
-            throw new Error("desiredStartSequenceNumber must be Number");
-        }
-
-        if (minMessageCount !== null && !(typeof minMessageCount === "number")) {
-            throw new Error("minMessageCount must be Number");
-        }
-
-        if (maxMessageCount !== null && !(typeof maxMessageCount === "number")) {
-            throw new Error("maxMessageCount must be Number");
-        }
-
-        if (readTimeoutMillis !== null && !(typeof readTimeoutMillis === "number")) {
-            throw new Error("readTimeoutMillis must be Number");
-        }
-
-        this.#__desiredStartSequenceNumber = desiredStartSequenceNumber;
-        this.#__minMessageCount = minMessageCount;
-        this.#__maxMessageCount = maxMessageCount;
-        this.#__readTimeoutMillis = readTimeoutMillis;
-    }
-
-    /**
-     * The desired beginning sequence number to start reading from. If the desired sequence number is less than the current minimum of the stream, then it will instead start reading from the current minimum.
-     * @returns {Number}
-     
-     */
-    get desiredStartSequenceNumber() {
-        return this.#__desiredStartSequenceNumber;
-    }
-    /**
-     * @param value {Number} The desired beginning sequence number to start reading from. If the desired sequence number is less than the current minimum of the stream, then it will instead start reading from the current minimum.
-     */
-    set desiredStartSequenceNumber(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("desiredStartSequenceNumber must be Number");
-        }
-
-        this.#__desiredStartSequenceNumber = value;
-    }
-    /**
-     * @param value {Number} The desired beginning sequence number to start reading from. If the desired sequence number is less than the current minimum of the stream, then it will instead start reading from the current minimum.
-     * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions}
-     */
-    withDesiredStartSequenceNumber(value) {
-        this.desiredStartSequenceNumber = value;
-        return this;
-    }
-
-    /**
-     * The minimum number of messages that will be returned. If not enough messages are available for reading, then NotEnoughMessages exception will be thrown.
-       The minimum values is 1 and the maximum value is 2147483647.
-     * @returns {Number}
-
-     */
-    get minMessageCount() {
-        return this.#__minMessageCount;
-    }
-    /**
-     * @param value {Number} The minimum number of messages that will be returned. If not enough messages are available for reading, then NotEnoughMessages exception will be thrown.
-       The minimum values is 1 and the maximum value is 2147483647.
-     */
-    set minMessageCount(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("minMessageCount must be Number");
-        }
-
-        this.#__minMessageCount = value;
-    }
-    /**
-     * @param value {Number} The minimum number of messages that will be returned. If not enough messages are available for reading, then NotEnoughMessages exception will be thrown.
-       The minimum values is 1 and the maximum value is 2147483647.
-     * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions}
-     */
-    withMinMessageCount(value) {
-        this.minMessageCount = value;
-        return this;
-    }
-
-    /**
-     * The maximum number of messages that will be returned.
-       The minimum values is the value of the minimum message count and the maximum value is 2147483647.
-     * @returns {Number}
-
-     */
-    get maxMessageCount() {
-        return this.#__maxMessageCount;
-    }
-    /**
-     * @param value {Number} The maximum number of messages that will be returned.
-       The minimum values is the value of the minimum message count and the maximum value is 2147483647.
-     */
-    set maxMessageCount(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("maxMessageCount must be Number");
-        }
-
-        this.#__maxMessageCount = value;
-    }
-    /**
-     * @param value {Number} The maximum number of messages that will be returned.
-       The minimum values is the value of the minimum message count and the maximum value is 2147483647.
-     * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions}
-     */
-    withMaxMessageCount(value) {
-        this.maxMessageCount = value;
-        return this;
-    }
-
-    /**
-     * The time to wait for messages in milliseconds. Default is 0, meaning that the server will not wait for messages.
-       If it can fulfill the minimum messages it will return them, but otherwise NotEnoughMessages exception will be thrown.
-       If the timeout is greater than zero, then the server will wait up to that time for more messages to be appended to the stream, waiting until the minimum number of messages is reached.
-       The maximum value is the value of the client timeout.
-     * @returns {Number}
-
-     */
-    get readTimeoutMillis() {
-        return this.#__readTimeoutMillis;
-    }
-    /**
-     * @param value {Number} The time to wait for messages in milliseconds. Default is 0, meaning that the server will not wait for messages.
-       If it can fulfill the minimum messages it will return them, but otherwise NotEnoughMessages exception will be thrown.
-       If the timeout is greater than zero, then the server will wait up to that time for more messages to be appended to the stream, waiting until the minimum number of messages is reached.
-       The maximum value is the value of the client timeout.
-     */
-    set readTimeoutMillis(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("readTimeoutMillis must be Number");
-        }
-
-        this.#__readTimeoutMillis = value;
-    }
-    /**
-     * @param value {Number} The time to wait for messages in milliseconds. Default is 0, meaning that the server will not wait for messages.
-       If it can fulfill the minimum messages it will return them, but otherwise NotEnoughMessages exception will be thrown.
-       If the timeout is greater than zero, then the server will wait up to that time for more messages to be appended to the stream, waiting until the minimum number of messages is reached.
-       The maximum value is the value of the client timeout.
-     * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions}
-     */
-    withReadTimeoutMillis(value) {
-        this.readTimeoutMillis = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new ReadMessagesOptions();
-        if ("desiredStartSequenceNumber" in d) {
-            ret.desiredStartSequenceNumber = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["desiredStartSequenceNumber"]) : d["desiredStartSequenceNumber"];
-        }
-        if ("minMessageCount" in d) {
-            ret.minMessageCount = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["minMessageCount"]) : d["minMessageCount"];
-        }
-        if ("maxMessageCount" in d) {
-            ret.maxMessageCount = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["maxMessageCount"]) : d["maxMessageCount"];
-        }
-        if ("readTimeoutMillis" in d) {
-            ret.readTimeoutMillis = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["readTimeoutMillis"]) : d["readTimeoutMillis"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.desiredStartSequenceNumber !== null) {
-            d["desiredStartSequenceNumber"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.desiredStartSequenceNumber), "asMap") ? this.desiredStartSequenceNumber.asMap() : this.desiredStartSequenceNumber;
-        }
-        if (this.minMessageCount !== null) {
-            d["minMessageCount"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.minMessageCount), "asMap") ? this.minMessageCount.asMap() : this.minMessageCount;
-        }
-        if (this.maxMessageCount !== null) {
-            d["maxMessageCount"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.maxMessageCount), "asMap") ? this.maxMessageCount.asMap() : this.maxMessageCount;
-        }
-        if (this.readTimeoutMillis !== null) {
-            d["readTimeoutMillis"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.readTimeoutMillis), "asMap") ? this.readTimeoutMillis.asMap() : this.readTimeoutMillis;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(ReadMessagesOptions, "typesMap", {
-    value: {
-        desiredStartSequenceNumber: {
-            'type': Number,
-            'subtype': null
-        },
-        minMessageCount: {
-            'type': Number,
-            'subtype': null
-        },
-        maxMessageCount: {
-            'type': Number,
-            'subtype': null
-        },
-        readTimeoutMillis: {
-            'type': Number,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(ReadMessagesOptions, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(ReadMessagesOptions, "validationsMap", {
-    value: {
-        'desiredStartSequenceNumber': {
-            'required': false,
-            'maximum': 9223372036854775807,
-            'minimum': 0,
-        },
-        'minMessageCount': {
-            'required': false,
-            'maximum': 2147483647,
-            'minimum': 1,
-        },
-        'maxMessageCount': {
-            'required': false,
-            'maximum': 2147483647,
-            'minimum': 1,
-        },
-        'readTimeoutMillis': {
-            'required': false,
-            'maximum': 9223372036854,
-            'minimum': 0,
-        },
-    }
-});
-
-/**
- * (Internal Only) Request object for creating a message stream
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class CreateMessageStreamRequest {
-    #__requestId = null;
-    #__definition = null;
-
-    /**
-     * @param requestId {String} 
-     * @param definition {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} 
-     */
-    constructor(
-        requestId = null,
-        definition = null,
-    ) {
-        if (requestId !== null && !(typeof requestId === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        if (definition !== null && !(definition instanceof MessageStreamDefinition)) {
-            throw new Error("definition must be MessageStreamDefinition");
-        }
-
-        this.#__requestId = requestId;
-        this.#__definition = definition;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get requestId() {
-        return this.#__requestId;
-    }
-    /**
-     * @param value {String} 
-     */
-    set requestId(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        this.#__requestId = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.CreateMessageStreamRequest}
-     */
-    withRequestId(value) {
-        this.requestId = value;
-        return this;
-    }
-
-    /**
-     * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition}
-     
-     */
-    get definition() {
-        return this.#__definition;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} 
-     */
-    set definition(value) {
-        if (value !== null && !(value instanceof MessageStreamDefinition)) {
-            throw new Error("definition must be MessageStreamDefinition");
-        }
-
-        this.#__definition = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamDefinition} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.CreateMessageStreamRequest}
-     */
-    withDefinition(value) {
-        this.definition = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new CreateMessageStreamRequest();
-        if ("requestId" in d) {
-            ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"];
-        }
-        if ("definition" in d) {
-            ret.definition = Object.prototype.hasOwnProperty.call(MessageStreamDefinition, "fromMap") ? MessageStreamDefinition.fromMap(d["definition"]) : d["definition"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.requestId !== null) {
-            d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId;
-        }
-        if (this.definition !== null) {
-            d["definition"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.definition), "asMap") ? this.definition.asMap() : this.definition;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(CreateMessageStreamRequest, "typesMap", {
-    value: {
-        requestId: {
-            'type': String,
-            'subtype': null
-        },
-        definition: {
-            'type': MessageStreamDefinition,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(CreateMessageStreamRequest, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(CreateMessageStreamRequest, "validationsMap", {
-    value: {
-        'requestId': {
-            'required': true,
-            'minLength': 1,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'definition': {
-            'required': true,
-        },
-    }
-});
-
-/**
- * Internal Only
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class CreateMessageStreamResponse {
-    #__requestId = null;
-    #__status = null;
-    #__errorMessage = null;
-
-    /**
-     * @param requestId {String} 
-     * @param status {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     * @param errorMessage {String} 
-     */
-    constructor(
-        requestId = null,
-        status = null,
-        errorMessage = null,
-    ) {
-        if (requestId !== null && !(typeof requestId === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        if (status !== null && !(status instanceof ResponseStatusCode)) {
-            throw new Error("status must be ResponseStatusCode");
-        }
-
-        if (errorMessage !== null && !(typeof errorMessage === "string")) {
-            throw new Error("errorMessage must be String");
-        }
-
-        this.#__requestId = requestId;
-        this.#__status = status;
-        this.#__errorMessage = errorMessage;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get requestId() {
-        return this.#__requestId;
-    }
-    /**
-     * @param value {String} 
-     */
-    set requestId(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        this.#__requestId = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.CreateMessageStreamResponse}
-     */
-    withRequestId(value) {
-        this.requestId = value;
-        return this;
-    }
-
-    /**
-     * @returns {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode}
-     
-     */
-    get status() {
-        return this.#__status;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     */
-    set status(value) {
-        if (value !== null && !(value instanceof ResponseStatusCode)) {
-            throw new Error("status must be ResponseStatusCode");
-        }
-
-        this.#__status = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.CreateMessageStreamResponse}
-     */
-    withStatus(value) {
-        this.status = value;
-        return this;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get errorMessage() {
-        return this.#__errorMessage;
-    }
-    /**
-     * @param value {String} 
-     */
-    set errorMessage(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("errorMessage must be String");
-        }
-
-        this.#__errorMessage = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.CreateMessageStreamResponse}
-     */
-    withErrorMessage(value) {
-        this.errorMessage = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new CreateMessageStreamResponse();
-        if ("requestId" in d) {
-            ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"];
-        }
-        if ("status" in d) {
-            ret.status = Object.prototype.hasOwnProperty.call(ResponseStatusCode, "fromMap") ? ResponseStatusCode.fromMap(d["status"]) : d["status"];
-        }
-        if ("errorMessage" in d) {
-            ret.errorMessage = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["errorMessage"]) : d["errorMessage"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.requestId !== null) {
-            d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId;
-        }
-        if (this.status !== null) {
-            d["status"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.status), "asMap") ? this.status.asMap() : this.status;
-        }
-        if (this.errorMessage !== null) {
-            d["errorMessage"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.errorMessage), "asMap") ? this.errorMessage.asMap() : this.errorMessage;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(CreateMessageStreamResponse, "typesMap", {
-    value: {
-        requestId: {
-            'type': String,
-            'subtype': null
-        },
-        status: {
-            'type': ResponseStatusCode,
-            'subtype': null
-        },
-        errorMessage: {
-            'type': String,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(CreateMessageStreamResponse, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(CreateMessageStreamResponse, "validationsMap", {
-    value: {
-        'requestId': {
-            'required': true,
-            'minLength': 1,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'status': {
-            'required': true,
-        },
-        'errorMessage': {
-            'required': false,
-        },
-    }
-});
-
-/**
- * (Internal Only) Request object for deleting a message stream
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class DeleteMessageStreamRequest {
-    #__requestId = null;
-    #__name = null;
-
-    /**
-     * @param requestId {String} 
-     * @param name {String} 
-     */
-    constructor(
-        requestId = null,
-        name = null,
-    ) {
-        if (requestId !== null && !(typeof requestId === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        if (name !== null && !(typeof name === "string")) {
-            throw new Error("name must be String");
-        }
-
-        this.#__requestId = requestId;
-        this.#__name = name;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get requestId() {
-        return this.#__requestId;
-    }
-    /**
-     * @param value {String} 
-     */
-    set requestId(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        this.#__requestId = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamRequest}
-     */
-    withRequestId(value) {
-        this.requestId = value;
-        return this;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get name() {
-        return this.#__name;
-    }
-    /**
-     * @param value {String} 
-     */
-    set name(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("name must be String");
-        }
-
-        this.#__name = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamRequest}
-     */
-    withName(value) {
-        this.name = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new DeleteMessageStreamRequest();
-        if ("requestId" in d) {
-            ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"];
-        }
-        if ("name" in d) {
-            ret.name = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["name"]) : d["name"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.requestId !== null) {
-            d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId;
-        }
-        if (this.name !== null) {
-            d["name"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.name), "asMap") ? this.name.asMap() : this.name;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(DeleteMessageStreamRequest, "typesMap", {
-    value: {
-        requestId: {
-            'type': String,
-            'subtype': null
-        },
-        name: {
-            'type': String,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(DeleteMessageStreamRequest, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(DeleteMessageStreamRequest, "validationsMap", {
-    value: {
-        'requestId': {
-            'required': true,
-            'minLength': 1,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'name': {
-            'required': true,
-            'minLength': 1,
-            'maxLength': 255,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-    }
-});
-
-/**
- * Internal Only
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class DeleteMessageStreamResponse {
-    #__requestId = null;
-    #__status = null;
-    #__errorMessage = null;
-
-    /**
-     * @param requestId {String} 
-     * @param status {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     * @param errorMessage {String} 
-     */
-    constructor(
-        requestId = null,
-        status = null,
-        errorMessage = null,
-    ) {
-        if (requestId !== null && !(typeof requestId === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        if (status !== null && !(status instanceof ResponseStatusCode)) {
-            throw new Error("status must be ResponseStatusCode");
-        }
-
-        if (errorMessage !== null && !(typeof errorMessage === "string")) {
-            throw new Error("errorMessage must be String");
-        }
-
-        this.#__requestId = requestId;
-        this.#__status = status;
-        this.#__errorMessage = errorMessage;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get requestId() {
-        return this.#__requestId;
-    }
-    /**
-     * @param value {String} 
-     */
-    set requestId(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        this.#__requestId = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamResponse}
-     */
-    withRequestId(value) {
-        this.requestId = value;
-        return this;
-    }
-
-    /**
-     * @returns {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode}
-     
-     */
-    get status() {
-        return this.#__status;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     */
-    set status(value) {
-        if (value !== null && !(value instanceof ResponseStatusCode)) {
-            throw new Error("status must be ResponseStatusCode");
-        }
-
-        this.#__status = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamResponse}
-     */
-    withStatus(value) {
-        this.status = value;
-        return this;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get errorMessage() {
-        return this.#__errorMessage;
-    }
-    /**
-     * @param value {String} 
-     */
-    set errorMessage(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("errorMessage must be String");
-        }
-
-        this.#__errorMessage = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.DeleteMessageStreamResponse}
-     */
-    withErrorMessage(value) {
-        this.errorMessage = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new DeleteMessageStreamResponse();
-        if ("requestId" in d) {
-            ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"];
-        }
-        if ("status" in d) {
-            ret.status = Object.prototype.hasOwnProperty.call(ResponseStatusCode, "fromMap") ? ResponseStatusCode.fromMap(d["status"]) : d["status"];
-        }
-        if ("errorMessage" in d) {
-            ret.errorMessage = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["errorMessage"]) : d["errorMessage"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.requestId !== null) {
-            d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId;
-        }
-        if (this.status !== null) {
-            d["status"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.status), "asMap") ? this.status.asMap() : this.status;
-        }
-        if (this.errorMessage !== null) {
-            d["errorMessage"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.errorMessage), "asMap") ? this.errorMessage.asMap() : this.errorMessage;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(DeleteMessageStreamResponse, "typesMap", {
-    value: {
-        requestId: {
-            'type': String,
-            'subtype': null
-        },
-        status: {
-            'type': ResponseStatusCode,
-            'subtype': null
-        },
-        errorMessage: {
-            'type': String,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(DeleteMessageStreamResponse, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(DeleteMessageStreamResponse, "validationsMap", {
-    value: {
-        'requestId': {
-            'required': true,
-            'minLength': 1,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'status': {
-            'required': true,
-        },
-        'errorMessage': {
-            'required': false,
-        },
-    }
-});
-
-/**
- * (Internal Only) Request object for describing a message stream
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class DescribeMessageStreamRequest {
-    #__requestId = null;
-    #__name = null;
-
-    /**
-     * @param requestId {String} 
-     * @param name {String} 
-     */
-    constructor(
-        requestId = null,
-        name = null,
-    ) {
-        if (requestId !== null && !(typeof requestId === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        if (name !== null && !(typeof name === "string")) {
-            throw new Error("name must be String");
-        }
-
-        this.#__requestId = requestId;
-        this.#__name = name;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get requestId() {
-        return this.#__requestId;
-    }
-    /**
-     * @param value {String} 
-     */
-    set requestId(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        this.#__requestId = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamRequest}
-     */
-    withRequestId(value) {
-        this.requestId = value;
-        return this;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get name() {
-        return this.#__name;
-    }
-    /**
-     * @param value {String} 
-     */
-    set name(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("name must be String");
-        }
-
-        this.#__name = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamRequest}
-     */
-    withName(value) {
-        this.name = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new DescribeMessageStreamRequest();
-        if ("requestId" in d) {
-            ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"];
-        }
-        if ("name" in d) {
-            ret.name = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["name"]) : d["name"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.requestId !== null) {
-            d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId;
-        }
-        if (this.name !== null) {
-            d["name"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.name), "asMap") ? this.name.asMap() : this.name;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(DescribeMessageStreamRequest, "typesMap", {
-    value: {
-        requestId: {
-            'type': String,
-            'subtype': null
-        },
-        name: {
-            'type': String,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(DescribeMessageStreamRequest, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(DescribeMessageStreamRequest, "validationsMap", {
-    value: {
-        'requestId': {
-            'required': true,
-            'minLength': 1,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'name': {
-            'required': true,
-            'minLength': 1,
-            'maxLength': 255,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-    }
-});
-
-/**
- * (Internal Only) Response object for describing a message stream
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class DescribeMessageStreamResponse {
-    #__requestId = null;
-    #__status = null;
-    #__errorMessage = null;
-    #__messageStreamInfo = null;
-
-    /**
-     * @param requestId {String} 
-     * @param status {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     * @param errorMessage {String} 
-     * @param messageStreamInfo {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo} 
-     */
-    constructor(
-        requestId = null,
-        status = null,
-        errorMessage = null,
-        messageStreamInfo = null,
-    ) {
-        if (requestId !== null && !(typeof requestId === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        if (status !== null && !(status instanceof ResponseStatusCode)) {
-            throw new Error("status must be ResponseStatusCode");
-        }
-
-        if (errorMessage !== null && !(typeof errorMessage === "string")) {
-            throw new Error("errorMessage must be String");
-        }
-
-        if (messageStreamInfo !== null && !(messageStreamInfo instanceof MessageStreamInfo)) {
-            throw new Error("messageStreamInfo must be MessageStreamInfo");
-        }
-
-        this.#__requestId = requestId;
-        this.#__status = status;
-        this.#__errorMessage = errorMessage;
-        this.#__messageStreamInfo = messageStreamInfo;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get requestId() {
-        return this.#__requestId;
-    }
-    /**
-     * @param value {String} 
-     */
-    set requestId(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        this.#__requestId = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse}
-     */
-    withRequestId(value) {
-        this.requestId = value;
-        return this;
-    }
-
-    /**
-     * @returns {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode}
-     
-     */
-    get status() {
-        return this.#__status;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     */
-    set status(value) {
-        if (value !== null && !(value instanceof ResponseStatusCode)) {
-            throw new Error("status must be ResponseStatusCode");
-        }
-
-        this.#__status = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse}
-     */
-    withStatus(value) {
-        this.status = value;
-        return this;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get errorMessage() {
-        return this.#__errorMessage;
-    }
-    /**
-     * @param value {String} 
-     */
-    set errorMessage(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("errorMessage must be String");
-        }
-
-        this.#__errorMessage = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse}
-     */
-    withErrorMessage(value) {
-        this.errorMessage = value;
-        return this;
-    }
-
-    /**
-     * @returns {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo}
-     
-     */
-    get messageStreamInfo() {
-        return this.#__messageStreamInfo;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo} 
-     */
-    set messageStreamInfo(value) {
-        if (value !== null && !(value instanceof MessageStreamInfo)) {
-            throw new Error("messageStreamInfo must be MessageStreamInfo");
-        }
-
-        this.#__messageStreamInfo = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.MessageStreamInfo} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.DescribeMessageStreamResponse}
-     */
-    withMessageStreamInfo(value) {
-        this.messageStreamInfo = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new DescribeMessageStreamResponse();
-        if ("requestId" in d) {
-            ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"];
-        }
-        if ("status" in d) {
-            ret.status = Object.prototype.hasOwnProperty.call(ResponseStatusCode, "fromMap") ? ResponseStatusCode.fromMap(d["status"]) : d["status"];
-        }
-        if ("errorMessage" in d) {
-            ret.errorMessage = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["errorMessage"]) : d["errorMessage"];
-        }
-        if ("messageStreamInfo" in d) {
-            ret.messageStreamInfo = Object.prototype.hasOwnProperty.call(MessageStreamInfo, "fromMap") ? MessageStreamInfo.fromMap(d["messageStreamInfo"]) : d["messageStreamInfo"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.requestId !== null) {
-            d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId;
-        }
-        if (this.status !== null) {
-            d["status"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.status), "asMap") ? this.status.asMap() : this.status;
-        }
-        if (this.errorMessage !== null) {
-            d["errorMessage"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.errorMessage), "asMap") ? this.errorMessage.asMap() : this.errorMessage;
-        }
-        if (this.messageStreamInfo !== null) {
-            d["messageStreamInfo"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.messageStreamInfo), "asMap") ? this.messageStreamInfo.asMap() : this.messageStreamInfo;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(DescribeMessageStreamResponse, "typesMap", {
-    value: {
-        requestId: {
-            'type': String,
-            'subtype': null
-        },
-        status: {
-            'type': ResponseStatusCode,
-            'subtype': null
-        },
-        errorMessage: {
-            'type': String,
-            'subtype': null
-        },
-        messageStreamInfo: {
-            'type': MessageStreamInfo,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(DescribeMessageStreamResponse, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(DescribeMessageStreamResponse, "validationsMap", {
-    value: {
-        'requestId': {
-            'required': true,
-            'minLength': 1,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'status': {
-            'required': true,
-        },
-        'errorMessage': {
-            'required': false,
-        },
-        'messageStreamInfo': {
-            'required': false,
-        },
-    }
-});
-
-/**
- * (Intenral Only) Request object for appending to a message stream
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class AppendMessageRequest {
-    #__requestId = null;
-    #__name = null;
-    #__payload = null;
-
-    /**
-     * @param requestId {String} 
-     * @param name {String} 
-     * @param payload {Buffer} 
-     */
-    constructor(
-        requestId = null,
-        name = null,
-        payload = null,
-    ) {
-        if (requestId !== null && !(typeof requestId === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        if (name !== null && !(typeof name === "string")) {
-            throw new Error("name must be String");
-        }
-
-        if (payload !== null && !(payload instanceof Buffer)) {
-            throw new Error("payload must be Buffer");
-        }
-
-        this.#__requestId = requestId;
-        this.#__name = name;
-        this.#__payload = payload;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get requestId() {
-        return this.#__requestId;
-    }
-    /**
-     * @param value {String} 
-     */
-    set requestId(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        this.#__requestId = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.AppendMessageRequest}
-     */
-    withRequestId(value) {
-        this.requestId = value;
-        return this;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get name() {
-        return this.#__name;
-    }
-    /**
-     * @param value {String} 
-     */
-    set name(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("name must be String");
-        }
-
-        this.#__name = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.AppendMessageRequest}
-     */
-    withName(value) {
-        this.name = value;
-        return this;
-    }
-
-    /**
-     * @returns {Buffer}
-     
-     */
-    get payload() {
-        return this.#__payload;
-    }
-    /**
-     * @param value {Buffer} 
-     */
-    set payload(value) {
-        if (value !== null && !(value instanceof Buffer)) {
-            throw new Error("payload must be Buffer");
-        }
-
-        this.#__payload = value;
-    }
-    /**
-     * @param value {Buffer} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.AppendMessageRequest}
-     */
-    withPayload(value) {
-        this.payload = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new AppendMessageRequest();
-        if ("requestId" in d) {
-            ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"];
-        }
-        if ("name" in d) {
-            ret.name = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["name"]) : d["name"];
-        }
-        if ("payload" in d) {
-            ret.payload = Object.prototype.hasOwnProperty.call(Buffer, "fromMap") ? Buffer.fromMap(d["payload"]) : d["payload"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.requestId !== null) {
-            d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId;
-        }
-        if (this.name !== null) {
-            d["name"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.name), "asMap") ? this.name.asMap() : this.name;
-        }
-        if (this.payload !== null) {
-            d["payload"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.payload), "asMap") ? this.payload.asMap() : this.payload;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(AppendMessageRequest, "typesMap", {
-    value: {
-        requestId: {
-            'type': String,
-            'subtype': null
-        },
-        name: {
-            'type': String,
-            'subtype': null
-        },
-        payload: {
-            'type': Buffer,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(AppendMessageRequest, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(AppendMessageRequest, "validationsMap", {
-    value: {
-        'requestId': {
-            'required': true,
-            'minLength': 1,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'name': {
-            'required': true,
-            'minLength': 1,
-            'maxLength': 255,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'payload': {
-            'required': true,
-            'minLength': 1,
-        },
-    }
-});
-
-/**
- * Internal Only
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class AppendMessageResponse {
-    #__requestId = null;
-    #__status = null;
-    #__errorMessage = null;
-    #__sequenceNumber = null;
-
-    /**
-     * @param requestId {String} 
-     * @param status {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     * @param errorMessage {String} 
-     * @param sequenceNumber {Number} 
-     */
-    constructor(
-        requestId = null,
-        status = null,
-        errorMessage = null,
-        sequenceNumber = null,
-    ) {
-        if (requestId !== null && !(typeof requestId === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        if (status !== null && !(status instanceof ResponseStatusCode)) {
-            throw new Error("status must be ResponseStatusCode");
-        }
-
-        if (errorMessage !== null && !(typeof errorMessage === "string")) {
-            throw new Error("errorMessage must be String");
-        }
-
-        if (sequenceNumber !== null && !(typeof sequenceNumber === "number")) {
-            throw new Error("sequenceNumber must be Number");
-        }
-
-        this.#__requestId = requestId;
-        this.#__status = status;
-        this.#__errorMessage = errorMessage;
-        this.#__sequenceNumber = sequenceNumber;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get requestId() {
-        return this.#__requestId;
-    }
-    /**
-     * @param value {String} 
-     */
-    set requestId(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        this.#__requestId = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.AppendMessageResponse}
-     */
-    withRequestId(value) {
-        this.requestId = value;
-        return this;
-    }
-
-    /**
-     * @returns {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode}
-     
-     */
-    get status() {
-        return this.#__status;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     */
-    set status(value) {
-        if (value !== null && !(value instanceof ResponseStatusCode)) {
-            throw new Error("status must be ResponseStatusCode");
-        }
-
-        this.#__status = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.AppendMessageResponse}
-     */
-    withStatus(value) {
-        this.status = value;
-        return this;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get errorMessage() {
-        return this.#__errorMessage;
-    }
-    /**
-     * @param value {String} 
-     */
-    set errorMessage(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("errorMessage must be String");
-        }
-
-        this.#__errorMessage = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.AppendMessageResponse}
-     */
-    withErrorMessage(value) {
-        this.errorMessage = value;
-        return this;
-    }
-
-    /**
-     * @returns {Number}
-     
-     */
-    get sequenceNumber() {
-        return this.#__sequenceNumber;
-    }
-    /**
-     * @param value {Number} 
-     */
-    set sequenceNumber(value) {
-        if (value !== null && !(typeof value === "number")) {
-            throw new Error("sequenceNumber must be Number");
-        }
-
-        this.#__sequenceNumber = value;
-    }
-    /**
-     * @param value {Number} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.AppendMessageResponse}
-     */
-    withSequenceNumber(value) {
-        this.sequenceNumber = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new AppendMessageResponse();
-        if ("requestId" in d) {
-            ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"];
-        }
-        if ("status" in d) {
-            ret.status = Object.prototype.hasOwnProperty.call(ResponseStatusCode, "fromMap") ? ResponseStatusCode.fromMap(d["status"]) : d["status"];
-        }
-        if ("errorMessage" in d) {
-            ret.errorMessage = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["errorMessage"]) : d["errorMessage"];
-        }
-        if ("sequenceNumber" in d) {
-            ret.sequenceNumber = Object.prototype.hasOwnProperty.call(Number, "fromMap") ? Number.fromMap(d["sequenceNumber"]) : d["sequenceNumber"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.requestId !== null) {
-            d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId;
-        }
-        if (this.status !== null) {
-            d["status"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.status), "asMap") ? this.status.asMap() : this.status;
-        }
-        if (this.errorMessage !== null) {
-            d["errorMessage"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.errorMessage), "asMap") ? this.errorMessage.asMap() : this.errorMessage;
-        }
-        if (this.sequenceNumber !== null) {
-            d["sequenceNumber"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.sequenceNumber), "asMap") ? this.sequenceNumber.asMap() : this.sequenceNumber;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(AppendMessageResponse, "typesMap", {
-    value: {
-        requestId: {
-            'type': String,
-            'subtype': null
-        },
-        status: {
-            'type': ResponseStatusCode,
-            'subtype': null
-        },
-        errorMessage: {
-            'type': String,
-            'subtype': null
-        },
-        sequenceNumber: {
-            'type': Number,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(AppendMessageResponse, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(AppendMessageResponse, "validationsMap", {
-    value: {
-        'requestId': {
-            'required': true,
-            'minLength': 1,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'status': {
-            'required': true,
-        },
-        'errorMessage': {
-            'required': false,
-        },
-        'sequenceNumber': {
-            'required': false,
-        },
-    }
-});
-
-/**
- * (Internal Only) Request object for reading from a message stream. readMessagesOptions is optional.
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class ReadMessagesRequest {
-    #__requestId = null;
-    #__streamName = null;
-    #__readMessagesOptions = null;
-
-    /**
-     * @param requestId {String} 
-     * @param streamName {String} 
-     * @param readMessagesOptions {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions} 
-     */
-    constructor(
-        requestId = null,
-        streamName = null,
-        readMessagesOptions = null,
-    ) {
-        if (requestId !== null && !(typeof requestId === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        if (streamName !== null && !(typeof streamName === "string")) {
-            throw new Error("streamName must be String");
-        }
-
-        if (readMessagesOptions !== null && !(readMessagesOptions instanceof ReadMessagesOptions)) {
-            throw new Error("readMessagesOptions must be ReadMessagesOptions");
-        }
-
-        this.#__requestId = requestId;
-        this.#__streamName = streamName;
-        this.#__readMessagesOptions = readMessagesOptions;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get requestId() {
-        return this.#__requestId;
-    }
-    /**
-     * @param value {String} 
-     */
-    set requestId(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        this.#__requestId = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesRequest}
-     */
-    withRequestId(value) {
-        this.requestId = value;
-        return this;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get streamName() {
-        return this.#__streamName;
-    }
-    /**
-     * @param value {String} 
-     */
-    set streamName(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("streamName must be String");
-        }
-
-        this.#__streamName = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesRequest}
-     */
-    withStreamName(value) {
-        this.streamName = value;
-        return this;
-    }
-
-    /**
-     * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions}
-     
-     */
-    get readMessagesOptions() {
-        return this.#__readMessagesOptions;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions} 
-     */
-    set readMessagesOptions(value) {
-        if (value !== null && !(value instanceof ReadMessagesOptions)) {
-            throw new Error("readMessagesOptions must be ReadMessagesOptions");
-        }
-
-        this.#__readMessagesOptions = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.ReadMessagesOptions} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesRequest}
-     */
-    withReadMessagesOptions(value) {
-        this.readMessagesOptions = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new ReadMessagesRequest();
-        if ("requestId" in d) {
-            ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"];
-        }
-        if ("streamName" in d) {
-            ret.streamName = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["streamName"]) : d["streamName"];
-        }
-        if ("readMessagesOptions" in d) {
-            ret.readMessagesOptions = Object.prototype.hasOwnProperty.call(ReadMessagesOptions, "fromMap") ? ReadMessagesOptions.fromMap(d["readMessagesOptions"]) : d["readMessagesOptions"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.requestId !== null) {
-            d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId;
-        }
-        if (this.streamName !== null) {
-            d["streamName"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.streamName), "asMap") ? this.streamName.asMap() : this.streamName;
-        }
-        if (this.readMessagesOptions !== null) {
-            d["readMessagesOptions"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.readMessagesOptions), "asMap") ? this.readMessagesOptions.asMap() : this.readMessagesOptions;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(ReadMessagesRequest, "typesMap", {
-    value: {
-        requestId: {
-            'type': String,
-            'subtype': null
-        },
-        streamName: {
-            'type': String,
-            'subtype': null
-        },
-        readMessagesOptions: {
-            'type': ReadMessagesOptions,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(ReadMessagesRequest, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(ReadMessagesRequest, "validationsMap", {
-    value: {
-        'requestId': {
-            'required': true,
-            'minLength': 1,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'streamName': {
-            'required': true,
-            'minLength': 1,
-            'maxLength': 255,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'readMessagesOptions': {
-            'required': false,
-        },
-    }
-});
-
-/**
- * Internal Only
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class ReadMessagesResponse {
-    #__requestId = null;
-    #__messages = null;
-    #__status = null;
-    #__errorMessage = null;
-
-    /**
-     * @param requestId {String} 
-     * @param messages {aws-greengrass-core-sdk.StreamManager.Message[]} 
-     * @param status {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     * @param errorMessage {String} 
-     */
-    constructor(
-        requestId = null,
-        messages = null,
-        status = null,
-        errorMessage = null,
-    ) {
-        if (requestId !== null && !(typeof requestId === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        if (messages !== null && !(messages instanceof Array)) {
-            throw new Error("messages must be Array");
-        }
-        if (messages !== null && !messages.every((v) => v instanceof Message)) {
-            throw new Error("messages array values must be Message");
-        }
-
-        if (status !== null && !(status instanceof ResponseStatusCode)) {
-            throw new Error("status must be ResponseStatusCode");
-        }
-
-        if (errorMessage !== null && !(typeof errorMessage === "string")) {
-            throw new Error("errorMessage must be String");
-        }
-
-        this.#__requestId = requestId;
-        this.#__messages = messages;
-        this.#__status = status;
-        this.#__errorMessage = errorMessage;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get requestId() {
-        return this.#__requestId;
-    }
-    /**
-     * @param value {String} 
-     */
-    set requestId(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        this.#__requestId = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse}
-     */
-    withRequestId(value) {
-        this.requestId = value;
-        return this;
-    }
-
-    /**
-     * @returns {aws-greengrass-core-sdk.StreamManager.Message[]}
-     
-     */
-    get messages() {
-        return this.#__messages;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.Message[]} 
-     */
-    set messages(value) {
-        if (value !== null && !(value instanceof Array)) {
-            throw new Error("messages must be Array");
-        }
-        if (value !== null && !value.every((v) => v instanceof Message)) {
-            throw new Error("messages array values must be Message");
-        }
-
-        this.#__messages = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.Message[]} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse}
-     */
-    withMessages(value) {
-        this.messages = value;
-        return this;
-    }
-
-    /**
-     * @returns {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode}
-     
-     */
-    get status() {
-        return this.#__status;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     */
-    set status(value) {
-        if (value !== null && !(value instanceof ResponseStatusCode)) {
-            throw new Error("status must be ResponseStatusCode");
-        }
-
-        this.#__status = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse}
-     */
-    withStatus(value) {
-        this.status = value;
-        return this;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get errorMessage() {
-        return this.#__errorMessage;
-    }
-    /**
-     * @param value {String} 
-     */
-    set errorMessage(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("errorMessage must be String");
-        }
-
-        this.#__errorMessage = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ReadMessagesResponse}
-     */
-    withErrorMessage(value) {
-        this.errorMessage = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new ReadMessagesResponse();
-        if ("requestId" in d) {
-            ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"];
-        }
-        if ("messages" in d) {
-            ret.messages = d["messages"].reduce((acc, v) => {
-                acc.push(Object.prototype.hasOwnProperty.call(Message, "fromMap") ? Message.fromMap(v) : v);
-                return acc;
-            }, []);
-        }
-        if ("status" in d) {
-            ret.status = Object.prototype.hasOwnProperty.call(ResponseStatusCode, "fromMap") ? ResponseStatusCode.fromMap(d["status"]) : d["status"];
-        }
-        if ("errorMessage" in d) {
-            ret.errorMessage = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["errorMessage"]) : d["errorMessage"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.requestId !== null) {
-            d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId;
-        }
-        if (this.messages !== null) {
-            d["messages"] = this.messages.reduce((acc, v) => {
-                acc.push(Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(v), "asMap") ? v.asMap() : v);
-                return acc;
-            }, []);
-        }
-        if (this.status !== null) {
-            d["status"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.status), "asMap") ? this.status.asMap() : this.status;
-        }
-        if (this.errorMessage !== null) {
-            d["errorMessage"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.errorMessage), "asMap") ? this.errorMessage.asMap() : this.errorMessage;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(ReadMessagesResponse, "typesMap", {
-    value: {
-        requestId: {
-            'type': String,
-            'subtype': null
-        },
-        messages: {
-            'type': Array,
-            'subtype': Message
-        },
-        status: {
-            'type': ResponseStatusCode,
-            'subtype': null
-        },
-        errorMessage: {
-            'type': String,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(ReadMessagesResponse, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(ReadMessagesResponse, "validationsMap", {
-    value: {
-        'requestId': {
-            'required': false,
-            'minLength': 1,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'messages': {
-            'required': false,
-        },
-        'status': {
-            'required': false,
-        },
-        'errorMessage': {
-            'required': false,
-        },
-    }
-});
-
-/**
- * (Internal Only) Request object to list all available streams. There are no options.
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class ListStreamsRequest {
-    #__requestId = null;
-
-    /**
-     * @param requestId {String} 
-     */
-    constructor(
-        requestId = null,
-    ) {
-        if (requestId !== null && !(typeof requestId === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        this.#__requestId = requestId;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get requestId() {
-        return this.#__requestId;
-    }
-    /**
-     * @param value {String} 
-     */
-    set requestId(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        this.#__requestId = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ListStreamsRequest}
-     */
-    withRequestId(value) {
-        this.requestId = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new ListStreamsRequest();
-        if ("requestId" in d) {
-            ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"];
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.requestId !== null) {
-            d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId;
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(ListStreamsRequest, "typesMap", {
-    value: {
-        requestId: {
-            'type': String,
-            'subtype': null
-        },
-    }
-});
-Object.defineProperty(ListStreamsRequest, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(ListStreamsRequest, "validationsMap", {
-    value: {
-        'requestId': {
-            'required': true,
-            'minLength': 1,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-    }
-});
-
-/**
- * Internal Only
- *
- * @class
- * @memberOf aws-greengrass-core-sdk.StreamManager
- */
-class ListStreamsResponse {
-    #__requestId = null;
-    #__status = null;
-    #__errorMessage = null;
-    #__streams = null;
-
-    /**
-     * @param requestId {String} 
-     * @param status {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     * @param errorMessage {String} 
-     * @param streams {String[]} 
-     */
-    constructor(
-        requestId = null,
-        status = null,
-        errorMessage = null,
-        streams = null,
-    ) {
-        if (requestId !== null && !(typeof requestId === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        if (status !== null && !(status instanceof ResponseStatusCode)) {
-            throw new Error("status must be ResponseStatusCode");
-        }
-
-        if (errorMessage !== null && !(typeof errorMessage === "string")) {
-            throw new Error("errorMessage must be String");
-        }
-
-        if (streams !== null && !(streams instanceof Array)) {
-            throw new Error("streams must be Array");
-        }
-        if (streams !== null && !streams.every((v) => typeof v === "string")) {
-            throw new Error("streams array values must be String");
-        }
-
-        this.#__requestId = requestId;
-        this.#__status = status;
-        this.#__errorMessage = errorMessage;
-        this.#__streams = streams;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get requestId() {
-        return this.#__requestId;
-    }
-    /**
-     * @param value {String} 
-     */
-    set requestId(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("requestId must be String");
-        }
-
-        this.#__requestId = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ListStreamsResponse}
-     */
-    withRequestId(value) {
-        this.requestId = value;
-        return this;
-    }
-
-    /**
-     * @returns {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode}
-     
-     */
-    get status() {
-        return this.#__status;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     */
-    set status(value) {
-        if (value !== null && !(value instanceof ResponseStatusCode)) {
-            throw new Error("status must be ResponseStatusCode");
-        }
-
-        this.#__status = value;
-    }
-    /**
-     * @param value {aws-greengrass-core-sdk.StreamManager.ResponseStatusCode} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ListStreamsResponse}
-     */
-    withStatus(value) {
-        this.status = value;
-        return this;
-    }
-
-    /**
-     * @returns {String}
-     
-     */
-    get errorMessage() {
-        return this.#__errorMessage;
-    }
-    /**
-     * @param value {String} 
-     */
-    set errorMessage(value) {
-        if (value !== null && !(typeof value === "string")) {
-            throw new Error("errorMessage must be String");
-        }
-
-        this.#__errorMessage = value;
-    }
-    /**
-     * @param value {String} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ListStreamsResponse}
-     */
-    withErrorMessage(value) {
-        this.errorMessage = value;
-        return this;
-    }
-
-    /**
-     * @returns {String[]}
-     
-     */
-    get streams() {
-        return this.#__streams;
-    }
-    /**
-     * @param value {String[]} 
-     */
-    set streams(value) {
-        if (value !== null && !(value instanceof Array)) {
-            throw new Error("streams must be Array");
-        }
-        if (value !== null && !value.every((v) => typeof v === "string")) {
-            throw new Error("streams array values must be String");
-        }
-
-        this.#__streams = value;
-    }
-    /**
-     * @param value {String[]} 
-     * @returns {aws-greengrass-core-sdk.StreamManager.ListStreamsResponse}
-     */
-    withStreams(value) {
-        this.streams = value;
-        return this;
-    }
-
-    static fromMap(d) {
-        const ret = new ListStreamsResponse();
-        if ("requestId" in d) {
-            ret.requestId = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["requestId"]) : d["requestId"];
-        }
-        if ("status" in d) {
-            ret.status = Object.prototype.hasOwnProperty.call(ResponseStatusCode, "fromMap") ? ResponseStatusCode.fromMap(d["status"]) : d["status"];
-        }
-        if ("errorMessage" in d) {
-            ret.errorMessage = Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(d["errorMessage"]) : d["errorMessage"];
-        }
-        if ("streams" in d) {
-            ret.streams = d["streams"].reduce((acc, v) => {
-                acc.push(Object.prototype.hasOwnProperty.call(String, "fromMap") ? String.fromMap(v) : v);
-                return acc;
-            }, []);
-        }
-        return ret;
-    }
-
-    asMap() {
-        const d = {};
-        if (this.requestId !== null) {
-            d["requestId"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.requestId), "asMap") ? this.requestId.asMap() : this.requestId;
-        }
-        if (this.status !== null) {
-            d["status"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.status), "asMap") ? this.status.asMap() : this.status;
-        }
-        if (this.errorMessage !== null) {
-            d["errorMessage"] = Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(this.errorMessage), "asMap") ? this.errorMessage.asMap() : this.errorMessage;
-        }
-        if (this.streams !== null) {
-            d["streams"] = this.streams.reduce((acc, v) => {
-                acc.push(Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(v), "asMap") ? v.asMap() : v);
-                return acc;
-            }, []);
-        }
-        return d;
-    }
-};
-
-Object.defineProperty(ListStreamsResponse, "typesMap", {
-    value: {
-        requestId: {
-            'type': String,
-            'subtype': null
-        },
-        status: {
-            'type': ResponseStatusCode,
-            'subtype': null
-        },
-        errorMessage: {
-            'type': String,
-            'subtype': null
-        },
-        streams: {
-            'type': Array,
-            'subtype': String
-        },
-    }
-});
-Object.defineProperty(ListStreamsResponse, "formatsMap", {
-    value: {}
-});
-Object.defineProperty(ListStreamsResponse, "validationsMap", {
-    value: {
-        'requestId': {
-            'required': true,
-            'minLength': 1,
-            'pattern': /^[\w ,.\-_]*$/,
-        },
-        'status': {
-            'required': true,
-        },
-        'errorMessage': {
-            'required': false,
-        },
-        'streams': {
-            'required': false,
-        },
-    }
-});
-
-/**
- * @type {{
-StrategyOnFull: StrategyOnFull,
-Persistence: Persistence,
-ConnectRequest: ConnectRequest,
-ResponseStatusCode: ResponseStatusCode,
-ConnectResponse: ConnectResponse,
-Operation: Operation,
-MessageFrame: MessageFrame,
-HTTPConfig: HTTPConfig,
-IoTAnalyticsConfig: IoTAnalyticsConfig,
-KinesisConfig: KinesisConfig,
-ExportDefinition: ExportDefinition,
-MessageStreamDefinition: MessageStreamDefinition,
-MessageStreamInfo: MessageStreamInfo,
-Message: Message,
-ReadMessagesOptions: ReadMessagesOptions,
-CreateMessageStreamRequest: CreateMessageStreamRequest,
-CreateMessageStreamResponse: CreateMessageStreamResponse,
-DeleteMessageStreamRequest: DeleteMessageStreamRequest,
-DeleteMessageStreamResponse: DeleteMessageStreamResponse,
-DescribeMessageStreamRequest: DescribeMessageStreamRequest,
-DescribeMessageStreamResponse: DescribeMessageStreamResponse,
-AppendMessageRequest: AppendMessageRequest,
-AppendMessageResponse: AppendMessageResponse,
-ReadMessagesRequest: ReadMessagesRequest,
-ReadMessagesResponse: ReadMessagesResponse,
-ListStreamsRequest: ListStreamsRequest,
-ListStreamsResponse: ListStreamsResponse
-}}
- */
-module.exports = {
-    StrategyOnFull,
-    Persistence,
-    ConnectRequest,
-    ResponseStatusCode,
-    ConnectResponse,
-    Operation,
-    MessageFrame,
-    HTTPConfig,
-    IoTAnalyticsConfig,
-    KinesisConfig,
-    ExportDefinition,
-    MessageStreamDefinition,
-    MessageStreamInfo,
-    Message,
-    ReadMessagesOptions,
-    CreateMessageStreamRequest,
-    CreateMessageStreamResponse,
-    DeleteMessageStreamRequest,
-    DeleteMessageStreamResponse,
-    DescribeMessageStreamRequest,
-    DescribeMessageStreamResponse,
-    AppendMessageRequest,
-    AppendMessageResponse,
-    ReadMessagesRequest,
-    ReadMessagesResponse,
-    ListStreamsRequest,
-    ListStreamsResponse,
-};
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - diff --git a/docs/stream-manager_index.js.html b/docs/stream-manager_index.js.html deleted file mode 100644 index c3d6561..0000000 --- a/docs/stream-manager_index.js.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - JSDoc: Source: stream-manager/index.js - - - - - - - - - - -
- -

Source: stream-manager/index.js

- - - - - - -
-
-
/*
- * Copyright (c) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.
- */
-
-/**
- * @namespace aws-greengrass-core-sdk.StreamManager
- */
-
-module.exports = require('./client');
-
-
-
- - - - -
- - - -
- -
- Documentation generated by JSDoc 3.6.3 on Thu Jan 16 2020 19:55:23 GMT+0000 (Coordinated Universal Time) -
- - - - - diff --git a/docs/styles/jsdoc-default.css b/docs/styles/jsdoc-default.css deleted file mode 100644 index 7d1729d..0000000 --- a/docs/styles/jsdoc-default.css +++ /dev/null @@ -1,358 +0,0 @@ -@font-face { - font-family: 'Open Sans'; - font-weight: normal; - font-style: normal; - src: url('../fonts/OpenSans-Regular-webfont.eot'); - src: - local('Open Sans'), - local('OpenSans'), - url('../fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), - url('../fonts/OpenSans-Regular-webfont.woff') format('woff'), - url('../fonts/OpenSans-Regular-webfont.svg#open_sansregular') format('svg'); -} - -@font-face { - font-family: 'Open Sans Light'; - font-weight: normal; - font-style: normal; - src: url('../fonts/OpenSans-Light-webfont.eot'); - src: - local('Open Sans Light'), - local('OpenSans Light'), - url('../fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), - url('../fonts/OpenSans-Light-webfont.woff') format('woff'), - url('../fonts/OpenSans-Light-webfont.svg#open_sanslight') format('svg'); -} - -html -{ - overflow: auto; - background-color: #fff; - font-size: 14px; -} - -body -{ - font-family: 'Open Sans', sans-serif; - line-height: 1.5; - color: #4d4e53; - background-color: white; -} - -a, a:visited, a:active { - color: #0095dd; - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -header -{ - display: block; - padding: 0px 4px; -} - -tt, code, kbd, samp { - font-family: Consolas, Monaco, 'Andale Mono', monospace; -} - -.class-description { - font-size: 130%; - line-height: 140%; - margin-bottom: 1em; - margin-top: 1em; -} - -.class-description:empty { - margin: 0; -} - -#main { - float: left; - width: 70%; -} - -article dl { - margin-bottom: 40px; -} - -article img { - max-width: 100%; -} - -section -{ - display: block; - background-color: #fff; - padding: 12px 24px; - border-bottom: 1px solid #ccc; - margin-right: 30px; -} - -.variation { - display: none; -} - -.signature-attributes { - font-size: 60%; - color: #aaa; - font-style: italic; - font-weight: lighter; -} - -nav -{ - display: block; - float: right; - margin-top: 28px; - width: 30%; - box-sizing: border-box; - border-left: 1px solid #ccc; - padding-left: 16px; -} - -nav ul { - font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif; - font-size: 100%; - line-height: 17px; - padding: 0; - margin: 0; - list-style-type: none; -} - -nav ul a, nav ul a:visited, nav ul a:active { - font-family: Consolas, Monaco, 'Andale Mono', monospace; - line-height: 18px; - color: #4D4E53; -} - -nav h3 { - margin-top: 12px; -} - -nav li { - margin-top: 6px; -} - -footer { - display: block; - padding: 6px; - margin-top: 12px; - font-style: italic; - font-size: 90%; -} - -h1, h2, h3, h4 { - font-weight: 200; - margin: 0; -} - -h1 -{ - font-family: 'Open Sans Light', sans-serif; - font-size: 48px; - letter-spacing: -2px; - margin: 12px 24px 20px; -} - -h2, h3.subsection-title -{ - font-size: 30px; - font-weight: 700; - letter-spacing: -1px; - margin-bottom: 12px; -} - -h3 -{ - font-size: 24px; - letter-spacing: -0.5px; - margin-bottom: 12px; -} - -h4 -{ - font-size: 18px; - letter-spacing: -0.33px; - margin-bottom: 12px; - color: #4d4e53; -} - -h5, .container-overview .subsection-title -{ - font-size: 120%; - font-weight: bold; - letter-spacing: -0.01em; - margin: 8px 0 3px 0; -} - -h6 -{ - font-size: 100%; - letter-spacing: -0.01em; - margin: 6px 0 3px 0; - font-style: italic; -} - -table -{ - border-spacing: 0; - border: 0; - border-collapse: collapse; -} - -td, th -{ - border: 1px solid #ddd; - margin: 0px; - text-align: left; - vertical-align: top; - padding: 4px 6px; - display: table-cell; -} - -thead tr -{ - background-color: #ddd; - font-weight: bold; -} - -th { border-right: 1px solid #aaa; } -tr > th:last-child { border-right: 1px solid #ddd; } - -.ancestors, .attribs { color: #999; } -.ancestors a, .attribs a -{ - color: #999 !important; - text-decoration: none; -} - -.clear -{ - clear: both; -} - -.important -{ - font-weight: bold; - color: #950B02; -} - -.yes-def { - text-indent: -1000px; -} - -.type-signature { - color: #aaa; -} - -.name, .signature { - font-family: Consolas, Monaco, 'Andale Mono', monospace; -} - -.details { margin-top: 14px; border-left: 2px solid #DDD; } -.details dt { width: 120px; float: left; padding-left: 10px; padding-top: 6px; } -.details dd { margin-left: 70px; } -.details ul { margin: 0; } -.details ul { list-style-type: none; } -.details li { margin-left: 30px; padding-top: 6px; } -.details pre.prettyprint { margin: 0 } -.details .object-value { padding-top: 0; } - -.description { - margin-bottom: 1em; - margin-top: 1em; -} - -.code-caption -{ - font-style: italic; - font-size: 107%; - margin: 0; -} - -.source -{ - border: 1px solid #ddd; - width: 80%; - overflow: auto; -} - -.prettyprint.source { - width: inherit; -} - -.source code -{ - font-size: 100%; - line-height: 18px; - display: block; - padding: 4px 12px; - margin: 0; - background-color: #fff; - color: #4D4E53; -} - -.prettyprint code span.line -{ - display: inline-block; -} - -.prettyprint.linenums -{ - padding-left: 70px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.prettyprint.linenums ol -{ - padding-left: 0; -} - -.prettyprint.linenums li -{ - border-left: 3px #ddd solid; -} - -.prettyprint.linenums li.selected, -.prettyprint.linenums li.selected * -{ - background-color: lightyellow; -} - -.prettyprint.linenums li * -{ - -webkit-user-select: text; - -moz-user-select: text; - -ms-user-select: text; - user-select: text; -} - -.params .name, .props .name, .name code { - color: #4D4E53; - font-family: Consolas, Monaco, 'Andale Mono', monospace; - font-size: 100%; -} - -.params td.description > p:first-child, -.props td.description > p:first-child -{ - margin-top: 0; - padding-top: 0; -} - -.params td.description > p:last-child, -.props td.description > p:last-child -{ - margin-bottom: 0; - padding-bottom: 0; -} - -.disabled { - color: #454545; -} diff --git a/docs/styles/prettify-jsdoc.css b/docs/styles/prettify-jsdoc.css deleted file mode 100644 index 5a2526e..0000000 --- a/docs/styles/prettify-jsdoc.css +++ /dev/null @@ -1,111 +0,0 @@ -/* JSDoc prettify.js theme */ - -/* plain text */ -.pln { - color: #000000; - font-weight: normal; - font-style: normal; -} - -/* string content */ -.str { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* a keyword */ -.kwd { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* a comment */ -.com { - font-weight: normal; - font-style: italic; -} - -/* a type name */ -.typ { - color: #000000; - font-weight: normal; - font-style: normal; -} - -/* a literal value */ -.lit { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* punctuation */ -.pun { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* lisp open bracket */ -.opn { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* lisp close bracket */ -.clo { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* a markup tag name */ -.tag { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* a markup attribute name */ -.atn { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* a markup attribute value */ -.atv { - color: #006400; - font-weight: normal; - font-style: normal; -} - -/* a declaration */ -.dec { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* a variable name */ -.var { - color: #000000; - font-weight: normal; - font-style: normal; -} - -/* a function name */ -.fun { - color: #000000; - font-weight: bold; - font-style: normal; -} - -/* Specify class=linenums on a pre to get line numbering */ -ol.linenums { - margin-top: 0; - margin-bottom: 0; -} diff --git a/docs/styles/prettify-tomorrow.css b/docs/styles/prettify-tomorrow.css deleted file mode 100644 index b6f92a7..0000000 --- a/docs/styles/prettify-tomorrow.css +++ /dev/null @@ -1,132 +0,0 @@ -/* Tomorrow Theme */ -/* Original theme - https://github.com/chriskempson/tomorrow-theme */ -/* Pretty printing styles. Used with prettify.js. */ -/* SPAN elements with the classes below are added by prettyprint. */ -/* plain text */ -.pln { - color: #4d4d4c; } - -@media screen { - /* string content */ - .str { - color: #718c00; } - - /* a keyword */ - .kwd { - color: #8959a8; } - - /* a comment */ - .com { - color: #8e908c; } - - /* a type name */ - .typ { - color: #4271ae; } - - /* a literal value */ - .lit { - color: #f5871f; } - - /* punctuation */ - .pun { - color: #4d4d4c; } - - /* lisp open bracket */ - .opn { - color: #4d4d4c; } - - /* lisp close bracket */ - .clo { - color: #4d4d4c; } - - /* a markup tag name */ - .tag { - color: #c82829; } - - /* a markup attribute name */ - .atn { - color: #f5871f; } - - /* a markup attribute value */ - .atv { - color: #3e999f; } - - /* a declaration */ - .dec { - color: #f5871f; } - - /* a variable name */ - .var { - color: #c82829; } - - /* a function name */ - .fun { - color: #4271ae; } } -/* Use higher contrast and text-weight for printable form. */ -@media print, projection { - .str { - color: #060; } - - .kwd { - color: #006; - font-weight: bold; } - - .com { - color: #600; - font-style: italic; } - - .typ { - color: #404; - font-weight: bold; } - - .lit { - color: #044; } - - .pun, .opn, .clo { - color: #440; } - - .tag { - color: #006; - font-weight: bold; } - - .atn { - color: #404; } - - .atv { - color: #060; } } -/* Style */ -/* -pre.prettyprint { - background: white; - font-family: Consolas, Monaco, 'Andale Mono', monospace; - font-size: 12px; - line-height: 1.5; - border: 1px solid #ccc; - padding: 10px; } -*/ - -/* Specify class=linenums on a pre to get line numbering */ -ol.linenums { - margin-top: 0; - margin-bottom: 0; } - -/* IE indents via margin-left */ -li.L0, -li.L1, -li.L2, -li.L3, -li.L4, -li.L5, -li.L6, -li.L7, -li.L8, -li.L9 { - /* */ } - -/* Alternate shading for lines */ -li.L1, -li.L3, -li.L5, -li.L7, -li.L9 { - /* */ } diff --git a/greengrassExamples/HelloWorld/index.js b/greengrassExamples/HelloWorld/index.js index e2bc072..3f769eb 100644 --- a/greengrassExamples/HelloWorld/index.js +++ b/greengrassExamples/HelloWorld/index.js @@ -26,7 +26,6 @@ const myPlatform = util.format('%s-%s', os.platform(), os.release()); const pubOpt = { topic: 'hello/world', payload: JSON.stringify({ message: util.format('Hello world! Sent from Greengrass Core running on platform: %s using NodeJS', myPlatform) }), - queueFullPolicy: 'AllOrError', }; function greengrassHelloWorldRun() { diff --git a/greengrassExamples/LambdaInvoke/invokerbinary.js b/greengrassExamples/LambdaInvoke/invokerbinary.js index a239348..457704a 100644 --- a/greengrassExamples/LambdaInvoke/invokerbinary.js +++ b/greengrassExamples/LambdaInvoke/invokerbinary.js @@ -24,7 +24,7 @@ exports.handler = function handler(event, context) { const clientContext = buff.toString('base64'); const params = { - FunctionName: 'arn::lambda:::function::', + FunctionName: 'arn:aws:lambda:::function::', InvocationType: 'RequestResponse', ClientContext: clientContext, Payload: Buffer.from('payload message', 'utf8'), diff --git a/greengrassExamples/LambdaInvoke/invokerjson.js b/greengrassExamples/LambdaInvoke/invokerjson.js index eef5eb6..d176376 100644 --- a/greengrassExamples/LambdaInvoke/invokerjson.js +++ b/greengrassExamples/LambdaInvoke/invokerjson.js @@ -24,7 +24,7 @@ exports.handler = function handler(event, context) { const clientContext = buff.toString('base64'); const params = { - FunctionName: 'arn::lambda:::function::', + FunctionName: 'arn:aws:lambda:::function::', InvocationType: 'RequestResponse', ClientContext: clientContext, Payload: JSON.stringify({ message: 'payload message' }), diff --git a/greengrassExamples/StreamManagerKinesis/index.js b/greengrassExamples/StreamManagerKinesis/index.js deleted file mode 100644 index bd0d8e4..0000000 --- a/greengrassExamples/StreamManagerKinesis/index.js +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. - */ - -/* - * This example will create a Greengrass StreamManager stream called "SomeStream". - * It will then start writing data into that stream and StreamManager will - * automatically export the written data to a Kinesis Data Stream called "MyKinesisStream". - * This example will run forever, until the program is killed. - * - * The size of the StreamManager stream on disk will not exceed the default (which is 256 MB). - * Any data appended after the stream reaches the size limit, will continue to be appended, and - * StreamManager will delete the oldest data until the total stream size is back under 256MB. - * The Kinesis Data Stream in the cloud has no such bound, so all the data from this script - * will be uploaded to Kinesis and you will be charged for that usage. - */ - -const { - StreamManagerClient, ReadMessagesOptions, ExportDefinition, - KinesisConfig, MessageStreamDefinition, StrategyOnFull, - ResourceNotFoundException, -} = require('aws-greengrass-core-sdk').StreamManager; - -const STREAM_NAME = 'SomeStream'; -const KINESIS_STREAM_NAME = 'MyKinesisStream'; - -const c = new StreamManagerClient(); -c.onConnected(async () => { - // Try deleting the stream (if it exists) so that we have a fresh start - try { - await c.deleteMessageStream(STREAM_NAME); - } catch (e) { - // Rethrow the error if it wasn't the expected error - if (!(e instanceof ResourceNotFoundException)) { - throw e; - } - } - - try { - const exports = new ExportDefinition() - .withKinesis([new KinesisConfig() - .withIdentifier(`KinesisExport${STREAM_NAME}`) - .withKinesisStreamName(KINESIS_STREAM_NAME)]); - - await c.createMessageStream( - new MessageStreamDefinition() - .withName(STREAM_NAME) - .withStrategyOnFull(StrategyOnFull.OverwriteOldestData) - .withExportDefinition(exports), - ); - - // Append 2 messages and print their sequence numbers - console.log(`Successfully appended message to stream with sequence number ${await c.appendMessage(STREAM_NAME, Buffer.from('ABCDEFGHIJKLMNO', 'utf-8'))}`); - console.log(`Successfully appended message to stream with sequence number ${await c.appendMessage(STREAM_NAME, Buffer.from('PQRSTUVWXYZ', 'utf-8'))}`); - - // Try reading the 2 messages we just appended and print them out - console.log(`Successfully read 2 messages: ${ - await c.readMessages(STREAM_NAME, - new ReadMessagesOptions() - .withMinMessageCount(2) - .withReadTimeoutMillis(1000))}`); - - console.log('Now going to start writing random integers between 0 and 255 to the stream'); - - // Now start putting in random data between 0 and 255 to emulate device sensor input - const interval = setInterval(async () => { - try { - console.log('Appending new random integer to stream'); - const buf = Buffer.alloc(1); - buf.writeUInt8(Math.floor(Math.random() * 255), 0); - await c.appendMessage(STREAM_NAME, buf); - } catch { - clearInterval(interval); - c.close(); - } - }, 1000); - } catch { - c.close(); - } -}); - -// Dummy handler because this example should run as a pinned lambda -module.exports.handler = function handler() { - return ''; -}; diff --git a/greengrassExamples/TES/README b/greengrassExamples/TES/README index 53ed47e..f2b8be1 100644 --- a/greengrassExamples/TES/README +++ b/greengrassExamples/TES/README @@ -21,7 +21,7 @@ always succeed on the first try and retry should be performed with care. 5. Create a Lambda in the Lambda Console. Handler: index.handler - Runtime: Node.js 8.10 + Runtime: Node.js 6.10 Timeout: 3s Role: any basic execution role can be used here diff --git a/manual/AWS/IotData.html b/manual/AWS/IotData.html new file mode 100644 index 0000000..3de5bc6 --- /dev/null +++ b/manual/AWS/IotData.html @@ -0,0 +1,686 @@ + + + + + + + Class: AWS.IotData + + — AWS SDK for JavaScript + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +

Class: AWS.IotData + + + +

+
+ +
+
Identifier:
+
iotdata
+
+
+
API Version:
+
2017-09-20
+
+ + + +
+
Defined in:
+
iotdata.js
+
+ +
+

Overview

+
+ +

Constructs a service interface object. Each API operation is exposed as a +function on service.

+ +

Sending a Request Using IotData

+ +
var iotdata = new GG.IotData();
+iotdata.getThingShadow(params, function (err, data) {
+  if (err) console.log(err, err.stack); // an error occurred
+  else     console.log(data);           // successful response
+});
+
+ +

Constructor Summary + collapse +

+ + + +

Method Summary + collapse +

+ + + +
+

Constructor Details

+ +
+

+ + new GG.IotData() ⇒ Object + + + + + +

+
+ +

Constructs a service object. This object has one method for each API operation.

+ + +
+
+
+ +
+

Examples:

+ + +

Constructing a IotData object

+

+ +
var iotdata = new GG.IotData();
+ +
+ +
+
+ +
+ +
+

Method Details

+
+

+ + getThingShadow(params = {}, callback) + +

+
+

Gets the thing shadow for the specified thing.

+ +
+
+
+ +
+

Examples:

+ + +

Calling the getThingShadow operation

+

+ +
var params = {
+  thingName: 'STRING_VALUE' /* required */
+};
+iotdata.getThingShadow(params, function(err, data) {
+  if (err) console.log(err, err.stack); // an error occurred
+  else     console.log(data);           // successful response
+});
+ +
+

Parameters:

+
    + +
  • + + params + + + (Object) + + + (defaults to: {}) + + + — +
      +
    • thingName — (String)

      The name of the thing.

    • +
    + +
    + +
  • + +
+ + +

Callback (callback):

+
    +
  • + function(err, data) { ... } +
    +
    +

    Called when a response from the service is returned.

    + + +
    +
    +
    + +

    Parameters:

    +
      + +
    • + + err + + + (Error) + + + + — +

      the error object returned from the request. +Set to null if the request is successful.

      +
      + +
    • + +
    • + + data + + + (Object) + + + + — +

      the de-serialized data returned from +the request. Set to null if a request error occurs. +The data object has the following properties:

      + +
        +
      • payload — (Buffer, Typed Array, Blob, String)

        The state information, in JSON format.

      • +
      + +
      + +
    • + +
    + + + +
    +
  • +
+ + +

Returns:

+
    + +
  • +

    Nothing

    +
    + +
  • + +
+ +
+
+ +
+

+ + publish(params = {}, callback) + + + + + +

+
+

Publishes a message within Greengrass.

+ +
+
+
+ +
+

Examples:

+ + +

Calling the publish operation

+

+ +
var params = {
+  topic: 'STRING_VALUE', /* required */
+  payload: new Buffer('...') || 'STRING_VALUE'
+};
+iotdata.publish(params, function(err, data) {
+  if (err) console.log(err, err.stack); // an error occurred
+  else     console.log(data);           // successful response
+});
+ +
+

Parameters:

+
    + +
  • + + params + + + (Object) + + + (defaults to: {}) + + + — +
      +
    • topic — (String)

      The name of the MQTT topic.

    • +
    • payload — (Buffer, Typed Array, Blob, String)
    • +
    + +
    + +
  • + +
+ + +

Callback (callback):

+
    +
  • + function(err, data) { ... } +
    +
    +

    Called when a response from the service is returned.

    + + +
    +
    +
    +

    Parameters:

    +
      + +
    • + + err + + + (Error) + + + + — +

      the error object returned from the request. +Set to null if the request is successful.

      +
      + +
    • + +
    • + + data + + + (Object) + + + + — +

      the de-serialized data returned from +the request. Set to null if a request error occurs.

      +
      + +
    • + +
    + + + +
    +
  • +
+ + +

Returns:

+
    + +
  • +

    Nothing

    +
    + +
  • + +
+ +
+
+ +
+

+ + updateThingShadow(params = {}, callback) ⇒ GG.Request + + + + + +

+
+

Updates the thing shadow for the specified thing.

+ + +
+
+
+ +
+

Examples:

+ + +

Calling the updateThingShadow operation

+

+ +
var params = {
+  payload: 'Proper JSON data', /* required */
+  thingName: 'STRING_VALUE' /* required */
+};
+iotdata.updateThingShadow(params, function(err, data) {
+  if (err) console.log(err, err.stack); // an error occurred
+  else     console.log(data);           // successful response
+});
+ +
+

Parameters:

+
    + +
  • + + params + + + (Object) + + + (defaults to: {}) + + + — +
      +
    • thingName — (String)

      The name of the thing.

    • +
    • payload — (Proper JSON data)

      The state information, in JSON format.

    • +
    + +
    + +
  • + +
+ + +

Callback (callback):

+
    +
  • + function(err, data) { ... } +
    +
    +

    Called when a response from the service is returned.

    + + +
    +
    +
    + +

    Parameters:

    +
      + +
    • + + err + + + (Error) + + + + — +

      the error object returned from the request. +Set to null if the request is successful.

      +
      + +
    • + +
    • + + data + + + (Object) + + + + — +

      the de-serialized data returned from +the request. Set to null if a request error occurs. +The data object has the following properties:

      + +
        +
      • payload — (Buffer, Typed Array, Blob, String)

        The state information, in JSON format.

      • +
      + +
      + +
    • + +
    + + + +
    +
  • +
+ + +

Returns:

+
    + +
  • +

    Nothing

    +
    + +
  • + +
+ +
+
+ +
+ + +
+ + + + + + + + + + + + + + +
+ + diff --git a/manual/AWS/Lambda.html b/manual/AWS/Lambda.html new file mode 100644 index 0000000..069f148 --- /dev/null +++ b/manual/AWS/Lambda.html @@ -0,0 +1,406 @@ + + + + + + + Class: AWS.Lambda + + — AWS SDK for JavaScript + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ +

Class: AWS.Lambda + + + +

+
+
+
Identifier:
+
lambda
+
+
+
API Version:
+
2017-09-20
+
+ + + +
+
Defined in:
+
lambda.js
+
+ +
+

Overview

+
+

Constructs a service interface object. Each API operation is exposed as a +function on service.

+ +

Constructor Summary + collapse +

+ + + +

Method Summary + collapse +

+ + + + + + + + +
+

Constructor Details

+ +
+

+ + new GG.Lambda() ⇒ Object + + + + + +

+
+

Constructs a service object. This object has one method for each +API operation.

+ + +
+
+
+ +
+

Examples:

+ + +

Constructing a Lambda object

+

+ +
var lambda = new GG.Lambda();
+ +
+ +
+
+ +
+ +
+

Method Details

+ +
+

+ + invoke(params = {}, callback) ⇒ AWS.Request + + + + + +

+
+

Invokes a specific Lambda function.

+ +

In Greengrass, version of the Lambda which you would like to invoke needs to be provided.

+ +
+

Service Reference:

+ +
+ + + +
+
+
+ +
+

Examples:

+ + +

To invoke a Lambda function

+

+ +

+/* This operation invokes a Lambda function */
+
+ var params = {
+  ClientContext: "MyApp", 
+  FunctionName: "MyFunction", 
+  InvocationType: "Event", 
+  Payload: <json | binary>, 
+  Qualifier: "1"
+ };
+ lambda.invoke(params, function(err, data) {
+   if (err) console.log(err, err.stack); // an error occurred
+   else     console.log(data);           // successful response
+ });
+ + +

Calling the invoke operation

+

+ +
var params = {
+  FunctionName: 'STRING_VALUE', /* required */
+  ClientContext: 'STRING_VALUE',
+  InvocationType: Event | RequestResponse,
+  Payload: <json | binary>,
+  Qualifier: 'STRING_VALUE'
+};
+lambda.invoke(params, function(err, data) {
+  if (err) console.log(err, err.stack); // an error occurred
+  else     console.log(data);           // successful response
+});
+ +
+

Parameters:

+
    + +
  • + + params + + + (Object) + + + (defaults to: {}) + + + — +
      +
    • FunctionName — (String)

      The Lambda function name.

      You can specify Amazon Resource Name (ARN) of the function (for example, arn:aws:lambda:us-west-2:account-id:function:ThumbNail).

    • +
    • InvocationType — (String)

      By default, the Invoke API assumes RequestResponse invocation type. You can optionally request asynchronous execution by specifying Event as the InvocationType.

      + Possible values include: + +
        +
      • "Event"
      • +
      • "RequestResponse"
      • +
      +
    • +
    • ClientContext — (String)

      Using the ClientContext you can pass client-specific information to the Lambda function you are invoking. You can then process the client information in your Lambda function as you choose through the context variable. For an example of a ClientContext JSON, see the main page or an example folder for an example.

      The ClientContext JSON must be base64-encoded.

    • +
    • Payload

      Payload that you want to provide to your Lambda function as input. Please refer to the main page or examples for proper formats.

    • +
    • Qualifier — (String)

      You can use this optional parameter to specify a Lambda function version if it was not included in the FunctionName field. If you specify a function version, the API uses the qualified function ARN to invoke a specific Lambda function.

      If you don't provide this parameter, then the API uses the FunctionName field only. If it does not have a version number of the target lambda, the call will fail.

    • +
    + +
    + +
  • + +
+ + +

Callback (callback):

+
    +
  • + function(err, data) { ... } +
    +
    +

    Called when a response from the service is returned.

    + + +
    +
    +
    +

    Parameters:

    +
      + +
    • + + err + + + (Error) + + + + — +

      the error object returned from the request. +Set to null if the request is successful.

      +
      + +
    • + +
    • + + data + + + (Object) + + + + — +

      the de-serialized data returned from +the request. Set to null if a request error occurs. +The data object has the following properties:

      + +
        +
      • StatusCode — (Integer)

        The HTTP status code will be in the 200 range for successful request. For the RequestResponse invocation type this status code will be 200. For the Event invocation type this status code will be 202.

      • +
      • FunctionError — (String)

        Indicates whether an error occurred while executing the Lambda function. If an error occurred this field will have one of two values; Handled or Unhandled. Handled errors are errors that are reported by the function while the Unhandled errors are those detected and reported by AWS Lambda. Unhandled errors include out of memory errors and function timeouts. For information about how to report an Handled error, see Programming Model.

      • +
      • Payload — (Buffer, Typed Array, Blob, String)

        It is the result returned by the Lambda function. This is present only if the invocation type is RequestResponse.

        In the event of a function error this field contains a message describing the error. For the Handled errors the Lambda function will report this message. For Unhandled errors AWS Lambda reports the message.

      • +
      + +
      + +
    • + +
    + + + +
    +
  • +
+ +
+
+
+ + +
+ + + + + + + + + + + + + + +
+ + diff --git a/manual/AWS/SecretsManager.html b/manual/AWS/SecretsManager.html new file mode 100644 index 0000000..76ae854 --- /dev/null +++ b/manual/AWS/SecretsManager.html @@ -0,0 +1,288 @@ + + + + + + Class: AWS.SecretsManager + — AWS SDK for JavaScript + + + + + + + + + + + + +
+ + +
+ +

Class: AWS.SecretsManager +

+
+
+
Identifier:
+
SecretsManager
+
+
+
API Version:
+
2018-11-26
+
+
+
Defined in:
+
secretsmanager.js
+
+
+

Overview

+
+
+

Constructs a service interface object. Each API operation is exposed as a + function on service. +

+

Constructor Summary + collapse +

+ +

Method Summary + collapse +

+ +
+

Constructor Details

+
+

+ new GG.SecretsManager() ⇒ Object +

+
+
+

Constructs a service object. This object has one method for each + API operation. +

+
+
+
+
+

Examples:

+

+

+

Constructing a SecretsManager object

+
+

+
var secretsmanager = new GG.SecretsManager();
+
+
+
+
+
+

Method Details

+
+

+ getSecretValue(params = {}, callback) +

+
+
+

Retrieves a specific local secret value.

+
+
+
+
+

Examples:

+

+

+

Retrieving a local secret value

+
+

+

+/* This operation retrieves a local secret value */
+
+ var params = {
+   SecretId: "STRING_VALUE", 
+   VersionStage: "STRING_VALUE"
+ };
+ secretsmanager.getSecretValue(params, function(err, data) {
+   if (err) console.log(err, err.stack); // an error occurred
+   else     console.log(data);           // successful response
+ });
+
+

Parameters:

+
    +
  • + params + (Object) + (defaults to: {}) + — +
    +
      +
    • + SecretId — (String) +

      Specifies the secret containing the version that you want to retrieve. You can specify either the Amazon Resource Name (ARN) or the friendly name of the secret.

      +
    • +
    • + VersionStage — (String) +

      Specifies the secret version that you want to retrieve by the staging label attached to the version.

      +

      Staging labels are used to keep track of different versions during the rotation process.

      +
    • +
    +
    +
  • +
+

Callback(callback):

+
    +
  • + function(err, data) { ... } +
    +
    +

    Called when a response from the service is returned.

    +
    +
    +
    +

    Parameters:

    +
      +
    • + err + (Error) + — +
      +

      the error object returned from the request. + Set to null if the request is successful. +

      +
      +
    • +
    • + data + (Object) + — +
      +

      the de-serialized data returned from + the request. Set to null if a request error occurs. + The data object has the following properties: +

      +
        +
      • + ARN — (String) +

        The ARN of the secret.

        +
      • +
      • + Name — (String) +

        The friendly name of the secret.

        +
      • +
      • + VersionId — (String) +

        The unique identifier of this version of the secret.

        +
      • +
      • + SecretBinary — (Buffer, Typed Array, Blob, String) +

        The decrypted part of the protected secret information that was originally provided as binary data in the form of a byte array. The response parameter represents the binary data as a base64-encoded string.

        +
      • +
      • + SecretString — (String) +

        The decrypted part of the protected secret information that was originally provided as a string.

        +
      • +
      • + VersionStages — (Array<String>) +

        Specifies the secret version that you want to retrieve by the staging label attached to the version.

        +

        Staging labels are used to keep track of different versions during the rotation process.

        +
      • +
      +
      +
    • +
    +
    +
  • +
+

Returns:

+
    +
  • +
    +

    Nothing

    +
    +
  • +
+
+
+
+
+ + + + + + + + + + + +
+ + diff --git a/manual/class_list.html b/manual/class_list.html new file mode 100644 index 0000000..2aeab2e --- /dev/null +++ b/manual/class_list.html @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + Class List + + + +
+
+

Class List

+ + + +
+ + +
+ + + diff --git a/manual/css/common.css b/manual/css/common.css new file mode 100644 index 0000000..1e3fc91 --- /dev/null +++ b/manual/css/common.css @@ -0,0 +1,6 @@ +#full_list li.expander { color: #038; } +.service_list { list-style: none; padding: 0; margin: 0; font-size: 1.1em; clear: both; } +.service_list li { border-bottom: 1px solid #ccc; padding-bottom: 5px; margin-bottom: 7px; width: 40%; float: left; margin-right: 7px; } +#listing .service_list li small { font-size: 0.9em; } +.clear { clear: both; } +#capabilities-banner { margin-bottom: 12px; font-weight: bold; padding: 12px; } diff --git a/manual/css/full_list.css b/manual/css/full_list.css new file mode 100644 index 0000000..fa35982 --- /dev/null +++ b/manual/css/full_list.css @@ -0,0 +1,58 @@ +body { + margin: 0; + font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; + font-size: 13px; + height: 101%; + overflow-x: hidden; + background: #fafafa; +} + +h1 { padding: 12px 10px; padding-bottom: 0; margin: 0; font-size: 1.4em; } +.clear { clear: both; } +.fixed_header { position: fixed; background: #fff; width: 100%; padding-bottom: 10px; margin-top: 0; top: 0; z-index: 9999; height: 70px; } +#search { position: absolute; right: 5px; top: 9px; padding-left: 24px; } +#content.insearch #search, #content.insearch #noresults { background: url(data:image/gif;base64,R0lGODlhEAAQAPYAAP///wAAAPr6+pKSkoiIiO7u7sjIyNjY2J6engAAAI6OjsbGxjIyMlJSUuzs7KamppSUlPLy8oKCghwcHLKysqSkpJqamvT09Pj4+KioqM7OzkRERAwMDGBgYN7e3ujo6Ly8vCoqKjY2NkZGRtTU1MTExDw8PE5OTj4+PkhISNDQ0MrKylpaWrS0tOrq6nBwcKysrLi4uLq6ul5eXlxcXGJiYoaGhuDg4H5+fvz8/KKiohgYGCwsLFZWVgQEBFBQUMzMzDg4OFhYWBoaGvDw8NbW1pycnOLi4ubm5kBAQKqqqiQkJCAgIK6urnJyckpKSjQ0NGpqatLS0sDAwCYmJnx8fEJCQlRUVAoKCggICLCwsOTk5ExMTPb29ra2tmZmZmhoaNzc3KCgoBISEiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCAAAACwAAAAAEAAQAAAHaIAAgoMgIiYlg4kACxIaACEJCSiKggYMCRselwkpghGJBJEcFgsjJyoAGBmfggcNEx0flBiKDhQFlIoCCA+5lAORFb4AJIihCRbDxQAFChAXw9HSqb60iREZ1omqrIPdJCTe0SWI09GBACH5BAkIAAAALAAAAAAQABAAAAdrgACCgwc0NTeDiYozCQkvOTo9GTmDKy8aFy+NOBA7CTswgywJDTIuEjYFIY0JNYMtKTEFiRU8Pjwygy4ws4owPyCKwsMAJSTEgiQlgsbIAMrO0dKDGMTViREZ14kYGRGK38nHguHEJcvTyIEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDAggPg4iJAAMJCRUAJRIqiRGCBI0WQEEJJkWDERkYAAUKEBc4Po1GiKKJHkJDNEeKig4URLS0ICImJZAkuQAhjSi/wQyNKcGDCyMnk8u5rYrTgqDVghgZlYjcACTA1sslvtHRgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCQARAtOUoQRGRiFD0kJUYWZhUhKT1OLhR8wBaaFBzQ1NwAlkIszCQkvsbOHL7Y4q4IuEjaqq0ZQD5+GEEsJTDCMmIUhtgk1lo6QFUwJVDKLiYJNUd6/hoEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4uen4ICCA+IkIsDCQkVACWmhwSpFqAABQoQF6ALTkWFnYMrVlhWvIKTlSAiJiVVPqlGhJkhqShHV1lCW4cMqSkAR1ofiwsjJyqGgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCSMhREZGIYYGY2ElYebi56fhyWQniSKAKKfpaCLFlAPhl0gXYNGEwkhGYREUywag1wJwSkHNDU3D0kJYIMZQwk8MjPBLx9eXwuETVEyAC/BOKsuEjYFhoEAIfkECQgAAAAsAAAAABAAEAAAB2eAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4ueICImip6CIQkJKJ4kigynKaqKCyMnKqSEK05StgAGQRxPYZaENqccFgIID4KXmQBhXFkzDgOnFYLNgltaSAAEpxa7BQoQF4aBACH5BAkIAAAALAAAAAAQABAAAAdogACCg4SFggJiPUqCJSWGgkZjCUwZACQkgxGEXAmdT4UYGZqCGWQ+IjKGGIUwPzGPhAc0NTewhDOdL7Ykji+dOLuOLhI2BbaFETICx4MlQitdqoUsCQ2vhKGjglNfU0SWmILaj43M5oEAOwAAAAAAAAAAAA==) no-repeat center left; } +#full_list { padding: 0; list-style: none; margin-left: 0; margin-top: 80px; font-size: 1.1em; } +#full_list ul { padding: 0; } +#full_list li { padding: 0; margin: 0; list-style: none; } +#full_list li .item { padding: 5px 5px 5px 12px; } +#noresults { padding: 7px 12px; background: #fff; } +#content.insearch #noresults { margin-left: 7px; } +li.collapsed ul { display: none; } +li a.toggle { cursor: default; position: relative; left: -5px; top: 4px; text-indent: -999px; width: 10px; height: 9px; margin-left: -10px; display: block; float: left; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTM5jWRgMAAAAVdEVYdENyZWF0aW9uIFRpbWUAMy8xNC8wOeNZPpQAAAE2SURBVDiNrZTBccIwEEXfelIAHUA6CZ24BGaWO+FuzZAK4k6gg5QAdGAq+Bxs2Yqx7BzyL7Llp/VfzZeQhCTc/ezuGzKKnKSzpCxXJM8fwNXda3df5RZETlIt6YUzSQDs93sl8w3wBZxCCE10GM1OcWbWjB2mWgEH4Mfdyxm3PSepBHibgQE2wLe7r4HjEidpnXMYdQPKEMJcsZ4zs2POYQOcaPfwMVOo58zsAdMt18BuoVDPxUJRacELbXv3hUIX2vYmOUvi8C8ydz/ThjXrqKqqLbDIAdsCKBd+Wo7GWa7o9qzOQHVVVXeAbs+yHHCH4aTsaCOQqunmUy1yBUAXkdMIfMlgF5EXLo2OpV/c/Up7jG4hhHcYLgWzAZXUc2b2ixsfvc/RmNNfOXD3Q/oeL9axJE1yT9IOoUu6MGUkAAAAAElFTkSuQmCC) no-repeat bottom left; } +li.collapsed a.toggle { opacity: 0.5; cursor: default; background-position: top left; } +li { color: #888; cursor: pointer; } +li.deprecated { text-decoration: line-through; font-style: italic; } +li.odd { background: #f0f0f0; } +li.even { background: #fafafa; } +.item:hover { background: #ddd; } +li small:before { content: "("; } +li small:after { content: ")"; } +li small.search_info { display: none; } +a, a:visited { text-decoration: none; color: #05a; } +li.clicked > .item { background: #05a; color: #ccc; } +li.clicked > .item a, li.clicked > .item a:visited { color: #eee; } +li.clicked > .item a.toggle { opacity: 0.5; background-position: bottom right; } +li.collapsed.clicked a.toggle { background-position: top right; } +#search input { border: 1px solid #bbb; border-radius: 3px; } +#full_list_nav { margin-left: 10px; font-size: 0.9em; display: block; color: #aaa; } +#full_list_nav a, #nav a:visited { color: #358; } +#full_list_nav a:hover { background: transparent; color: #5af; } +#full_list_nav span:after { content: ' | '; } +#full_list_nav span:last-child:after { content: ''; } + +#content h1 { margin-top: 0; } +li { white-space: nowrap; cursor: normal; } +li small { display: block; font-size: 0.8em; } +li small:before { content: ""; } +li small:after { content: ""; } +li small.search_info { display: none; } +#search { width: 170px; position: static; margin: 3px; margin-left: 10px; font-size: 0.9em; color: #888; padding-left: 0; padding-right: 24px; } +#content.insearch #search { background-position: center right; } +#search input { width: 110px; } + +#full_list.insearch ul { display: block; } +#full_list.insearch .item { display: none; } +#full_list.insearch .found { display: block; padding-left: 11px !important; } +#full_list.insearch li a.toggle { display: none; } +#full_list.insearch li small.search_info { display: block; } diff --git a/manual/css/highlight.github.css b/manual/css/highlight.github.css new file mode 100644 index 0000000..e534e87 --- /dev/null +++ b/manual/css/highlight.github.css @@ -0,0 +1,127 @@ +/* + +github.com style (c) Vasily Polovnyov + +*/ + +pre code { + display: block; padding: 0.5em; + color: #333; + /*background: #f8f8ff*/ +} + +pre .comment, +pre .template_comment, +pre .diff .header, +pre .javadoc { + color: #998; + font-style: italic +} + +pre .keyword, +pre .css .rule .keyword, +pre .winutils, +pre .javascript .title, +pre .nginx .title, +pre .subst, +pre .request, +pre .status { + color: #333; + font-weight: bold +} + +pre .number, +pre .hexcolor, +pre .ruby .constant { + color: #099; +} + +pre .string, +pre .tag .value, +pre .phpdoc, +pre .tex .formula { + color: #d14 +} + +pre .title, +pre .id { + color: #900; + font-weight: bold +} + +pre .javascript .title, +pre .lisp .title, +pre .clojure .title, +pre .subst { + font-weight: normal +} + +pre .class .title, +pre .haskell .type, +pre .vhdl .literal, +pre .tex .command { + color: #458; + font-weight: bold +} + +pre .tag, +pre .tag .title, +pre .rules .property, +pre .django .tag .keyword { + color: #000080; + font-weight: normal +} + +pre .attribute, +pre .variable, +pre .lisp .body { + color: #008080 +} + +pre .regexp { + color: #009926 +} + +pre .class { + color: #458; + font-weight: bold +} + +pre .symbol, +pre .ruby .symbol .string, +pre .lisp .keyword, +pre .tex .special, +pre .prompt { + color: #990073 +} + +pre .built_in, +pre .lisp .title, +pre .clojure .built_in { + color: #0086b3 +} + +pre .preprocessor, +pre .pi, +pre .doctype, +pre .shebang, +pre .cdata { + color: #999; + font-weight: bold +} + +pre .deletion { + background: #fdd +} + +pre .addition { + background: #dfd +} + +pre .diff .change { + background: #0086b3 +} + +pre .chunk { + color: #aaa +} diff --git a/manual/css/style.css b/manual/css/style.css new file mode 100644 index 0000000..2f32085 --- /dev/null +++ b/manual/css/style.css @@ -0,0 +1,484 @@ +html { + width: 100%; + height: 100%; +} +body { + font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; + font-size: 13px; + width: 100%; + margin: 0; + padding: 0; + display: flex; + display: -webkit-flex; + display: -ms-flexbox; +} + +#nav { + position: relative; + width: 100%; + height: 100%; + border: 0; + border-right: 1px dotted #eee; + overflow: auto; +} +.nav_wrap { + margin: 0; + padding: 0; + width: 20%; + height: 100%; + position: relative; + display: flex; + display: -webkit-flex; + display: -ms-flexbox; + flex-shrink: 0; + -webkit-flex-shrink: 0; + -ms-flex: 1 0; +} +#resizer { + position: absolute; + right: -5px; + top: 0; + width: 10px; + height: 100%; + cursor: col-resize; + z-index: 9999; +} +#main { + flex: 5 1; + -webkit-flex: 5 1; + -ms-flex: 5 1; + outline: none; + position: relative; + background: #fff; + padding: 1.2em; + padding-top: 0.2em; +} + +@media (max-width: 920px) { + .nav_wrap { display: none; } +} + +@media (min-width: 920px) { + body { height: 100%; overflow: hidden; } + #main { height: 100%; overflow: auto; } + #search { display: none; } + #search_frame { display: none; } +} + +#main img { max-width: 100%; } +h1 { font-size: 25px; margin: 1em 0 0.5em; padding-top: 4px; border-top: 1px dotted #d5d5d5; } +h1.noborder { border-top: 0px; margin-top: 0; padding-top: 4px; } +h1.title { margin-bottom: 10px; } +h1.alphaindex { margin-top: 0; font-size: 22px; } +h2 { + padding: 0; + padding-bottom: 3px; + border-bottom: 1px #aaa solid; + font-size: 1.4em; + margin: 1.8em 0 0.5em; + position: relative; +} +h2 small { font-weight: normal; font-size: 0.7em; display: inline; position: absolute; right: 0; } +h2 small a { + display: block; + height: 20px; + border: 1px solid #aaa; + border-bottom: 0; + border-top-left-radius: 5px; + background: #f8f8f8; + position: relative; + padding: 2px 7px; +} +.clear { clear: both; } +.inline { display: inline; } +.inline p:first-child { display: inline; } +.docstring, .tags, #filecontents { font-size: 15px; line-height: 1.5145em; } +.docstring p > code, .docstring p > tt, .tags p > code, .tags p > tt { + color: #c7254e; background: #f9f2f4; padding: 2px 4px; font-size: 1em; + border-radius: 4px; +} +.docstring h1, .docstring h2, .docstring h3, .docstring h4 { padding: 0; border: 0; border-bottom: 1px dotted #bbb; } +.docstring h1 { font-size: 1.2em; } +.docstring h2 { font-size: 1.1em; } +.docstring h3, .docstring h4 { font-size: 1em; border-bottom: 0; padding-top: 10px; } +.summary_desc .object_link a, .docstring .object_link a { + font-family: monospace; font-size: 1.05em; + color: #05a; background: #EDF4FA; padding: 2px 4px; font-size: 1em; + border-radius: 4px; +} +.rdoc-term { padding-right: 25px; font-weight: bold; } +.rdoc-list p { margin: 0; padding: 0; margin-bottom: 4px; } + +/* style for */ +#filecontents table, .docstring table { border-collapse: collapse; } +#filecontents table th, #filecontents table td, +.docstring table th, .docstring table td { border: 1px solid #ccc; padding: 8px; padding-right: 17px; } +#filecontents table tr:nth-child(odd), +.docstring table tr:nth-child(odd) { background: #eee; } +#filecontents table tr:nth-child(even), +.docstring table tr:nth-child(even) { background: #fff; } +#filecontents table th, .docstring table th { background: #fff; } + +/* style for
    */ +#filecontents li > p, .docstring li > p { margin: 0px; } +#filecontents ul, .docstring ul { padding-left: 20px; } +/* style for
    */ +#filecontents dl, .docstring dl { border: 1px solid #ccc; } +#filecontents dt, .docstring dt { background: #ddd; font-weight: bold; padding: 3px 5px; } +#filecontents dd, .docstring dd { padding: 5px 0px; margin-left: 18px; } +#filecontents dd > p, .docstring dd > p { margin: 0px; } + +.note { + color: #222; + margin: 20px 0; + padding: 10px; + border: 1px solid #eee; + border-radius: 3px; + display: block; +} +.docstring .note { + border-left-color: #ccc; + border-left-width: 5px; +} +.note.todo { background: #ffffc5; border-color: #ececaa; } +.note.returns_void { background: #efefef; } +.note.deprecated { background: #ffe5e5; border-color: #e9dada; } +.note.title.deprecated { background: #ffe5e5; border-color: #e9dada; } +.note.private { background: #ffffc5; border-color: #ececaa; } +.note.title { padding: 3px 6px; font-size: 0.9em; font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; display: inline; } +.summary_signature + .note.title { margin-left: 7px; } +h1 .note.title { font-size: 0.5em; font-weight: normal; padding: 3px 5px; position: relative; top: -3px; text-transform: capitalize; } +.note.title { background: #efefef; } +.note.title.constructor { color: #fff; background: #6a98d6; border-color: #6689d6; } +.note.title.writeonly { color: #fff; background: #45a638; border-color: #2da31d; } +.note.title.readonly { color: #fff; background: #6a98d6; border-color: #6689d6; } +.note.title.private { background: #d5d5d5; border-color: #c5c5c5; } +.note.title.not_defined_here { background: transparent; border: none; font-style: italic; } +.discussion .note { margin-top: 6px; } +.discussion .note:first-child { margin-top: 0; } + +h3.inherited { + font-style: italic; + font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; + font-weight: normal; + padding: 0; + margin: 0; + margin-top: 12px; + margin-bottom: 3px; + font-size: 13px; +} +p.inherited { + padding: 0; + margin: 0; + margin-left: 25px; +} + +.box_info dl { + margin: 0; + border: 0; + width: 100%; + font-size: 1em; + display: flex; + display: -webkit-flex; + display: -ms-flexbox; +} +.box_info dl dt { + flex-shrink: 0; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + width: 100px; + text-align: right; + font-weight: bold; + border: 1px solid #aaa; + border-width: 1px 0px 0px 1px; + padding: 6px 0; + padding-right: 10px; +} +.box_info dl dd { + flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex: 1; + max-width: 420px; + padding: 6px 0; + padding-right: 20px; + border: 1px solid #aaa; + border-width: 1px 1px 0 0; + overflow: hidden; + position: relative; +} +.box_info dl:last-child > * { + border-bottom: 1px solid #aaa; +} +.box_info dl:nth-child(odd) > * { background: #eee; } +.box_info dl:nth-child(even) > * { background: #fff; } +.box_info dl > * { margin: 0; } + +ul.toplevel { list-style: none; padding-left: 0; font-size: 1.1em; } +.index_inline_list { padding-left: 0; font-size: 1.1em; } +.index_inline_list li { list-style: none; display: inline; padding: 7px 12px; line-height: 35px; } + +dl.constants { margin-left: 10px; } +dl.constants dt { font-weight: bold; font-size: 1.1em; margin-bottom: 5px; } +dl.constants dd { width: 75%; white-space: pre; font-family: monospace; margin-bottom: 18px; } +dl.constants .docstring .note:first-child { margin-top: 5px; } + +.summary_desc { + margin-left: 32px; + display: block; + font-family: sans-serif; + font-size: 1.1em; + margin-top: 8px; + line-height: 1.5145em; + margin-bottom: 0.8em; +} +.summary_desc tt { font-size: 0.9em; } +dl.constants .note { padding: 2px 6px; padding-right: 12px; margin-top: 6px; } +dl.constants .docstring { margin-left: 32px; font-size: 0.9em; font-weight: normal; } +dl.constants .tags { padding-left: 32px; font-size: 0.9em; line-height: 0.8em; } +dl.constants .discussion *:first-child { margin-top: 0; } +dl.constants .discussion *:last-child { margin-bottom: 0; } + +.method_details { border-top: 1px dotted #ccc; margin-top: 25px; padding-top: 0; } +.method_details.first { border: 0; margin-top: 5px; } +.method_details.first h3.signature { margin-top: 1em; } +p.signature, h3.signature { + font-size: 1.1em; font-weight: normal; font-family: Monaco, Consolas, Courier, monospace; + padding: 6px 10px; margin-top: 1em; + background: #E8F4FF; border: 1px solid #d8d8e5; border-radius: 5px; +} +p.signature tt, +h3.signature tt { font-family: Monaco, Consolas, Courier, monospace; } +p.signature .overload, +h3.signature .overload { display: block; } +p.signature .extras, +h3.signature .extras { font-weight: normal; font-family: sans-serif; color: #444; font-size: 1em; } +p.signature .not_defined_here, +h3.signature .not_defined_here, +p.signature .aliases, +h3.signature .aliases { display: block; font-weight: normal; font-size: 0.9em; font-family: sans-serif; margin-top: 0px; color: #555; } +p.signature .aliases .names, +h3.signature .aliases .names { font-family: Monaco, Consolas, Courier, monospace; font-weight: bold; color: #000; font-size: 1.2em; } + +.tags .tag_title { font-size: 1.05em; margin-bottom: 0; font-weight: bold; } +.tags .tag_title tt { color: initial; padding: initial; background: initial; } +.tags ul { margin-top: 5px; padding-left: 30px; list-style: square; } +.tags ul li { margin-bottom: 3px; } +.tags ul .name { font-family: monospace; font-weight: bold; } +.tags ul .note { padding: 3px 6px; } +.tags { margin-bottom: 12px; } + +.tags .examples .tag_title { margin-bottom: 10px; font-weight: bold; } +.tags .examples .inline p { padding: 0; margin: 0; font-weight: bold; font-size: 1em; } +.tags .examples .inline p:before { content: "β–Έ"; font-size: 1em; margin-right: 5px; } + +.tags .overload .overload_item { list-style: none; margin-bottom: 25px; } +.tags .overload .overload_item .signature { + padding: 2px 8px; + background: #F1F8FF; border: 1px solid #d8d8e5; border-radius: 3px; +} +.tags .overload .signature { margin-left: -15px; font-family: monospace; display: block; font-size: 1.1em; } +.tags .overload .docstring { margin-top: 15px; } + +.defines { display: none; } + +#method_missing_details .notice.this { position: relative; top: -8px; color: #888; padding: 0; margin: 0; } + +.showSource { font-size: 0.9em; } +.showSource a, .showSource a:visited { text-decoration: none; color: #666; } + +#content a, #content a:visited { text-decoration: none; color: #05a; } +#content a:hover { background: #ffffa5; } + +ul.summary { + list-style: none; + font-family: monospace; + font-size: 1em; + line-height: 1.5em; + padding-left: 0px; +} +ul.summary a, ul.summary a:visited { + text-decoration: none; font-size: 1.1em; +} +ul.summary li { margin-bottom: 5px; } +.summary .summary_signature { + padding: 4px 8px; + background: #f8f8f8; + border: 1px solid #f0f0f0; + border-radius: 5px; +} +.summary_signature:hover { background: #CFEBFF; border-color: #A4CCDA; cursor: pointer; } +ul.summary.compact li { display: inline-block; margin: 0px 5px 0px 0px; line-height: 2.6em;} +ul.summary.compact .summary_signature { padding: 5px 7px; padding-right: 4px; } +#content .summary_signature:hover a, +#content .summary_signature:hover a:visited { + background: transparent; + color: #049; +} + +p.inherited a { font-family: monospace; font-size: 0.9em; } +p.inherited { word-spacing: 5px; font-size: 1.2em; } + +p.children { font-size: 1.2em; } +p.children a { font-size: 0.9em; } +p.children strong { font-size: 0.8em; } +p.children strong.modules { padding-left: 5px; } + +ul.fullTree { display: none; padding-left: 0; list-style: none; margin-left: 0; margin-bottom: 10px; } +ul.fullTree ul { margin-left: 0; padding-left: 0; list-style: none; } +ul.fullTree li { text-align: center; padding-top: 18px; padding-bottom: 12px; background: url(data:image/gif;base64,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) no-repeat top center; } +ul.fullTree li:first-child { padding-top: 0; background: transparent; } +ul.fullTree li:last-child { padding-bottom: 0; } +.showAll ul.fullTree { display: block; } +.showAll .inheritName { display: none; } + +#search { position: absolute; right: 12px; top: 0px; z-index: 9000; } +#search a { + display: block; float: left; + padding: 4px 8px; text-decoration: none; color: #05a; fill: #05a; + border: 1px solid #d8d8e5; + border-bottom-left-radius: 3px; border-bottom-right-radius: 3px; + background: #F1F8FF; + box-shadow: -1px 1px 3px #ddd; +} +#search a:hover { background: #f5faff; color: #06b; fill: #06b; } +#search a.active { + background: #568; padding-bottom: 20px; color: #fff; fill: #fff; + border: 1px solid #457; + border-top-left-radius: 5px; border-top-right-radius: 5px; +} +#search a.inactive { color: #999; fill: #999; } +.inheritanceTree, .toggleDefines { + float: right; + border-left: 1px solid #aaa; + position: absolute; top: 0; right: 0; + height: 100%; + background: #f6f6f6; + padding: 5px; + min-width: 55px; + text-align: center; +} + +#menu { font-size: 1.3em; color: #bbb; } +#menu .title, #menu a { font-size: 0.7em; } +#menu .title a { font-size: 1em; } +#menu .title { color: #555; } +#menu a, #menu a:visited { color: #333; text-decoration: none; border-bottom: 1px dotted #bbd; } +#menu a:hover { color: #05a; } + +#footer { margin-top: 15px; border-top: 1px solid #ccc; text-align: center; padding: 7px 0; color: #999; } +#footer a, #footer a:visited { color: #444; text-decoration: none; border-bottom: 1px dotted #bbd; } +#footer a:hover { color: #05a; } + +#listing ul.alpha { font-size: 1.1em; } +#listing ul.alpha { margin: 0; padding: 0; padding-bottom: 10px; list-style: none; } +#listing ul.alpha li.letter { font-size: 1.4em; padding-bottom: 10px; } +#listing ul.alpha ul { margin: 0; padding-left: 15px; } +#listing ul small { color: #666; font-size: 0.7em; } + +li.r1 { background: #f0f0f0; } +li.r2 { background: #fafafa; } + +#search_frame { + z-index: 9999; + background: #fff; + display: none; + position: absolute; + top: 40px; + right: 12px; + width: 500px; + max-width: 80%; + height: 80%; + overflow-y: scroll; + border: 1px solid #999; + border-collapse: collapse; + box-shadow: -7px 5px 25px #aaa; + border-radius: 2px; +} + +#content ul.summary li.deprecated .summary_signature a, +#content ul.summary li.deprecated .summary_signature a:visited { text-decoration: line-through; font-style: italic; } + +#toc { + position: relative; + float: right; + overflow-x: auto; + right: -3px; + margin-left: 20px; + margin-bottom: 20px; + padding: 20px; padding-right: 30px; + max-width: 300px; + z-index: 5000; + background: #fefefe; + border: 1px solid #ddd; + box-shadow: -2px 2px 6px #bbb; +} +#toc .title { margin: 0; } +#toc ol { padding-left: 1.8em; } +#toc li { font-size: 1.1em; line-height: 1.7em; } +#toc > ol > li { font-size: 1.1em; font-weight: bold; } +#toc ol > ol { font-size: 0.9em; } +#toc ol ol > ol { padding-left: 2.3em; } +#toc ol + li { margin-top: 0.3em; } +#toc.hidden { padding: 10px; background: #fefefe; box-shadow: none; } +#toc.hidden:hover { background: #fafafa; } +#filecontents h1 + #toc.nofloat { margin-top: 0; } +@media (max-width: 560px) { + #toc { + margin-left: 0; + margin-top: 16px; + float: none; + max-width: none; + } +} + +/* syntax highlighting */ +.source_code { display: none; padding: 3px 8px; border-left: 8px solid #ddd; margin-top: 5px; } +#filecontents pre.code, .docstring pre.code, .source_code pre { font-family: monospace; } +#filecontents pre.code, .docstring pre.code { display: block; } +.source_code .lines { padding-right: 12px; color: #555; text-align: right; } +#filecontents pre.code, .docstring pre.code, +.tags pre.example { + padding: 9px 14px; + margin-top: 4px; + border: 1px solid #e1e1e8; + background: #f7f7f9; + border-radius: 4px; + font-size: 1em; + overflow-x: auto; + line-height: 1.2em; +} +pre.code { color: #000; } +pre.code .info.file { color: #555; } +pre.code .val { color: #036A07; } +pre.code .tstring_content, +pre.code .heredoc_beg, pre.code .heredoc_end, +pre.code .qwords_beg, pre.code .qwords_end, +pre.code .tstring, pre.code .dstring { color: #036A07; } +pre.code .fid, pre.code .rubyid_new, pre.code .rubyid_to_s, +pre.code .rubyid_to_sym, pre.code .rubyid_to_f, +pre.code .dot + pre.code .id, +pre.code .rubyid_to_i pre.code .rubyid_each { color: #0085FF; } +pre.code .comment { color: #0066FF; } +pre.code .const, pre.code .constant { color: #585CF6; } +pre.code .label, +pre.code .symbol { color: #C5060B; } +pre.code .kw, +pre.code .rubyid_require, +pre.code .rubyid_extend, +pre.code .rubyid_include { color: #0000FF; } +pre.code .ivar { color: #318495; } +pre.code .gvar, +pre.code .rubyid_backref, +pre.code .rubyid_nth_ref { color: #6D79DE; } +pre.code .regexp, .dregexp { color: #036A07; } +pre.code a { border-bottom: 1px dotted #bbf; } + + +.tags .callback .callback_item { list-style: none; margin-bottom: 25px; } +.tags .callback .callback_item .signature { + padding: 6px 12px; + margin-bottom: 7px; + background: #fcfcfc; border: 1px solid #eee; border-radius: 3px; + margin-left: -15px; font-family: monospace; display: block; font-size: 1em; +} +.summary .note.title.event { font-size: 1.1em; font-family: monospace; } diff --git a/manual/index.html b/manual/index.html new file mode 100644 index 0000000..2f0adcf --- /dev/null +++ b/manual/index.html @@ -0,0 +1,241 @@ + + + + + + File: README + + — AWS Greengrass Core SDK for JavaScript + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + +
    + +

    AWS Greengrass Core SDK for JavaScript

    + +

    The AWS Greengrass Core SDK for JavaScript allows developers to write JavaScript Lambda functions which will run within Greengrass.

    + +

    Overview

    +

    This document provides instructions for preparing your Greengrass Core environment to run Lambda functions written in JavaScript. It also includes examples on how to develop a Lambda function in JavaScript as well as packaging and running an example Hello World file in JavaScript for your Greengrass core. + +

    Preparing your Greengrass to run NodeJS Lambda functions

    +The environment where Greengrass is running on needs to be able to run NodeJS 6.10 applications. +
      +
    • Install NodeJS 6.10 for your platform. You can download the newest NodeJS from https://nodejs.org/en/download/. +
    • When you untar the package downloaded from NodeJS website, you will find node file under bin directory.
    • +
    • Copy the file to /usr/bin or /usr/local/bin folder.
    • +
    • Rename the file to nodejs6.10
    • +
    • Make sure the file is not a symlink.
    • +
    • Note: Currently, nodejs website distributes 6.11 version of nodejs. This also works as long as the binary name is renamed to nodejs6.10.
    • +
    + +

    Getting Started - Hello World

    +
      +
    • Copy samples/HelloWorld folder to your workspace.
    • +
    • Create a folder node_modules under HelloWorld folder.
    • +
    • Unzip aws-greengrass-core-sdk-js.zip into the folder. It should create a folder HelloWorld/node_modules/aws-greengrass-core-sdk
    • +
    • Zip up the content of HelloWorld folder so that the index.js is on the top of the zip file structure.
    • +
    • Go to AWS Lambda Console.
    • +
    • Create a new function.
    • +
    • Choose the Runtime as nodejs 6.10
    • +
    • Upload the zip file in Lambda function code section.
    • +
    • Handler is index.handler
    • +
    • Choose any role as the role is not used within Greengrass.
    • +
    • After creating the function, publish the Lambda.
    • +
    • Create an Alias and point to the Published version (not $LATEST).
    • +
    • Go to your Greengrass Group and add the Lambda under Lambdas section.
    • +
    • Click on the Lambda and change the Lambda lifecycle to Make this function long-lived and keep it running indefinitely.
    • +
    • +Add a Subscription with the following configuration: +
        +
      • Source: Lambda which you just created and added to the group
      • +
      • Target: IoT Cloud
      • +
      • Topic: hello/world
      • +
      +
    • +
    • Deploy. A message from your Lambda should be published to the topic hello/world in the cloud every 5 seconds. You can check this by going to AWS IoT's Test page and subscribing to topic hello/world.
    • +
    + +

    Including aws-greengrass-core-sdk with your function

    +Unzip the SDK into your node_modules folder of your function. This should create a aws-greengrass-core-sdk folder which includes the SDK. + +

    Logging in NodeJS Lambdas

    +

    Your console.log operation will be logged as INFO. A console.error operation will be logged as ERROR. Currently, our NodeJS SDK only allows you to log at INFO or ERROR level only.

    + +

    Supported Datatypes

    +

    From GGC version 1.5, you can send both JSON and binary data as a payload when you invoking other Lambdas or publishing a message using IotData service. In order to make your lambda be able to handle binary payload, you need to configure the lambda in Greengrass console to mark it using binary input payload so that GGC can know how to deal with the data.

    + +

    Supported Context

    +

    In Greengrass, you can send a context object in a JSON format to be passed to another Lambda that is being invoked. The context format looks like this: + +{ + custom: { + customData: 'customData', + }, +} + +

    + + +

    Compatibility

    +
    +
    +

    CompatibilityΒΆ

    +

    As new features are added to AWS Greengrass, previous versions of the Greengrass SDK will be incompatible with newer versions of the AWS Greengrass + core. The following table lists the compatible SDKs for all GGC releases.

    + + +
+ + + + + + + + + + + + +
GGC VersionCompatible SDK Versions
1.0.x-1.6.x1.0.x-1.2.x
1.7.x1.0.x-1.3.x
+ +
+
+

1.3.1 UpdatesΒΆ

+

Improved log level granularity.

+
+ +
+

1.3.0 UpdatesΒΆ

+

SDK supports SecretsManager client.

+
+ +
+

1.2.0 UpdatesΒΆ

+

SDK and GGC compatibility check takes place in the background.

+
+ +
+

1.1.0 UpdatesΒΆ

+

Lambda only accepted payload in JSON format. With this update, Invoking or publishing binary payload to a lambda is supported.

+
+ +
+

1.0.1 UpdatesΒΆ

+

SShadow operations were not receiving responses from the local shadow properly. This has been fixed.

+

Lambda Invoke function's InvocationType's default value was Event. This has been changed to RequestResponse.

+
+ +

Getting Help

+ + + + +

License

+Apache 2.0 +

+
+
+ + + + + + + + + + + + + + +
+ + diff --git a/manual/js/app.js b/manual/js/app.js new file mode 100644 index 0000000..c9d6aff --- /dev/null +++ b/manual/js/app.js @@ -0,0 +1,243 @@ +(function() { + +var localStorage = {}, sessionStorage = {}; +try { localStorage = window.localStorage; } catch (e) { } +try { sessionStorage = window.sessionStorage; } catch (e) { } + +function createSourceLinks() { + $('.method_details_list .source_code'). + before("[View source]"); + $('.toggleSource').toggle(function() { + $(this).parent().nextAll('.source_code').slideDown(100); + $(this).text("Hide source"); + }, + function() { + $(this).parent().nextAll('.source_code').slideUp(100); + $(this).text("View source"); + }); +} + +function createDefineLinks() { + var tHeight = 0; + $('.defines').after(" more..."); + $('.toggleDefines').toggle(function() { + tHeight = $(this).parent().prev().height(); + $(this).prev().css('display', 'inline'); + $(this).parent().prev().height($(this).parent().height()); + $(this).text("(less)"); + }, + function() { + $(this).prev().hide(); + $(this).parent().prev().height(tHeight); + $(this).text("more..."); + }); +} + +function createFullTreeLinks() { + var tHeight = 0; + $('.inheritanceTree').toggle(function() { + tHeight = $(this).parent().prev().height(); + $(this).parent().toggleClass('showAll'); + $(this).text("(hide)"); + $(this).parent().prev().height($(this).parent().height()); + }, + function() { + $(this).parent().toggleClass('showAll'); + $(this).parent().prev().height(tHeight); + $(this).text("show all"); + }); +} + +function searchFrameButtons() { + $('.full_list_link').click(function() { + toggleSearchFrame(this, $(this).attr('href')); + return false; + }); + window.addEventListener('message', function(e) { + if (e.data === 'navEscape') { + $('#search_frame').slideUp(100); + $('#search a').removeClass('active inactive'); + $(window).focus(); + } + }); + + $(window).resize(function() { + if ($('#search:visible').length === 0) { + $('#search_frame').slideUp(100); + $('#search a').removeClass('active inactive'); + $(window).focus(); + } + }); +} + +function toggleSearchFrame(id, link) { + var frame = $('#search_frame'); + $('#search a').removeClass('active').addClass('inactive'); + if (frame.attr('src') === link && frame.css('display') !== "none") { + frame.slideUp(100); + $('#search a').removeClass('active inactive'); + } + else { + $(id).addClass('active').removeClass('inactive'); + if (frame.attr('src') !== link) frame.attr('src', link); + frame.slideDown(100); + } +} + +function linkSummaries() { + $('.summary_signature').click(function() { + document.location = $(this).find('a').attr('href'); + }); +} + +function summaryToggle() { + $('.summary_toggle').click(function(e) { + e.preventDefault(); + localStorage.summaryCollapsed = $(this).text(); + $('.summary_toggle').each(function() { + $(this).text($(this).text() == "collapse" ? "expand" : "collapse"); + var next = $(this).parent().parent().nextAll('ul.summary').first(); + if (next.hasClass('compact')) { + next.toggle(); + next.nextAll('ul.summary').first().toggle(); + } + else if (next.hasClass('summary')) { + var list = $('
    '); + list.html(next.html()); + list.find('.summary_desc, .note').remove(); + list.find('a').each(function() { + $(this).html($(this).find('strong').html()); + $(this).parent().html($(this)[0].outerHTML); + }); + next.before(list); + next.toggle(); + } + }); + return false; + }); + if (localStorage.summaryCollapsed == "collapse") { + $('.summary_toggle').first().click(); + } else { localStorage.summaryCollapsed = "expand"; } +} + +function generateTOC() { + if ($('#filecontents').length === 0) return; + var _toc = $('
      '); + var show = false; + var toc = _toc; + var counter = 0; + var tags = ['h2', 'h3', 'h4', 'h5', 'h6']; + var i; + if ($('#filecontents h1').length > 1) tags.unshift('h1'); + for (i = 0; i < tags.length; i++) { tags[i] = '#filecontents ' + tags[i]; } + var lastTag = parseInt(tags[0][1], 10); + $(tags.join(', ')).each(function() { + if ($(this).parents('.method_details .docstring').length != 0) return; + if (this.id == "filecontents") return; + show = true; + var thisTag = parseInt(this.tagName[1], 10); + if (this.id.length === 0) { + var proposedId = $(this).attr('toc-id'); + if (typeof(proposedId) != "undefined") this.id = proposedId; + else { + var proposedId = $(this).text().replace(/[^a-z0-9-]/ig, '_'); + if ($('#' + proposedId).length > 0) { proposedId += counter; counter++; } + this.id = proposedId; + } + } + if (thisTag > lastTag) { + for (i = 0; i < thisTag - lastTag; i++) { + var tmp = $('
        '); toc.append(tmp); toc = tmp; + } + } + if (thisTag < lastTag) { + for (i = 0; i < lastTag - thisTag; i++) toc = toc.parent(); + } + var title = $(this).attr('toc-title'); + if (typeof(title) == "undefined") title = $(this).text(); + toc.append('
      1. ' + title + '
      2. '); + lastTag = thisTag; + }); + if (!show) return; + html = ''; + $('#content').prepend(html); + $('#toc').append(_toc); + $('#toc .hide_toc').toggle(function() { + $('#toc .top').slideUp('fast'); + $('#toc').toggleClass('hidden'); + $('#toc .title small').toggle(); + }, function() { + $('#toc .top').slideDown('fast'); + $('#toc').toggleClass('hidden'); + $('#toc .title small').toggle(); + }); +} + +function navResizeFn(e) { + if (e.which !== 1) { + navResizeFnStop(); + return; + } + + sessionStorage.navWidth = e.pageX.toString(); + $('.nav_wrap').css('width', e.pageX); + $('.nav_wrap').css('-ms-flex', 'inherit'); +} + +function navResizeFnStop() { + $(window).unbind('mousemove', navResizeFn); + window.removeEventListener('message', navMessageFn, false); +} + +function navMessageFn(e) { + if (e.data.action === 'mousemove') navResizeFn(e.data.event); + if (e.data.action === 'mouseup') navResizeFnStop(); +} + +function navResizer() { + $('#resizer').mousedown(function(e) { + e.preventDefault(); + $(window).mousemove(navResizeFn); + window.addEventListener('message', navMessageFn, false); + }); + $(window).mouseup(navResizeFnStop); + + if (sessionStorage.navWidth) { + navResizeFn({which: 1, pageX: parseInt(sessionStorage.navWidth, 10)}); + } +} + +function navExpander() { + var done = false, timer = setTimeout(postMessage, 500); + function postMessage() { + if (done) return; + clearTimeout(timer); + var opts = { action: 'expand', path: pathId }; + document.getElementById('nav').contentWindow.postMessage(opts, '*'); + done = true; + } + + window.addEventListener('message', function(event) { + if (event.data === 'navReady') postMessage(); + return false; + }, false); +} + +function mainFocus() { + $('#main')[0].focus(); +} + +$(document).ready(function() { + navResizer(); + navExpander(); + createSourceLinks(); + createDefineLinks(); + createFullTreeLinks(); + searchFrameButtons(); + linkSummaries(); + summaryToggle(); + generateTOC(); + mainFocus(); +}); + +})(); diff --git a/manual/js/full_list.js b/manual/js/full_list.js new file mode 100644 index 0000000..139e5b7 --- /dev/null +++ b/manual/js/full_list.js @@ -0,0 +1,216 @@ +(function() { + +var $clicked = $(null); +var searchTimeout = null; +var searchCache = []; +var caseSensitiveMatch = false; +var ignoreKeyCodeMin = 8; +var ignoreKeyCodeMax = 46; +var commandKey = 91; + +RegExp.escape = function(text) { + return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); +} + +function escapeShortcut() { + $(document).keydown(function(evt) { + if (evt.which == 27) { + window.parent.postMessage('navEscape', '*'); + } + }); +} + +function navResizer() { + $(window).mousemove(function(e) { + window.parent.postMessage({ + action: 'mousemove', event: {pageX: e.pageX, which: e.which} + }, '*'); + }).mouseup(function(e) { + window.parent.postMessage({action: 'mouseup'}, '*'); + }); + window.parent.postMessage("navReady", "*"); +} + +function clearSearchTimeout() { + clearTimeout(searchTimeout); + searchTimeout = null; +} + +function enableLinks() { + // load the target page in the parent window + $('#full_list li').on('click', function(evt) { + $('#full_list li').removeClass('clicked'); + $clicked = $(this); + $clicked.addClass('clicked'); + + if (evt.target.tagName === 'A') return true; + + var elem = $clicked.find('> .item .object_link a')[0]; + var e = evt.originalEvent; + var newEvent = new MouseEvent(evt.originalEvent.type); + newEvent.initMouseEvent(e.type, e.canBubble, e.cancelable, e.view, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget); + elem.dispatchEvent(newEvent); + evt.preventDefault(); + evt.stopPropagation(); + return false; + }); +} + +function enableToggles() { + // show/hide nested classes on toggle click + $('#full_list a.toggle').on('click', function(evt) { + evt.stopPropagation(); + evt.preventDefault(); + $(this).parent().parent().toggleClass('collapsed'); + highlight(); + }); +} + +function populateSearchCache() { + $('#full_list li .item').each(function() { + var $node = $(this); + var $link = $node.find('.object_link a'); + if ($link.length > 0) { + searchCache.push({ + node: $node, + link: $link, + name: $link.text(), + fullName: $link.attr('title').split(' ')[0] + }); + } + }); +} + +function enableSearch() { + $('#search input').keyup(function(event) { + if (ignoredKeyPress(event)) return; + if (this.value === "") { + clearSearch(); + } else { + performSearch(this.value); + } + }); + + $('#full_list').after(""); +} + +function ignoredKeyPress(event) { + if ( + (event.keyCode > ignoreKeyCodeMin && event.keyCode < ignoreKeyCodeMax) || + (event.keyCode == commandKey) + ) { + return true; + } else { + return false; + } +} + +function clearSearch() { + clearSearchTimeout(); + $('#full_list .found').removeClass('found').each(function() { + var $link = $(this).find('.object_link a'); + $link.text($link.text()); + }); + $('#full_list, #content').removeClass('insearch'); + $clicked.parents().removeClass('collapsed'); + highlight(); +} + +function performSearch(searchString) { + clearSearchTimeout(); + $('#full_list, #content').addClass('insearch'); + $('#noresults').text('').hide(); + partialSearch(searchString, 0); +} + +function partialSearch(searchString, offset) { + var lastRowClass = ''; + var i = null; + for (i = offset; i < Math.min(offset + 50, searchCache.length); i++) { + var item = searchCache[i]; + var searchName = (searchString.indexOf('::') != -1 ? item.fullName : item.name); + var matchString = buildMatchString(searchString); + var matchRegexp = new RegExp(matchString, caseSensitiveMatch ? "" : "i"); + if (searchName.match(matchRegexp) == null) { + item.node.removeClass('found'); + item.link.text(item.link.text()); + } + else { + item.node.addClass('found'); + item.node.removeClass(lastRowClass).addClass(lastRowClass == 'r1' ? 'r2' : 'r1'); + lastRowClass = item.node.hasClass('r1') ? 'r1' : 'r2'; + item.link.html(item.name.replace(matchRegexp, "$&")); + } + } + if(i == searchCache.length) { + searchDone(); + } else { + searchTimeout = setTimeout(function() { + partialSearch(searchString, i); + }, 0); + } +} + +function searchDone() { + searchTimeout = null; + highlight(); + if ($('#full_list li:visible').size() === 0) { + $('#noresults').text('No results were found.').hide().fadeIn(); + } else { + $('#noresults').text('').hide(); + } + $('#content').removeClass('insearch'); +} + +function buildMatchString(searchString, event) { + caseSensitiveMatch = searchString.match(/[A-Z]/) != null; + var regexSearchString = RegExp.escape(searchString); + if (caseSensitiveMatch) { + regexSearchString += "|" + + $.map(searchString.split(''), function(e) { return RegExp.escape(e); }). + join('.+?'); + } + return regexSearchString; +} + +function highlight() { + $('#full_list li:visible').each(function(n) { + $(this).removeClass('even odd').addClass(n % 2 == 0 ? 'odd' : 'even'); + }); +} + +/** + * Expands the tree to the target element and its immediate + * children. + */ +function expandTo(path) { + var $target = $(document.getElementById('object_' + path)); + $target.addClass('clicked'); + $target.removeClass('collapsed'); + $target.parentsUntil('#full_list', 'li').removeClass('collapsed'); + if($target[0]) { + window.scrollTo(window.scrollX, $target.offset().top - 250); + highlight(); + } +} + +function windowEvents(event) { + var msg = event.data; + if (msg.action === "expand") { + expandTo(msg.path); + } + return false; +} + +window.addEventListener("message", windowEvents, false); + +$(document).ready(function() { + escapeShortcut(); + navResizer(); + enableLinks(); + enableToggles(); + populateSearchCache(); + enableSearch(); +}); + +})(); diff --git a/manual/js/highlight.pack.js b/manual/js/highlight.pack.js new file mode 100644 index 0000000..5cf8ae5 --- /dev/null +++ b/manual/js/highlight.pack.js @@ -0,0 +1 @@ +var hljs=new function(){function l(o){return o.replace(/&/gm,"&").replace(//gm,">")}function b(p){for(var o=p.firstChild;o;o=o.nextSibling){if(o.nodeName=="CODE"){return o}if(!(o.nodeType==3&&o.nodeValue.match(/\s+/))){break}}}function h(p,o){return Array.prototype.map.call(p.childNodes,function(q){if(q.nodeType==3){return o?q.nodeValue.replace(/\n/g,""):q.nodeValue}if(q.nodeName=="BR"){return"\n"}return h(q,o)}).join("")}function a(q){var p=(q.className+" "+q.parentNode.className).split(/\s+/);p=p.map(function(r){return r.replace(/^language-/,"")});for(var o=0;o"}while(x.length||v.length){var u=t().splice(0,1)[0];y+=l(w.substr(p,u.offset-p));p=u.offset;if(u.event=="start"){y+=s(u.node);r.push(u.node)}else{if(u.event=="stop"){var o,q=r.length;do{q--;o=r[q];y+=("")}while(o!=u.node);r.splice(q,1);while(q'+L[0]+""}else{r+=L[0]}N=A.lR.lastIndex;L=A.lR.exec(K)}return r+K.substr(N)}function z(){if(A.sL&&!e[A.sL]){return l(w)}var r=A.sL?d(A.sL,w):g(w);if(A.r>0){v+=r.keyword_count;B+=r.r}return''+r.value+""}function J(){return A.sL!==undefined?z():G()}function I(L,r){var K=L.cN?'':"";if(L.rB){x+=K;w=""}else{if(L.eB){x+=l(r)+K;w=""}else{x+=K;w=r}}A=Object.create(L,{parent:{value:A}});B+=L.r}function C(K,r){w+=K;if(r===undefined){x+=J();return 0}var L=o(r,A);if(L){x+=J();I(L,r);return L.rB?0:r.length}var M=s(A,r);if(M){if(!(M.rE||M.eE)){w+=r}x+=J();do{if(A.cN){x+=""}A=A.parent}while(A!=M.parent);if(M.eE){x+=l(r)}w="";if(M.starts){I(M.starts,"")}return M.rE?0:r.length}if(t(r,A)){throw"Illegal"}w+=r;return r.length||1}var F=e[D];f(F);var A=F;var w="";var B=0;var v=0;var x="";try{var u,q,p=0;while(true){A.t.lastIndex=p;u=A.t.exec(E);if(!u){break}q=C(E.substr(p,u.index-p),u[0]);p=u.index+q}C(E.substr(p));return{r:B,keyword_count:v,value:x,language:D}}catch(H){if(H=="Illegal"){return{r:0,keyword_count:0,value:l(E)}}else{throw H}}}function g(s){var o={keyword_count:0,r:0,value:l(s)};var q=o;for(var p in e){if(!e.hasOwnProperty(p)){continue}var r=d(p,s);r.language=p;if(r.keyword_count+r.r>q.keyword_count+q.r){q=r}if(r.keyword_count+r.r>o.keyword_count+o.r){q=o;o=r}}if(q.language){o.second_best=q}return o}function i(q,p,o){if(p){q=q.replace(/^((<[^>]+>|\t)+)/gm,function(r,v,u,t){return v.replace(/\t/g,p)})}if(o){q=q.replace(/\n/g,"
        ")}return q}function m(r,u,p){var v=h(r,p);var t=a(r);if(t=="no-highlight"){return}var w=t?d(t,v):g(v);t=w.language;var o=c(r);if(o.length){var q=document.createElement("pre");q.innerHTML=w.value;w.value=j(o,c(q),v)}w.value=i(w.value,u,p);var s=r.className;if(!s.match("(\\s|^)(language-)?"+t+"(\\s|$)")){s=s?(s+" "+t):t}r.innerHTML=w.value;r.className=s;r.result={language:t,kw:w.keyword_count,re:w.r};if(w.second_best){r.second_best={language:w.second_best.language,kw:w.second_best.keyword_count,re:w.second_best.r}}}function n(){if(n.called){return}n.called=true;Array.prototype.map.call(document.getElementsByTagName("pre"),b).filter(Boolean).forEach(function(o){m(o,hljs.tabReplace)})}function k(){window.addEventListener("DOMContentLoaded",n,false);window.addEventListener("load",n,false)}var e={};this.LANGUAGES=e;this.highlight=d;this.highlightAuto=g;this.fixMarkup=i;this.highlightBlock=m;this.initHighlighting=n;this.initHighlightingOnLoad=k;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|\\.|-|-=|/|/=|:|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE],r:0};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE],r:0};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.inherit=function(q,r){var o={};for(var p in q){o[p]=q[p]}if(r){for(var p in r){o[p]=r[p]}}return o}}();hljs.LANGUAGES.bash=function(a){var g="true false";var e="if then else elif fi for break continue while in do done echo exit return set declare";var c={cN:"variable",b:"\\$[a-zA-Z0-9_#]+"};var b={cN:"variable",b:"\\${([^}]|\\\\})+}"};var h={cN:"string",b:'"',e:'"',i:"\\n",c:[a.BE,c,b],r:0};var d={cN:"string",b:"'",e:"'",c:[{b:"''"}],r:0};var f={cN:"test_condition",b:"",e:"",c:[h,d,c,b],k:{literal:g},r:0};return{k:{keyword:e,literal:g},c:[{cN:"shebang",b:"(#!\\/bin\\/bash)|(#!\\/bin\\/sh)",r:10},c,b,a.HCM,h,d,a.inherit(f,{b:"\\[ ",e:" \\]",r:0}),a.inherit(f,{b:"\\[\\[ ",e:" \\]\\]"})]}}(hljs);hljs.LANGUAGES.diff=function(a){return{c:[{cN:"chunk",b:"^\\@\\@ +\\-\\d+,\\d+ +\\+\\d+,\\d+ +\\@\\@$",r:10},{cN:"chunk",b:"^\\*\\*\\* +\\d+,\\d+ +\\*\\*\\*\\*$",r:10},{cN:"chunk",b:"^\\-\\-\\- +\\d+,\\d+ +\\-\\-\\-\\-$",r:10},{cN:"header",b:"Index: ",e:"$"},{cN:"header",b:"=====",e:"=====$"},{cN:"header",b:"^\\-\\-\\-",e:"$"},{cN:"header",b:"^\\*{3} ",e:"$"},{cN:"header",b:"^\\+\\+\\+",e:"$"},{cN:"header",b:"\\*{5}",e:"\\*{5}$"},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"change",b:"^\\!",e:"$"}]}}(hljs);hljs.LANGUAGES.javascript=function(a){return{k:{keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const",literal:"true false null undefined NaN Infinity"},c:[a.ASM,a.QSM,a.CLCM,a.CBLCLM,a.CNM,{b:"("+a.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[a.CLCM,a.CBLCLM,{cN:"regexp",b:"/",e:"/[gim]*",i:"\\n",c:[{b:"\\\\/"}]},{b:"<",e:">;",sL:"xml"}],r:0},{cN:"function",bWK:true,e:"{",k:"function",c:[{cN:"title",b:"[A-Za-z$_][0-9A-Za-z$_]*"},{cN:"params",b:"\\(",e:"\\)",c:[a.CLCM,a.CBLCLM],i:"[\"'\\(]"}],i:"\\[|%"}]}}(hljs);hljs.LANGUAGES.css=function(a){var b={cN:"function",b:a.IR+"\\(",e:"\\)",c:[a.NM,a.ASM,a.QSM]};return{cI:true,i:"[=/|']",c:[a.CBLCLM,{cN:"id",b:"\\#[A-Za-z0-9_-]+"},{cN:"class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"attr_selector",b:"\\[",e:"\\]",i:"$"},{cN:"pseudo",b:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{cN:"at_rule",b:"@",e:"[{;]",eE:true,k:"import page media charset",c:[b,a.ASM,a.QSM,a.NM]},{cN:"tag",b:a.IR,r:0},{cN:"rules",b:"{",e:"}",i:"[^\\s]",r:0,c:[a.CBLCLM,{cN:"rule",b:"[^\\s]",rB:true,e:";",eW:true,c:[{cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:true,i:"[^\\s]",starts:{cN:"value",eW:true,eE:true,c:[b,a.NM,a.QSM,a.ASM,a.CBLCLM,{cN:"hexcolor",b:"\\#[0-9A-F]+"},{cN:"important",b:"!important"}]}}]}]}]}}(hljs);hljs.LANGUAGES.xml=function(a){var c="[A-Za-z0-9\\._:-]+";var b={eW:true,c:[{cN:"attribute",b:c,r:0},{b:'="',rB:true,e:'"',c:[{cN:"value",b:'"',eW:true}]},{b:"='",rB:true,e:"'",c:[{cN:"value",b:"'",eW:true}]},{b:"=",c:[{cN:"value",b:"[^\\s/>]+"}]}]};return{cI:true,c:[{cN:"pi",b:"<\\?",e:"\\?>",r:10},{cN:"doctype",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"|$)",e:">",k:{title:"style"},c:[b],starts:{e:"",rE:true,sL:"css"}},{cN:"tag",b:"|$)",e:">",k:{title:"script"},c:[b],starts:{e:"<\/script>",rE:true,sL:"javascript"}},{b:"<%",e:"%>",sL:"vbscript"},{cN:"tag",b:"",c:[{cN:"title",b:"[^ />]+"},b]}]}}(hljs);hljs.LANGUAGES.http=function(a){return{i:"\\S",c:[{cN:"status",b:"^HTTP/[0-9\\.]+",e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{cN:"request",b:"^[A-Z]+ (.*?) HTTP/[0-9\\.]+$",rB:true,e:"$",c:[{cN:"string",b:" ",e:" ",eB:true,eE:true}]},{cN:"attribute",b:"^\\w",e:": ",eE:true,i:"\\n|\\s|=",starts:{cN:"string",e:"$"}},{b:"\\n\\n",starts:{sL:"",eW:true}}]}}(hljs);hljs.LANGUAGES.sql=function(a){return{cI:true,c:[{cN:"operator",b:"(begin|start|commit|rollback|savepoint|lock|alter|create|drop|rename|call|delete|do|handler|insert|load|replace|select|truncate|update|set|show|pragma|grant)\\b(?!:)",e:";",eW:true,k:{keyword:"all partial global month current_timestamp using go revoke smallint indicator end-exec disconnect zone with character assertion to add current_user usage input local alter match collate real then rollback get read timestamp session_user not integer bit unique day minute desc insert execute like ilike|2 level decimal drop continue isolation found where constraints domain right national some module transaction relative second connect escape close system_user for deferred section cast current sqlstate allocate intersect deallocate numeric public preserve full goto initially asc no key output collation group by union session both last language constraint column of space foreign deferrable prior connection unknown action commit view or first into float year primary cascaded except restrict set references names table outer open select size are rows from prepare distinct leading create only next inner authorization schema corresponding option declare precision immediate else timezone_minute external varying translation true case exception join hour default double scroll value cursor descriptor values dec fetch procedure delete and false int is describe char as at in varchar null trailing any absolute current_time end grant privileges when cross check write current_date pad begin temporary exec time update catalog user sql date on identity timezone_hour natural whenever interval work order cascade diagnostics nchar having left call do handler load replace truncate start lock show pragma exists number",aggregate:"count sum min max avg"},c:[{cN:"string",b:"'",e:"'",c:[a.BE,{b:"''"}],r:0},{cN:"string",b:'"',e:'"',c:[a.BE,{b:'""'}],r:0},{cN:"string",b:"`",e:"`",c:[a.BE]},a.CNM]},a.CBLCLM,{cN:"comment",b:"--",e:"$"}]}}(hljs);hljs.LANGUAGES.ini=function(a){return{cI:true,i:"[^\\s]",c:[{cN:"comment",b:";",e:"$"},{cN:"title",b:"^\\[",e:"\\]"},{cN:"setting",b:"^[a-z0-9\\[\\]_-]+[ \\t]*=[ \\t]*",e:"$",c:[{cN:"value",eW:true,k:"on off true false yes no",c:[a.QSM,a.NM]}]}]}}(hljs);hljs.LANGUAGES.json=function(a){var e={literal:"true false null"};var d=[a.QSM,a.CNM];var c={cN:"value",e:",",eW:true,eE:true,c:d,k:e};var b={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:true,eE:true,c:[a.BE],i:"\\n",starts:c}],i:"\\S"};var f={b:"\\[",e:"\\]",c:[a.inherit(c,{cN:null})],i:"\\S"};d.splice(d.length,0,b,f);return{c:d,k:e,i:"\\S"}}(hljs); \ No newline at end of file diff --git a/manual/js/jquery.js b/manual/js/jquery.js new file mode 100644 index 0000000..198b3ff --- /dev/null +++ b/manual/js/jquery.js @@ -0,0 +1,4 @@ +/*! jQuery v1.7.1 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"":"")+""),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){if(c!=="border")for(;g=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c
        a",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="
        "+""+"
        ",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="
        t
        ",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="
        ",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;le&&i.push({elem:this,matches:d.slice(e)});for(j=0;j0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

        ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
        ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h0)for(h=g;h=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
        ","
        "],thead:[1,"","
        "],tr:[2,"","
        "],td:[3,"","
        "],col:[2,"","
        "],area:[1,"",""],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div
        ","
        "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
        ").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); \ No newline at end of file diff --git a/readme.md b/readme.md index 73d8459..087c75d 100644 --- a/readme.md +++ b/readme.md @@ -58,7 +58,7 @@ In Greengrass, you can send a context object in a JSON format to be passed to an ## Compatibility[ΒΆ](#compatibility "Permalink to this headline") -As new features are added to AWS IoT Greengrass, newer versions of the AWS IoT Greengrass SDK may be incompatible with older versions of the AWS IoT Greengrass core. The following table lists the compatible SDKs for all GGC releases. +As new features are added to AWS Greengrass, previous versions of the Greengrass SDK will be incompatible with newer versions of the AWS Greengrass core. The following table lists the compatible SDKs for all GGC releases.
        diff --git a/sdk/aws-greengrass-core-sdk-js.tar.gz b/sdk/aws-greengrass-core-sdk-js.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..47eeaec39ae35428746efded9630f4f4bb597820 GIT binary patch literal 7167 zcmVC+q~o@XL?>))Ng?HUvpHFN2n;F2Ai&@unsM~s_ue}X3_y^g zWH+t5n3EHWz~Ih(zh(eFPqrtq5aA@|NwV!mvDi+$cRP0{^12K$noMzcli zPp(t8zq_})4gWi0T_U*SMpK9NL$|}CnE7eK_;~CGK2Jr`Vcj5L1AH!F1CfaMMtB{7 zx6^32QJAD`#1nD&WFRKuJ$uG>{0p0rjCpjISd;Dhm=Rdb$aznhIMRA&RCL$e(Uo$@z z-X)LuRHPz?r^Z?6rhXK%H&qi_GyE%YSZv>Evkwgh!ymKO7Z;;ngqwC|ag;{sVkSD* zJh_;MmvJ-`ak}WZJP1~R(Qt6YBF*CPgnr*P@+(X}`cvV_pHCXM7HNL+1MtH8$ME93 zK#_I5m87v=E{zw~!g#j>izI^PC=8g(Q}>#+#4?U-%!5Q!V4B96s6^~E3RCeut-?*+ zYPs^?0%tAF>42)`lQzMrf=D3G4=4V3VF3Lzi2YvcWfi&RX3MB=f#jl6ORDpk4?*uE z{J$T1fWxN=0C)KR-6y+8MgPB#_iO+E8T)^27vC7w>VwtAWA2I{M4X^mJY&th&R+Ax z%zeS9Bag#%B80!qlEr zQb~X2qDF52lH||jZsjzZPRW_9dfcT6g{OmPGJ#}Zvxhor_KBvc`|9f3H&++m^)TNm zBhnG!%@2@Ib@Ex}K?FpeC=_#zL+3>VIpS+fL0-`9RvYIB0FWtvD8oL1h%+~hV2YIr zq}M)VA2U~hH4JU#2Vsh`aA>m=ax`znnuh4A4=OowaFl^SSjz zQ?07Ang(jVrNit&6Y&$H>g1}n3 zoLyUtz!8X)@i=_$i@;0r8O8h&hnb}Kyd-yxU{_BpP;6mTop7!o{H;wll0D_YIEtsj zJ7$kRh}*Xhq8L>GkN~h(P_q=}B!$`O7p4>i#(w{ut)52clqmB{(^wO=2=ZHS8Z%Hf z(X{y^AgjF#K;`F=u;}1p1w@s9wA3}_c zp=xwkavf!X$40_n11@%H>HEuA+OJD~ATPfZ%T5cI|5knZm^CetNO&{82qNy~kS^tg z^1NTI8c5AFmCs30E?putd3#rydne$Z0@JmIrsuwmKOyr&Dm=IFf&kVm&(cqvCWG_!ony8UxR)M zX}D1-yB{*!Aw86-;6->~m&z4fE<2p6DYQ7KaL$_J<#{J7!Wua0s`x$1{J?{IL+Tf_ zs)Il$783yBthmcvH_F1a@2#2;0`rRZiY#dt^$FPTj~B|Ind)DlddnsW6QJdu@CrI~ zug+AnVExTyvy%>Gr5h>Af61~<)cxLyd-mN<33)|o{~`Z|i= zwX9_vy@FHp-cBh-IS{ASlLQR)8xQ?n=jH z3OKNdY2;;r=%_9iFjiKH5AI;C?ElJ++9zoMt?&Qr?L9d>DEEI34i4-7&*$I&`8peq zi_O;&U1_#E@|J0itZ)8q)=he7S4cgsS~qLDI(ng(KfZbX>iqPoe{ue%JHS4WZu^w( z=m&=1cF!(euX?EBu6}TE@#?BKSoL7VUDG|%eew<3M}g)&=3i0}tzy#%qQ%uUq)5YS z?nU#p%_CGOJwUNw2GqIuluoQ5XhoxxLoMNEP@6&Gr0%057ajZQztckOLqy5!t;#)_ z{7Ly1fJyQOP{PKbq*$>aW;Ucj@B3H%LGKI-+Y||*78T9JT%1K?`kQW9kL{Fd2lMD= z{jhwcQZvkgbMH==d3I$RtkZm8U6xn)cJ)sx@Fr6tZVZ5`|BA#_X)SXJ_i^3P^w(B;ZZ^Y z3cYB0Tv3xJQ5L)6xSZ85w+WJrbof~6LGk`={`2;vj1v|;fRHSCI^#H+wpJWUYoFY) zi-Vv#X{6fIP1yl%wwIQajk`-}du3kOP5k4k8ly;CabxRP?^YEj6&k|FrT%53vKgaY z)Jo1pfxzwe)?4L!ut_@=Nx~-(CPHP7TaQ1`AGcewNvpu)b={@iT5iFr^DSyO+~$_U zS_1oF)at2jri$top3!rW_tWhAJ3EYrj5>QPaw%{19@I9HU8o}DBy(M0%{U9NLrBfg zJNrrW&r&#v^j~+xlcf^_+C9E~4Au4yJ)7)+bTp9L9k~=-Gi%(wJ^6S8eyClRjcXGF ztu(#|+g?TK{|A~CW`k%`I_VSfjqk28t=S6G`j=SNM_A5-8m+3K@*j3qa8>`ectrB! z+Q4_5|2uqgv|sA~?j7y#*8Shlxc~bZwtv6t{rG0sJ00|{-t^C~?vf{n`(E?Jn(;$# zFhoZ!r>L{cE9MNZy5IDyX~Pt3sW4NmC%d{$_^0abdG{qjq3YGX4|ls)y|XuG@PC|e z8VeAMcZLmx2XwXNa>F+-yXS!S%BJ(WX{P&JI(_}An$QyL4?M^=Il-7H0d7>`6vV$2 z(r>h&H-?of$|_)_4)=yfO4TkMq{=D1XC3wyLV1Dm+m!{`#;1L(r1a|I>;ei5F^z7h zqmw{x0SU$&s_<-vftCH5iFmTAFYa4me!m16DZ_(J3z6#eh1a|Y3 zqge&v-W%y0S3Fo^`wf^LBJ!gM60s35a3)+lECe%C+1H?ch>snvhgHr+`%(uhzFvT% zXU__dipJe}qtCm2vl4(&P$#z}r@*R@s$kc-q!mf>YGOCYn}N`j@@9g-ZV&{+szF`B zbGpQvV|hMf#Y(sT9%bpev1!SQ%a_%{Pxg0r^}(DLohDH1zvC2`$<)pKle^Kpv;Mui zLNI1ns{M+n+bo22C2#Ima$^e;%BxRfI7?wKmd`KQjLv6{O<=56b<4qR;KkHxoga!p z%?7aYT=s_Ey|e@cVe@DuaP=bOntEQrY*!1WsJg1wUFP&PPb5?2VN%tdr!`JhpSxxH zCdGVjDJd|p)Skx1z%V_mf@X8;ZeVND6@X=BmK#B{GgI5gDY+E*1~IcpyS$L2FMnGo zREn&GP7=EggUSxPZ^fIlaJNHmxL%A~deUFn_TIYszv$lnQ`!LM7gzn$-amJZyWamj z*gq_N|6%`duRj0vhm7v)p;Z{N(2pU&d z3Cv=!FceAxRJ+W-F3{oV5SU-pmo>-T^Ekg-0m?#{RirR58-x^i-B5B*C2 zerMMKuMuV(DsRZ3o>V`f>~=n%cQ`H3iQ>slAQwq?z(4c`FNdsqe#TBO&d>T-$_?4` zivfEz>^W@EyBu7cy`l=wp;>4B;nkr3^((y6XzX>^877iG7KllQ(u6HV!WQmzfKQqV zC~N2}frz2Jq_;St(36jl^UD%}pKMWHO26%c6FnbujZr3F8^CCB!iZCr;6vay@xyIKQKlmi)Rt2Mb1VeTaw6@0wgrQLix9Yheliu^2K=wLS84TV^z7MoNz^`Dz6nv4x3*Kq8bEEi*f>N zxH0!pWdKCW2OLNk$+bU2Fk^oV?3;<$MYye}yZ_auwJ_RBP7{mpMDya(1r zt-8RU`l);Y#-s=GyavN}-W+381f^k4b2!?h$NnUfJIx@3KxlU$UyobHn1>5_O}=G= zs8C;LD%@)x0_ENbeuM{a$?txdh z;eNnJfwpJM!#L;>QN>)Y^o2`1*G>vZ$3154rBwFk;i~8((i8&%aYf^a&$qA(^`1{> z0lfwfUKvzaK84e|vzdT3--DF|(Y&oFKNGQk13bGC44IH@l_ibPtLaumBN$1y#uxYe zJ=`Hj1M_eJ)ND`@>2+`&5)SJ5{Mwf<(2`+6Z~@=Vu|0L;lhja2fgQ>Km;jbWvHpb( zHz`ruOd3?ff=wl$4#aB?%R~VwJUru1@I}%J@h&@5@;KvyIXkS(GQ}~}S0yQetsH(V zrci8?)d}1uK#f3N5cX3Mi(mn29=;=HjX*0Tg%tiUj;({?&y$axVVH4azsR9 zC19-fbtJA7Zdt{RA?lS3$Mh@CD()E!5K=(`q@|w96bMWtnL&@h%~d!%md>Z>up?ME zAg7yTBk%>v8R)!#REQAP?_L|k$O|t;eiA4}r?p<*&LYsQ(%PueBLNH?0|!=Q7MsOn zwq>ZbNbmrZ6=zJIk}Q%`OcUdSAwJ@Jn2-ukNK?0^q%l^>Y{H~K zHkTdk843co*o(Y^T+_`G3dgkElsunG>RyxkQXxgW*Mt{I)JliFyqWK2QI>#JPI>$e z{aBo*E|dw0#Gi!Zxk2AhBE-o`bwlT~bq);X%(lbMR>?L?8LpvLTi5!0#O4@!x@l=S zYz@K;&>P6%1bJgX*Iq;!Sb`1TFbx*+qY$%5hE_~GEz<(Wvfp9fV77w`=4}t1@UWpg zY^D{mvVPDeWP4TtagA9_VdxbARm!X=fJ3$h#6i|I6De?mbPSwW;LUwZ2f`@aCLt$4 zCH~xolq8;Dl@cv@kS?~zv4CGbBwKi16P$4|@~Q$0m(q0&p6iRzb&F-UrTj6St#*NJ zpo+7AgC3hJfT|3R30+a)->#5Mif#NUrK?M8RfJx07a)!UOB|OR9p~pOixxa1W+_?@ zokCan3!s+B0;J7ml0-{ZkSznGYkngr`65)PIF0CV4Z3iF8)owV;31+om0~catrAw1 zsgc_tf{<(}5xpLt%>u0Fq7dXuY(+<;ka7d=1B2yUO%t$&p0MQ|fM-?0aYngZz(Ngf|$a@{2I;=lN zQOnvR0iS~^YebOx6S+8_;GRNC?n;%ytvt}k1UHWGToG~zv8NA!KqW=LLCBm1e4b=} ziWCN7B3-!Jxqq#aT=Z8(=eEvO$=w-3IZ-970^;VPSZHcA_otLM0t}fX71fRM8C~ir zE6^E!Za*qc>6AzMcC;zC)i(x1DNrw%D-B9V!qEo)eeN@?{ zfJgIn?vXo}HJKL)0P{FlDFb&!`hpn;{2R&WS*%56tX<)goV@xVCMf-x3L&LAjsmDb zWFXdF=(r(^n6{)Y!_yXsCSoPCd=Q^M!?V3fAq9=hmw}du~YsLb%;vAj1S`{&+ z<$z0>riM8Rp_a;}?x5Y|!OT&b>!54%1g0~N4)*k|oisNhMUO1xD=;beL{>Hqy2*k_fSh1yv{pe!-!{ zySkRe4tk;zUoFv6aF_L|X@f!9p4Ww#K3Iq-qaok3C^V#vyN8+@|BkV^u+>h3&=@PO zY@+CnWOo9bH>6P6f*k_S6QP$)b?#Wu4DBdnfu)64@J_^0-3I{DD-A`R*c1BXYeC5* zGb$VOl|0E4dCDEBLoH);sYj$4j}R2@Hm2CO@-cNRY#yUTmpSCX4!#H#AIHP|Ck^_CKYvLN&f+ z4VWinNr$}(A>t(@BJm!UaDA*P>Drc_KU^w>VJC zwE)x-GWyG&A+XI9A9zBa^m?HTfT|wxUbxypljk%{h{c4*a=WCQ>tpx(5Zsy04ia>2 zRt{^va!Bc}wbwykmXLcxGPj_9J)dH8$>bW?9a1k#sh@z2KF~muwOVRi9o3^z<)1lT zJti`E0usR3OVXnk-Ea#P@c_0$YTyE0iuW?f$F}8Cvr=1%mXdPh6%HJ@bJSsHenJ%r zZZeM9YsdqE7Yn1~2FcMv7KT*FVkM(2n*^r56Q{dHPA(p0&Pk4B3$euNyHNVsQ?aR6 zkYgKLK;W>qx*@I&(upLpT(ksr|RZXcs06Zjr6VITp( zrGWZ>fF0DXx=EpTXHtA&z$&~$F$sJ~id@ll%#N&6XllxC$(`!llHnX1*?~WjA8$pp zCRo+W9=%>H#Xa$awr{J|Upm2p^T&1u2`KPsNmW{t6#0}-ij8Z0RBu)1o7QyRUv;8j zE*J|Wn6h(@*@f(G;`Wk)sJ$#UrT}B?*T!;R7bC8WtMnnkQUOWq%Z$&+5OQ!`&c|0Z0qBC5>Ic22ux`f{QQQcGUs{-FU(oIEY zxqUiXsFXm_u|TSGCYoG&ZmFD=#~Ca@MSJIG7zV2jR5cpi%S*W5|L6}&vnXtueQa%c8tfNsM#V2xfccl%4F)PLw?eGm zPNa{IEx;SUH#>M#Bg>`1?%}B*!A%!ATlEde2h&8U9H2+^NgFC~DC3*yz^OL`M8(Q3*vR_?Ja(^fV-56C7FGVeK>{EsKnI@4R;%lEYbcKL+FXNHwD(fWM4^<6F4$vr;Nl&!nQQsou zg|?U0WS+{G4DL9ws1DI?1E!6}Cdu=v)Il9_YFKTlQRq+)T18ts7F2OQIC4mqaO9BM?LCMk9yRj9`)FC{2!$UiV*;y0008v B>VN

    )CdQ3F!eKyF|9D2V!F-rhUpJ8J+l7g0OBBVM#THTI&O8)>EGR%u6Gd9D9pm5!S}%&6DxW}^f|7=Y zPoO3(pTZY#?(7(|!5}5Nn!D%DotZmlW)?smSMcEE<^aT$6gw#LlwubPI9BYTffL0! zyu-EPCnz{Y#ZR&1d{F!hr_NW!&#~mXis$jseXDo@U)-kR7sMBeUt-T&RQw9By@BF9 z3f?cpmw4m-R{RHncaC**(V--ipJ<~6LkW2fi6RVfh%vcYt9@z>&M0LBSf-Q|Et8wU zCt43_*JB)mHR71wb`K@~5Cizwp{`A2uuJ^_Bcl3k{7ree$8&@l?;^2nagS+NqCDBfkB?pJws=PbK~+A7|2 z{gCDJKI-i%m4LD$n{WIwWR|c+NRy`C1#)1sSBI7FiH6z-QkhY&Q_|%I3exQ zQ`X1M?cZH4^M&BSyr;2z$+^SZUMA*0001Z+HKHROw(}?!13=vX`$@Br+fGR zZ%e`5O6%Txi$Yrz0gF{}p>fY>OnlS0Uevf}oDXW;D{d2gcE<2)oFcV80@g$H)63L{HN*d{8kVzKVW(;E)$9N_%kx5Ku3R9WJbY?JW^G#k0Wdx>E$NBBVtKRLiL?sA*s%w`TdsNz1=+~FRNdB8&+@iBD0 zXFTC4C-8-Cwv(4U=LLQ~^Oa4^rG|OTr5?ItoaPMYxxh`%a*kVU z;HYGAjq6;IY{`*awo0DlOMw(hkrYdb(O28l;MYvSx*ChcQW4f^QL5UdE3HbqvbxB$pfSg`>Cj#;?~00;nMAg}==M6d%RaIhCe zARtS)01i=0um)3FSgr#ump{<1pq_<0a34Kp8x=7I1^|9 diff --git a/docs/fonts/OpenSans-Regular-webfont.eot b/docs/fonts/OpenSans-Regular-webfont.eot deleted file mode 100644 index 6bbc3cf58cb011a6b4bf3cb1612ce212608f7274..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19836 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/docs/fonts/OpenSans-Regular-webfont.woff b/docs/fonts/OpenSans-Regular-webfont.woff deleted file mode 100644 index e231183dce4c7b452afc9e7799586fd285e146f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22660 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 ML;wL%uV=LY00kR;TmS$7 diff --git a/docs/global.html b/docs/global.html deleted file mode 100644 index 1749a6d..0000000 --- a/docs/global.html +++ /dev/null @@ -1,1117 +0,0 @@ - - - - - JSDoc: Global - - - - - - - - - - -