From 8dbee050081c6600f63eb0edaca82d753c750c7a Mon Sep 17 00:00:00 2001 From: Partik SIngh Date: Sun, 27 Aug 2023 12:51:17 +0530 Subject: [PATCH 1/6] Some changes Signed-off-by: Partik SIngh --- .../Linode/compute/linode-kubernetes.js | 242 +++++++++--------- .../Linode/database/linode-RDBMS.js | 97 +++++++ .../Linode/database/linode-noSql.js | 103 -------- .../Linode/storage/linode-storageBucket.js | 186 +++++++------- generator/node-cloud.yml | 14 +- generator/package.json | 1 + generator/transformers/linode/transformer.ts | 6 - 7 files changed, 312 insertions(+), 337 deletions(-) create mode 100644 generator/generatedClasses/Linode/database/linode-RDBMS.js delete mode 100644 generator/generatedClasses/Linode/database/linode-noSql.js diff --git a/generator/generatedClasses/Linode/compute/linode-kubernetes.js b/generator/generatedClasses/Linode/compute/linode-kubernetes.js index 0656b2c6..39be1982 100644 --- a/generator/generatedClasses/Linode/compute/linode-kubernetes.js +++ b/generator/generatedClasses/Linode/compute/linode-kubernetes.js @@ -1,130 +1,122 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a KubernetesLinodeClass object - * @category Linode - */ + * Class to create a KubernetesLinodeClass object + * @category Linode + */ class Linode_Kubernetes { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getKubernetesClusters function of KubernetesLinodeClass - * @param {Params} params - Data required for getKubernetesClusters - * @param {Filter} filters - Data required for getKubernetesClusters - * @returns {Promise} - */ - getAllClusters(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getKubernetesClusters(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createKubernetesCluster function of KubernetesLinodeClass - * @param {CreateKubeClusterPayload} data - Data required for createKubernetesCluster - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode - .createKubernetesCluster(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteKubernetesCluster function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for deleteKubernetesCluster - * @returns {Promise} - */ - delete(clusterID) { - return new Promise((resolve, reject) => { - this._linode - .deleteKubernetesCluster(clusterID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getNodePools function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for getNodePools - * @param {Params} params - Data required for getNodePools - * @param {Filter} filters - Data required for getNodePools - * @returns {Promise} - */ - getNodePools(clusterID, params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getNodePools(clusterID, params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for getNodePool - * @param {NumberKeyword} nodePoolID - Data required for getNodePool - * @returns {Promise} - */ - getNodePool(clusterID, nodePoolID) { - return new Promise((resolve, reject) => { - this._linode - .getNodePool(clusterID, nodePoolID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for createNodePool - * @param {CreateNodePoolData} data - Data required for createNodePool - * @returns {Promise} - */ - createNodePool(clusterID, data) { - return new Promise((resolve, reject) => { - this._linode - .createNodePool(clusterID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for updateNodePool - * @param {NumberKeyword} nodePoolID - Data required for updateNodePool - * @param {Partial} data - Data required for updateNodePool - * @returns {Promise} - */ - updateNodePool(clusterID, nodePoolID, data) { - return new Promise((resolve, reject) => { - this._linode - .updateNodePool(clusterID, nodePoolID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for deleteNodePool - * @param {NumberKeyword} nodePoolID - Data required for deleteNodePool - * @returns {Promise} - */ - deleteNodePool(clusterID, nodePoolID) { - return new Promise((resolve, reject) => { - this._linode - .deleteNodePool(clusterID, nodePoolID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} do Linode SDK + * @param {object} options SDK options + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getKubernetesClusters function of KubernetesLinodeClass + * @param {Params} params - Data required for getKubernetesClusters + * @param {Filter} filters - Data required for getKubernetesClusters + * @returns {Promise} + */ + getAllClusters(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getKubernetesClusters(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createKubernetesCluster function of KubernetesLinodeClass + * @param {CreateKubeClusterPayload} data - Data required for createKubernetesCluster + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode.createKubernetesCluster(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteKubernetesCluster function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for deleteKubernetesCluster + * @returns {Promise} + */ + delete(clusterID) { + return new Promise((resolve, reject) => { + this._linode.deleteKubernetesCluster(clusterID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getNodePools function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for getNodePools + * @param {Params} params - Data required for getNodePools + * @param {Filter} filters - Data required for getNodePools + * @returns {Promise} + */ + getNodePools(clusterID, params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getNodePools(clusterID, params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for getNodePool + * @param {NumberKeyword} nodePoolID - Data required for getNodePool + * @returns {Promise} + */ + getNodePool(clusterID, nodePoolID) { + return new Promise((resolve, reject) => { + this._linode.getNodePool(clusterID, nodePoolID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for createNodePool + * @param {CreateNodePoolData} data - Data required for createNodePool + * @returns {Promise} + */ + createNodePool(clusterID, data) { + return new Promise((resolve, reject) => { + this._linode.createNodePool(clusterID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for updateNodePool + * @param {NumberKeyword} nodePoolID - Data required for updateNodePool + * @param {Partial} data - Data required for updateNodePool + * @returns {Promise} + */ + updateNodePool(clusterID, nodePoolID, data) { + return new Promise((resolve, reject) => { + this._linode.updateNodePool(clusterID, nodePoolID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for deleteNodePool + * @param {NumberKeyword} nodePoolID - Data required for deleteNodePool + * @returns {Promise} + */ + deleteNodePool(clusterID, nodePoolID) { + return new Promise((resolve, reject) => { + this._linode.deleteNodePool(clusterID, nodePoolID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_Kubernetes; diff --git a/generator/generatedClasses/Linode/database/linode-RDBMS.js b/generator/generatedClasses/Linode/database/linode-RDBMS.js new file mode 100644 index 00000000..1e5e80d6 --- /dev/null +++ b/generator/generatedClasses/Linode/database/linode-RDBMS.js @@ -0,0 +1,97 @@ +/*This is an auto generated class, please do not change.*/ +/** + * Class to create a RDBMSLinodeClass object + * @category Linode + */ +class Linode_RDBMS { + /** + * + * @param {module} do Linode SDK + * @param {object} options SDK options + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getDatabases function of RDBMSLinodeClass + * @param {Params} params - Data required for getDatabases + * @param {Filter} filter - Data required for getDatabases + * @returns {Promise} + */ + getDatabases(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode.getDatabases(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDatabaseEngines function of RDBMSLinodeClass + * @param {Params} params - Data required for getDatabaseEngines + * @param {Filter} filter - Data required for getDatabaseEngines + * @returns {Promise} + */ + getDatabaseEngines(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode.getDatabaseEngines(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createDatabase function of RDBMSLinodeClass + * @param {UnionType} engine - Data required for createDatabase + * @param {CreateDatabasePayload} data - Data required for createDatabase + * @returns {Promise} + */ + createDatabase(engine, data) { + return new Promise((resolve, reject) => { + this._linode.createDatabase(engine, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getEngineDatabase function of RDBMSLinodeClass + * @param {Engine} engine - Data required for getEngineDatabase + * @param {NumberKeyword} databaseID - Data required for getEngineDatabase + * @returns {Promise} + */ + getEngineDatabase(engine, databaseID) { + return new Promise((resolve, reject) => { + this._linode.getEngineDatabase(engine, databaseID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateDatabase function of RDBMSLinodeClass + * @param {Engine} engine - Data required for updateDatabase + * @param {NumberKeyword} databaseID - Data required for updateDatabase + * @param {UpdateDatabasePayload} data - Data required for updateDatabase + * @returns {Promise} + */ + updateDatabase(engine, databaseID, data) { + return new Promise((resolve, reject) => { + this._linode.updateDatabase(engine, databaseID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDatabase function of RDBMSLinodeClass + * @param {Engine} engine - Data required for deleteDatabase + * @param {NumberKeyword} databaseID - Data required for deleteDatabase + * @returns {Promise} + */ + deleteDatabase(engine, databaseID) { + return new Promise((resolve, reject) => { + this._linode.deleteDatabase(engine, databaseID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } +} +module.exports = Linode_RDBMS; diff --git a/generator/generatedClasses/Linode/database/linode-noSql.js b/generator/generatedClasses/Linode/database/linode-noSql.js deleted file mode 100644 index 666420ce..00000000 --- a/generator/generatedClasses/Linode/database/linode-noSql.js +++ /dev/null @@ -1,103 +0,0 @@ -/*This is an auto generated class, please do not change.*/ -/** - * Class to create a NoSqlLinodeClass object - * @category Linode - */ -class Linode_NoSql { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getDatabases function of NoSqlLinodeClass - * @param {Params} params - Data required for getDatabases - * @param {Filter} filter - Data required for getDatabases - * @returns {Promise} - */ - getDatabases(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getDatabases(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDatabaseEngines function of NoSqlLinodeClass - * @param {Params} params - Data required for getDatabaseEngines - * @param {Filter} filter - Data required for getDatabaseEngines - * @returns {Promise} - */ - getDatabaseEngines(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getDatabaseEngines(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createDatabase function of NoSqlLinodeClass - * @param {UnionType} engine - Data required for createDatabase - * @param {CreateDatabasePayload} data - Data required for createDatabase - * @returns {Promise} - */ - createDatabase(engine, data) { - return new Promise((resolve, reject) => { - this._linode - .createDatabase(engine, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getEngineDatabase function of NoSqlLinodeClass - * @param {Engine} engine - Data required for getEngineDatabase - * @param {NumberKeyword} databaseID - Data required for getEngineDatabase - * @returns {Promise} - */ - getEngineDatabase(engine, databaseID) { - return new Promise((resolve, reject) => { - this._linode - .getEngineDatabase(engine, databaseID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateDatabase function of NoSqlLinodeClass - * @param {Engine} engine - Data required for updateDatabase - * @param {NumberKeyword} databaseID - Data required for updateDatabase - * @param {UpdateDatabasePayload} data - Data required for updateDatabase - * @returns {Promise} - */ - updateDatabase(engine, databaseID, data) { - return new Promise((resolve, reject) => { - this._linode - .updateDatabase(engine, databaseID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDatabase function of NoSqlLinodeClass - * @param {Engine} engine - Data required for deleteDatabase - * @param {NumberKeyword} databaseID - Data required for deleteDatabase - * @returns {Promise} - */ - deleteDatabase(engine, databaseID) { - return new Promise((resolve, reject) => { - this._linode - .deleteDatabase(engine, databaseID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } -} -module.exports = Linode_NoSql; diff --git a/generator/generatedClasses/Linode/storage/linode-storageBucket.js b/generator/generatedClasses/Linode/storage/linode-storageBucket.js index 5b3b0741..a2990dd9 100644 --- a/generator/generatedClasses/Linode/storage/linode-storageBucket.js +++ b/generator/generatedClasses/Linode/storage/linode-storageBucket.js @@ -1,101 +1,95 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a StorageBucketLinodeClass object - * @category Linode - */ + * Class to create a StorageBucketLinodeClass object + * @category Linode + */ class Linode_StorageBucket { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getBucket function of StorageBucketLinodeClass - * @param {StringKeyword} clusterId - Data required for getBucket - * @param {StringKeyword} bucketName - Data required for getBucket - * @returns {Promise} - */ - get(clusterId, bucketName) { - return new Promise((resolve, reject) => { - this._linode - .getBucket(clusterId, bucketName) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getBuckets function of StorageBucketLinodeClass - * @param {Params} params - Data required for getBuckets - * @param {Filter} filters - Data required for getBuckets - * @returns {Promise} - */ - list(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getBuckets(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createBucket function of StorageBucketLinodeClass - * @param {ObjectStorageBucketRequestPayload} data - Data required for createBucket - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode - .createBucket(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteBucket function of StorageBucketLinodeClass - * @param {ObjectStorageDeleteBucketRequestPayload} {cluster,label} - Data required for deleteBucket - * @returns {Promise} - */ - delete({ cluster, label }) { - return new Promise((resolve, reject) => { - this._linode - .deleteBucket({ cluster, label }) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getBucketAccess function of StorageBucketLinodeClass - * @param {StringKeyword} clusterId - Data required for getBucketAccess - * @param {StringKeyword} bucketName - Data required for getBucketAccess - * @returns {Promise} - */ - getBucketAccess(clusterId, bucketName) { - return new Promise((resolve, reject) => { - this._linode - .getBucketAccess(clusterId, bucketName) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateBucketAccess function of StorageBucketLinodeClass - * @param {StringKeyword} clusterId - Data required for updateBucketAccess - * @param {StringKeyword} bucketName - Data required for updateBucketAccess - * @param {ObjectStorageBucketAccessRequest} data - Data required for updateBucketAccess - * @returns {Promise} - */ - updateBucketAccess(clusterId, bucketName, data) { - return new Promise((resolve, reject) => { - this._linode - .updateBucketAccess(clusterId, bucketName, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} do Linode SDK + * @param {object} options SDK options + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getBucket function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for getBucket + * @param {StringKeyword} bucketName - Data required for getBucket + * @returns {Promise} + */ + get(clusterId, bucketName) { + return new Promise((resolve, reject) => { + this._linode.getBucket(clusterId, bucketName) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getBuckets function of StorageBucketLinodeClass + * @param {Params} params - Data required for getBuckets + * @param {Filter} filters - Data required for getBuckets + * @returns {Promise} + */ + list(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getBuckets(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createBucket function of StorageBucketLinodeClass + * @param {ObjectStorageBucketRequestPayload} data - Data required for createBucket + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode.createBucket(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteBucket function of StorageBucketLinodeClass + * @param {ObjectStorageDeleteBucketRequestPayload} {cluster,label} - Data required for deleteBucket + * @returns {Promise} + */ + delete({ cluster, label }) { + return new Promise((resolve, reject) => { + this._linode.deleteBucket({ cluster, label }) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getBucketAccess function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for getBucketAccess + * @param {StringKeyword} bucketName - Data required for getBucketAccess + * @returns {Promise} + */ + getBucketAccess(clusterId, bucketName) { + return new Promise((resolve, reject) => { + this._linode.getBucketAccess(clusterId, bucketName) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateBucketAccess function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for updateBucketAccess + * @param {StringKeyword} bucketName - Data required for updateBucketAccess + * @param {ObjectStorageBucketAccessRequest} data - Data required for updateBucketAccess + * @returns {Promise} + */ + updateBucketAccess(clusterId, bucketName, data) { + return new Promise((resolve, reject) => { + this._linode.updateBucketAccess(clusterId, bucketName, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_StorageBucket; diff --git a/generator/node-cloud.yml b/generator/node-cloud.yml index 59e812c2..1dccca6b 100644 --- a/generator/node-cloud.yml +++ b/generator/node-cloud.yml @@ -265,6 +265,13 @@ RDBMS: startDBSystem: mysql startDbSystem DbSystemClient stopDBSystem: mysql stopDbSystem DbSystemClient updateDBSystem: mysql updateDbSystem DbSystemClient + Linode: + createDatabase: databases databases.d.ts createDatabase + updateDatabase: databases databases.d.ts updateDatabase + deleteDatabase: databases databases.d.ts deleteDatabase + getDatabases: databases databases.d.ts getDatabases + getDatabaseEngines: databases databases.d.ts getDatabaseEngines + getEngineDatabase: databases databases.d.ts getEngineDatabase NoSql: AWS: @@ -299,13 +306,6 @@ NoSql: deleteRow: nosql deleteRow getRow: nosql getRow updateRow: nosql updateRow - Linode: - createDatabase: databases databases.d.ts createDatabase - updateDatabase: databases databases.d.ts updateDatabase - deleteDatabase: databases databases.d.ts deleteDatabase - getDatabases: databases databases.d.ts getDatabases - getDatabaseEngines: databases databases.d.ts getDatabaseEngines - getEngineDatabase: databases databases.d.ts getEngineDatabase DNS: AWS: diff --git a/generator/package.json b/generator/package.json index 51f6a8a6..8f6f595c 100644 --- a/generator/package.json +++ b/generator/package.json @@ -31,6 +31,7 @@ "@google-cloud/pubsub": "^2.1.0", "@google-cloud/storage": "^5.1.1", "@google-cloud/translate": "^6.0.0", + "@linode/api-v4": "^0.97.0", "aws-sdk": "^2.686.0", "config": "^1.26.1", "do-wrapper": "^4.5.1", diff --git a/generator/transformers/linode/transformer.ts b/generator/transformers/linode/transformer.ts index 01b5e973..300bd38b 100644 --- a/generator/transformers/linode/transformer.ts +++ b/generator/transformers/linode/transformer.ts @@ -75,12 +75,6 @@ export async function transform( return ts.visitNode(rootNode, visit); }; - // const addIdentifiers = ( - // context: ts.TransformationContext - // ) => (rootNode: T) => { - // let count = 0; - // }; - const addIdentifiers = ( context: ts.TransformationContext ) => (rootNode: T) => { From 037e679f940ce3364edc10328703e5152e8af565 Mon Sep 17 00:00:00 2001 From: Partik SIngh Date: Sun, 27 Aug 2023 12:54:03 +0530 Subject: [PATCH 2/6] Some changes Signed-off-by: Partik SIngh --- .../Linode/compute/linode-kubernetes.js | 242 +++++++++--------- .../Linode/database/linode-RDBMS.js | 190 +++++++------- .../Linode/storage/linode-storageBucket.js | 186 +++++++------- generator/transformers/aws/transformer.ts | 6 +- generator/transformers/azure/transformer.ts | 6 +- generator/transformers/do/transformer.ts | 6 +- .../googleCloud/clientBasedTransformer.ts | 6 +- generator/transformers/linode/transformer.ts | 6 +- generator/transformers/oracle/transformer.ts | 6 +- 9 files changed, 337 insertions(+), 317 deletions(-) diff --git a/generator/generatedClasses/Linode/compute/linode-kubernetes.js b/generator/generatedClasses/Linode/compute/linode-kubernetes.js index 39be1982..0656b2c6 100644 --- a/generator/generatedClasses/Linode/compute/linode-kubernetes.js +++ b/generator/generatedClasses/Linode/compute/linode-kubernetes.js @@ -1,122 +1,130 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a KubernetesLinodeClass object - * @category Linode - */ + * Class to create a KubernetesLinodeClass object + * @category Linode + */ class Linode_Kubernetes { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getKubernetesClusters function of KubernetesLinodeClass - * @param {Params} params - Data required for getKubernetesClusters - * @param {Filter} filters - Data required for getKubernetesClusters - * @returns {Promise} - */ - getAllClusters(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getKubernetesClusters(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createKubernetesCluster function of KubernetesLinodeClass - * @param {CreateKubeClusterPayload} data - Data required for createKubernetesCluster - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode.createKubernetesCluster(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteKubernetesCluster function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for deleteKubernetesCluster - * @returns {Promise} - */ - delete(clusterID) { - return new Promise((resolve, reject) => { - this._linode.deleteKubernetesCluster(clusterID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getNodePools function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for getNodePools - * @param {Params} params - Data required for getNodePools - * @param {Filter} filters - Data required for getNodePools - * @returns {Promise} - */ - getNodePools(clusterID, params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getNodePools(clusterID, params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for getNodePool - * @param {NumberKeyword} nodePoolID - Data required for getNodePool - * @returns {Promise} - */ - getNodePool(clusterID, nodePoolID) { - return new Promise((resolve, reject) => { - this._linode.getNodePool(clusterID, nodePoolID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for createNodePool - * @param {CreateNodePoolData} data - Data required for createNodePool - * @returns {Promise} - */ - createNodePool(clusterID, data) { - return new Promise((resolve, reject) => { - this._linode.createNodePool(clusterID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for updateNodePool - * @param {NumberKeyword} nodePoolID - Data required for updateNodePool - * @param {Partial} data - Data required for updateNodePool - * @returns {Promise} - */ - updateNodePool(clusterID, nodePoolID, data) { - return new Promise((resolve, reject) => { - this._linode.updateNodePool(clusterID, nodePoolID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for deleteNodePool - * @param {NumberKeyword} nodePoolID - Data required for deleteNodePool - * @returns {Promise} - */ - deleteNodePool(clusterID, nodePoolID) { - return new Promise((resolve, reject) => { - this._linode.deleteNodePool(clusterID, nodePoolID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} do Linode SDK + * @param {object} options SDK options + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getKubernetesClusters function of KubernetesLinodeClass + * @param {Params} params - Data required for getKubernetesClusters + * @param {Filter} filters - Data required for getKubernetesClusters + * @returns {Promise} + */ + getAllClusters(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getKubernetesClusters(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createKubernetesCluster function of KubernetesLinodeClass + * @param {CreateKubeClusterPayload} data - Data required for createKubernetesCluster + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode + .createKubernetesCluster(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteKubernetesCluster function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for deleteKubernetesCluster + * @returns {Promise} + */ + delete(clusterID) { + return new Promise((resolve, reject) => { + this._linode + .deleteKubernetesCluster(clusterID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getNodePools function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for getNodePools + * @param {Params} params - Data required for getNodePools + * @param {Filter} filters - Data required for getNodePools + * @returns {Promise} + */ + getNodePools(clusterID, params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getNodePools(clusterID, params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for getNodePool + * @param {NumberKeyword} nodePoolID - Data required for getNodePool + * @returns {Promise} + */ + getNodePool(clusterID, nodePoolID) { + return new Promise((resolve, reject) => { + this._linode + .getNodePool(clusterID, nodePoolID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for createNodePool + * @param {CreateNodePoolData} data - Data required for createNodePool + * @returns {Promise} + */ + createNodePool(clusterID, data) { + return new Promise((resolve, reject) => { + this._linode + .createNodePool(clusterID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for updateNodePool + * @param {NumberKeyword} nodePoolID - Data required for updateNodePool + * @param {Partial} data - Data required for updateNodePool + * @returns {Promise} + */ + updateNodePool(clusterID, nodePoolID, data) { + return new Promise((resolve, reject) => { + this._linode + .updateNodePool(clusterID, nodePoolID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for deleteNodePool + * @param {NumberKeyword} nodePoolID - Data required for deleteNodePool + * @returns {Promise} + */ + deleteNodePool(clusterID, nodePoolID) { + return new Promise((resolve, reject) => { + this._linode + .deleteNodePool(clusterID, nodePoolID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_Kubernetes; diff --git a/generator/generatedClasses/Linode/database/linode-RDBMS.js b/generator/generatedClasses/Linode/database/linode-RDBMS.js index 1e5e80d6..6dc5e55e 100644 --- a/generator/generatedClasses/Linode/database/linode-RDBMS.js +++ b/generator/generatedClasses/Linode/database/linode-RDBMS.js @@ -1,97 +1,103 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a RDBMSLinodeClass object - * @category Linode - */ + * Class to create a RDBMSLinodeClass object + * @category Linode + */ class Linode_RDBMS { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getDatabases function of RDBMSLinodeClass - * @param {Params} params - Data required for getDatabases - * @param {Filter} filter - Data required for getDatabases - * @returns {Promise} - */ - getDatabases(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode.getDatabases(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDatabaseEngines function of RDBMSLinodeClass - * @param {Params} params - Data required for getDatabaseEngines - * @param {Filter} filter - Data required for getDatabaseEngines - * @returns {Promise} - */ - getDatabaseEngines(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode.getDatabaseEngines(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createDatabase function of RDBMSLinodeClass - * @param {UnionType} engine - Data required for createDatabase - * @param {CreateDatabasePayload} data - Data required for createDatabase - * @returns {Promise} - */ - createDatabase(engine, data) { - return new Promise((resolve, reject) => { - this._linode.createDatabase(engine, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getEngineDatabase function of RDBMSLinodeClass - * @param {Engine} engine - Data required for getEngineDatabase - * @param {NumberKeyword} databaseID - Data required for getEngineDatabase - * @returns {Promise} - */ - getEngineDatabase(engine, databaseID) { - return new Promise((resolve, reject) => { - this._linode.getEngineDatabase(engine, databaseID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateDatabase function of RDBMSLinodeClass - * @param {Engine} engine - Data required for updateDatabase - * @param {NumberKeyword} databaseID - Data required for updateDatabase - * @param {UpdateDatabasePayload} data - Data required for updateDatabase - * @returns {Promise} - */ - updateDatabase(engine, databaseID, data) { - return new Promise((resolve, reject) => { - this._linode.updateDatabase(engine, databaseID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDatabase function of RDBMSLinodeClass - * @param {Engine} engine - Data required for deleteDatabase - * @param {NumberKeyword} databaseID - Data required for deleteDatabase - * @returns {Promise} - */ - deleteDatabase(engine, databaseID) { - return new Promise((resolve, reject) => { - this._linode.deleteDatabase(engine, databaseID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} do Linode SDK + * @param {object} options SDK options + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getDatabases function of RDBMSLinodeClass + * @param {Params} params - Data required for getDatabases + * @param {Filter} filter - Data required for getDatabases + * @returns {Promise} + */ + getDatabases(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getDatabases(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDatabaseEngines function of RDBMSLinodeClass + * @param {Params} params - Data required for getDatabaseEngines + * @param {Filter} filter - Data required for getDatabaseEngines + * @returns {Promise} + */ + getDatabaseEngines(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getDatabaseEngines(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createDatabase function of RDBMSLinodeClass + * @param {UnionType} engine - Data required for createDatabase + * @param {CreateDatabasePayload} data - Data required for createDatabase + * @returns {Promise} + */ + createDatabase(engine, data) { + return new Promise((resolve, reject) => { + this._linode + .createDatabase(engine, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getEngineDatabase function of RDBMSLinodeClass + * @param {Engine} engine - Data required for getEngineDatabase + * @param {NumberKeyword} databaseID - Data required for getEngineDatabase + * @returns {Promise} + */ + getEngineDatabase(engine, databaseID) { + return new Promise((resolve, reject) => { + this._linode + .getEngineDatabase(engine, databaseID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateDatabase function of RDBMSLinodeClass + * @param {Engine} engine - Data required for updateDatabase + * @param {NumberKeyword} databaseID - Data required for updateDatabase + * @param {UpdateDatabasePayload} data - Data required for updateDatabase + * @returns {Promise} + */ + updateDatabase(engine, databaseID, data) { + return new Promise((resolve, reject) => { + this._linode + .updateDatabase(engine, databaseID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDatabase function of RDBMSLinodeClass + * @param {Engine} engine - Data required for deleteDatabase + * @param {NumberKeyword} databaseID - Data required for deleteDatabase + * @returns {Promise} + */ + deleteDatabase(engine, databaseID) { + return new Promise((resolve, reject) => { + this._linode + .deleteDatabase(engine, databaseID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_RDBMS; diff --git a/generator/generatedClasses/Linode/storage/linode-storageBucket.js b/generator/generatedClasses/Linode/storage/linode-storageBucket.js index a2990dd9..5b3b0741 100644 --- a/generator/generatedClasses/Linode/storage/linode-storageBucket.js +++ b/generator/generatedClasses/Linode/storage/linode-storageBucket.js @@ -1,95 +1,101 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a StorageBucketLinodeClass object - * @category Linode - */ + * Class to create a StorageBucketLinodeClass object + * @category Linode + */ class Linode_StorageBucket { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getBucket function of StorageBucketLinodeClass - * @param {StringKeyword} clusterId - Data required for getBucket - * @param {StringKeyword} bucketName - Data required for getBucket - * @returns {Promise} - */ - get(clusterId, bucketName) { - return new Promise((resolve, reject) => { - this._linode.getBucket(clusterId, bucketName) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getBuckets function of StorageBucketLinodeClass - * @param {Params} params - Data required for getBuckets - * @param {Filter} filters - Data required for getBuckets - * @returns {Promise} - */ - list(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getBuckets(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createBucket function of StorageBucketLinodeClass - * @param {ObjectStorageBucketRequestPayload} data - Data required for createBucket - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode.createBucket(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteBucket function of StorageBucketLinodeClass - * @param {ObjectStorageDeleteBucketRequestPayload} {cluster,label} - Data required for deleteBucket - * @returns {Promise} - */ - delete({ cluster, label }) { - return new Promise((resolve, reject) => { - this._linode.deleteBucket({ cluster, label }) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getBucketAccess function of StorageBucketLinodeClass - * @param {StringKeyword} clusterId - Data required for getBucketAccess - * @param {StringKeyword} bucketName - Data required for getBucketAccess - * @returns {Promise} - */ - getBucketAccess(clusterId, bucketName) { - return new Promise((resolve, reject) => { - this._linode.getBucketAccess(clusterId, bucketName) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateBucketAccess function of StorageBucketLinodeClass - * @param {StringKeyword} clusterId - Data required for updateBucketAccess - * @param {StringKeyword} bucketName - Data required for updateBucketAccess - * @param {ObjectStorageBucketAccessRequest} data - Data required for updateBucketAccess - * @returns {Promise} - */ - updateBucketAccess(clusterId, bucketName, data) { - return new Promise((resolve, reject) => { - this._linode.updateBucketAccess(clusterId, bucketName, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} do Linode SDK + * @param {object} options SDK options + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getBucket function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for getBucket + * @param {StringKeyword} bucketName - Data required for getBucket + * @returns {Promise} + */ + get(clusterId, bucketName) { + return new Promise((resolve, reject) => { + this._linode + .getBucket(clusterId, bucketName) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getBuckets function of StorageBucketLinodeClass + * @param {Params} params - Data required for getBuckets + * @param {Filter} filters - Data required for getBuckets + * @returns {Promise} + */ + list(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getBuckets(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createBucket function of StorageBucketLinodeClass + * @param {ObjectStorageBucketRequestPayload} data - Data required for createBucket + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode + .createBucket(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteBucket function of StorageBucketLinodeClass + * @param {ObjectStorageDeleteBucketRequestPayload} {cluster,label} - Data required for deleteBucket + * @returns {Promise} + */ + delete({ cluster, label }) { + return new Promise((resolve, reject) => { + this._linode + .deleteBucket({ cluster, label }) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getBucketAccess function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for getBucketAccess + * @param {StringKeyword} bucketName - Data required for getBucketAccess + * @returns {Promise} + */ + getBucketAccess(clusterId, bucketName) { + return new Promise((resolve, reject) => { + this._linode + .getBucketAccess(clusterId, bucketName) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateBucketAccess function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for updateBucketAccess + * @param {StringKeyword} bucketName - Data required for updateBucketAccess + * @param {ObjectStorageBucketAccessRequest} data - Data required for updateBucketAccess + * @returns {Promise} + */ + updateBucketAccess(clusterId, bucketName, data) { + return new Promise((resolve, reject) => { + this._linode + .updateBucketAccess(clusterId, bucketName, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_StorageBucket; diff --git a/generator/transformers/aws/transformer.ts b/generator/transformers/aws/transformer.ts index 30f44614..ed063fe9 100644 --- a/generator/transformers/aws/transformer.ts +++ b/generator/transformers/aws/transformer.ts @@ -152,9 +152,9 @@ export async function transform( ts.isIdentifier(childNode) && childNode.text === 'SDKFunctionName' ) { - const args = classData.functions[ - count - ].params.map(param => ts.createIdentifier(param.name)); + const args = classData.functions[count].params.map( + param => ts.createIdentifier(param.name) + ); node.arguments = args.concat(node.arguments); } }); diff --git a/generator/transformers/azure/transformer.ts b/generator/transformers/azure/transformer.ts index 24b0a4d9..e27a4ef6 100644 --- a/generator/transformers/azure/transformer.ts +++ b/generator/transformers/azure/transformer.ts @@ -187,9 +187,9 @@ export async function transform( ts.isIdentifier(childNode) && childNode.text === 'SDKFunctionName' ) { - const args = classData.functions[ - count - ].params.map(param => ts.createIdentifier(param.name)); + const args = classData.functions[count].params.map( + param => ts.createIdentifier(param.name) + ); node.arguments = args; } }); diff --git a/generator/transformers/do/transformer.ts b/generator/transformers/do/transformer.ts index 15b7b45a..115ed946 100644 --- a/generator/transformers/do/transformer.ts +++ b/generator/transformers/do/transformer.ts @@ -167,9 +167,9 @@ export async function transform( ts.isIdentifier(childNode) && childNode.text === 'SDKFunctionName' ) { - const args = classData.functions[ - count - ].params.map(param => ts.createIdentifier(param.name)); + const args = classData.functions[count].params.map( + param => ts.createIdentifier(param.name) + ); node.arguments = args.concat(node.arguments); } }); diff --git a/generator/transformers/googleCloud/clientBasedTransformer.ts b/generator/transformers/googleCloud/clientBasedTransformer.ts index fbfdbe48..b2819e53 100644 --- a/generator/transformers/googleCloud/clientBasedTransformer.ts +++ b/generator/transformers/googleCloud/clientBasedTransformer.ts @@ -217,9 +217,9 @@ export async function clientBasedTransform( ts.isIdentifier(childNode) && childNode.text === 'SDKFunctionName' ) { - const args = classData.functions[ - count - ].params.map(param => ts.createIdentifier(param.name)); + const args = classData.functions[count].params.map( + param => ts.createIdentifier(param.name) + ); node.arguments = args; } }); diff --git a/generator/transformers/linode/transformer.ts b/generator/transformers/linode/transformer.ts index 300bd38b..cf3e6c2b 100644 --- a/generator/transformers/linode/transformer.ts +++ b/generator/transformers/linode/transformer.ts @@ -132,9 +132,9 @@ export async function transform( ts.isIdentifier(childNode) && childNode.text === 'SDKFunctionName' ) { - const args = classData.functions[ - count - ].params.map(param => ts.createIdentifier(param.name)); + const args = classData.functions[count].params.map( + param => ts.createIdentifier(param.name) + ); node.arguments = args.concat(node.arguments); } }); diff --git a/generator/transformers/oracle/transformer.ts b/generator/transformers/oracle/transformer.ts index 1d5bf81c..d01a42d9 100644 --- a/generator/transformers/oracle/transformer.ts +++ b/generator/transformers/oracle/transformer.ts @@ -159,9 +159,9 @@ export async function transform( ts.isIdentifier(childNode) && childNode.text === 'SDKFunctionName' ) { - const args = classData.functions[ - count - ].params.map(param => ts.createIdentifier(param.name)); + const args = classData.functions[count].params.map( + param => ts.createIdentifier(param.name) + ); node.arguments = args.concat(node.arguments); } }); From 5c4196a66f6e2f85f0958f79d59f1f7c2e351fa5 Mon Sep 17 00:00:00 2001 From: Partik SIngh Date: Sun, 27 Aug 2023 18:36:20 +0530 Subject: [PATCH 3/6] Final changes Signed-off-by: Partik SIngh --- generator/README.md | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/generator/README.md b/generator/README.md index d5d70d46..39a7ac6e 100644 --- a/generator/README.md +++ b/generator/README.md @@ -94,9 +94,43 @@ DO:

+- Oracle +``` +Oracle: + create: containerengine createCluster +``` +

+ + +

+ +``` +Oracle: + createKey: keymanagement createKey KmsManagementClient +``` +

+ + +

+ +- Linode + +``` +Linode: + create: kubernetes kubernetes.d.ts createKubernetesCluster + + +``` +

+ + +

+ + ## Code parsers -This is the simplest part of the code generation tool. The SDK files are read from the relevant SDKs as specified in the `node-cloud.yml` file. Afterwards, it is converted to an **Abstract Syntax Tree**. Finally, the class declaration Node of that **Abstract Syntax Tree** is returned. This retured Node is another **Abstract Syntax Tree** since a class declaration itself is another **Abstract Syntax Tree**. +This is the simplest part of the code generation tool. The SDK files are read from the relevant SDKs as specified in the `node-cloud.yml` file. Afterwards, it is converted to an **Abstract Syntax Tree**. Finally, the class declaration Node of that **Abstract Syntax Tree** is returned in case of SDKs which are class based,for SDKs like Linode which are function based we collect the FirstStatement nodes in an array which represent the exported arrow function declaration. This retured Node is another **Abstract Syntax Tree** since a class declaration itself is another **Abstract Syntax Tree**. + ## Data extraction functions From d92b98654efef1e63b271a61593fbbd6004a2e5c Mon Sep 17 00:00:00 2001 From: Partik SIngh Date: Sun, 27 Aug 2023 20:04:36 +0530 Subject: [PATCH 4/6] Used Readme Signed-off-by: Partik SIngh --- README.md | 239 ++++++++++-------- .../generator/high_level_diagrams/linode.png | Bin 0 -> 55152 bytes .../high_level_diagrams/linode_diagram.png | Bin 0 -> 170882 bytes .../generator/high_level_diagrams/oracle.png | Bin 0 -> 44370 bytes .../generator/high_level_diagrams/oracle2.png | Bin 0 -> 52948 bytes .../high_level_diagrams/oracle_diagram.png | Bin 0 -> 172020 bytes .../high_level_diagrams/oracle_diagram2.png | Bin 0 -> 198394 bytes examples/compute/linode-ks.js | 25 +- examples/database/linode-sql.js | 9 +- examples/images/linode-images.js | 70 +++++ examples/network/linode-dns.js | 6 +- examples/network/linode-lb.js | 74 +----- examples/storage/linode-objectStorage.js | 62 +++++ generator/README.md | 28 +- .../compute/linode-kubernetes.js | 36 ++- .../{linode-noSql.js => linode-RDBMS.js} | 25 +- packages/linode-plugin/linode.js | 18 +- .../storage/linode-storageBucket.js | 101 ++++++++ 18 files changed, 458 insertions(+), 235 deletions(-) create mode 100644 assets/generator/high_level_diagrams/linode.png create mode 100644 assets/generator/high_level_diagrams/linode_diagram.png create mode 100644 assets/generator/high_level_diagrams/oracle.png create mode 100644 assets/generator/high_level_diagrams/oracle2.png create mode 100644 assets/generator/high_level_diagrams/oracle_diagram.png create mode 100644 assets/generator/high_level_diagrams/oracle_diagram2.png create mode 100644 examples/images/linode-images.js create mode 100644 examples/storage/linode-objectStorage.js rename packages/linode-plugin/database/{linode-noSql.js => linode-RDBMS.js} (80%) create mode 100644 packages/linode-plugin/storage/linode-storageBucket.js diff --git a/README.md b/README.md index 34788296..5a7832ad 100644 --- a/README.md +++ b/README.md @@ -19,18 +19,18 @@ Table of Content -- [Introduction](#introduction) -- [Supported Service Providers](#-supported-service-providers) -- [Getting Started](#getting-started) - - [NodeCloud Plugins](#nodecloud-plugins) - - [Example](#example) -- [Overriding Providers](#overriding-providers) -- [Service Types](#-service-types) -- [Development setup](#-development-setup) -- [Important Notes for Developers](#important-notes-for-developers-) -- [Test Changes](#test-changes) -- [NodeCloud Code Generation tool](#nodecloud-code-generation-tool) -- [License](#-license) +- [Introduction](#introduction) +- [Supported Service Providers](#-supported-service-providers) +- [Getting Started](#getting-started) + - [NodeCloud Plugins](#nodecloud-plugins) + - [Example](#example) +- [Overriding Providers](#overriding-providers) +- [Service Types](#-service-types) +- [Development setup](#-development-setup) +- [Important Notes for Developers](#important-notes-for-developers-) +- [Test Changes](#test-changes) +- [NodeCloud Code Generation tool](#nodecloud-code-generation-tool) +- [License](#-license) # Introduction @@ -38,18 +38,20 @@ Table of Content NodeCloud will be useful to you if: -- you work on a project which uses multiple cloud providers -- you are looking for an abstract cloud API which can switch between cloud providers with fewer code changes -- you are an open-source enthusiast who is into cloud engineering or code generation -- you want to improve your skills in NodeJS, Typescript and cloud service providers +- you work on a project which uses multiple cloud providers +- you are looking for an abstract cloud API which can switch between cloud providers with fewer code changes +- you are an open-source enthusiast who is into cloud engineering or code generation +- you want to improve your skills in NodeJS, Typescript and cloud service providers ## 📘 Supported Service Providers -- Amazon Web Services (AWS) -- Azure -- Google Cloud Platform (GCP) -- DigitalOcean -- AliCloud +- Amazon Web Services (AWS) +- Azure +- Google Cloud Platform (GCP) +- DigitalOcean +- AliCloud +- Oracle +- Linode _📢 if your required cloud provider plugin is not listed here, we'd love your help to add it :)_ @@ -71,13 +73,15 @@ Once `@nodecloud/common` is installed, you need to install the plugins to intera ### NodeCloud Plugins -| Plugin | Installation | -| -------------------- | --------------------------------------------------------------------- | -| AWS plugin | `yarn add @nodecloud/aws-plugin` or `npm i @nodecloud/aws-plugin` | -| Azure plugin | `yarn add @nodecloud/gcp-plugin` or `npm i @nodecloud/gcp-plugin` | -| Google Cloud plugin | `yarn add @nodecloud/azure-plugin` or `npm i @nodecloud/azure-plugin` | | -| Digital Ocean plugin | `yarn add @nodecloud/do-plugin` or `npm i @nodecloud/do-plugin` | -| Alibaba plugin | `yarn add nodecloud-ali-plugin` or `npm i nodecloud-ali-plugin` | +| Plugin | Installation | +| -------------------- | ----------------------------------------------------------------------- | +| AWS plugin | `yarn add @nodecloud/aws-plugin` or `npm i @nodecloud/aws-plugin` | +| Azure plugin | `yarn add @nodecloud/gcp-plugin` or `npm i @nodecloud/gcp-plugin` | +| Google Cloud plugin | `yarn add @nodecloud/azure-plugin` or `npm i @nodecloud/azure-plugin` | | +| Digital Ocean plugin | `yarn add @nodecloud/do-plugin` or `npm i @nodecloud/do-plugin` | +| Alibaba plugin | `yarn add nodecloud-ali-plugin` or `npm i nodecloud-ali-plugin` | +| Oracle plugin | `yarn add @nodecloud-oracle-plugin` or `npm i @nodecloud-oracle-plugin` | +| Linode plugin | `yarn add @nodecloud-linode-plugin` or `npm i @nodecloud-linode-plugin` | **3️⃣ Create the NodeCloud config file** @@ -95,37 +99,49 @@ This config file can contain an array of objects for all providers and all will ### Example ```js -const nodeCloudAwsPlugin = require("@nodecloud/aws-plugin"); -const nodeCloudGcpPlugin = require("@nodecloud/gcp-plugin"); -const nodeCloudAzurePlugin = require("@nodecloud/azure-plugin"); -const nodeCloudDoPlugin = require("@nodecloud/do-plugin"); +const nodeCloudAwsPlugin = require('@nodecloud/aws-plugin'); +const nodeCloudGcpPlugin = require('@nodecloud/gcp-plugin'); +const nodeCloudAzurePlugin = require('@nodecloud/azure-plugin'); +const nodeCloudDoPlugin = require('@nodecloud/do-plugin'); +const nodeCloudOraclePlugin = require('@nodecloud/oracle-plugin'); +const nodeCloudLinodePlugin = require('@nodecloud/linode-plugin'); const providers = [ - { - name: "aws", - tag: "aws", - plugin: nodeCloudAwsPlugin, - configPath: "C:\\Users\\Rajitha\\opensource\\aws_cred.json" - }, - { - name: "google", - tag: "google", - plugin: nodeCloudGcpPlugin, - configPath: { - projectId: "astral-hold-276807", - keyFilename: "C:\\Users\\Rajitha\\opensource\\gcp_cred.json" - } - }, - { - name: "azure", - tag: "azure", - plugin: nodeCloudAzurePlugin - }, - { - name: "digitalocean", - tag: "do", - plugin: nodeCloudDoPlugin - } + { + name: 'aws', + tag: 'aws', + plugin: nodeCloudAwsPlugin, + configPath: 'C:\\Users\\Rajitha\\opensource\\aws_cred.json', + }, + { + name: 'google', + tag: 'google', + plugin: nodeCloudGcpPlugin, + configPath: { + projectId: 'astral-hold-276807', + keyFilename: 'C:\\Users\\Rajitha\\opensource\\gcp_cred.json', + }, + }, + { + name: 'azure', + tag: 'azure', + plugin: nodeCloudAzurePlugin, + }, + { + name: 'digitalocean', + tag: 'do', + plugin: nodeCloudDoPlugin, + }, + { + name: 'oracle', + tag: 'oracle', + plugin: nodeCloudOraclePlugin, + }, + { + name: 'linode', + tag: 'linode', + plugin: nodeCloudLinodePlugin, + }, ]; module.exports = providers; ``` @@ -137,52 +153,52 @@ Congratulations! You just configured NodeCloud in your project. Let's start with The below code is an example of usage in AWS. ```js -const nc = require("@nodecloud/common"); // NodeCloud common module +const nc = require('@nodecloud/common'); // NodeCloud common module const optionsProvider = { - overrideProviders: false + overrideProviders: false, }; const ncProviders = nc.getProviders(optionsProvider); const options = { - apiVersion: "2017-11-01" + apiVersion: '2017-11-01', }; const computeModule = ncProviders.aws.compute(options); function launchInstance() { - const instanceParams = { - ImageId: "ami-07ebfd5b3428b6f4d", // Image of Ubuntu Server 18.04 LTS - InstanceType: "t2.micro", - KeyName: "nodeCloud", // key name of Key pair - MinCount: 1, - MaxCount: 1 - }; - - // create AWS EC2 instance - computeModule - .create(instanceParams) - .then(res => { - console.log(`All done ! ${res}`); - }) - .catch(err => { - console.log(`Oops something happened ${err}`); - }); + const instanceParams = { + ImageId: 'ami-07ebfd5b3428b6f4d', // Image of Ubuntu Server 18.04 LTS + InstanceType: 't2.micro', + KeyName: 'nodeCloud', // key name of Key pair + MinCount: 1, + MaxCount: 1, + }; + + // create AWS EC2 instance + computeModule + .create(instanceParams) + .then(res => { + console.log(`All done ! ${res}`); + }) + .catch(err => { + console.log(`Oops something happened ${err}`); + }); } function stopInstance() { - const params = { - InstanceIds: ["i-0928af5c626f85da9"], - DryRun: false - }; - - // stop AWS EC2 instance - computeModule - .stop(params) - .then(res => { - console.log(res); - }) - .catch(err => { - console.log(err); - }); + const params = { + InstanceIds: ['i-0928af5c626f85da9'], + DryRun: false, + }; + + // stop AWS EC2 instance + computeModule + .stop(params) + .then(res => { + console.log(res); + }) + .catch(err => { + console.log(err); + }); } ``` @@ -191,32 +207,35 @@ function stopInstance() { NodeCloud officially supports AWS, GCP, Azure, DigitalOcean and AliCloud. If you want to use a community-driven plugin override the providers' list as follows. ```js -const nodeCloud = require("nodecloud"); +const nodeCloud = require('nodecloud'); const options = { - overrideProviders: true + overrideProviders: true, }; const ncProviders = nodeCloud.getProviders(options); ``` ## 📟 Service Types -| Service Category | Service | AWS | GCP | Azure | DigitalOcean | AliCloud | -| ----------------------- | ----------------------------------- | :-----------------------------------: | :-------------------------------: | :---------------------------------------------------------------------: | :---------------------------------------: | :---------------------------------------------------: | -| Compute | IaaS | EC2 | Compute Engine | Virtual Machine | Droplets | ECS | -| | Faas | AWS Lambda\* | Cloud Functions\* | Azure Functions\* | - | Function Compute\* | -| | Containers | ECS, EKS | Google Kubernetes Engine | AKS, Azure Service Fabric\* | DO Kubernetes | Container Service*, Container Service for Kubernetes* | -| | Containers (without infrastructure) | AWS Fargate\* | Cloud Run\* | - | - | ECI\* | -| | Paas | AWS Elastic Beanstalk | App Engine\* | App Service | - | Simple Application Server\* | -| Storage | Object Storage | S3 | Cloud Storage | Azure Blob Storage | Spaces\* | Bucket (OSS) | -| | Block Storage | EBS | Persistent Disks | Disk Storage | Volumes | NAS\* | -| Networking | Load Balancer | ELB | Cloud Load Balancing\* | Azure Load Balancer | DO Load Balancer | SLB | -| | Peering/Dedicated Interconnect | Direct Connect | Cloud Interconnect\* | ExpressRoute\* | - | Express Connect\* | -| | DNS | Route53 | Google Domains, Cloud DNS | Azure DNS | DO DNS | Alibaba Cloud DNS\* | -| Databases | RDBMS | RDS, Amazon Aurora*, Amazon Redshift* | Cloud SQL\*, Cloud Spanner | SQL Database, Azure Database for MySQL*, Azure Database for PostgreSQL* | Managed Databases(PostgreSQL\* and MySQL) | ApsaraDB (MySQL, MariaDB TX, SQL Server, PostgreSQL) | -| | NoSQL: key-value | DynamoDB | Cloud Firestore, Cloud Bigtable\* | Table Storage | Managed Databases(Redis)\* | ApsaraDB for Redis\* | -| | NoSQL: indexed | Amazon SimpleDB\* | Cloud Firestore | Cosmos DB | - | ApsaraDB for MongoDB\* | -| Security/ Authorization | Identity Access Management | AWS IAM | Cloud IAM\* | Azure Active Directory*, Azure Role Based Access Control* | - | Resource Access Management\* | -| Management | Key Management | AWS-KMS | - | - | Do-Keys | - | +| Service Category | Service | AWS | GCP | Azure | DigitalOcean | AliCloud | Linode | Oracle | +| ----------------------- | ----------------------------------- | :-----------------------------------: | :-------------------------------: | :---------------------------------------------------------------------: | :---------------------------------------: | :---------------------------------------------------: | :---------------------------: | :-------------------: | +| Compute | IaaS | EC2 | Compute Engine | Virtual Machine | Droplets | ECS | Linodes | OCI ContainerInstance | +| | Faas | AWS Lambda\* | Cloud Functions\* | Azure Functions\* | - | Function Compute\* | - | - | +| | Containers | ECS, EKS | Google Kubernetes Engine | AKS, Azure Service Fabric\* | DO Kubernetes | Container Service*, Container Service for Kubernetes* | LKS | OCI ContainerEngine | +| | Containers (without infrastructure) | AWS Fargate\* | Cloud Run\* | - | - | ECI\* | - | - | +| | Paas | AWS Elastic Beanstalk | App Engine\* | App Service | - | Simple Application Server\* | - | - | +| Storage | Object Storage | S3 | Cloud Storage | Azure Blob Storage | Spaces\* | Bucket (OSS) | Object Storage | OCI Object Storage | +| | Block Storage | EBS | Persistent Disks | Disk Storage | Volumes | NAS\* | - | OCI Volume | +| Networking | Load Balancer | ELB | Cloud Load Balancing\* | Azure Load Balancer | DO Load Balancer | SLB | Node Balancer | OCI LoadBalancer | +| | Peering/Dedicated Interconnect | Direct Connect | Cloud Interconnect\* | ExpressRoute\* | - | Express Connect\* | - | - | +| | DNS | Route53 | Google Domains, Cloud DNS | Azure DNS | DO DNS | Alibaba Cloud DNS\* | Domains | OCI DNS | +| Databases | RDBMS | RDS, Amazon Aurora*, Amazon Redshift* | Cloud SQL\*, Cloud Spanner | SQL Database, Azure Database for MySQL*, Azure Database for PostgreSQL* | Managed Databases(PostgreSQL\* and MySQL) | ApsaraDB (MySQL, MariaDB TX, SQL Server, PostgreSQL) | Database(Postgres and Myssql) | OCI Mysql | +| | NoSQL: key-value | DynamoDB | Cloud Firestore, Cloud Bigtable\* | Table Storage | Managed Databases(Redis)\* | ApsaraDB for Redis\* | - | OCI MOngoDb | +| | NoSQL: indexed | Amazon SimpleDB\* | Cloud Firestore | Cosmos DB | - | ApsaraDB for MongoDB\* | - | - | +| Security/ Authorization | Identity Access Management | AWS IAM | Cloud IAM\* | Azure Active Directory*, Azure Role Based Access Control* | - | Resource Access Management\* | - | - | +| Management | Key Management | AWS-KMS | - | - | Do-Keys | - | Monitoring | OCI KeyManagement | +| Firewalls | Firewalls | - | - | - | - | - | Firewalls | - | +| Images | Images | - | - | - | - | - | Images | - | +| Blockchain | Blockchain | - | - | - | - | - | - | OCI Blockchain | \*yet to be implemented diff --git a/assets/generator/high_level_diagrams/linode.png b/assets/generator/high_level_diagrams/linode.png new file mode 100644 index 0000000000000000000000000000000000000000..e3cb3c3360acdc949443fde3b8586efbb955f650 GIT binary patch literal 55152 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

4y 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

F9s<^rRwuV!Xu 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 M>fI^2{qXt!0kiT4Gynhq literal 0 HcmV?d00001 diff --git a/assets/generator/high_level_diagrams/linode_diagram.png b/assets/generator/high_level_diagrams/linode_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..a5b56c142c5759d883e36b3de9dc7b8b68396b6b GIT binary patch literal 170882 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 z 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 z\!knZ`*$&MBT8$*(>g8ahZ&%);_4W58kS0Q$XkDbJ$UB)uiJ*qGJXQ`d)bBQG-fI=O5Ky#fV zoqENVjjZcyaX9vnGB{KLXm018WcS0UN1Qv%_&FbP@k&beuC5Zs-j0okj^q^+0~)xQ z<#-Mt_x%3-ie+C$R%2s^_Uh)y^FKm{3%t&IP3GmGz`LjRHYNk5E~C!QjC94A=~`&} z(pS3dA_mGq0gkmyMuakx2}zZ`(qI#Ub7qru;2GtKADy&DCzzoj252uCcBzUY$^Orbq>+cjE-8tSwdt-nKwR+DM|j zX#B7H3+`=`)10A9qiJ~=B^a%lBEf~Fp)xTHLrgx>+>cC48eAIp4;cxrejHvkY^tYum_$TUIu82UkOPMr zIM2ox%{NP@`0>NeAE0am=6PGZ#evwGx0xyrHgYp7ur*hZA+~631*i_Tk=&M)5+5%2 zU?-OXhelmpEH+{Mxu&ts{QiRIUd*hqsos1LPSi`hJ|xB%O)5Ze|LuX>`~Kwee3$@L znTKg)0k*y+)e+fzl4b}K&dH*f(<7QW9k{EbYF9DPvrE% z(XG?zB#Vc0-9Kn76D;yHF6YN`+is;5o4R_yqJnCeUt?z==0ltEUd1h2CxlN_OCiEC zDHd}u>6CfOm%SpBD}-Nb5#TRO@(OhtmdFV+kDTY=4>>w5`!sQC+MS< z=ymrByee-%%#LEH;i9ezvIa`N4GumA5%k6Fi zIao5uJjseo*OZ)9JI9K$vgUL#PwhJY!0KXssJ(rpnCChV%`N$g2+qFt@(8Af=rl^) z;#p!A-t=C{krIR1su9E4d84y1ZoflC-?J@qI@laZ{!o7R!Q<78Fx3i-=Atcp89#%s6h45rdM_+o@ME;<|kd>f~`E((> zp03v844Vf{`@iHM~GZ3LQ&2&y~J#7q(w_%D> z=64+!kLUWjS^-{nHFbAYs;`54a-V_r^hxK*v~x9CCU*Lm>orE%;vs#>HLV+VsHZyQ zktyFqZ26_oO!E9Zc&7KB^X=98i8kD?9`FM<+n&L1*<0rujZN_pUWRkob?&ThJ?94VT?mFT5gPk&8}=aME&kmF97=4e=& zJ0~2D;Ssn#T(F>`@2a&!e^M>!|DqK&QM~(k&C~E>+|1g_%GW4m8?<`MD_~&RhvXQo z1s#dHM-5c|oGaIT6PrA(1@rg8qP7%8(o*f-h%!~aJn=r+A`g^fPjPECc}pG zmLB3;Sy#ejMbQz!#*l0zwc1VG8OZ!z+jEiXF=wmcf}lf^OPFanC*yNc@Y18U^(n2< zS-=XZl_~fn<->D2>Q>$c{|t1snpKoSL#U^-Hg+O8up;XL{Oezy3?da;@zqI4+SR z?V5lw(|Kw*X9kNJK9a$9QOfY$%rN}~F@aDy@2@kLH11I)W;As3CvtBGaZ93Zt4K;` z4K$TMAO80A-#GSvBamE@yp!pg5bv5;VpP`_KV>w%Ry}0`{IibQb8KQFdt{A|k}!0} ziZ83iF1@JgscnzX2!F;e>4UU+5!JNcK3oH65x>vRZO+WH<4oXP>C{%FyXW zo0OBwIF~ZJYPXy64Cv_WyxKw|Q6VN_ywEO`BhJ-k>{hdo zbklUJ4G-xCX8zJLe6KwG0drMX<+Ab1;Mpgt z#aXO7p9jsNL`NIdE)pRTc_m%ihy=Nn3ifS1q!!-tyN2~v^b}4u8NxiXa7#OVQ9EfC zifE2Q)wi>SnRq)tg8k~W-+KH~$uN<#uZ;PaV_%Ps;(GdpwNs_#_ltD#J#D$K1wwAT z(Rm8Bu!Ga_@I&yWW#EfGz*hnAMzt|nKTWWl4=H8HFqGdznMK_1a@{hKO=F74;?3Gj zawtLRIX1K^HhTS&I;D=crDl`667v+%_W!f>l7qJ%n@L=E>RQ(4zs}ipubS|4^xNJe zo}b;@Z#X$h3j>|BaL5yOrwh`f@p{K8-JHeMpKqttLkf{_vYRS0o8o=Bw(K&R1d42N zrp=)ylgA~P-`IK4s3=8FN3m<4h~7*;PHcA4j6>l;2)$`b<6Gr#9|oS%X+E?q=aeFx z4xed1OGXNf#e78i8gO#HL`ssAxA|7uxPc+g#Qs))+Y3^TrRz4AaIpbqxvD_l55w-* zxJ#b?JOmOdKe(#>#1)R2kAD>~_wmrbb3=r&kAFtsf&A@HtR|K|sZ+=!cE|cnF~gJb z5wEi#ii2NS(R@-;(X(k`iBJB=95zX4)%!mglRenMH^s}c(tV^uBQJ;GkKAXvcW{*VGsQSrl;#eFTZlx9{FNYq`F zyv}b|rjy?AH@iI&dp<2o_F1esgY?dxKJ?jSu*|$GXO$_C4GEi}_qu{juCz4hHbl|w ztHsVKyiufWs!AUgK3hNiuz-r1ohb4<3gm@lfJ)hxQ-sx~Mz;iEiI><8W>m^ol%0cS~v?8{Gdc=USQKM&pMf0;qR0(B~oTXa=}&P8_}(Lij>vk;**CUE$b$!#0c8Dw zLahz)>R+jEYLf9V2^dHnpIn7uHWl96%n-jf!Wj;Z?MDlAo^Oa@*=^<|#{^Ic1d_f3*OI>GL94toOrigBl`L%wR@TE zEJnrBDvf-w6T`sr+~gC4A&kMp)3avlnB!!-FQB)=$SdI-BX!CG_dc@LAMqPi{GY9f z;N<}YjW=VPYFIg0l>KboEhL6m2}z?Te{laheUeC0hrShJ-}_{JEwz59Q!irHjE`kh zNyf0~rhE!XE8C?B|3iLXVC7xqPIlB?YJ)i0+uAvQR;{qf7{rR;=;0#yZviKOFK_#geHPn6+&m;G64XIFfrixmhgyY4kK+O zZwP;3MH&-FbgWv~g$s)Y@>#*Vqdisw+1*l6Tt#486u0>gkm2E%^(I|G#7=vj%iw0% z;PiSk)$zj;4StA%wlrHSB&;21uQPt%Ui{tiju)@1e1kOFzZ&%sh>6zF;+u1^`t@$| zkN*$I_^wtCukHuy*EJ|tOFgzVfM+<-`u1g!#u-&9JSv)bc~io7gstVn?aKK(k9{Eu z@f2Q*@?8r|;M-l|>idC2G%HuyF(u(n|D`9;_M$gT4{?8Wv*%Q#JuFai+16JS!tjPMVZUnsydnf1>(P{qFE`2dBBM%XHY~4+5#Z*=MDlzZ=9Q zb>O#I%n$r4@3AGTQ_^?qYvvP1;zUTE)TzaqCYui$pEoS0q z*dCECsi1Sk;VMu|oxW;zdX&aQv?DzaRed!Jxq?&ym(w7^F_5=K><)tW#_9W4_MQ*z zGyN@@-VHK#-0*JUO?QZHHrCf%wT{GzW9ML^MK=@GyG&XMex4}g9V}EUI8eV#ffkjv z{zN>3%l2~zlc!PQ;$fYTODBP{qKQ?uV8y_s4aw$U&#R?Aq3L5RM4-P1zGzvgx0I_5 zyR%e$cxczfuwl?!(mmiXblsO|#5w2w2L2{Z2(WL8zK14yh*u?$ck67%V~*L}q*(ozAb7S=Fp zLECNw-m1!YL?Vi0uNL>>rw-S*@4<$F??|@p%`X~{0iIJ+%5S3OO4BnlFYEcG6zKi% zyL)s7msZ?#DW>LU!E`092eH>+lLU8I`L0(Ae^giUuhVJDY_g)K@t`Vi@^og7pBgNY zU)etNzy(Zz-OBfWK*Ir(=$*`M{=|%F>>2hv=+`GB75T^EPF62N*&zs!6+81WoHD5@ z7BBS9$}MIg^Z2xVyPYB&{DMg(AGi->DN@xLqjz#gmiB$-ax261{>!o%`cE>Kq8UBJ zK(U{$et0Kj$bZ~8N&WPuvExXa2Tgwbd(DbA-@1-1-`G|#AhA2S3EwUILHXTc_$`$7 z?Z?h?>tT*G1Neh3*EUs!6bq(USTDX&RE0{y9k*k~Z%w8M4NE9OKASX-{{t=&3gK*! z+T*gyn|l`3$*|=Jt%(J%Z?!1uDIFD+55v`=!?c>07%zjzi3_tfZbTSP9t}aZeZzF zlm_dR?i6zu0Z1#av8p%yY=&MPdc=+;x0&U*!s;bPrhjb#&S4=b-TFn*l~~va%7_|W z4nm^t17ldGGEHtJ)t&Ofdp!g{1WaijfC#wGbcJ5-I>LUyMqNk8YS2!7LxRYWZ={CC z{C7EI$^=Yv(Z`(H<-vB^MdUHeoe>TM*DPC%+b{dzNQh-lJqyJR?;OouxFTSX*tCCF z&h+UlFHBW@^#T3u1IgFe*&0LGlhk=0SBr#`7`&{CJ8j`OV}**pT&#=gv>VIs-ojf{ z8Qs6g*1nXjRkm{@C8i#p1A#bXSHE&;X1%WZ`mUii%y0UeAARcCMo1E8pg4-=#Agx0 z+Sih=sk$qgKhb8We+APZ)tlsyxTDqRJ+d}gjSSkVKbB-ZY$p0GIq_7Ta^|!n!*@gY zqTaZ+dEFucnr3FVw!654_gQBwM{A{JxWT+@G!RXwn`>+=PE}St0(G@b6k8EQZmni< za(62QlHUIws46$E0;qyRkK3k%&L3hd%&A+S+6FjL84lH>*Rs`Xx{AF{dK#YLohkI z=q3^~;4s{-wU9T$VIJ>V96A`$Tw3VhL7S=?r?ddk6IjtmAh$@e75;KXGM=YtpGLg; z#6~b5{ImW@%)nI;OrJNrBoVFFeYikDeytdyEkahzd_y3wK>qZNZXY9MQ0yKrUEsib z0p$U#;JaBOrM&V7Q5bK~!dX22iVV@Zc`YGjlp=N2D4$1n>#ndJsaB>v4|!74WkuD+ znNe}li;}#O)nSt9bgZx4&@X;wSz~9Iymln;)1yPl{ITzbhHd_HBx#oL=Hu~^Qf%Ji zcjpU^?IlLsfy+LREd{Tq7ahV@XMRrmY^;*tIG}hXM;%-=>~KL24>F1L2hH@Gqbl3=!z`vpvpP`FF;Z#nC0AU zOvy_lXCAaYeD?WCrDB1qDGVB%Y>^H^qeT|qb=X51^e4@mc~?U0vsHBEZS~0G`|hrYxP3QXcfoMW9Hu>@vNi zjSx)MGeR8tH|`B5XlOnaUN&Ex_@c#3vHFON#m!r0&qu~Bb8G@@iY70feNhs`*;}Qp zV+Sb1pX~RM7$u`rK;UZN-qpGXR_^6Az)`#2=|Qbe^yh!i3z6KVl5wCQ%)gqKl^1*~ z{6r4p?SJ(0 zmu1G2DP-jN1a?MzZ?p{4Y3P55yKmXkGcCSH**o9$)#!-y41@_Ap{XhZ=Uw*Jbg{2} z68rGJ__Ia1&r|1;V_n=?$9}6pSL?Y0?qa#mNwL&Z2k+(n!4)&Jv3G){<38kw#5ZMA zeH|rwL6T^3HTBrf!C|$3=~jC=Vb)E`9F1Pe-_H(wH#~XF=PQKBp5B(@eVRytuMl5B zOivGTV47&8Zg%}*%d2J{%BMRarrv=hp4DP+rN?U62z@P51QQmzY{o$d7)w49(3be} z(|t9zdPve(C(K40ue|3ej5lm}-lw@a&DxX@TR73`Zdd+`fl$IC#k>y7uUL_$mkj*9 z(-q!kj3x&~J$l#;u_G_zn#pz=@0PnI4q5g>G zv3VV?bR*GUxxAwuIwbzYucjQ?@K;=EQlCEjth>n;RxWnsM%!$XO}3pa9g1zphNp)ojmxt5XLd4U{qn?cnjF=YuezuV`!=|Zi@QE7lzj`!{~ z;uqVqH*Y$dvS-wtB#5TA??%eWI=ijnwxfF7e=$C+G|)$7Pda?;9pcSMg&r3w{@81$ z<_aaM`LQ3}e3McR%HvjNa3gt%6PR6GhyNb`53FDGs?piiOPIV|r;Gr)<6k1`#2-Us z!m0$frcQ!S#s$lb&Z%xc`Qky1`H_8$==3o1!YP>G!t#T=Ai^3XcGl2~69zvf49cfY zatiY&(TpeSo~mnmWf-0;l1tvUE6A1S0XvKzumKr!$5XkZqfJP+>-!u=Y`B<`fKyXR zg@4S0e)V^~^aoqf({~f=uOJ=Q{1QE~6bk5O>V$^zyUzvM-cy(>uBG?B(xVnzUG)f! z-7@hk+BNgvjw$Ilhg|!_(&tJknOGfP_fUrSIy~sWYZSO-!z91nD5Z>Q9Mn-K-WE6Z zhJN3DLSOdS!`5A!gR;VG!osfpBi15iowYOy^>5|M9%Dh$)1$ZG7~+F<6p~JnjT7bH zcO1!k1u1N=VXsFXWjb4PD-)}F{WQ9gyh}|xA<(C94PmaV7mbe$w?&(OEF=S-e%&`8 z`lyQZMFG;sq4FYiT066!1yyi{Z)5syzr8<99EZ1l=o^DhQB8^wy_$zny(^+Frvc#c zws_lsmuT)HxQOo-a%H9#V9VJ$x?K-kat<;@4LpqPXO8YIJ%T=VPHmYDXHp-b5~vvt6Uv(^ey6sjX|B+h7+C#jx)UYh`z&&gAYs0%r&g z0Rk#1n)Y3H-S=DHkUF<4JcRXA@zZ5_dUli;v7E0t$_H%SR-%bL`Hi2%)SRz*{cJWs ze6u!IK4^QOY3#h$bK`;21t$G2WAX}ga0D!?#Y{@jmHM>im z_{g7x0zTl?OHxrZqGzlE^F_nf%YeE|yQvOWC-A;ILDr=HFIk@oaUa zfXMi=oiJq4!SiTpxHTNoClRu}GdPG=Z!koBjWXTh(AqegQz_Mbs9q6@^r4t!bPFz@ zIb?09mfI^Z${e@;3laI=QZJe%jkZ>Y-E=-n@Hf(QSIyI%p+hR#R$Yn&{9uogt( z`IAM$euruuecid`qnmaTPd6unT7t6KE-SBF^QpXC6FHbA?%Q^vO`P_U{gA_w&xDBk zR&FnjYTox_mwrc&_jUKu(2ldDu;RW+(2iY@e+#p_v>v{#&qi{0;PfMZ=i8t|QVY4& zDPbp&gPnX3fT8`>l{h6~S)-YCWOPQ5KPEf0q8*9%bzg|hCt!G$^UUb<4%t<2+wdJZ zsmu33QBlvK6&2FE4_jZQXuNkix&JKSWR}m#e`lb)_E2o9`FL4N>Zk5MvytQq5+ZD4 z6HCWAZopAhk0Kn@HI0x~vEahMo_}B_49+SKDl|aE3ceZ$=IjGqF(zgC!3c)Fj_}K_ zD(<>}RGJ9wr)IKd*{?lZgdxV}-KD>OEasiU)|6)$3d zFnC~&;lsO0W7)LNgKHrz?;6%GvFaJ+TI0nYeortb@!~>aXMEA@LkMH+~+6)YfS5e4!-G{iy4F4WG-s zE*MiAk(Hz>z}!{Q!r>ELYERwgzG*--vg`CPwM_}vvMg9+%Gj5gDcw^((bg?BOeww4 zZ||6|fBS}bS3h>&Jg4HqyIO6k%gD()g~qKF&K6Rc0?zl7AZ@4LD4aC4z`r-SOO@U@ zY;iL5!r2#YynlSy$1DE^>6bdQw>C>Xaa+{#{G@N55JP`*=?B^VA!gIim*gB+M|{&i zy#k_8A)a@9i2dW$eZ23^k28rDxLlc7hX;p8zgTB(LEnkPlvK>+H9r^w-m(@w((N z5PHdx0g>L2b3bj8qS4g1Vv*x0{t}IMeWIp>fGHfIEuEr$|9pWN6J$Zt3b4ii#KN+% z52A4C-Ar7=`YVw5|38|(IxNcf`C3uByGv2Jq+38hKtNi$yQLdRi3J6u8vzlPX6Y7I za>-p_32AWYZr;bw_xC>k0oS#_?%Z?FoO9+3tHnW>Vn-Y>=9tzC2$uxBZS829tF$r3 z26EW^;PZTRie8w{ql+^HN8e5Y1nnTM+E+^FeV@7P%0@Q9KFtwRyRfYmGDCqxQjS8I zTn}S_*AzrG7D_t$Zy)~Pq-v5ZpvhiiL~k@m9}vt@Q_u%n~0+W_SIxQIzz0HY5J z=H1*j)#FVMKtQgjSz(~G)hkvhHU+)|9N@Y{n73dG;^nBP_#Ja#?&Amxolck|(8Hca zTLs+l8?~8W^nHBbhyW1R0k||!8%IjdsEAF?c{tMz7nxS@NoX?={zq}-_>{f;C%nO> z0Y$WbC(fw z_sY?WJC=X-XV)zt`^pxDNk&{WR)70+qThM^75*P-cvOJLr}7FS5e&R3%3415Q&TF? zi1(Ly1lav#?V;7cMx zUKZl5dZZ~~_g zTI*sAeR(ML5sdvLU$G;+e~>fxq{v(}ac&M(i`)S~4&dOkj1H-of_J=Pya>>ai!yZ1 z3HYdrL<>czh~NFp;vNQ63yJ(h7z_|#5E(~wE?|NuxspxLNP{^-e(mM$Pm7yL&vjux=dZ-plSR?f^tt@q9;IOARBM`=D@%LOGbwEKHrUjX}? zVw#f)g*!ex?Q1Vr&YYi=ZNH^jd~` z=v!gzT&Sj8nFtFES8*-F)h%*M`~xJa#GGz))t_fH03E^3SxpaB%w_URTs;mnS)RA6 zp0cZ!Ft7H!49ww=1}`#1SWt^Ym7{G8rf?lr1&gO>)#bOkFUA!$jEp%mB72}3nUsdw zWLa$Lvw)H&*f+h+=w@AkT3mw{=j|(uwa+VT&xUau_<=kGS>OR;3^m(aWfDD>2#AiX z{na~YYWNVnCnl*YzxD>AE&+cBzQ3Tk&U)y6K+F-}O9s|;hpT#4X@<0t!=RV~lJ`!! zA4DaF7c!}Pe?IgOQsgTG$p*u3w-)NqglzVOzi$c0Z2m0l{V^`<<++O^dAcLCcwcn8 zsM~`sT<=>ZG<`ORr9j|-2!`=SD0?AFu7~lNy|nFdPZ1lAVllCyle1A31yG@Sh=1VZ zeEP5=V-5_I$vgy6i@LcM`TC6C+yKB=J2I+5e|RrF{b)G=cM7%gkR5u`eWME*ov6<_ z@a@sNp2{!!>)k$_u51>Pc?)i0gFxPcF!YLQ$9W_0XYPSMdhl{VCeV)&qHRTR{Iy!kNm}r6^Y(5jglDlRH#c^UUJ2mp$TKc` zuJ`&gGlcQS(Bnq0eFjJ|k$q==D#h;xnqxNkWIs~D5Yi&$z&)1HZ30CW2R(?hkF#;$ zahVk=5-ajT{i9msfo7VpY z%}{;Lm`{G=aS3Y zcq=FEbu~X0CWx-;M2(H=#m}`E&{?f)5oGEYXpCFlm;yy_klMbZR#QRC)=DD%Jg>3& zrB}q+i4eq&EY?Vm{z210&8jM@1Hn4FFXLwT?}KHjPfxFXxUOdJy!So@8*T5oobL1V zj}ZiTrmPO&A0tfVecQI%d}AMA51&-fZ+g*l%JM@Bg0m*D1oFIOYxgeP=3ESB^B*Md z<9UlDlhy;5<=tG9@7Gy>*pkjTu1MZrJ^{=B!`)Z=hH%wnl02nyk!d$dWerG%UN_UfT!-8D--^`TI2A<)rDtaY|i)v4F5=iQ20y{aQbB)|}~Y z9n{>i^PMIcM*&0@E9l^tkhEq_-SQs51E!DW5=aC}L3{#Z4y+nwlQjH5&g9; z#|JPxxM{}Y-KEp6b}3R{uYWPQ{zIC0J2uR?}UcVfX;%f%%<_I z1}`i73C=h4WkX??$oH;nTiUMwuLY3#-X+39^Tzo0R_rI}{Zikr9h_Wlr0rQRhXqwpa`1T0 z5AudG<29a35D>~J#jy6U zldpcDCmR;LLvmiC`eAsONFkxx4D&T3Hb|y&x2dbd55+xV|1>Q4oa_AfIJl`X{E?Fb z_JPr|oIk_ADBAbpyScHhZkM|rHcOis8-3a1+ZBIoqX+`Z9p-z!1pZ&jLj#+_ix%(l zD5t`j+aLVMPfp{Ht(RplhXtLbgGPG9W?7VDi$1f&DNm(Js!m{j^8Bh%K}x6|@c|Nn z3h?^`%m=cSBg_9}X$eG}f$5hG|2gqiHqIR1^MKp?zb?tA z1P)pJ%dT}mHUp^1g?G7gJ`vp~rLw;DrWO`e{l;y|fW9+uKh~&T*pZwk$DlwDdx&Dq zLxrpiI`3rG;uFKE?*{Z@fE*HJ2#`Ql{)MAJa9+)Avix`@ny3a4K>z4QE_u6U2~%(x z8)wQltp*w)hK?FJFv&P$9w#r(q)q%0z(ToG)z&Xtxddl(E%(&A{L@oTUcCT%Lmjky zKDI3vqqHa&c3VSlJ&O6M?wdc}q;hog%YTmsc$Zg(++6u~6U&-7(Jd4v>DofNX`d7POuG8K%JqYI_ zozE|hx^5OP7U03>26bllBtUF+w8Sct{5~P3l*n}u!*VFNdtTu!7GPD1JOoE=e#UkG~15Yx5^ zxSDll7>YDwBrGNDb5uxXNr--4bd>RIl&|$saV=;-3u71!6s0Dn_YPI3#j9#*>B6V7 z0(72+x#r@Kb^EAB>HD%Vs?#=Of7W6oW1asIUiuhsttf)&REi7zf)gyrB%~t8=WvnG zTStz&_j1oR7s@CWxE@Z@XHGW3m;e;lmwBqbe47J%-1A`Zq#U!=Iac0R5>w`#iv?2J z`H}}Let9D#JZ;oDx2uFOZ?QJX;p1LBf739nlnYw5v~S-KBCc*i+hx0yKFllSU9elSKKzX+nq zVOox2%l3m|#!9Tx*zvFDb}e4_HMHqkjvtMO){41wO&__#oUD)=wVt%XjVj&!p7CTU zcMK!dON&6aNbSA{H>qnk4{VA*2+T3c+ltqa=>?S4S!W!efQ=8{O;*U+6cxuPq^;_`1}tph&nnrB^>drEBQDJq9ve7P;R^*K zvqnMTZM0%H66pQbG(GovNr;ep3e!Kwzc+Nl<1XAOxfyHR6-7Rtmtt{JZSM?sOQkgPu3FHZyp5y?8O!GFQrTwrz92?uPUk z{+R!(v*dzmx-Sg!@(X?MUbgJ5iY~PoIc7V2JzPn!O?)~h$+ThT8t(B9d#+Y6ly+y+@7buOhiUW^?+ZOL zvl3cji2XxX{_o78l|horw-vqveu*VODIeGj%oC{fxE)J-4Y3)vXX)C7A$2t! zzWT9kiSlG+0HQU1@sfLFm~YXOp5v1Sm_!Sl`fYnDu+j|6!}u$uaqu36erTX4ji?cY zjw8huuXxZsE(5OWtI0LOK}Zh)xvaf_gq!CPe+&pI+;!(Yw5ceYmX@!3AspC#G+d#R zO+F?CNpK1M1+49z7WaPW1y@#%I}6w1M(NTC%3s;z7+G<#VGx6p^3b;kS0s~MM}4{oPR40D{-=J^u((L)NKmgb)Y-gzf8-fbV& zYDk@R&J13ms#Ac{%N|6XG||>ZhNw>IxEHtOd(`dNc-VF4vOsC}Mz;c*|L2K#jNkID z?HoyvThjW$eWE3RL$k`rs%=V0B+1eFbx8nrx;Hlt;7SORMX#owk!9YN)s#n*J6sghPFW)5w3MzGf#$awj4)SYs*aXZt9X4f7`{#2qScJ zy0%}592{!M#5H?Mv8oNjzWY|W)E?e=&&R9L>|OA35$Bth@px6upmNMiHf9i}{oIzR zgVF)KFNed5Yd}RL>|FSgBe>SnJ@2*%`kw$Y7vR@2U|jT50_z2shTj6L@aetu(egbv z92OGY*r1~);ba1-H8qk5T0nFqK8(7pN?$Al=Zgexkk>8W5p1;DYzO7*Edcj~-}1fi z5`g;epTN3qlsU+^y_N!xROm5aK(WHx@#cO^;s@gcRmI#JA({g*)_;8$(W)%972tFg zU$I5~0uk#e;36;OVl(=+CbMs7GXg$uNDC0Cesn8r3ZA8(P^~F9Lt+y{7l3XJaD|vY zm5k%J+0NObHpogYWp~K>QbJv|Mf{XmnMQy{=~waND8@h6vIdXbzt3OU_Y0(k!s=65 z82EP&(pN+_xE#Sk{$JN-8BW0B!?-SnYGVBCK+^auKR{J=yNS`3-Ld16SKWLl7Q+j; zCBA1zpJ`pyc+mZQaqsgBI00XuV7QvjnIA3WM2_WK0B<*7w=)bg-BgmfW;UId&rC8! zIg{BV&9&tDfg%53zry;*^c)S7Z#)vxRQ@Rofe>*dzP|}g0>|h69Ta0{S^qLrGc7Ytjo`;0x6u zFQ-RA)^g;aA94jDB{j1)oBtYO?llnq{s^2b67&uyN|G1T8!RKlx4!FT# zD{R1Ai~yCwDaP|6QFJCX0YG#Obej$Q*1(()p@2izo;Z;Hw#25Wdm-Kr@G{Js>G>~P zfNT}Gul-FIJk4bDwg8ps4nA}}S_i08- zI8=k#E)M=DCQgC;N%IONvYbwuZHDyMh{&l`r5TB#4ySFBUZZVkMAj7ft@MX6K7uxNZq&_qBW#aABIuST=q30R%*5n7$tjnu!HcvGy* z@?xzM=V{5y*Podl6-^lFBJu)lD?4vYHdg}PDC*hj+4yi9%xsut``Ri5G%urwS5`t` zQd?z_h3?VnnH(3Jf5aEdRWVeKY#xC_xQacIyspRJ<~suKEhsaJ1BBndIJU* z-UR=CTRG802k~> zd{C0kgymCZ#qyiE_t$jSIeB*@5;`C=Z?gr8ySP1>?!2{$Y&%(%^JLS8=$iXM1@Km&F6zbB1OtH>lJQ6m4I=`9TPct--YHi(|gD&JvW{Wl7r#THAX z&i-^S@ovfF#Gn|&fcVOAX60`aHH>ftES=H7n-S$#hMN4Vw^t`hi;+)?zm_t!wS@^*8oEf8Ry{47z&;C=L6va`Zr=~*K zWkqNoI$PCAY^{1)W+-yRQFVUpKUZ!=JvMWovD!S!)&u;=I}r2Y3XZ zDTGXd=#c@fLPEzq8`o&~#6jKQ(kJ;(NpHtpolq7Jpoh z`|-AiUG(C%Jrrnt;a{g`i)NDF?m`!@52ciD#y5OGA__w2+9^cuSA2M$vjy<^F$z~t z-u|WDZECe@+Je2_Iw%OHam0liNYxTPD1|&d_@;lp&_GQIkvwvhrB9!Msxr{7x*(XUF37X$40R@`iIbL(E#Yzh7Zg3 zuPo6iHXC=mX}XMalQBV)yj%j&#i}W1A?0KW2NF^!wn189qlIlimR{TF@eqwcVL_!# zhly1H@~ddb!mJ^zc$sx^-XZM}E}?(9J`77&|E*$E?kBEkm_m-OoIJ4?AM= z1{-tt7aK7L(=Xq}azoxG+frE#^d1fcq+6tp)4plQ@}`5T2vwnKL}k>N?c7x?5GTfH zp$8TgR?dMq&Gu^fpa zyuW>po@jtQN+-;M=w+qLIotOlQ(XILr{=0|Vl-xRpH>Ct7l~Gko^+aVOEXtBt2?%5 zn=c)5Ko3$~e?IO;8mayE8*!%-4IHy`QE-VL%Vy4Pd|bvkaaFz^OO`7ITU#xOZ$BF| z@_Y5>DV#b;Cgb&^a7AbLGb#O0KPuU6Bz5;)2%|~t82P_PgKML^Xsn0rrXH(sTfP;; z9}zb;u#{l*6btj61*215-NV4jk}t)8D<|r;7kD)HM^-1*r_7A#rlaqwzCo2!=13A7GP0`lP(AL$? z*x7XS9S5Yl$~4$K9*$+1|4>%ztrxQ%_5Dj6+t}=1e0CgK?!}#`%X^4Gt?5aot4OA! zh*)qC(Ap5=nx^5c{MqqW6kf zb_TLpTX@3|mGW+?fWFTgX9PgrJPZz6?(^P_U&HFrY3s4I`+XghzZPGgBQ6asUpw*j zF4EVL#E)G3T+}}HC?m@|BeO!9GU+)~qjee;u6ed6IQF*a^es}y!%OmOQT>`|`(baq zV1x{m{g>%ZMvNk+53P6_m3QPch0mHHYhfTf8}6*Vo`ebRUsdh6Uc?`^JLKk?&vDs(w#=GWkI3m35n z9>w{i_yo-u8n=9gAxO(7fr%UMek&^J$&e?eKe|!=qnQ$eHUfo3`xOig2eVHtLR8(O zEW+cR=*LR_?1~Zq8*DM9L3;7JW&I)&Jj+J9&RzmKhG9AdLiV5uy~~+-o(?K;speXq z=9c|qD_DS}$bojXk^Xls93xIctSpdt6j!r1k-WC9a2cg~6F@8aT$UnG#Ya=RU$Z)5|>b0_U9TsSdAhj+1H=<_w3dhF`g?VO1n zgQK~N1&`59O*M0bhkfJUhHP&jJlVcm+Ws6oikg!`J}V*5tzI@}4qW7`AOwi&K---eYO6191`I&I4 zK1o+jX6SVN1ckb>U6U+F^~EF6QAmAmT0613!;i_+KGU- zIeT1C!*D5nz!=GHl^?9|9?Ty8o;5xPeLa*aW33NiX?z*;Ec|EJsSU zex_8al5_`cZz2D=sOJls^k&+^l2tZBwP$$Rd{v%0n*W}oH|8p3wJNXsg%#VdT&BJG zYvRXbDSh*~Y!en0tC-tyIAY)mw4XZkb9t>^Q=tk7s^$FfC%s>%IsQ)kws-IS_)S>N zGq0ukF_iO@a0M(|70gqwov@H+yqO#v9C=J|_@Cpz!~3=xFIv4cW|{8b>m32YE|)coMqu=39-PW-V{Y(@#83Vh8RxNxzJlfClB=E2+f+!k|bZEGVF7 zn{aMwwlE9|p4k9@%W?l=f#VRh`7u0yPW~x{;u?p125l$3tnZ&gZQjfFpvf2RQfMpY z4Hy>gIW&~8e4svs3yZT!Wxchh42GWj-byoCoA37VVFBC)n}H*v5Fqz9Uyj_H{np|T zZhKO-WVo?N=vv>pWaC{tY@V^(a({mH>t2EbB_97VEvMNNo>?Q;j1pb<@2S0VkoMW( z8Xfq()2@B{IR$W^kVd$IJ=ojE{}$AQKz8oK60y4%+VquEiY(pU)V&q{HdAc8e;{B(t1?w~p+m zpOntymm;|vgz1bj7902C;>x~Ca{J^wks=HVy)aMKiarRDSc7}VY7s?c=~axyPPIi% zyW3wbJ^cRA$^BS1k2d7ijz-X^t*NcH^s;Ap%ehK5yt|NXw>8k?q;-AofbujjOAi?m zVisz3AQ*cQnsKs(L|1m+c6JOhJ6z>#gSIAoI(RS{1681F89r{F_$V6e?}p zi))eNk!%`u$Zpx+cWMXw`gZb15eMs))yhF;@5!R`FRwao8ojiS`VKZuTjOkpX;@?) zN*3>a&h!(kn5sl^{XChS8X}blZ*6Y=4cPFECMFdhgboF5zD+Qae?vW0&Ln`wo~U?8 zp4jn7xgL+*C1|D!w;?Vj96rBPqYrIcCAMl%)R|Bw*N~*qvF%5Cp(hJ*ZZ5IkGi;MN zRdTjo$g^3ZUi%oIbDh4Zfp>Y)LpohdCN~QNI6$CFJz^G4z1efa@%BexTt08&aQ{GG z?SF^rOS3=y{k_ED7~x6;r_y2;rcz$to{>+BH|cfo<#gG~ZB((VfkOY<;1An!xJ{7D z)hvNsA^&&f!~_3nC%`mtR+W?4-6Y+%zK2BZ-g0y!W|;bj?@5Wz=k~Shp;qIB9x4}f z8!MvO0N6nl%`r*UhT z(p`dWi~poe+i4p|;hExH%Xeb8pZ zR&h*o9Wp^BY`Z!H&_`+U?a~Uv&nb-&dSnyhrU%}_1A`X^R0Yb37UwSRhWn_&Y~*m(Y+}(dUd$A?Y}5_<*y+eFVASSD9#7K zB)N<@z(>MW{M!>)q%``C6PO;PX+MhM9e35Qui#{0Fm#G5Vp1j%h9g>h_Gm1qjt=}?#lm)$4RJS8X`nj(3!XLuQw+hej+FUVo zFjg@6{1A$MsNKUmDnw8ke4SHt6ezb%irUUyttbD^<7R*VcQ1jxYp})Y@u!17V#2Km;_wtG zC9pq%C6V-%ztUVPJ%ODM!dDnMwrwG5ZB@}%a?1r$d?Btc8EjwjRm(uX>XYJoXhquy zWPU_LjbBDcDA8IPYk=z7{KT5*7k=vr;&*~Co%=*LC@GnG$F5t zt3924($)m(-wB=j^zSLXeBqHrV#D6SXYIrXM7}k7y07c|yHVp`b2p~S^i2Sb zGMI$_?kzaL>!5Y%%h0lhkX_xc{($SHHo}U@ye<@#BeamP>;-7zX%F4<*NZpWAzCTDGAhis^@ED3~5Zu|>nMi>ctLJD9>L8pw^XpR? z9axBSczB`RBc<_7$aT4M^mvj4g+f(UgZTv{hABHQ73TMR&P>bw68Pb@mAFQ<29(0D zBo1D~YYFVg=e+3%BMFyMgY(h~rnD9oQElJ_$b`)sU+dx)Z`%j3P_s9dZI6>H)C7eW z$AeehefSeJBz)mnSmE;2uhRzIxrP|o(@x$_TUOvhati@1`k=L8$-a=&*U_P)C~?j? zmyo%&#~phP5e5u$%v}k_a=?y~`Z^2B8JllB3@E*e5>e-kDa^bqRG+r|g-a@e7A{O~ z19A@rq}{67llh>#%%%rKSxRz;AKddUO=tt}Uf>;oH*>PJ-XV}9YM6e2fgE7vJA8Ud z2Bp}Xo!$LnbCpN1^|f1aGOwxMPWz=a_OYa$XT53~r6A2&vHxQZjzl7tf-iAg^&WMg zfNq`Q{_-pTF&?guwjRV=L_7A1PVfLJcz}sx$D?hcQg(mWs3lG1E~(tHfz-1vN=5bZ zqZbZ{EXjJm1Urp9%aDNU_jjswsjgHL@p5{%+;v3-0(5DsN;_V9$Y%%Z3gPUz0}i%G zp0Mtd4;fjTy|JW0yO}33G)nvfM0V85X_HA-4Z?V<8IlY|souIkC#d=?Y13{kbg6U$w>>K{LvpXi#` z;Vq!8`K|r>EfujJN0+jv7dy&;R>7_{!mxz?{NTMGsK@#!PffrVr^@i4ZJ)0{?w;I2-#*9*qo)7XIUpTb`-Od-db*6wO2{|YEx zIL!)Y9HoBn=t?qESzWph$|fhg%~e{14~DJ~@*X(IQcM1!Ot8kUe*XnGoT5=`^sR zNWFGUxvE|e##=q`A3Bo=OWe!DtwR&6q1{HRIy7q-q{l_}?&-9K9Exi?(LlCcO9Lpx z2?iT04(|iu=(i2-YvObg1Y11ao-jslCk_q<#_y9}nEVlZEqy!f^akL@!rvvJX&<^@ zvvpkd(?Qoy+h?Mdn3Pm)OomfD=1E z5j;B(dpzrx=xIMO=SgP_ZG=LJF+0E2LnHPOB@1H~NikckYY00pu7Cf17@R8i@!W^R z8L{p$Y$tJz@xgr$y(5XI%X@M7 zWZ?~y5A=#L>$j={N?hPB+~RR^N5=<3+7+Bg&bKL%TsK6-h2(9&Pjb4huMt<(p;uaLadlRspUW*ri8>XGsDyiJ`Z8-F{}rpJ_1NZJ4Uk_O76V0QerkAqvwK=O5Iv!JSQPJv-wKsK|E91V{7H{`1*T_itX%LEH5JLj`#7KiBRfF^S%JVU4NTFql) zt)W$@KL|8eJ08_wg}kJvcFy0=BY!v#1XRy4i@GVfqv(b5l~U>u7;#8icGj&R$4;e= zQf!q88{2?5y^7eWoy33!Rla449HpD4cp~!#S!!h}#kU4(zra7JushV*>5?MVE{J+d z$7!I%B?TP&5*dS#n2*_Gg-+E->30oVeIor3yM>p?w7$48b@t0vOO_9er3xG0A3+%i zFXZV6?IfAIJIBIR{Hg#v9?PiHZvD9@9nnn&sY1*C?~Ap4_0#2A0QK$R-8eb#Blelt zXau2lWzLibh3yW{hDE;dOadsDT8A&V_Z9rLYgR62^AaZe6^#f>Gd zx&NJZC@n3u2OI~L4+67?W~emyXeFFC!pE^jf?I%rie68mJnezGA1Va_kJw7Eia$%j zGzojuvR-08+#^DBWv=^ViV%DIL8D~GArHYJYlzSY!;UfDhoNd6q2l~kMSS1=-X3(s z#l^(es&6`zCVzYNu@wr*o(l<+8f9ze6{~5w@pmMyUc3n@I5glg96LX% z=!w`dooh8ghIsTW5!OHzxoYlTCNFiLPT#m*qel%D-c0@${nQ{rEDtO zzS;!MJn>6ve*D?|p{*${PX0@2O(S|XEv8YI6ncIDeqQKf3W~iVGBWh*`ywW!YaDR+SMOwN820$EL zm5s9O5nKBSxo1+8Ykmuf=2V=g_H-6n@AAkplp1q|HpE*Krr}8M{4>ZS5d2q^1vs1d zh4;MLa$Mg)D`hrF9IRJQW^(@dXbFh5_(iz{V@aQ7gS4W9=l+#NtLm-`&HVRw|46Xe zMQbPKiDxu8@otx!XFFH{ zp-69AihuX1`veac_r|RFT_Zl2;tl^aDmpXs4$5e2ho4*3k>uEf4~E~PU9E;&c&inp z2AlqSp**_}86wWEb18$p;R8ses|tj<&%iheSCWu|;@r)t4Sg?-IpOJ9mW2;wvYcao zl$2BaNsd@xG%(!%S5>5Wc>QbNN(3p#n^NKdvE(C5RHDtQV*RS@A>U$u=v8{?pjqfz zHQ+88*lBC%l$M@;3F|s(Yd@cNYCk<5j>$teI9mVs;OWQ7!SEQ4V`cJNVHvKNR!II? z*Am59LB-1`2S z^;~BYEjAng^F~kRSi8`8AI$iI%LAl1_p?I?12)Y2I_!m4>hmLD9To~(#n#n#UB}qX z0qBX0F_vj&Si1&lf4HfQV^mKCdv z4Vc$>AjAlaYF`e|K!t*#|&$sF)-r8(OqkC`+;wqbxv4OE7 zm543{{|Xr+7AewL?`da}^61uT!s}g9xjq7lKPaUgb~tN5#?PYvo>k(t*26iNO6LiE zk{pexzcRl})5YcZbm~eY0+=T2j3J6f$Z%hfe@x0BZ$FM(J+?{LQ#~oy*mrx`>MomN z8&_fzV}+YVnZF#mm~N)U_G0_|&#gd~-PpdAI`h+@O#$@fyTByDm~>MeuKnjkO@@a% z8ma(qP8hi&ke@6_6Ik8m_wM8$xzI++ZHJaVa2-@xhC7`Yaqn<`K=$qqL(Hmy#i<#<_CEucR`V ze?ORCSKAqaFqi`*EG8X8jTQPWrwg8fG$5tfA)xh)Ycp>k4~rj%JB-2qwYI7reyN&d zulZaQrstnMjXz&r%H6>)^?J2cQZEK+OrO%_6s7Fg3mCm{q(LhtGqn9}%Vw2cr!h8+{6ax}M@JHr(6B7}%?pFLg4QJ30??RB#dX^viH#lW?M?2bYhQc<<7e5+W;moyTk-o> z2aIm2U)1Lj<$6gkDwmACB(@2^ACqh_cjY6 zB{*n^l}yhvznv(+KKD$6Ur4tk{QndKbac#rPTBi+s+S}zUSZ*-=jj>;oG+muScTq%QvMqwu*ovk=}X4!b9_9%}neA=({$nP+7?R66(5hWfi@@9~VG9>Mi^>Yz8@b z84Jv&qG6q;hjR$R>4i9)KiHJH!OL57s(S6&__XVt&n~2Ie@FGa_e<{C44W%tnf^lG z^P%XdyBV;={9@Cf*T1HkRayzI()u0Pb#W}oit{|s%IqIf)?A=Pn@w*P<6P_&NufuT zmouVk6b7#+8Zj)K!+vSmz&bwZDq!--dagBe3g767|GIl8!Z({8-7ct3^x0hVpnGtX zpA)Vw8I=p~cX}AK8sWgrGb!$q1&=-XBPL47g|<~ISl=-TfPgf)Ee4yEK%4-zxugr37HKKKM330|@+Ho|B^<>x;+jaG)#Z^Ds~Mzg z6r>ii;TeK{Sr5?i*=o7lLLrcT2UN|{PSBER0vzsOvTvrMzzlx755Q$8CL%aevQRX8 z($OWM*7JJ!jy+QVVCG19rC@fZH!LtyQCM%UWaHg2A16oNYsEGH;;`^N*ucK>kJg-Z zeiean(tJ-VK|_@MoaO0d3+b?*8Ageq%8m!eA8YYH+ir#$dA^EU&u=a*iVp$N``U@o z9D^oA*U7rYtmHIN)sKDeN+~<`WYFF+5dz)hBMnr74)6p7nJ#!ZH@H-Du|C-`v3W8Z z;xdHTs)1S^dry$wAT~O`wR&dTE@~V$&T+<4iuy-u*f`(}LiEnaUE)Ms3Ay*_;hAS>B(amOy0C5R?u%d=ka!}| zg44o?2i+~xk9V#BL6=1NszE4j%9|6f9_E{b3?EQFG}Lov(8d9Ce6lppE%Ar7mP~oK z{rEvvdk|gogjVG%e%t!Wm!fg&K4}BDZ{O=>CwYgdQq4}}u;^g&rNsU@U!wU#xVx*- zpK8}%f+!LXkSF`aS-)&lUMQ3>VFU8FIyye^ zMOit6%ajMiQ-h zC*=sVzn}i?b;*lA(7$;8Pv1bEgsE{WG8xYp_%-yZ`koy0aL9O>?G~D1E?_IV_R86Y zZA%^t()mb<2_r6$<1-m!fXpu z#xFjk+85znR#qnF|Cc4t44dHJZz6sb={JbecY{5K#VL5B?fV8NJtDpTQ8GD}OxR`G z-J*S4hbCmzg!qr2J^NsCPR}0d)U8uP9FM)uIY!lv#0u{x8nd&M%??E+|Q?HEG>8OZk7Mc3=I_cMW zq`I7WOpPQ-)*d5-{$m0{=rXbN(*QdoW4~jzNABj}TNkM+B3hO% zUG+`!R*927;Co@*)j^P&qPOqon!LGSxWuKf<(!jK&{!xy_Xj6NmX7|f-+C0w*sE2p zV#c|1`(ow#aFBYwQxhC`=^yCQjor%=r2zE?#Ew@WGr&F%e#9xkN=Y3JVT7F#*zEHS zFu>Zsu=o!!B@SADf=2_v**YgL8tzlC-ZoS4C3yx!pqyni(ZYt6@(X87C1oA`?2r3e zkVn=8e$46GXEwFLxL%wc&ECns6u_8=VsK!QFOlD6r_$&Jz#L{~I=)(T1z-|;A(Wq~ zH^YBAFF#4YRfR3RivFbbBaHa?_?+vcvdbx%8v(e4Q2|rd(AO$)_a8-%arCW>)7#Sv z;@KI_nQvB$75cuo0wA|JnpSv`KmQ_Fa3Kz$>jl#P7 z<$~?w*UuX-e$8Io>@7d(!mhsW8W-2^=p>KnRa{*P?AW2s$n?M5^M5axJ#N1gD8=l| zy$z&TbdUv6zq9Mv=j87RRWrVy>m^La-Z}PX)c&w6wx@23|0X;wHCkDA_|nqSS3G-8 zJAnZa#1K2O(MvBAtj)JfU_Wh4XK_)X#NRCU)z+U~d|6ZA|Iu`nQB{6VR}qkI1nK62 zbT?Ac-7O#;(nw2pcXyX`Nq0Awkd8~&m9F>k_h0W>3qAo07U#_D*|TTQ%8iu(V(r4k z{VZV(bbwoEsP_q2o}?x!Js=sZOvD8bOt;`u|Aog~GZ_9-GNtjon?()~mvMY@<;mja z1El$Vvxg|6yPzUly3cfBv#<`KKW*PpX@7|~zkv)N+MulY3`Z5Y#B-SAObN8^F)(Yb z9s$?6(9%eFNT;AMe}_k^s5GQ!oqzp(8Ll=tAjSoaNjZJmEY_YJ)F1_80_6kDM!mx` zHY8}BC4Uat*0avbs}pf9aH8jp`|yFoJE@{rnYb~35h7(AxD|Xrn(193sVsHGnWHly zNjI@#mcuc@T692Eba;2mB7d>g7X>wy5J@aD>EUHY`cx=M_vx6pTPXvhE}*;MKPlSy zRD*VAP9DgHG?4N_5U+&6X_IGxxA9+zvVCwT1u~5K5|Co(9%T54_v#;HGIW=<@nXBA zS8UMo*UXWvtDA_$uHBxh_c}I<+@SNPiNIg6yXqTGB4oHKxA(B;*YTeLpW zr0zSY2Hw}|lR{7w5&M>imiJLA;h$1!E@*w9hP+-qH%xqdvYCAjBfJjB49$#;@*Is) zGI^bXeP6m>2rT0-Ci%}#u(GWi34||Ig$G`*re5d(sbz&-`6qzwWG32JBxVY>L7wvT z`ab$r9BgZAzO}M+a`&O1+vZd+Yr~Xw&oxTKI%rfikpr|B>$->l{?69o9l$_zl6v`S zq$J@-k5tFf@D3C$_PB%?u4-;cq6&NZ(aUi2?rk+GS)h|!$8#r!MyRtcmqEK@pO9X@ zE?NDlFMqUpBgx8bbzspeO7_o`SM&?C+y+4g6fy#?(X}#CeSUhhNR0QM*6;u`?I~*y zN`&$L*(&$q{!FS>yn{nfBU2UE6vdcPJo}?PH;tKn~Bx z2aA)kqL}1UNhD!g7Gd2KB$xttBfO6{t0xvOUQfnRn=FaQ_h#pxcLT+3+MiEF`NEOX zvz2;7KE=pX4rT+3OJg@)XFe8HbTWBvyGL*ViSZzX$SSQI zNP#14fvoTA$rAV)c2@a2b8%c>>vY>NoZ=s z#Hm3Sb*1VdTI=k8=v8t;Qq&n&6|M;MYoKYFF7vml8`?s;?a-~FgA`F|h6nrd6 ze?R~%qj`MV%X#JPdiCs@@;vVx+ux@FY!%PFZ`-|~-#bUZK8JYs^VT)Mx`7;z%Vh_m z&LVdHz>``7dk9?z{ai+6)>Utx$|-Ba&j<`vY#*G(oxHsU+cd%TnRI()9} zj}3p^^qtFEeiGO~2A5?{;ws`rW3)uOVC$4zxuS6HSe)ASG|lIY#gE_Mkyi%DTL#U- zt3Hr4YJBB@6r<4o_K&`b4L!AuG-;I8ghmhBc8KM!SD#m&zF)x?&$hpT%`~vtd_+^w zrm*=dh%JF=ghRg9RLWU?XwxwGM&<)iPR!=qp669``QAe23(&+Z0*mMSFnUV%_ZY=N&sA||$A(Qw;R@FKxT?^x; zGOmy}V+}wM%TV`X9N~I76{*Iox?Ii`3rFouBDO8_T^R1c#As{Vg8L+zNNl7cdt!4v ze|s!C+#t24XfL`Cgea}_(_u7>XI%I0uQ!n^99Y1z5L?R^FP57*hUJbe9|YuL+x!Ff9y+T*x()M#>{sv)YWvtxP$E+YMmQu`N0J2 zmr)?f5DV2_negDuEBP;C58p|Z8CD-VZucYlJe2sRA0Ar1jGaF*Z9J`h-}>%~uh1S? zmD$_zh!E<4GKkmG+B1RjolgU0kOO+YcHeeB3U*#z*Fg6(zB^tApyQ*2P+5jUS^;Cn#l^)|uY0!dUR$W0 zcLlA3w}hj7ChY>sr;(+>t6LAuryUp^+1re8h&;zEyd(r~^p zud4XHO>W!`{c43|R-E@i%k(_YFb5~LMsU}g=uIP{tmfAXH~R-e(PKc+qdcI`WAVEQ z;^&r=6056wv35>mvnD&WmUB><#3{RuJXCfB2p9Ab$S;QCYE83t9G-XhkGMB5>jgh{ zow}o0nn@rLrhTnxMk-7Fj$n|Mq_-N6QfAcO^wn0zZ&^;cRX?LiN>O5<3f92mcPFaQRn_E=oCIYYDyRAyXWfi+&E~`tW_mjhxl_15 zk5^38K=OIvk9ILT2t=dOf@u_EP(XRJYJ;*;diC4guzkJOwi%~k2e77c;~QygqDF1% z`gAhJhGIfEVgLYRo+g$6d~XSXft`kbg&UyIm6UNN0ixo4FJ5PNnreyr{vTc+NV6}Y zn>Dtu+rfCza67`3&dZ0MeyneA_jE9Wlbw0*H3A=>QOB<^7UbPuW+R^Fd~c?H zTqo2x9{v5-X(2&wzL-6w_BrPEP2k?}O32{0`_{rq5H`LQ5yD5naJmMR3~<&3c(=mKNJzWS{hO^B1Ly=NzvotOR&H767iDv8t-|Lir~7{CklPe^uM$euYZ^JE z?j5ajTfa2Kp5;iQNz;a=WF$c+BH7rH?$KiM2~;)e!O|v-&yeNMqeO_uX|O z34dh2*>u;69$EwUu*1W{0#8i(Y`)1H;n(TgyoO>Bm5No{bL?t`u3l&7c+{%3v!_^O z@}1~T8@wbw(fD0*H=Tspkb}dT;OQL;pYH z_eg3WR)CKMUbm5-poWi}W)QRcwT%~Ip%!;sNhJ7sUTNENz9}6G70q}WI)l`mQkqfz zr-4A0X_>A0I;tPm*w;7k17@Kz$VB8zf0lCR4yUb}EgN+tNs87^o$nT#JAt;z+Uxjj z*R5bvQ_}%De4vB4!IB3ZWul4{-N;oWD0+EiWqYO3`uFWwyVq%oPu!IE3pA6@1!=?A zV@9ji^nKpc5mx9&WRyG7={l z7^b2kbspJ)E!qV?ZNM}_a^S*mG4k55fYTQJ)`pJ@Z;~)7XG}7 zdZX3E)cY5?3BJiGCt-;m?aQW^_X8bnrX)TKB1$J(2Xo){ltyDesVY&(yQ~j-V5BKU zB#+ltDSiw!1xR=a^4oc9k&m?<&s#a5MlZ?!rZkN2&9D1BFksv!lB0tFDjRQ8I^253 z6w(f|r6bq-uVi^M3|WJ#oSDs(P1k54&~J?9l(-aUSEF_^pSHi&U)?lT;2gBXybA z6HLHRQN8lc-8Kqjil`vZS_yA~xB0)U83&ES&FY!N7XT=pE&z(Ls-AMao^8DF10v#J zTDUA;krjq%V+e;ACCVT>sDM`x<1Y>oP2m8hzXp6nGn>Ef!KVIc!6HTeODrgw?wd#z z!|07}*L{Xwmrs=8)1KizuoADp!1u2U$sETXu%&B1=4BK8ZjrldBxy_&xG~}m-_|Bn zqU>Tqo4$xb?k3VeOJs4hM3*RSrUCJ7MGjh1BwYL|x1r>!Bgi=Wl z*AWSpH(GT=1&8l`6J8g{m|Xbe=Cur74T3 zqD_GDz+ops>-S&DO5r$;T#lj!<49MfGh}a2+P*doc)k6PG&2^}Uiby-E!Yv)p z-p8L7(|SNneRZ(UkX*|R7gTD3Jr+y@Wjw^?&o=|gbNYX@UppC%+(d$cSreryEh#Bj zm+6({j>(-|d6aK8kbR{%YDduR_hbt5m(p9V7S7cC(#8{%WaaTDE^LYhrskS4zDXq2 zZ}Ypc5JiyB)%9E^KW7A_t*N--n1U#T?81Sl=V}EWSQ3(-S!pNJ<6f8;p>koMms(=b zY(h>cX&^Bm`L>8tn+b6Tn1D34om+G=*f`lljDlFefH8Q|yOmpv`OQ|LME>by2m-nV z+!qy(SK)#mBPIti3bBST@!v@^9sXsXt=!zLw@Yo0!u%{#~?}-o`em3EZS4pkB zPD^w)2CvKDqnY%AD5O=d^1ChM4zO*(@&3vb2x0gr@cov?-|^8gJaup+4m~CTFC|d4wyy3@7I1aDUT@C+?~_|t!T3$&ms^Ke8AiD&S$Rk-_K~^YC{tj(E|b--2%e8g}nbD^#z| zIV?r^1<8CWy9f|r#oroaL;iXQuKS(~R_nJ9HlhoCb+-)avHv-1C9ng=x8NWcA0M}W zI04oP@=q1XPFJJMQhku9P&oEmUPyI=o!d6-%nc)zS^c@4k z9M#^p>(9R$8%dk&POqzUMwXL1ny5WB^FgxtR1r9Is>T?IG_kO8b6;65cjsC+9`mM9 z;4RJGpdg@3ca;xj_WV8cQOt=xhYC&Qpk{E@x&*2~F! z0&k;L_kz%Kt>{Iw&-lo?_1^_eC~2jH-SO6tMx!bVrIQYOumxl>NawX?BKH~-_q-W3 zUAkqMW7l*T9%I< z7CNAa8qHayu%P@n>!u3fV_fMa*I+EnH#=a+J2ru`J-u2gX^nv9 z^%EuQrpu>TDrrn94hdrrVq1JZQkwo0QOk}p!1(O(X&7CNwg;&ClT!+e`0p6A8W z?PW<|>l?9a5izOuZtC_D@M%I(w6`yomIKR%?Z65nSTwH6Dac)njxj^CZ#z>~&s*LN zwc1A~0wtZ#&7GqA?pBDq-J>fSsgPX3LjJJ}VsGrX+73g(!bEWg@pzg*m|nHG+@XxHeqZf&S*GY4?pVZj zUYQNK>^S#Hq4m9i6~V~7;FeH!KVJ2Xn*tpB>&JLK{(@qJt`JspypshzZ&+AarAyXm z5MZ|N#FfPn{Hg(a8nH61Z`bJyHp?EIZk?A3XKlw!;YG7>_t8Mzw@1tj9iLN#j()1K z-|Y4&E-3*_H-G5o@CdQ0k{!z_&$tkeHPN*&y%P(lY(Ju}?%IMsYk?{>0puZE6zi=( zjCqcGa7ngDxM0occ6Uzzkiy#5&^mK$S6f$Q5d197s<#|ldjZ6y)n!Ck({V$f?3EmV zGZ`oL9{uXCs$%`~viWkCukenE2?qf%{Y{C|r@F6+1J}m_I8qwd4o`<0Emmrep@I#k zCYslK8^QW1k^_d82)Js5<9?OZ?4L2jux{XgN#)xGw5*a@aE9q51WvH(NZxMAN5uzT zN>nWTPNY&6$C8+~Gbe6s`$8}fxW?pB8+@pBkQ{xMsD#SzL{Uy-p|EeqWCveBss=Uo zP5gu`AMnF{!<>PR!dN@{sYNu@SnJ@14BI_f6Xn|2T1irwYj0Oi8X;H5d0IUvS2M-= zOQs;XhNm6zK6ZXnjAA-Hg8!Q-bUL07;pG#9H^tKaMh7-J`rWfC!C&}^((Tv}j~lSF zq{<7~oJQjMLDGSY@4`L$!+l1IaX;wR(6e(WiK@ei{wyzF=EK1qV?zXN$KRu|v+_#d z1l7;1I9aPrH4$Qr9f~I>IDPnr`15U}S%ycw7#LY<7FOb?jK70uWs`u>a1aKJ{KB-$ zJN>!3gNKM4X-6hgSTfJXMo#swAL-NSfnh@C;hS`_NQ)-HVk>!@u|lokxoF3K$H13~ zf2MWK>T=@s8I{ES&IpZ^w|9P*3SiH43PdpA`=$Lc{Hwu5iZ@$Sd^#4&qzH%UUtUqIvsl1w-N@&8b5>+fle6#`i1Eh@IzbgN zj43ylI8#t?vfcqqF)Kc|%eg=DuTQ!R!0;Qa^cX%Z=hW{MrKF~(Qy}=ezekgzL-hYi zhENK&ij0oF8Xc>-s2?JQ+&6asyFLFv@CgWXX1$payk3r&U*k!IpG>}d`2x(4EPsuJ zgXf`=7LBL6>l9vH)aN(cDJ#j|Zr`|PI`2Av{^R!goH)8iEv!K^ICMXn(lvf#o@46l zoT$()h96u)MCs(4qO$Eyk_}PLsCL-BFf#b@0tdi{&hCzKWt__?z(i-`WifzA;79CX zndMVAt^Q_@{oEb|-V_!yYHTGF z(tIW=?OoUO{vX)yEl8K8ZC@(_PvP05rRHGMXi|zgspk@TP|9M63VA(Xap2l@ia37z zZ>Lu{JlLw?25P+VRG-@W?RTO;4sqFYYzW9kzrSfIL=-~^xQ8ewGGJ;lP*#~0PatE$ zE+-~96)Ds6EftFl9it+gN)%^<1ad?o&*X<>pQsvE^pUEgObIO7{LAS<;begK8)8Lp z?pN!|Lujf+pj@*+dM8zA-5yY@TPr!>1dqb^J)^x_fT=dgzX_lE6dqoF2nr83B9Nkb zM2oRM7)DsLGrvjOX;GTI1WO(8UND9Dh4J#zCKSg5ciT;1ML&im9N6#nstIR7!9N)o zTY@ku`t9&-TX9}_2S@W$D?bD!bX~Z-{40`QHJx(+zPx(uXB^reK2ik>MK#;lL+0l6 zqa**0HWJgP8FwJrc%7cVW|w6Dh&LIEHg%B`jHwoOnsd`Tk&TD7;*=Sn&@g5tlefY> zXu%9iC*urVCC?z>dwjtCZE$K%-W}SV9j$$z9&$4a+tWiJ@(J6PFWXJ;Ks&cXWpp`x z*de|(J0l8yZf-6zGSYtI`L^D6wTar{y<%hxbg3Zba@wtH%xOw6g;$QBm~V|q#JN1y zRfx(`1}j+HK@LZvfuGo_k$_TClINGN@cCVl;dZv?x#^DqBxij?SJC7XiJ&5L?LY

yKecxcO^eEhej?5n#a9&GF#B3{Qpbgzqm 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

wy8P>b3dElhO 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 LEu|s_Xz>34`PGk} literal 0 HcmV?d00001 diff --git a/assets/generator/high_level_diagrams/oracle.png b/assets/generator/high_level_diagrams/oracle.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba89645160b7b26cf8472bceffc1d2b524a8fa0 GIT binary patch literal 44370 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

{Hw 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 Tu_Hjp?b<~+m2*;_{!!iEfSw=S literal 0 HcmV?d00001 diff --git a/assets/generator/high_level_diagrams/oracle2.png b/assets/generator/high_level_diagrams/oracle2.png new file mode 100644 index 0000000000000000000000000000000000000000..c776e0009c6e6507dddfa8ea50d042baf9d089e7 GIT binary patch literal 52948 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

xi)Tm?)->Yg0<_LJ&6&tng<6! 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 literal 0 HcmV?d00001 diff --git a/assets/generator/high_level_diagrams/oracle_diagram.png b/assets/generator/high_level_diagrams/oracle_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..6c93bad2bd1c46351b4b7531890911d188bcaae8 GIT binary patch literal 172020 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

Ls3xzc_OfI^5!7XC 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%0Do` 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�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 literal 0 HcmV?d00001 diff --git a/assets/generator/high_level_diagrams/oracle_diagram2.png b/assets/generator/high_level_diagrams/oracle_diagram2.png new file mode 100644 index 0000000000000000000000000000000000000000..3230a01906ea183e5b6a3ef12f6832720cb08b53 GIT binary patch literal 198394 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

(vZ+eCkfL| zS{}V`{tFOTQ$12Xg3y(6@`=$h&y}U`>J<3nc*xmorM`rJ);UNZ{CwHKZ$+r>E{&-5 zJ{Qb?h0gk}5 zHG8&HlyG#0qN8$1TB+bc6Zc;)39cJ`!ml*D)X6T8IN%t$<)HlUGHcJ!hjR86dVV@o z4-GAmp(Gvgna@rH8VULDI0=lWQ8;yfncawcoc@qL{Q0T8mUUq_fr_mS2H>=D`%pX@ zfjWxIq?Tf65+7R-5%D*q7e|W-y=J?jY)0%^J-k7iA8knn|I3KABg+m6SX}sxdq*F{ z*mYRYf`8El?>kS+5AJj^EPvMN;bdL%3uugsfUDMbmN9UF-Lb*;{QUfa7;sCqkS9_+ z&WwBoNw>saO?8_cmfG<+x^Rj^jQsC-oZh$O_&+)uT3?D=l715P9dm@#+{Yd1^YrtZ z*0g$e<#MkfTo+s)7~$u(XvK{5OD-dxW$|JG1kc)s7WO$|+DwrK-uB>M2rkY?#t&u* zf8RAx6P-jaF6{m}`Mblze?{QI9I-!$ndWMNP@#>IBN){Zr0HvM%dk^kX5PEwO7`Na zr=M-z!Q>jF#LIW3pf|s=GDPNo@9MDHnm7GEJEF@Tcn$QM7Ii$>DzPu9Sc%Gi^Z$G7 zRi0~-w`yPtGV=09?raa-MYlYH1d9zn(Goo~2F!4r z-lecO6-FaZ>DNJrJ=46%xK{mwF8d&$2e`PSEI&l&6U=~A$fjs^yhX^WTMXpI>k-=7 z*nUmUfl5z4ZD-B`{cFyB8GZ7`&g-`^aFw43M@n}ZtI($%#S7(~w4d0Q=TQF+t?l(z z-rpXgz>u;OwbPXQsZfH0@fNQ|E7m)U2_%14DFW{6tDJD%Am%8NN5B1=c1tC9Es zEsKN)GrZ^!K6SimkyDy=+vvwT^rSC=!JaXerPqUC#u3@>_WNL1@1TYEuU7yU@@m%K zU;9+d(KMDgPo$WTi=$?OBv{A(mMtK-{Ud<>S3B-_Iu%<-^|Q@hg~=jg^*F1P*d0#a zylR5S)eyevI9`T)u+G1?aIKn284DhFo`-WO|GTPk&|9q})^GbIa?sP1I>2WPYtJ&h zFyO=YwqZK0xdviB;12R1U93`G+74DjA`K+|X9tT+fq`!n)%mz14@AmiI>I+%Z;BXy zC)+EM(d7f7FlkSiO;cLM{t&+@j3nFs?>o@4Iq2>z0E>m(OUBE({=2Fr25esuP=nek zOPK3B=ko=L3K9n=e|KLlIloX{@-`*f*$vfH zjHoP-pY0`4phQk!R( z64vm-R|LWz#18)6KkKxTGo5iCqnaLK}N<4eFS$wG17Y)cc9sEf_d_e&+2 zpt;_nW;i_}d$g4}9pMFT9$q#5~Y+*0&M(ieGKq5z!$Q0MDeuT&L?PVUInD>h9*@_SeFT|5;27#t&3hRSaF1XuTV4 zA0@|8DMxbtBKQb?3FzG*>wpH5#EG{2!2}TpWqik@m-*O2xPz|HsIGO)9OFyF;n%=w zpkd5$C~lO6PeH+NwoLj#GUw9JC-o!>r-1EB>@eQ{yWXu9z@iz*x4k@=W3IV%7ebEX zPNQJ|CuMmq3WNxxAxYR)vG^$f6N6nLY@GQ)#DLkaG%8PRw(tjQVUgChx~{N-f)O3} ze^Jl?i2~rwjF3m~RBnlkq{3b_T^9XLrZfWoo7>=V8C70@kK6qwQ(b|v5289LnaGC2 zM$BeYm1IBW7&Ub=HvYHq!&!7;@ypABa;4Hn-K8bUy7qqyoU9%ESm_2KuW#Vl4$tC_ zj?dUKOpxON5FoPid`gkK*^|3%8gjliYq=8C?+#$?a6)@A$4K}4l~yb?I*9Ge%=U@}9D`cH@L~rSVx7^++S8#9@OvE+s`adFCZ*8hGqXek zgWN9|d$LqHsrWG?$>OUBEpR}Uoj+M$mw*K#<{!VK@uZ8|xM#eiqdGo){i~6ffnH&m zXaE)MEqj)G*Lu`8P!o9RG9_?|`Z_!Ek(iYQO*~FDy#HHMcI(f0u~})d#m<-W5H1z5 zRMo(16~fA|FE-imD=2$E)wJDrg1lgN-4=sRdx@rCeBl|Cn5x$CZipODu#wEpHQ1@@tS!W%FK~pR@dZ#3tPix4YTJ0 zpN$!WORk_~ zMAi2E!!7MKjDqSaS%z@_TeXnO<#8gn3g}0gJFafZ{yh?iWuHs|S`o7aqoH!CCl zN79tlY;G<)H#e2Lm%At5bEFux*Zqn@u;-oKV7=w8EG_iqx+@Im8SiOTPI zxMXHYyDfk*-2G|)s4QRhZIABguZjN53L@x@b*WVO@)<}qjOGO1KbEG)ebW};$~^#nyA`ygX|rs+clVGaR-|f@N^>2-qPPD*#e%3NCWox);-33y{Fy5 zIp-JB#JkK!jX|mbw`eMYfcBI$WDrU>d}!!F^SRb?x8n}5t8*xamnhq0_bPJb`1?)? z%ipJ`lc9|zUaE+e$ujQ^SUdF6hb~Ts^n2)kYld%@Zr(}ORoTG4m>DxG#(*z*62bZM$ znP)HnQY5pathcu7rnD;Uk;GZER#hRt+;JiJ86am7+JA2>h#NvaoL^t~%9uL%J4BLV zdTR@#OGM;sr6V2K47PaKWQ~xmx3ML%uKQF2wNpFPzBt}?+1ar2*OVms>w50|@-F`r z+53K-_hWj`LA!nJUT8}vKE%kb%i%LyPxG&hwU&9_K+!m5Iq^- zUnV;pzFe=`W76gP*aGIdVO?L3&+0c5Jp5?Y6?r5#8-UxJEBR}qzHbi)hq2sZmL!-6_=JZ5e!@;q<5 z9fTc2A(Lq*-4@e}NfAw?`-|ZE@jjOow@&YTWV|eW$Bo7bp|+} zxOBO(n63^G)6F!jFwB%La&qI#Q43_0xV@tbqCYKxLEGDyejvH@rkY={SMI1vRD-*$Hj9X+{|1-we*GakJjy7At5(pm2C<>P5; zO8V8JP@jn@2-(PoNOtht+&lmdV@1)%1RQ0fhfE`w`M#!HI!3Rt3X_!hTV_~qolsqAkVsQl zs{$|!r_2<7-K_>o8Tb6D(@7jdxc0vE3tlo=!Eoh1CR8@8DXNg)otXVo7iAtQz?D;+ zTKOXgYS<1VVOk~f(>Xsb6kE`}a2QzCKzaUV3sV2~yz`)-e2Zz7{PtQiU^%q%>SKfO zwgxK7_s7ef)@k?Dsgcb4iNwtf>B*9di#?K`jEF_Nzt8U1{_4C|*n2u8TOX!?*{L7@ zn-`E(Pz)_%5hh*313`Aeu~mYq>Uc3{Ezi$A8&#)#z{RV(XR9N! ztt!yt5=tWh2kC&+0CpXY%4yew(1Xi0A`$=7W0S1#U1Z@YA4Y6gzh$;d`M>2o!-oET zT?=OHeFtEMV3!2xH{NQX5Uqw$ILCBmE_)|xXW?u{tHX$mA!txo^TvY~X0b@k@Q826 zvm5@v7-q5#o(`7N)L=ZRRjB052{bNu@yuP8@57n@v?pilKz!JVg~=h46F8OWcfISG zC>l#0qf2}+8JVW7DIkg9b$xYZJimc@?rUN!#BAUGm$KHjT*(48T_>ui@W?<7Y5Hb4Z#sEwZ}b4E+Gt7EQILZnNk<{tGV>az80sd& zS2p}`$GYfOh-+*7HS&ag?d}3L-`{|9yR2*?06OmgWi^|wrv6BKyAK|V(L`k`)6*L` zzqqRbek2ayamUE(q&w2-?Z_{8<6H$ftwrlnBpGB1a3nCcUPQaeFdjuA^jB}uZm{O1 zFhoX$$!iZ87AYJm?@*H-XA~c4@5XB7>-Xb7S4S7e+jSq)Vwc7b0qNOJoq4O@Li~O2 z*`2o~3A3}S=!1Va6o&*|#Irv8`U;p%V!fYDfBd%Klrc9aX?EOQ=JoJ$B_e}2N6pTC z65v(e18CH@w#%ovgS+POvzrGZsqZ>%a$$S0>*we&>SRQ(jZ<3vov8v`HxGG_vy|K0 zuaI(*`=!u9J%u%ly|6qUHNH4{q_E;UzztATB15wHQ+9COVhW*C7td@W!B~V}mqBfc zTEWzk^T;9Xr?)gU){&j`p)^$Pn;S#m|8oHp3R|4zAZEWu{xA2gzAAVE&ZJ9@EflQn zHm_a>HTvog8<9Rw`*R%MKJA2ILkegFWW3n5cpFC<19#k$hn`5|w@T{w^7FOrHPEnL z52?#ZMKS)&RV!xyc+2b>G8I+iz3d@WJak&qhk$}Y;!nH4a$8jE+(~@r59omVf4t4$ ziBp zp39ABwIUf-!0*rM|AK9p3r2?BWW6!48^dWKQjh;Mb9uC@>awB*bRBR9??Ll{Fi^Q= zl#rRy*!DF&{lnZxYBK8`_0pmZNFfaWqs{v(AowC;bF+=^^8SHnfsNIzKHuBDCpF1vGFMXbHSLu*J7;T(Yj$1I7&Z2RR(Qb8OWMwXZh>bu&{Ge!}@Ap;y2#dG4X>z3ba zSlZ+Mn@6yH@T<>cu0JtB?>M@oHdGU3%9}( zZVHQq4A_j>1M!W?oThKyev8|$qA2*QZ~qCOi)RbN^!~%V!90#6BZNHS@|UHG`UrPO z91=|CPVxk98%5+tzg5c0t7>WvlA&P6(^$7vMc-VOs`a8D?~;Y@c6jg4*5x@|2^g?V3c@*4);rs`{c^PltcHlKfsn%@s` zRd=h!C^rOFgR@4O9S0p6(1mCKYt4>lYB{_we(EV{h3q6t`eKszJ(7ig0~L(EzHIuh zzt46EJe=`eA9q|(OF@C>+3 z&c7N7yah14Ir>p=`-XIj$~%Mi;*-On&Q^q;K++PQy1GJY>h#<^6yV@sR&vV!2^a_; zcs?NApQko9GiujpaPw5s!!qqenNFR>^t)5wRsE1YfuP3rb*7dLTpBmcAqHrs;vN8zum4yc|c!ihPq%;K}v;ym~eqBQt z3c%}>m^T8bICm4l~lH= zKb<$YPa`aJ4Oilhmo=Y9gu4ddiT!j#L6)`n z5z}K0-9|67U{4#2hy#=G&_W3UVuC=D@eoTUle<+&S)ysvdbkGK{SOViN8g;to)WWO z&C(!je}P+WZwT#ELIa^Q+HH_3EwgMU;Ci5U8Wew1d%vlu&Z}9S4%f$W;3?j5QkNFV zXcfA@)03i~*smAuh=BXf*%QD2OE0?3V-ZT4@j_!1jbjEFYAK}K9GCLDU~i7+{MSzL z+zTE=nM6Xoze(Wu(cQtICE^>SfVXEJ#&WZit0M9w3rh(|8{5&GF{d;)-*Q;7vwwlUv*DDxwh==^+8|)Z?z4`w7t!#L zNU$#?&K~?SR^VYUG@uTJ=M9mGezhB&2;YlLr3`UgVRD|jlI^oBo$(-9W{I}c0l zE(RU9o>j@L0wbEO#S=|57PdmPZKk{ z&*Xw)tNm47A<@Aq0l;%+g=g#hq~F{t&0}4bW!Qn>abEcYtYMr0De96`if^7ynj8EC zuJ6|Xc6MqI(!pOxqGxiswjGLcf|XcDDng6*aWGtkNhec8zdCCnn+P zncxI$#!NSgS#CsJr6YJ_22YRCQ2}dtE_ThZGf_@9eKE6nDInahmpN7LmlU$?7&sk(vp)={WLr5>_nyD7~N5PKM`=uSEM z@pP7LP0x+7=ce7se&j$DCiF{kjKWX)>}C#DY=eZ8laAb1lTIQCLT)E2(nlvUS<6`eVU-%qru_KIv_sp$;Lm=O3;zdOqQ?eaZF3=a55C ztuovY@w;~ooNRf25fycPko#Wmbz(1#)O#cR4FAmVNND>V-eWgQOsecGcxVIA54LeM zlKkAfeyoQBg)k&)h}mPH*9~eO#`IKF0V&|uXds;*x;XAOXT@gBug(pQ5$Rwjhvc5; zT10Yv9hcD4u1JYDx$VNYzrZ7zff_=d7L%K}{#u3w6Kwo59S;fidh=*^?z%|m@5GzV zWvt0=Bu|9DSox24Wm)c~@i3*sPwI^_Wwx`6I&PWmwTjBh?MgNrW{MN;OoJJr(WPmY zrm1&BZX8(BF-p{ExgP)IUysYg0LF3M!>iocOU#E!Wkv=5Kvp|D`-+;ngrcmGf~L}r zhU5()kC|27ahGv?&19vCX#c7oGlha#Ee#BZ zqS*>B18^8nWOHtw1To2t1)pzD0(-8MrDyk9EXUlP<)gJY0DYBFwrt8~NYi7rrzUGE zUe4)lm*+@)0atBiex2soBPAK$)(bAiv7v1Dg>h4f$l4vX<|Jj2}j z>k_CP7kS}rGXXT4U|I5h5W0;r#^YWCZ2gKlmk}%7a+_x2Bw@7q6Q>L#ZgeMR!}vO; z7YRJT6dIEBZnqWbS>6uZ|QGHVME`MJ?P=3G~U>OIaf z8UeSE-lGJ8IA4$lH3%OLcZTTKWCzXEbRySVF}=rV{<`cA4lQ_GNP}F_pO4F!(Ej|~ z5ZqhT$zJV#*c4)TiE(lUftM?Jon-?Kg`(U~O*RChh7zl^3$wCjd>^uau%A!fUjQm1 zxKpAp<&DWv5ay@Lw8#->u#U(T%zp&ADs2g^EB#1W>TA;P+`PP(-9)v!F)bwj98??! zHw@C-uCSIFqIe`G6?Ts-D=I+tLj%7kzRNh&vtRw2 z$vxF}8<5o>sTy#GhP753e)4ZnMw&R~7|-*w0Wd6kVJVL7^58~oG&{2|Qi$~ZRE}IH zeAM^8EfR>95pamSTbHb)Z0q%PkeNIPpSNeQiEsVi+UB#BsLu#|S>r)vN=U>i&argP zW+93~#gCvmPCM^!%i%>{f_beSARqIcSjE%IpM}kH?s{FVY#eP5roD^f>|?9O(p4R7^+s&iP0y+^LrZ^~Lacs{zxw2HwtL69lQ zJaB#oi(TcukY@bog1tF#8Hp4VU+a|VYQh6x;cL_9Dq?MgmUkVM%_omA6ob|2LlTlVZu>J#*M)y{nFp6@+OISn$SF$5x?cpK^a3Ye!==TW(6zcp^z6iTh!ut+sYi|W{46N zcdB6K0>8#la@YtpgJ6o~lL9vXj;2EFmS}CUjI7uzZe1n~Yo&4c4>!h37|WZ=Dxr<) z5-P_X4?^s_yq(9Ga+*CqFDHA)aJe3%HS%gVj}k`z4|oE1;deRe+XDVF4@RIK@z|q{ z4bT!2ZATC#qM}~51pfLM#HMLsGBL{l)(-iAUJ^&h(B0jKp9m9l4q+y()E_n#FK496 z>(Bo^`wTV#DW~|M?_O`p@r|jy9!;^;0;6n75H5PiAnb#{R&Zs->vjhQ3F=O}(28oHd#e~iCtT4?(9Lm3;ABU}8(lG)iM zd%9eRA&}TyI7GdcO?0;-7oFy}-Mxuz09Mooq-&QhUCc09Wi!fYY3{h0NN+3g2UB!G znW1J#_F#7{q3;&H#Hrc3%5(=Udu-#R&?_%exY|}OIX`V`$hY=( z$LH>8vDX_Ng+Q@~ek&D0(|OZd<adm3GISRG9UT-h`*2y1)U)mi1A~bR%KQ^D<5O zEJC|uvME9UmO|0F?t_yIvFmIukGxAu*Tq)8*Xmy^BePWAHD2SRNsF-LBURspmTSVkvB4U&MwXM1K;=a zzjxZary$*6%8^M%X{>uDwHSLKl6CAhy9{wqz#M=3eOHw>x3Z!75>N8S-Y&Dp2Gipk zHCm7X>v(fb-OS=_U$lLi%lh>YWcqIk;S*-0tZ4}GOzAM(=38x5>p|r>V#?0q`K|$T z8kP9b55Wk42&rA(VlZzULCulA9&fHq&19SLshun|n!@a7#(pGq&8IfvG2+1ft7^UW zf}+=c1J^aOD9EFwf;-iq?l7j+g%1cKi;ej=^wo3vLDqbC{P)*?;{q0(E0c6zAHa@t5?py%wkI z{BLcWR;BHxR$9F`dtRUmvX0?{Xl>8Eov7EiZ`o5|zyZMFm*3Kv`Tk@0SbF`f|8k4! z<(y*bPVKG&Rx}LH9R~&nlD7;+9m5{(j{*;eKl^Gr=Ea>TbN{$Fa|RwJ+BZagryECj z88kRlh!S?$W4ea5xtHWCQSv$s>UE?+@ZaD|%Dp7HE$0usaTkoTJVD2zOj6PaNN4Zk zMhr4*_-Cg`j@39`__X?p>Ng!Fo>b>93Bq{)b3eYCs&FtVG57S7=m~@zSo`aBCUWa` zzRHu?J}%%^Jp>#`)?}?}3rNI*bc=QIjZxy_MjNIhs_JB&*CKq*o1_BCf(QvI9}oBd z31XzIt)El`V7(7Aj}G(Y?lK7Jk!C)w$d<>bcc96{s|^I+px%^zD^YIV^X|>778`k& za7W<^KT-Q#{nC}pkViablrumN{<@b-;^Xt8+hB#8-}O?=Y~1X2LNwFeW_Be<4novT zJmLn7MLR{cNLH`#`zuZv`A%41I2sur@c|~NgyMc_lkgK-eTdS#jz47h3fUSAsGMiC z9@LN8rtx|eZgK}|BY2GKT+&^gx|v`g4gR}uT7!{PenV_YjVdR*mTUTm`*$lj_0uH z1vsAAX$~4h=2+Y9XGx?L=_=A6#K$>^Cid#T`d0S}(dIpUk~|CGaYLtkzR)RaflS^d zq#_;GGMw1ie8EFrs=YE~>VGs}78H(7c=Q^|o`bR?6ZmDs{!c)*ltCl5hFI;j7 z9fvF4k6uoKE#&hxY}HAfIu|jMZ)R0Vg^|Wui4hSO;S^gDTi;P0Q;^{>{uifN;6K>Y zl^FNq zWU=RQf-RvzNl8hSpb=n?H=Ec;zVXl1BH%W=e`#UcL~p@X(>dOY;J-mbISoxBIzt^* zk3p%^w>U>D9eiAQVLkhLD$*@A5RRPQ@9kg|Bl>F(4|yZ+p`u#t`E}wpFUYHIqq&5- zUU%I#1WSG_8W;9U+OFQHi9LR%OqS>b`$xqQVKQke<^JI1gsSU`2sq#sv*05^uE4v?XGkM4h5cw}-xVMJz_m+d_*%LW{Zci?wU^Qy(;{0O*XR3kz^fa zda8Bad;s+YX<_F%izXQ~AtndWpc!qYH)RSdY}^FmH%Nm<0YhAE-*l}d_Z zW)u*;c)A23zKU3#Ucq&%>d3(h8Ewe^YZ5qg&$h9*4DWw*4Zm<)@tQh>g>A#Hc+)Dy5aXS6PeIE$aobLEaxgp%9oPaC^NCo| zOflLK(Ls^2F=I1cPWqd?jDc`3W{T6*>o5J*yZZ#Kri%`cJ1$x0ewW|w4f;%5m35Xc z?*jsqjdS{$Et$xOelxWpHdRtBozPCg`zF2>Wh0XLf-HYA1Ar$hx8Y1xyF|{oD5*OJ&q09w7PV zWkk%h+(dSy`w(v8w9Z0&4V;K@?8ltq(M(}g)9^=2;DAvZmdiLxl&0!X`-R|bt>JJm zNzC5r&1KKC)?g?)CFmM&*Ur&NR%z&reO%IcIf#GsBklq$_i^DFwYfRqY|mVa3`ru% zo-xdTtb^!*QLNdixUUC%m;cApTZXmSHC>>E;!s?RTMNY^*?hZv; z+}+&??(Xhd?A*`$opbn+{7Q0h?>#eX)~uNs})> z17&NaDzJkv#*xBv9O}zsvUGzmwqD%1vk&)e6!&X5E<3v+X+t(#5IW&vKXslmNa{@snY=Rzb(Oq3d~*VsQTn77I#?Iec#7R*IK zk$x#NPkSMdy(wy}H(~-0;inO7i>sd-Y{h1~9u@Q>z_jSA}7&iY z)1I{<{D$Lp#))O@>#>XX4D}%c)H#mVW1&Aw&}|feW~7^jj>xsm;-uBmzwcN zvwCai4g?`e`mgL;`mgW|nNp2shV!o*joX+$kI55D9-Xc;NlX`uP{qelCZK>H!GW3m zL}IfN>a}bOx5(JlgQ3ow7a$+J@wEQ!c?0pU3HCAT-Mq?jdHBQgK31}>8e1A^SnB|0 zv4P#%JG3^djFu`X=~2YPH09S5z3t);)g<*9If+;aFG@;oM-kx~h*G0WHzBZ2E;-Km z03kPeO5U1^I?fNNZvkrV1=3iB1LUSDT@7LLsH&0=^1URKB;O2Xhj%^q;>k^Ki}9wH zvfcs0PREl<^n-)eITS~bJg#$4r}o|g>653a+$KNnmT&#zW$&u8qlPj)QZj$=thZ5R z?Wp|oA+9d9D38&Xl!(UTN1@Y9L4n5=hSpYNj3Sq``g%2$BAPG>k}|Fqw^pEBoK&tO z*<84nf(1@gxw*ZoKHW_o!oaAu98=*g)eJr!9Wty874N+k_;`H$aDiyQ7Z;8$?E2j} zqpW=j*I${SLSmCXQl;7DRS4HcF7DTWh03pd>mL_a?(LD(l$#5Kz|J4S$*=!qNjaO1mzuMff$ORI|;= zjGyb<;c4Q{Z8VwlmScF~o<3TcoWlnqk~HAMi4)iLDRf-7_6F}m9}cZYk9_HskwQa=jZ*2MNMqsuF(Z_DJi5+ zvBvsbViek1m4HqPylm?Lyn!ajm>JY4gs-qHY-k>?k|!(Ltx(EgivJ)2Q&$XJLDWDe zb+63l)Rc9q%*?;`Uf~;;0}RLT(Clc}*`HD_f)jl?w&J?0J5Nhf{+ zFF(Bq(?i7*B|m@1t8OAX9%jHA>G6=+&kWh+Rr(R|?-8nS;`aDj%;jMM=bG|VQps4# z(}wK06&53VdhZF)ZQ+4f<7>WHnn9fEjG~`#b^lD16ecbf@)*=txDs}pe7EJtn(l5X zZ}-Po|JQD8Ho>yBAcjPJMP{o?Okeg1Ym&rqXJTb$@X6i-BU#sDGNO*Yptm{#Nz17= zx%Y>xk)^50byuIRbA|j(s>&Wu8hOO4?%p2!sDvsdrc>>n_Ru4Q;@%|zqtN{!zTAqhQiLmpWMwsVeEVSb|7igjHCUqs zPoEa*jQPc+lS(xlHjsiEdINaL%YAPwtEy))M$xIGf@TIYZ#xV%|4&M-J1XS z5|KpGD*NLC53FyPbMfBv)0(AjTBGoynyqDQRG$N5xMvsT`QlES0Bn%4Oey{I8NP0_ z-;@ce(EC&YUGdb5)}fRkO&sbViZhK~(sVIQ1MRqcYjM@n&wxipG0xk8udS33LOWSI;L}+;X0tV37RZy|kTEDhgmZj&X&$ ze6(xDf;>9S_`DDt&38zhu2^n`|FP(lMDi23*8zG;wVcj>)pJY#>47OZBwoOZ3TQoH z$MMl+uFe8~ntOh%w8Gmm7Z&fhnMydXFq)*=F&7HZX#4m3Sc2-DEmZAOJ>Q@LNW8y} z7>;8?tyi_$Xi-J)t@(#}3o#bfv@F-3SEJfv9Z~he(b)nYsy$d(_hs$%(M-@vFh@^N zMlE;wl5E3?MovPUyEgre+S*fl^!X!Pdo+sYL?J%2Y|bQ7!LUyA?^+^47AbKmxT)%x zq##hgh z1$UIOuu{Rl7Csh=O%!ZLXNS0>2eR&^z)5Kd^wjvvOKpJnoa3iF3sc$7R#mm8*Kt%sTVN|0MJzmhZk*>o z28VE_Cg11wBm_Gh9dlXFKa^^cDybFFQW;65w!pHaFr;rsiLba4+%@gzlDqpFjNmV{ z5x3csZ&6GR$6Jg2-gX4^HH}uNjgs0SvEkzKPkO*X%dHa%Kr}@xv{ZQeX&x4?k{Z!4C!T z_y2W|*{z{P3vw@Y#A4k5P*zchNKs(&1|T$JKW9gHUWocm_*6A)a>^ovJJ zj;DvTzIybgapj>VGfQTH$eP;&q!X);2M+T|}g^O1NH|FjE;u zWliBq!Vg6Wz~YDBxb6Qb#sJbA3Mph!FxwC*Hl-}lwe%z`F-|Iwl> zPqZeKFMR*WX1y(XU8pAYE=up{<54P4MWn{)s(l9_1Ahm(cdK+>E`e)@7H`j~{Ll{P z9hT5rzdu}Rh-P9D`0nQ5s{pWtOP2$aGfD(uEm+R5epo+j8EZ{*Y={dOVGI7We$kn1 zJ7$plEiVHHGxG=TnwZA+7T=LzE2`7=3w(6zpCL$EY^#~Qy$GZt*GIxwMg}O6F4af0 zg8-$164D5Pp6BMH=Lv?e1UuMbsjEsc=bfJBQr)(6oD8bq9-_BUx@cmbHW!!W9NB)2 zgP)kSsCu%&wH!Ao>E1&D7o2xN@J4f*sT`j599(TZoet=T0VE}%I zGv0l69s-a6!mqr!El(GuIby%l(>8i>0LAjVv9Z}cHn}i?Q_jZ6z2Q^{AYwl7a@1{n zb}CgxIVR}veUE2oZy%CHCIR9xy0zL-;Q1*~1{EY27lMevTsUBwXZX2JD`*(6mn0NI zWh3kL^)b}-BLR(nr8&mG%K^h{v))Z9>ud*qaQ5ZHLA3_j@i>2E<4ZT{v|5B>w#ShL z;|&aEJ)jl~61bMHi3Vn-Tyz^7sQiSNRehl zAdVJ(K9vtt`6#R{D%~+7G1W2$)yPhKWQ6-OI zJ;0ODOZSr)6~O2@>y{=+S^i9e(RW!Z-f~0ksF2-6gwgAwRv!f9^@FBTgW)7q?j*}q z3?!|)TW7CWlZJ1#xqx~YkmK7bjJdp$0Bkz9fUv`_5RfOcyA1sy@$kSg?;?1 zEe=;v(Rb$X&=lrCOlkR5_cB_)IJhJc3Ut1&j|LXD8I9fsfooe$jY6~!+j#>>1qL(~ghQ79f+K3&S@VbnQ$BXHEmNIo@g`+l4BXn!qfIir;pVbNfdMGG5FuX32#=!?kJ zY&CNI>I;XRvK&K0WR{dT8JKK9oty9B+Xv+E=EK}z>168q$i^F$#+xbn<8NW8ESwDi z6z|l^{CQe8JE00Z^&jSSjO}K(cq?s)fbQVKqeRNg;NyzyxlhHf5kVrgwVm(;Da(wQ zKvnj?zX90Uuex63tv#q%l=uNWV@g9ao@6MGVe>fbY03fwjT`ObFlTcMs^W_ zvPyKgghM7oWJHGU?wIqDSmAwgj#CkMu0;{n2tSA`|JaAVc429y5m%Pxo&Ry@omA+$ z2HV~Xk$JhHp02iWa&b*9&G~Q3>ugNT?35X9icw#+-wiXMp`%p-R-(1E7b{H@Hfl&p5k}ZL321IKtx2+U~4Vj7t;qllI>7zB1`<8C@0)H`^H7derS;H1wz~Z5_ z`udv4PiRnUELbSVW9H+;soLC#u`8uzQHn4GSHsGoPP;D+WCI#W?`btU2 z57H7q$5SpQ`xmMu_7?aqj{^zYV0w+x9rZ7xQY3`m! z@px2J=s^eSw*P5XX|Dd)=TCA9Cn{+g9u%ESy+$WFV8^G77$nAWWaW%u zctArl9mIR(5LBB#*_D5>XO4Tl_7dObj*F#O9>K16CZ#@_iN2<@Q&>HW7#6 zRf6#&$Ap9NW9I@h*&6brS7~IJuy=KKQi%6Z1H)u6h)vQ`jE&a3zna;M9GczX1^fVnStc0{wqiLFS&b1PCp zf~4nfT)=#S^u&?`XG=W=X)F z?dn@!(}KcrQ3>ddtXvb|a2+MEkpH{zc~s}R*_-FDUx8956;-hauN2$VG!9639}_WJ zDuNewV)m!#pc$oe%1qg~dVJzBszK-y#Ck(l%{?wqN-osnfp(TKIlww0{^a zt{!0@ZIaSVGUf_Bj0#dTIPzBGxW$Gq%u?ZqBRWe)>I>?=GsGMRZ}ZWLsniGtEhZC zqjXXj;;pOh%FBzY=2B#g)7-ACM24z1W z3qfXBy@C7!O71-_YTvmvMKv-KF7chtxNgqntM1oK=4)qHy*4Mm7scq)C(xnW*HSy1 z%Gzq#yv2-!pTZS8nos%0$49zC{Z_%SRnwAY><OPoiSL zIqTAYe*04XLPjro;Cf+Z-EZybceLJ}^f(M`S_jM~M#(tC9UD$-COQde`@^LGhLkuj zuW!!)p*=~<*ftnfMz7L!!qoXb=9M*-#&QI|i9^uNaAn~Ouv&vAPq}O&E8AH{Y{erv zY~=&43W79ktcqbEl_VQ$Tx=|jR17h&Y+df>M=QU=FDTuEwC>lfA|oV3bT0HB1vAq0 zDcRZIq`SH{u{4vgBGlPNLsu84#Vq{M|D9;~&-5PTX(e(eLgSmR5FvGJ#dT`|0pk`wox9UAORIoP?4) zcY!kwW$ok*QkFoKDdbgFUpf~r*8$3vOGiKMa)E1aXr;3Wp((7N+?kXtwzRUFv3u)l zG8yoU1(4ob%;?&$Y%0m)=l8OqnJ=-Lh83!n_*UICBZK!m_#&ko?z2p+wJU4sG}l>6 znThf786yk(2xu-c)Su<^0b>kK{?Cr8G#+>+9`9KX{Jeldjj-8_K<%4#j1U!A4;eO; zY&+ZB2jgrdxS~Cfm`DG)F)PTv-LGX`jQ!v1(;TrKCJ7qq80cUQ!Di^L8>r@ga$tcV?Qj8!q(#qts!|3p|Q*5 ztO~t{sq38j#mG=)SXQiwj9P3c6-!?&@NE#b2v<^>Lc%X5?okcZceM>zjzWzjmO@W& zdwPk>(&#h+d3t&tLCnSphOu91lxV|;ujBFGrf3ckA-M2w3v!#KdKa23ZD`TKGdb}6ZO3M>NSk)y+BA#8sV<`65-dH!9m0oHtto&mjbkA zI=PDp{^}wW@P62Ve#`yg4F=5za>OGPRU|iP{G0V|=(A1fcGSK9Sie=%)XSHg6a&M$xSV|flBhqWKSzMS< zyqWWQ(}h0vpaN#+jKTsIB!k|ofZ>;XFdkt{(uG&`T8m-A-pN$4?Yi)!Am-YF(p1f2`lqvvQBr;~q2Y20xMlWNyEiCdICFE;ZvzZmP zvTakG)N*S2u+pdiClT*1RVqy%BkRYwYll0T%%=aDP5+MOz9p&0&n$uPYUOsWu3*De z7{idFNYcMAZOiJ%Rlon15f=p#`xIwE419G4?>K5CCi759of+s2Qx_>e?uV%0vYdN; zNTm$8v1us#m2tBFYUviW_T#Lxdeq$YvgsG38j0Bw(PH z-1~pIjwF;%@Li-2_3oje5Z#ZpYzMg%GS~<&WUG19==XOABxFj+cHzY{1>D3wU$N;FY54P~51COaocHUCkM&;@AGAyZ3op~!U| z>jUPxzgt;pps7)La?*^Vr&-ANm2gt8=y&+`y+W{(J!etxFHvDi1(aW{BFT^N#v2FH zPA+iz-t6tuB?SawFPNsiKhv? zwr3@d$I7iEz~I805P3p~h2GGF{$Zlu0n6x7ZBz6+vwb~2;Vw-Oo7$X%ni`r0fSgVy zEmO8NN{%f_!5yZ{BEbk{?D0L0=UE-ErX`>h2!>U&AayZPbNGuI9SeYV7Bs4<|3C`aQ63aMp z=mMb-Td5qQrm28|o70*y8C-3-m#Oi$vmZR>VXkUkp+ZUc{@z0mrJv9v0E^rU9OCnM z;p}9rsjY2lXy~`$s7|kNXG(;I09+55tio3CHBe02`+&cfw$30qua2*21$Dko3}5kT z9J^biWRFCA@{C2sk5eTPHVGHV-C-myGfpd$R=(T$8ZkCvVImz)1Mvv^vr$ z%4mfjw=5HBxwRyXcd{}vIEG4Nhrra)UHlh1TUE8LlM?ZIUJ&E-pox~_*BLf5qD4(% zt)%g2s1&)2#q2!UlgBqiA2^o|jJ+Ts)LjGQ4DD?UO}E9HOLz*_YZrmK90FMc{%;&N z?gH!oT@o0|cVY1iHFe#e4J}##zt2 zzNn6$fV2Po=KIE%vF&>ly$r0GtZXu4QESKU&qF9*0|HN9nA7u3B-K@r}nK zRx*>mBCtwve2lbc*t3|i9)J(W)PVC-fpZLcY94-TAitWd&zT>p)Qlqi9FWR+4?n!t zKId<^#KQw6%8&aV0uv(GM}hb3MqQ|d6H4Q1q#h9;;{VIHpifdtMl7i%p@J#1!gdi{++q^zLOVVMHB?+tc%IIDhN?WwHfo zNl6JKV{MkkS@X`B@7Neq+-6LJo!+Lp{c66T@IA1(xJSg%&^30p0POKX$sa;m?}omx zD!f$*>V2IggM1Mwj$w@o+fLyv$LwQMCZYVvDswMOUzLEYYsz+lu?KBd^9q31kLJ=W9?mA)V7mm-q0}zjxNh zDVIyLL{k#)e`)27b;r??-YqVZ8J4Cd*dZL;!=1PPSy;hseM#Eef)^*$TDM=hR{0-@ zd;ZzFBWN7x{~Mj1nKpHw7hARO#am!MzyMv#$G5-2&NNglj)Cqp!5Lj0z?_O@d!^zRB?jc#r}$+AxCyKWNL+B)5YcWW$N z{oxjBSH-z5CMbEtrSvOEEglGya@Hd^h}3|83dv+f%oGB?0%6E^@-KA4zy55N%X^)5 z8x>aKF)d-c!hZ;#en=-z3gR7m_e@eIm1&kIRdc2X@?M*{{vk>%Ue47tX9AW=`kb$c zqLJV-w6uTgQ5hk}Nt`=@4WHz}7%Hw5jonI5a>KM7l9uO3Id*zOO?t1FWF3HcR$X#N zxgtg%NI(IEB6*7jCiRMscXzZcEoYJ62$DkX5g98?RIS2Iiuw+wuhqbXLmV;H6Q0~^9*RV%Cu6@(Lx>N^=eqk=Hn98sgawIacX6o4t zJuS193ZSgeZ5cfGe*GAJ?F`kK(s)-VD_@3Pvtk!p!4kg@FOw8oNc3VTX3v^0EKf*F zFPSrhs-TB^a8*Zw@Jocgn}P!6z13`rS(_BFk4P=NNCHb47c+>mnDP4L@_A;WpLLiW z0odPFkPjA9%ZF1@`hb_HBsgmn`OUEODS|P=5tT{o?*MNX#K<f!YeYW!=EB*mOTbf4>f+5=9McKVGuW`>We`ouNNplV=McKZ)n5_*wI8 zB$lv1XtHVw>CiAh7>g_C>?FG;nu>ZmJHQJrVcBO(HRI7*T#o6r7FGs#c*~@`{Ir`@ zQe(%0aE3&r?i3IR&u4M&riG}GF6#C=Q{i08`txM_wA1`5chi~%TySR8&bp6UrAAm| zQz?@8yfsLr>L;-F$=I%3Caw^th?6uR6UlT~wSuk2G@a=nLx7YGJ8pauMx|+IV}4z= z$-^<|Q7v<0r?g?92?eQ4$j$bAJ3jZ_KUm!>t~4c>iz3(==ec z{TjFcW&3(_8c3qJUuCo_etv>Vrdz6bUuAXIj<(?NZ^!LVd7182^9Yk+1hJt_XXJIo z7$(Kx5rMO?Lr_EyJXVDM3{=nMjsV27KON@GmSfo7cEvYi!xSxakKi(KadU$qr{D4? zEqd)~VyGf{`S~9aOv&xSU{7d<&M$%RkVH|b({96BxS_xH;oyE163v#x81Mu_FPeX^ zb^0j?eQ;_z7v%XISMc#~rCXI$hqFXSx-#yW`)3&dg%)69d%rL!V7d<-^FjV+@zIfh z#fz{ahIa(J5dYKnBlB0(zx%5vB<5Qx=K3Dr=lvKl3q%6&G>C&`^M<@GU7gXwX`h^Z zY^0ITpJCTLQMs90PbS^R(>S4vdMacz#6g0p6nALhtjE2Pa>-IYl_VxLw0NB8fA45PuV z5qyd*I*Y0Ytuc;>Z#nnAfhYI8`(TJ$)82lk>NKy_JM|0m|I-46^Ur^Edt%lUq1iG7r@EtYm@1*(Z^Sx%JC*DpVSFD-*bjD~OhzFPzEfDB56 zIgrGljwYINy^kSw=k`ZtjcWb|5=_HK6+si(^hH#IR<6s!*+zI9zCsg4*)*z8R_xxQ z*FwX93GJJ|eaBDEeMbBCa{X?O+vgdukgFi@mEVKk9)13iH+kQpyp6owo$K8xd1v&Z zRz5>CUIXNcgHeGa+=qjy3!iw!12*<3rB0-{)TfQ;W&hJW*vv5+(Ac3DM|xVF9sAS53ppjIjLm>^4%hRBV*B_s zq1!hOr2yBE5EC9o8JCS`K3}hbDlmn9z;mlfi{_j$bmR@ij+_op4(zu-FYDEz3ecjFb{-MQ*#?|4~cnoC-S>Le|0 zUuFny3)Nd@aSS_6wNfx~rgB?cKkt-3dAbZOi)jZ|2KxP0i|viZY{ehsqDeK4`54#z zl2M<;Ie#NXgcuMQAlki2vFngBrNEA0sTkLi)!pyo?IDoGA%XN6%%ac!{0ic$=qRU0 zeFyWqj#dFhDj*~81qQJtd5>I1gnC9p*S^_uTs=zAn;U=Q27|0b)4YjZ|&vG!U2 zYLVx@XwC}Q;xc6+r2D^fYyd5;FYgZr;dx)*F)^1j;lK$g9A7?TvdyVjD8v!afE9C4 zQS!oI4~KsXAHN?R)HSxDcmDv(7ry~t&|8$vP)j?c%d*DVV6lA{yWn5T>;1;+aBi+5 zn~*?9AL@0e0?;e{NHEH9$JW7Gv(?omjb7iXnrMfdLF8pj9;y@)qOk-fmVT5$b@2+{k|OdpduqvOWAtB zsV(mUh&CM}ILI+rUHygetW1+0Nv}KhI+4MSKggjVCCFFnLz?r1T}xI=;xG}$lykZC zR0bo|T$cI!2rD@Q6iv}0sw1j|7OH~~&Wxra3tR9h93^81FHqE1>Z;GLKzK&OR#93d z3VGGh$bHEkba%ISHELXB{V8`IS-o<}0mNh8K|Ecmrex~V!Ai&fRa(@#d`Jy5#`JO2 z*eiKOP_H{xB{X`sksj}IQaM>b*t|qoK$s4t3|v_^&_eDrqz>XK;`vxwUanLzpIw~b z1T6JCIdO7u=-j+h`M0?=`=uYu|FPkyd=}LLw*IRIVm12E z9!re1cw{|#!z%iwDl!8<#)f=8nx+DN&YR#QZ!5Z5xqm1WO8&ety*X4$*oRLx5P_`Z zzyyGgvE=5uMoqe98rn-T0IA2(7+nda7o;%~V+CW|_+e6xJt7QEkd$oY)zL(hsG`WF zp~1{Y-@kfw5m&rC6bFLGd0q$Cw=V^_^sd@10&y}J*f=YC{&^9ug{-NU3){b04@Pxn z1dz2szqkd#VTrinStT2uxmv9F_A@ZIX|MYJebEU%0>X0*XPRA$Uj5y;Y*V`V?^~Bu z1fAMx|kad_X#fCrcN!6)Ud3?h5^Yl-nHXE-mu;Mg zQi_#8@>4+x6w#Ec(F0~TBIL!!*RIpMf4|u$edE!VYQ}AC1D1Yx=`%s6l`Y2F#zR5v!|$clQ{Ll`DJq9i9Or#3g}3O#oB%iV|Nv+W%WY z^YFbAcCN}rGg<4vdU678>9`yt3-`-k2*joRja8m053SN)n!eajgb5Al zJ&QZQWsZDCGB94PthLb4PP92EbOX^sAaQ#7251J9P_#@&N;D2tioY|(CPfbWRJ3zn z{OR&le$r4!&P^O6-`&#^u>8ZV*gyF{IEn)tlSrVi`=o8zJmtB#8`8J)p3SFn&+7{^ z6GWw(9712k&R3C75R~Ousz~3pOoz zqjR@^zvF2x=@$X~qTV2*PGj4SMwButD8O_1?#CAVqz!q#e1SGTIfU$ahR@F86(jS@Dlr%K9R&DJ99^+9@K6Qm@IIDeo`<=R2Dtp%mHBKu7lVnSg4&RS$p{u8` z%^rTfx#rhavBqlX5>l>+N*L}eoe0V%;Ha*trHBvQ;5ENka5E+T+C}F7-pX2yhK^2~ zm!rMVw!kfcWn)9ArnYe~SlL9oxaOGKu#6Xh@p!%BP`PXh*8QytKc;$h)Qv3(Q;!uJ zA@vTI&*mJUGWoRs2PdHs0GyOig2xlPXqfOoWq#(Fc*FO|?%B-Fxn@IacdfpcWY?>_ zE8RCY#M%0p;)A#(91@h>;@zT*+RcY_qzDTU0O}#zU>lS&wxtAm)la4=Z_OJ)@rSzn z*Ul=<35?yhO^MhEPF&rPFiM3kD>iy$!NufMlqt!mH}HGv0_onm|7a^uGMJa_;GRwC(5xC0}fR z&W4@2xLwv^#+Tj+IYzCPopQAIUkpWnu^^yl{%dyuVdecTgfx4m*eL-%I6i-5~mpg~Tm4;C<8Wnu^;bIM=|(Kgoxmo{BSdRCa!> z-t2lm^zsz9s+)X3n*H^})^(wg#4yspt?3Vnm_G%AY*z{V6XJfa4aA%Mq2?Xnopmna z?$I!ZZ5`1jsSJKMqu<*C^5Se)l_?Y*jC&r=ZlSFifoUT5{*ZhzC~@8hsj9Qco7_F015p2Vj2Rz@2L$B3!nu$ z)9VPY4NZT+K(2KRTlF?NKxg{)Ue4SCIgtttw%AaD77ZzZk@oU2aSixihpOI^YD3fIx%v5$o_GMF@bivq58kI`9StRNhy)v0*?Ys#H=1hFExuyrpTRf$?K(cRoY zj173*TiHAWps2#(XP53-#6XHpDfVu7Xv!Uasl#D6H6*<}@cK@;bIm7kYum~HmPigo z=veG4rD)$oBYJp8K;7F)VrIFn6SNPQhXvFw|0_h^jNWCC`UoeMj_T}}KUn*NMm0`Q z=#@?pyVwsUpZXD?YLGl=r*e?$JxsARy4Wi@SS&v8^kX$(LBE8=_$m< z-j-wi@8xlWozr$AYVRfAA^iqGj?hW|p`$&=kTht9m;2GhuXrJgoP!OJ@Xh#ioN&Wb zWhp}XohYAurdOuEGp@#NT5L$zmwYPvMj6SQi~VI@tSfsTA|U+b7wkW;t^mY1Xor%` z`LJ;+cG+fLG;U<@?v`}6&8wQQphl4g}b-&Twi>Bp8phmJtjdfnxWc}r;{YW*OiB2l)BR92xisv z{#VDl*13$kr)3rDj>S?(Uh__=@VK#Mq3~U82w7lJwxQ zQNn)cUJK-WiHOpx)uraiRRa#6i}~m2r6(d#qG8-0;m2^l&tqBOJDAe5scCK9`6nh^ zwj#)D;_Mu*mN(3@-r8k7&+?dd{9~ z3x?}gV`?z?#Z|wtk*%r>awsi$Xs%slXmNXU(!Bwz!oWaVKeM`nB-M7l=)p=dq5mC# zar~`xCGf@#Bs%d1XeLbt)^Zn%=D#5Kw33$x^X?U&-OqJ{xROu_7?lsEs^`AKEFWfJ zwu-tBuYK7a=Lg`u;lt`S1E&jr98@UT^D)tg*YjrKm)J!YB1~PHsn^&AQiD9M_S_t2 z%@Lyl(`49M_gu=h|GY@n)4d>caqEAO{>**oDGqb^w(djvL?g;6TDACrCtS$6ceu}5Du7%K$%^7_7%O#P8vuq`e~bhY zF{P1>tN0k4Y>V8#)3|OnjxwHq<>Ms$<63}A2dE&D%IrS$Ygzf_7&%X1sSO%G31{t) zChKO!7R4u=MXU(UIfEGe$0Q!Kj6(y>$_tU+!z`$Xgge$i|s@dOr#MM}<6P!pH$~6{fl{#eQ|N_}mE+5|XOAI`O=Z z*UQBWtjy|c9i>BS zTLv19iURpJ+0eXiP+hAJ>)s5H7d^hGnbSq9@y5%`1kaC9n63&`HMP+qy)LO1?3o&A z$7*L*r7UWN4n)chP*EJaNC`pyFIqCVq>2?^)Q@=;z(?Os3Tn6DD6KC#|17 zTRN&J^Oj&U&7^4NU;Y9tpG*@YGd~3kP|c4fSr@9d>>86ZP%^>IX>9R|30j494E%`O zhtKwLju!U1Aj%Z&z8Ypfy@OT0aS11`<0c^`1KdF?t%o5PfK8)}rXAb9Zohehtm5M%*k65$IaQqEr~d|JuWjoFp8Ng&xO zb)d~+@XN)ApV@Y}dIVGr-VZBHc@Ni!zgBg__$I3)=)0bcdUYVN<7>>{5Q88-U5O0s zUfNfuqyXw+9wQDUke&z=>0|*58eoTJOC(_p@7sI%}NN;r;h? zBp?N2m5{-?9uueKfRMNw^7nc^y3V)1a@3rKHE=8In84?4+e@WfnP$|Ze|-CYaP!iAJc3SD@l?yXH2cJ{3(^ed2;L0bz>CK_ zFK;M||0}CeibrT1CN?CMw~^OI8H9wXB0nOQ{l!ZleuK&MtaL|^-u<%|cqFg_lj15c z5)~%=8V{Bh3u#BCd@^jsJej9w)C{zn; z$fSY-dpwLI=h!~N5fDG^_?MMCzY-xlQ+naj|BsF}`>9Y!q^s%o8d!v|UAkH{juBBP z^5%GFZX}HgHXed%Zl@P_IJu&}5fG+cR@$i-*M*ruLB3KPMuts&mG(p~T#j`L)|7-%9m6unK*1qTd#Nso4m?$kB4$O`cX|C24e;shQDIsFqOPnMPEGf#dkDC~Lv# z=|AsW|36uT9vuK?IJ)7H_6^VQOAE>+t|t*4E})e!KH~d0tcUlXJtPnAracC3|LMNW zD-wnP5FZ1q7(ngRYoI3bIx&@=sG2k{E8fg!GK~ntcHGUp1imZN9pa=MPAIJ$ zRQX2*SHVcX*Kt^#*oQd~FH~Rt%pR{=Avg(|7hJm(0w}T3T6t%18$G8hww;bf;cRHE zDG?{7>=1(vc<p}`FEyBTg#WV$Mp7|Rcl($0t?c#$LCj<)Wy0P4k%Ry zK*DA*JEf)Nm9;mePXFo7&~tE~kH*qly^P#9IB7~q;*Z0qoqZATM#)8M7FOZ_Nps=S9BD(8(k2fv4DJM0rU zN>)`@4OW^DzmRnpC*_;Se0>!9WdOds8TYSN8a~;cA*OV`=DK3+P6$_w#2c+kj&;iJ z5;3mrBmC@AgZ9shZ4o+@aMf)j@fFsqTa`F7@A{B1pmWL&^8e?9EE!=tFZyq!Zv$^< zwC8e?qoL|Q9og$|n;CWm?h(+=x-Zbt$eZ=rzyrwo4zx)(LRY>y=X-$rSKMWGTLOWcbQdA&?=(9G>PF&-leKys-)X>M z)9*+K{n3>AGfgd1gCnzwqXJO_GLkb(WJX59JWWkKny77=w8d?}B#$v3PtqaJhdofB zvRPt1!pO`l6u)wM`_IPCE~j+!R9hW zm&_vYmgwR%-@MlPPBUkyR&LeuLux&m$^=40-N`*;h?h9XL^CGNjASCz__O$%WA@PdC?jydrq`)W=+*5Wi83E-zQZoEzC+W*pfKH-@!SjxXK zae`2hhS#dkmWz4?^_szHYfSca+u2OgQ@C=|w5Ew7NI^-zbfmi}HclCSo{`-=xDgr_ z-(LCAnV#0}pH*Fr#*?-Dh&{$`=a?sYui=sgbVog=^DtLeYk=DPs>;#wagh!`Eh6?{ zg?!VU;uNHGC;yrBsBEeC!PqFBQB3IQ}4S?0zW0%{_Eak=4W;hGa#w1^Qz{SwO0 z3oy%f{$iSj?fC)aygNwYNee^RNP9~iF9nKD3mo8Ow~YV-tcm&XmPuwymNFWFudVXC zv0ap52d~>(u7g+0YA!)g3{0{75(=(H@(s(?w-F^u_S$iJ*+=3a*7fRmp{5!-`1x`o zw|knr*iOPh=N^X`%wQN%je^0POa$ldKYTdMV1FqFs`9x> zKEg8IRMz@Wv?EeGsStD(u{JwR%}Zpx{}=4?aRA4-kF=@Mc=Sn?rE|-^%cNYVrt@|+ z5$ms3Q;^=-|2fz3zr9$eYMC!R)V~-9Ql_S4gD{;`MvYaP-5H(C0c*LmCPc%jokJp` z&KE&J>h}FTVWQb3+tSZck&o6cWCViyRGfgJnq;2E)b%{L*1}PcR>tSnHpX#O5B-0r zdJCYozAsvs8l^yiQlxlsclY8gP@uR3ch?Y{7MB9W-AaKXL5jN*T#5t;?hrgJ4*f2_ z|NGv|o5?Ut29kU4*|PT9>zv&Y;QK|eg7bBFm#lHi4&NbRYoJ%}+NW@_amEsm5WBne z>$XHqXFZCs50)}Nfy2|QTrGoHQ#tV!+GT5CcS{~V{t~wb0#pG3naX5* z?do>1woN3LavCjIfkFv7RZZ9_%SHo9UyN7!ZM7~nhO1>^!8>)EXn`ZIoqS|zJ*i;1Jlg5;* z`((){#9Oda5YI}ZOTeX^JVQuHk-xaAC~oG!zy@_odiTP0IN*FeQ;%#UJ) z!JN^9F)?TBYZY_n`MV42SXl3idDfv2mnP~sV;vPf)yfOTFaLodG2HK5t3!Q+XKeWh zWFj3&0UzxL4IW249@%G!^nVh0hBnT6H^x0R81!JdD+QkbVFw_k1W_5$QL7PTyw$XM z?XqDOd{ouriyJqmx?N>zdHv>fzNkTvHv?2u<(l+~wyKk$x1tQr)l3Xa;0@~Kb_Su~ zJ7hwOI;KvJ9)|pfq3v^yHX|zWy$(^L#`C$0nn)u&-2&#QEJboIxZUp@=Sd@*YOa;_ zIs?HbFVnk{t?V6`T!ZB1oodH+@OZlvt)78#;Y^0_eh02Sd+_}?=qURc-_}m0@s5sj z+t4kjhY

(e83+N!{8kk1*eTvXL=m^UjY9D)~XURnq*-C(;zDR^x5+rcli$;_(M^ z7CX~-{Fn^Va~r3(m%2s*i;W!b<%6;f_ntac2#f5Ra`(Ev&zEUv{KHIP4SKbyC*6^% zl2C1mF{~7ZMcm%Q_Eu>PNa6my7rpg@VVs8f6CS`Y{d`3|OLu-d3TSQE%}9 zg)Osj0lR)nDS8bc#vS@*{h~)oUOSdsZNkU{e{nxh^NPrM{O{m{(2Y#0=*q=T3kD?-pVl~q@&8~bMHrGl`fLOAx6)B=nH zw5Zdn*iOk;Z_fX7YLp)^J>#mI6l#^tH~e1yMYdCJZ~>0*b3;#D5p0DQJQ1IUvT;-r zDiWuUl;_PrP3tt{LSp-qIk~j4z+R9Lnoe12ZzEvseb~35tl;uPR9Em5&#;#cnopP+ zY?t&(MBB#5U$^N-&yZ#^vW2{m?9gAsm0U3aPbNoDVi|BBwUvRQAdus4;Rd2#6JGW2 zzP3y^U4+1sUW9E2v(j59=EEL>7f#OfrcSmKq|w)N2W(g)n!i5BP?ZkfJRML@s<3e8P^rV6RZaD94hWFK}y6g^%$5i zyY9dEwh@P}xm3b#rJu>ZuQQ?_AKvSQ(S4wT(7olFl8F=tBdd~s4;oU_o94ZV#dlh18}I6(mNRNRvoH2J zOtCd{(90POV%Igy*cpX8osAh(x?i2iZ5seWe!HtT_d>l-7T(~9ir?Q3>a<=A!h!8P z*Vm-b*+q?1wfb2eQhGq+kw8yt)ZrPq((XPyYzU-c^)yFAE{4&3K{s&-?oGvWXJ?C_ z3V?n$k5WNXT24)1|L-w~a(q5-x>o#!GK!4z`Xpb!4%GI&8eQT}+0})qKU+s=PBr3t z$lH+bY9aa3&oJ!`7j%&G=3de2kL~%rQ#3XcXvlseixS&g(A+-`*Oi4S5mSv5ak7&* zEj@;=9f=F?5ogh5c(n9%n}uL5UA@CYe@|ip?R*nGi5@MQnxLMSgl0M+r;W_k)`7U=V6p~=R*?^DUMb!*waq)V;5?C!_x}Zf4R5plZoyddj8O*G z;pkR3+u#nrTj68>KlDxfKTTMIyHpq=`%@p43s~q4&5lX9$B-%=3MVDKCs8laJ!|bu zN|q$j=UHg%}`lnW1!T|I+5r)cCNfRx zv|z7SEJ~cdN&hAJ+tqk=wMcV;S$LYgK)m|NPFy?PIJ>%>CH`vTuBF&~^y}&+r`&MF zjb<6Q`(GAC#qUf%^r3k%{cm)BHyK4Yxi*cuv2G6qB}j&eW7=k2j?S;{)E)5UBycfO7p#`NPA*cX>YeiL{B* z`aW_PgCbKeEAOKNdqgFDqZJF+`!aS2LT4QgDbIj4J_TeVkt|xXa2;C#vT-&@L%rwj zMKh?QcC2#6CwZo@9{Fz@;90F>Z^{Lg5dykc1tV@kT$>B@-gU2J74gEO>+|aqQB$SEpqv4g&irxc~608aUs?^jetyoDBW^H>3+lSw=-}&POz2M-+3>*2-453y?s}+imO_^E-VS2-OTYaWczz@* zKX%)Wy1lvhF;wDiQu9GThBvWi&E|VQt!L`l#jo_SOWxWqbm9t(YbNIsq0)v zt8S-I7Z*`+TcFdIzAg!bqBbeOZIOJOki`)m$)6Y2QBiG{%qiVx@l5QQATK($*DO84 zRJ|*0*3-K4+rPPEp`niP5L0p1NxILW1K?AU<##n`(`Ts`zL&Ko2f-Egx+ziu#;d)1 z?jvLDfQaOz)n5KnZ7BrNZ8&auasDdchShkr^WHzCCqFhNN&4MHino(%@`Xyy#%(Wl z{`-*jd!zO0ImhspOEst_F!r7?b(Fgv{B7eogm-#{eXRm-J?G4}Z1tr|o;vRGlcZ9P z*s>F`P+Oaj%tw`$CN`LckBz7$v?7%Wrg*CCrQFguncTePc&_%^a``{b{pu?yLu?=D zW!LO@lxqEiYr&4%G7FJXE(=o|HG!2qCsh!IFJPWM_sy!F&d=i|ap3J8!g{DnRt%&p z0KYKkhWwXbSeV%P5qR(T;_^pvN2pwko#UbOnoWd_m>&`gZ(W3Ll~8(-m~N9$8iP9I z(u0o`Y+lWzN-nBgXXSpq&KHZNI5pe76q_d~Q=bZ-e$S!YoNcx`|S3^N=Enwq4~QsBp2Ob7+eM zW+5N8OtBi9>(M$PLxswxlB81*@yf+QY20k=BLd9vIueSb4OU~nFHdeR@GjHOBtB8^iX<%^WAUoGw!)|=JJp5nl0H--L6irr{ zI~s}Gvu7adXn894sp94!!Uho$|cDw=cc zG={GZt|X)$>FJX~zRM<_+MmiwW)~_9SL*B?zP@23IG-2Tul7w zC}Tge5c<|@mM^r3@2n3$m4Ttj!!k&{`ZH1p?mWEcz;o#PWBrxH%^&Nz4(BX2Cc3T) zUD$=c6_NJkj4zeDtzE1aO*QkH6I9zgz%<@L05;oYB;k9D7yLU#55raRBp7qqq*5A@ z^?}OonFOW=JVKx0^xJ$!3l{znrYk45(=k1H%}H>aggQ&tNO}KBmAvz~W77CCbz#ta zYdEejx!7t|Yk8W%gs$$yz*f-t=uBxhikcwEWq=X?i^qbwO{cj@CoSpUrX_UdTv@oO zMX&jAiby>)EqziKq+VXmbmkqS$e)&sY-0KO`{k7^jYRdEKYyG4TwHlvc%`8?5ag+j z+Kh18Oe5`e6fYQd_f?ldeVHk>@J}$Qk67`~oZj(v4SkNsu$mF+>(9qF;yrL2+0-ic ze+s<@s}5JQI!d4bG6lo$wZ>6MrIUMR#; z&nqV`E^NDbmBcHczzmK$x$9S9TrtLSBYXZ4D`?s3C!%~?j@geOtYYm(g0)PT!#LZ* z%q_}~Bis>AhB!yCd|N>9u==g^pg`wG^MhSaHe|cweNlPQHyJzLBb?S(Ta~IV-gdFF zJbj(-Bqwb)W4o7p+QxqW<^e2F#@`TFCEz)Xx?&rZ1vQ*DN7;XkBG1} z+sz1RkzS;&wg_PteLlcW$h5_RHZsbrk~{f9?C3SlO6Fs{!XU1?Vpwt6u%%x^^l_QC zHQH^RVK7<-QAqPB%e<<&f65jw&pJ;l{m}VB|xI zBhSbPJNX_j*>^adf0~@_)-GHKf?Mg9fsIu7OWl%})Ary(P63sq&zG=O3S23mhd%g6 z^;sP*ku^IUwe5oJi51EjSD}Tm!{Qesi9Zrv7~RYmSh!!sqS{ZI#_@4NFZ;?mzH72T zvMy#g1J_b!-Pbo^pf-`2Yl-*>)UCVf%5Q;;_J2LOo&2KD1CXqo0%JF}u)P%9lRnN? z7lQ`(j+@oq4^~#&A}YRXf;sf~DOYUL5iJVLa!eN0;NiDB94hJt9P2)g$(7K0%b2R# z$%=WvL^v_L9TEAU5+Liyu#nIbV6GKZy|~V>ZGR;1PUK`zDL|-6Q7gSH53aED9bXd+ zGM0h=L0a{B3V1aWF0QUKDY9^-Zet^r3X%aS(FTl3x#;LeeO55iNQ6m zd%XNjZeV)ySi2+}Z~ZlM;Ty^N?5jxnp(_?(_FyF|14Gaxqe7fei1bCpu(9=9pMPMo zX|OICFf9m)@@GmWsJt7paQ)B&4xUO@cc7p$vr$+nTF&|3f-6D4U5x(=>bO>V;r)aK zLtHRpa*MxbN#s(X(X#+t^V;utK5wBNX8*Kh6tAIas?@O-0utvF>HmCam^T?9UTH^6hXO|d+7r_9_p9(c;aTO&1a(*!gu zyE+u8L*~R3nVWfRuYGvgDpFiPoIj8LR=fabW=oOIh_@4K_H9#y+ttbE>zY+{gjaYZ ze6!4Beu=QHwPyG^=h*Ix;YoS}-KUz_Ka!fj{iU^pRe_8jB~Hu9+}YpcV`XKXE+quP zU$6ulBsT*SA*(X5WgI0wBJYR<7n8JszlmCafwJ=4I#)HdF&B*Ywk0&1Wgc`3a(#@~SRxxyA3_wUqF zvQuq93dPiSjdr#5-IroeuvL3>OVJ*frEs zZ30nejwg<80rxLF6Su=rN11d(ITFU;SA zIBtdY4eMM6uiW%+L-$^Jnk_6(A5xGSb;tyo&6^4wSF4}>T#(4YEy5X$kaq@|(-kB} zy$^qKx~HZXuRX9qvDG&-^GShzVHej(jy*sci9IIZP5Up0E`7)KYdgE{>|_& zF6<|UQ=}-*%yIA0tM)E7W0-3R0<5^jbLIC1z?xE#&(pw-^PsZvUQ&O~b(+qxyQtU*^Y#fkN z(BY@-yHfYwl?aD7@aMmn;19L5kyXyFvc(hdU@P#~OvGC^iYhMnN=4O!@*8XQjqJ92 zu@bKTkz25Mz>08+S7H()t*FCP=AG+}9~Fq$4lLL7v@hYiHqy`OfKu6gcV7H!Ebi+l z-3yz-byJ2%m3ZszjMSB0(_3fWzvkaA#>mqE1IT~x5hQ9%!P~~HbA&vXP_5?_=kTAJ zWz$H3{BPhTqLk6UY@C%`LPGBtvT2f=QJBjyeuoY1emeEOEks1AjUxP`i?@$ug6|-; zQ1zy-8$!L`KVkP^JPxmqs@LW^ePLH8qQh96mX+aTxa>);EVI156qz_BP-$H1JXC+b z%R3o+ywYZe>axhLLE&iVrEYy!Xrc_UPQfXOkPlS1u2nMk>)bs36dnKdmY?IOU6)Uh z$s%8qtGG>z1i^G@D*H=?a)l&MpbaaQ0jBvIwJWzn#Fb>%hUtw% zgK^_rf*tRm`n2RPc=?1nzxZ!_bs#xvJg_SecVDXiP?+#TBYUPLc7uywe7H|3HQgBW z9mHWy${;Ro_|lqn!xsvmw^R++@Hz&TdLF?}CAOUDk z55JYogqsT) zR=T<%yJv?hH(ha$=GyGPKDp^X_0LsGWfX#}(bUwS2$bmkRv1YmC*bhmb4P=D{`&0q zviG|-5Vr*egVU;|ykGT$s4h=`2jcx$Rh@EPE`1K~U6!9dUarRr9a=EdRhI&PfM?NA zW-2nv*rhRER(GTGTh|~-Chw_A(fy3V3u{x?Fg9p+GYc|u$0=LT@|#uFR?aOn(Y z;rFoLd>$Varug|jI@d8`>5KU`#s+W93Dr}Ox2Q~n&Hp{|zsUGo{;U-lv}E9=a9rRu z&vE-d>QFO0zc6W{aNMI}H6}oYnJWzkFaKM8y2Al-5cm1pJo@hj@-IUD_Jod*#5$oZEUhjRS*UQ~8f{cbl;?O?t#=vh?K`nv+XKN-3Q|rS9JIg}SI0BvA#lXR!Q6-yl3qTvEn{ZqRIK3-lLS#p@FzUKpnr zFbnsey^Rqg0Hid}&%2 z0Ccj4vEnBUZ zCMPQ4Ac|LPc0BgZAcBsD$6aR;e3lx9xBi6&NHPSLWP~+nC7KDEXI2R68|9Cq<&`PG zC}3xxe*$XtNYAO@xW4g8&oy4%;N7{r91$+9BL%P-l(y$h3`G(!HQhk~uCL1LQlZJx zdOK8hds&z&?7vMO|31Xu_u`v!znnwN1n%|wD>rQoCIEXF%1R?yD&;Y)EC5Bz7%j0l*SaV zS3B%v;vMXYn8Rp$%eb{)N%G$_370=7QuVRe1xOL#q{S==NDe&kFA)kW+9qR6r~S{B zYB^q@rkJ?rUDW(>_D`NP^{he;XOelibG5nw)?BQ}hUCI#Tiz zqe3FWKXwIBe85M%c)mY)K4#eY$pCL6i8Qs_< zvSz01dp0L?xRw|&i@>PMKM&-Y*XsKLR!aVP5Lcki6dzB_Rf{02G1J7v6+XV2uwJnu2}WC~IxTb|U(||3GXX2e_=$ zRkmKUs^o~o*rvCh-14?wUagqqb;J#p*cx45ab69M8?9}YOkuzLQv(_207A`O@6D<= z<%}J4qt>md`#GZuuwAyJ2rxXCe@5;12;(*0I7#`XdheY!+$y%{3(4CE$nwqS(^Es} z=LUZTLQWn~^Qz5#du3Q&KspZ>eO z=y=x2<r^@7%*UXdBwJb ztHGhf&4>nIeStT}fzO}jqpAzS=LOq~!Rf58b*?T)^nik|nl}70JMi3qT%-zjX(By4 zd#BF0txq-J95bWHb^niEj@K zQXEhq6xm4QT>$X*Zi4?MR%iu5J8oD-T`8m><-;7`M3VHGAvGm-Mp68G*!v&m2SQwK zm8rBLjnNjz-+&lL2gEo{0?fWVId=|)qE|&mqNsE2I?o(I0D9(JkGR&ypgZ3_zrIP! z&fJ*Z<4qbSEVAB7GuE|$k5NE9C(Gu^(>*fMs6_woxd0vrAC+v0;XU4+6Te)5dBCBZ zgRKSMO!CFtw;KUSJIxr>%cl%fAvz2U&Md1-1Gn9ei8&1OK`c+Y%ID1$a2vX}SGi@R5)}C_${|_IXPL&%4!F=gXbnYbDpu}BAxk9ZqVl19g`e5;Az6j z3O25^3UTC{OBa%@YZ)BIIeF?YtkB_hz~MKT%@wcX`reQs#BXXxI z_d$;D_p2BSUG7xWo598XwpZ)@8PuAE+Qr%s7f?gZsH;JpqdS8$ZN1~OMzYX4C?i6< z3Sm^|oBjC$y^E79tAR+`mqN-}VYjRk<+r_^s;BqTNR@t-5U$9$;Xrm|ZDpEXSZK*M zOh=Bh!u8{?SR9B0HZsCiR3RkRp7^AtAzrz6f({_J#NP51s)_7o;FP{P$v{uZf5ihd z6^wX8@uVYe;-9ukM?6mnXjUx0)t$gnR=4ZX;mkkk+O1Ce|l+{s0@~zQYt(LZp) z_3v8s9%E^O+vCYp>sLv1%sd5A!mQz*SxecSw8)k zs7ya#@tci}!*zS{*#lGQwzW@Z5Eiz(w`Ydf)ka6ZcJg8Pr8`AA7l1!JQMC}TRb0cd zv+X!GGXE8~9M^k;x(^;F`#zKqDBxI1^OdyU9^q4+fKts$fW?QQT4xs#=le^sdMy-M zt)s%tWT74K5a_6ZgEQPO7!9%^Fyi4*Ilp|>+*O5ZBT<8;G{Vlt{mb$s)+o5QXOQRR z`N3TG^esLygVh8$yS+W94maEo$mniOV!XWWt1V*n&RH@WqVM|))SG~$P{pLy{&?%T zyXW6L$C~^P23A1RWIcc(a0Zi_(gy!5D%?=5Efa?F`&~k?H$6JG(k5JFiyvL#tVMzu ziow5KrESj-6tH+tljj!~ZkNtICzI{!{(^bp-==?sIG|4Q?=tI;6bltg*uCz;kMB)- zhG*=+AUJIL&E}+S zr*)Vs85^h?UjFYX>*?Ha{=p3Xk#&LLrW&pm(IW`L+#I`6hD^>+WwWB)hBjE5m1HON zI;+3dZWobSNA(R_%S?Zkm{uJnos8}mnmUnAE2x1jB~VtH)$tKG&DuB3(BmMqqLWT3A?YS>Yy)@K7?Sh9(K64(} zjGpn^HrDx@-$R?KG4R8G3Hk$&psl3-Iy`!76YhtFf>ajsW5wsO7uQP-vlmV;;0)DM zY|evn{M^O&#yaPDMrXl2`FQzim$7gk@f=|Ifc;FOujg^=+7_}tW(nI4;n_+W_Qe() zW}~RF8w2aTfK!%>ntG#z!I(zyC$l;KW=E&niZU*IiXk~20yLc${(j>I z4UWeP6Bi<)wJy7@{o!J3`e+Wogy)>qD2p|v*5X4l!w2!O=I!Dw;<`2{xCFX-U zYjLD9B5V#bRf+}ZR~>g6IqDC~C6_#1vfkqHf6dGOwR2-pBdlE`%r;DueSn>niE{Q| zf&CQ|8$X=eK3Ei^9`63d#x~r`H;Slmd!fgW|4nWKon)mZdM78~ETzHS@dR^Kh@*n6 z+;EB@qZx(KS*y%8Z0B!Wi9k|b*g@r?l$sobcp&tHQ=9d1BSbuKoogsnBxi3 zJk(A3)BqNk(`3=ob{GD2B{nEagW;73S(a!J=PRGF+jR2=N*)D+^%+pCGQ!E_#F@-i4D^sm&X5;eNhR??LpqT@BxU$`*-SJ#u6%C&24LXc1PF&W%vNwdL z_obBVKH6sf?&c+m!HFly{&dw*6;p)#A%^rdwo6+5OR=%+Rznmj6W4*5!D&i`AcUh%j8 zt#lReKrDaH?PUEKuUN^B{H zzNeEGB3~~vz6Pk&ClqU6kRn1V)`hNZM$TGryNoc?U5XvSCtrM)iu6kW*Z`zH0HQpQ z;mChyfejotjDfeDSBt3e1OQv?9np|ueuB=VWu$L)7Y-lHNkrLZJop~4kXu{Hv*QD( zj5?bylDCPHj{bKy9XI1w(8_@7x}5C{vGD@^viQ+$padd_qHn(mrmE|{0z??Ue0Say z*?xuhKoyW$|Vs6thBc6zZS2b87la zr2P`+cH~Wkocdp8!)S6{u%s7rjw-NK$;ChK2!UF8K31zM*!q;MpD(1>XKS^Q)j1Zu z!VBJ*<|dG33;ssPK+f|bTza>;8!XO}Oj@WIs#qrvJz8z#Xs>)%qFw0dYrivl;kf2> z(mGFhRQeX<93)*db{@|z_U}N$Z~KxPKeAB_9+_#Djt)4mI7zxH=l?vnvE#p*ardES zBx(X2Gyi=lx9^3|nv)nM;>06QYtlzN#nLn#o%8ON7}U=5McQ?5NNd^qp9~s67xdRV znQe9egy9?Y3_`TwQaNr``JhWZ2IQevw-uVGEIB_uyAxeUER$(!R7Cu z3Ot-pArBL(7Dy}@)G_1cT>#F=KD701Zkg+VWN8$SpPla2__?eTq$_8XB~FD%69KGe z>)p`}z?XyqqwY^fo&5m1;l95PF0BD`)jv$jbU@gSB4_w!K6TmaX_x)>_H@d*Q1z3o zBdXPs@chGt22k&=h7B7&k+NBnP}+mJ>Xo^OS5bSoDawhLdc-hSfMnGs@c>Qp;c^&@$52<6~n4VKB0d3?*vkd^`Vn+ z#78EA@7k59u5c=DZsAaX8Uc8dK;vU@AdZ>)*T1B|YuYevw26%fM1(~dEf+VRHC#xa zid*bBHukI|JO@|us&VL@y7|ht!R1E}^xi$UNq_Ba5W`d#CH0=DoeKZ_0ELvfXdOVv#@aa;4$nkr56q-j3ei zim`U1=pSE&)Md{!!NXb(wb~S)QF*y$ix`$Xy*dASdZ3}|a?&Z0Ft}OdVfDYL{*Y7Y z=SAs4yqM~wmnCno?)N1hu#0k&pBg(^r0o0R1mxoxh90ij&?G484_U{wK}z46%=61r zRpagK3yIDP(*V;~i26u*TJpeKrf{4i+H940(fDFb7GUHFz{~>N>KAulAm_N)-=_f6 zCAjPp9$A(MxM-px0~3MLw4D~v&{PfF7JB%Dwzee-c*imh7=5Ki>RfnEs(;kdPrmyrO&9}WEa3*a4qeokfkJ%jbQu|sIhxa0+2 zjk~+xV!u54^XvI`M^@l{6M$p`&T5NuC+7I&h{OoI`{79;(=?i4x{@MxAeoND4zwhniNO zJk7x^wxSs0oWnnfYLPBkeZmgp!w7jA4@>ndA#m(qx*W@2k&Jc$L4U(O4k=N~LL05$ z%_`Ymy=D#w3|~lGHP|9TS>&S_We?xzEVfZ$(8;VTxndzcYndJZJcNDk@c{sp)x0?)uN0qm?~b#jSDDj7HlDd}o=-!RZ}Q)_U% z22#-Bo+-c>hKs7_6e^Xf&Vmg4bBi*?TpPucO$#@x_0M$Kef_L%u3;iX>f{JJ z?gh)$f;14gsqsxMwlP~HTWTv9{>rR|uV?n?h$EIlTsF`cmnvIi7-r2`-KdXdnP-d6 z$FMK${s*d1HZ*&2nkC|I=o(A8I2*3`|6CBr za1!KjK~gc5&UJOx zL;qT!?xp?%?YI&k<}{A~rX!~2fY@%4y!^D$Vxn-38W;bldZ9mqgcXlhv@D;T;FVaI z^`JZt=H!J4)^9_VkYi+|q$YMgDF9Cbg40t*bMx_az6+#6yORErdw-A|``2%;Z@kW` z!3ZE-xgW-1ekJ3MepeozhdLAT?N>q zJ8KvlbCy`F7tPkzwsr$_4baT$nb;e$*gZx9v%#Nq#g?R}>jAKpnIK9iR)&dyCR>q* zYeIn``#!_~4-E|8>A3yX8|Yov>mh*gPqJlr-B^-%r|fw*nbFP-m6jfhPkD-=_OJvi zeOv)8!#@-++_@6xWT8(a@J=zFD!cSCSK99@NNzN$Ljtmad{Ir3k=%IYm!p)*aCtIK zqLSMtTfJ|RMxA7ZX7BEt`K8hvzI&{4)?K6O;_^=@UHLjCH#{@&yLOotpnyG_%KeuB zkra~a!|^=$txJZ6DF*KYJ9uny3p9srz+z7>t7!quiH{ljgT4k}n{et6O(n+ljte92SYyMQx_yx)+=~6I{}<`q{2ps^jet&4J>`GEY#351$4f zh$QK0MPE#J-$2%mKLKd`@q^x2jHdms;L0}82L4^4he6#-(FE{x*^weEK1~ChoYR9T z!D{<)xnIwG;}pDoVEu$svCji|$S}Ox?pyJS+JND_j+XxfQEOWFrc`7G$n=vo zs@pV(gxJTzqsN%z_8vMX;vQR*@I-+B$QJXyebWLtW*};*K@dq}oSu}bWQxE)=-9c6){PtnF=tK0@S73P%Exmc`Ap&Zp2 zJ+egC!?Nh@%ejD+118QU6lNP<#Q35jdN-MLA&=rg}K^*W%By($BBO5{wL1XHYBl*~|I_F?W> zd{t&qVIiT-{u-~?8v*N13;SZZ4=HR(0$ffZ^?~432n%U_fQO++Y5j?!(jX(xD;RER zW6rqW@>WNi)>;p9=0nf7QNCBbk&=x_Y>ZQ=)fdc;M|t?$+bk2{Exd0yB>YFSG^hCF z@KJ7c@+I7X4VopN zoXFuwoOaxLWIh@UB{1TUtgZ>7DmeOH$Kv4J76x}Uv{T_4hC6^#o|Fu7guPTV#jlBq;i6A&jnNY&5rUQkmqKWH}Zr5E@C8@QbI3s8+Po1wK} zG7>j7cbn-$`AcN|x^fw6UjxIQE4Mca_U^!B{xDh=e`|zfn3e&>#XQdlAW7b6L6w)6 ztCwgSXtigGqw2j|%th;8fG{$5Im?Pv+1{p7Gx zL-+*v znNBP%$w45*?Z?hORV|Z;IJhr?F7>pCp*}b8lp86>QNX~g@r%K2MdfjJ_q~1cRK}gO zEIkt^Q0jaafH&YASh=JLRxkocd_b`8y4~8iFO)?EIwuF{9w%9tKm5bF>$L z(MT^wZ7(kQENxFWm1POJhrYJvsAU5 z{)F7Q9TFzEEE;TBxgi7=gLO@V*hc%NgRhz~sR}#!l(DCJ`PkW5LkKa=GkzQCfC?rB z7Et~UumVjmlji=k18x$!VnH$MV4?!ddw))-r2+SKOh`nCva*H**INL+jSa9y;;qLs z9A*Ihro|}43s*^7Uvbx%oYAH7ha#nycHEO(F`1=FI^CgSz^;N|L`jQMgd=R*)Q+-f z+nj~!isk#ai~`eHnGU-~1?-J4+JQ`{4u$JY@@c!v0k5+@ z9!yfL)(f94;L|BRAkOa-fCYYgKbm{b3NRoWD|c7Mi^#$Uhza~b2%g#NX~%Hsl5U{n z2IVV1^m_dHf=mQ|G^J&P7l|cdvOqF(x2E{Sf3DU^zX|i!*%^s`o~fS49GY(%!XB(U z_x4pCMmlK*QLPh)j=cqN3BR5Jw-bw8Mp^=9?1eGV@|rp%kA3rw_k}m`2>$!ti09dk zqMOl#DLPo2(Uzs)OcV9&@O+STb9715?hvj%Z;e2-%oJF;raqEr#clwsn%=13<7GEOSp4UQxRIR*VU)(0JaNANW6WJIBmEG> z{`=B(shws@;2)rfx!7oA^Jh$}Lzao8mCJ>W?Tpe_3%0w>u|>8_b%X9Ay)yKd;_85A zVS=AcM#1?2eBp-+L;ZwP*n!Dl;L}$7z?}y(GGGMwN$FbK(ANL*_5Z%c%j60e3hwJ= zfU z3afaHqt|Qx>boh{)Wny!yI}v&L)*so?hAOaBQOWr7pQV7%I*oxXo0>=BPBngP#;nv z%29D#z#M8z+WXzqY?6z5SQc)P+6vsCC}Sl9aCsE}g@pe-LtKWb=?}fM9+vpPmq@3O zXsTahA~dGOUm|q8+RdPif|o-V578M+E;inGLBB}|-+ArFly~HnREpDQm)(50=ACC7 z^CTq6kQL zhk$_62t#*wcM1py2q;K5NOyNTbO=Z{NXO7M#Cyi?z3=a?#UHZ<7W0{N&VKf@pB*Q# z$5KV^+&G$gRY@!k+|Y=F)ia*&)lo55@9ovQ%T?$`KGkv3oKaGWOL~}j)bSu+fO$Ph zuEJ2cMn`)}T#aN@vOW0&6hIzPqi?oGb{voGaVEv61cpw|L7UFjFYei>o zp8Fl3+9Xd561!V;8^LO$rTjY#G5^!lhj<_gOa$9vc9~lNIO^?uj!rwGYvAx^VAU}$ zCzi4Cc$5oA=ZY?1S@q3tmu!dMfD*}#k8(2Aztd`D5QSwAT?Brr^T-zfXe$0j!i`1( zOuJt3r@%fSUSD3^wO zS6Z4r_}nslc8ywC!$(k6F~Rv8Nt2wYk(^MzVZB7qY+%7GH|XGC7&j1el5bi*_w?}k zlh~Ue(3?KVi{fB=lCb>oVzo3B{y8dY7u;YTHTT%V2j}Gqu0SnzxsmgyicwKlJ4(aN zTB>WWF}kESwd1B&h;xC^dvWXD|1;yMwbG4*`>1iKxMc4Cs5p(haZNMl>&aUa{U+VMR047{x4h>3B(P@1}yv$%-_ zVU7t2wc%6Ay3-0984;}zPvX5@!~C{zXLeVXc<|AyRIdC*yS@jB)?lVEM9_UGPoDD^Mxp#FUXfLk+uASb^-LD77>)nXl zv-I1wBDcr2-O2o8D`1Di111{~Eh9+`mC;P)(M*-q(MA@pN5(84fHLbj5TH8iYCO|% zAV&`}AxX&nKy5ub9*c>cNS&yXQtBMw&iS>JXU=rwxSx7(nAwXS$ehkvie8;RuqsF+#YinqKmDK%06k{xH+#;9?Xoy)~nP7(%ixvPL?nX2pOmdRiIVpI~=#fDw3)|b%I+wM3w zJ@;4KhD<>?eU;c&rk=S?GtIDMlrQjB4416o=5vXM5(E!$_1&IRH>E4Qd!(e1sBvFR zPtbd_esU9Z8TZe@w7x{F`0AWZ16S3mL)F>+Ezd~x{xs}{h(Yh0>d-$NN&cBJ6Wa*d z4!lKQB{O^*u}X*wvPepBEL1__;NXC!@9yrZ>GeIF$jqYe|Jb|Rx$ClaR&U>=U9Tgb zBHu$3p$`05T?7ITj<~*k175AQW#eu{gvM)^0$=2sY6aGOFFQx$cl@S8Hfi3+)SPrJ|oE8KD6>k#EtqI5rOZw*yys`xXTdsP+jJPlYy@Pm>rn#>Xm)# z)&uZSJRMQ@qf47hH%s?8_kVHj{#n~)T;CbEZr=T5n!}FN{e%d7RMo2Rf6#nVL)JLs zCyhj_x@n&eP0v9`INpKx2ne}MYVQ3uMMNP^@NoHJZ=H#DcbL(HDlfh0G2l#OH+=b@QbM@X`@LU%K%0;DGmp4ww>D~cs{F>Su z^R46~Qj{eP5&z>${(Gh)n}009dx)FiFPEfL-z`+{+x^wZsO@64xX#-rD2jp<#m3Kk z3?CjW<=LMzmfphIy1Ng3@8P@x{L<$+It`TvCj~V%y!`z3E-owljwmBqcA1~M7$(Qz z*Q~TO_T+-~8?DEA3d)y%pI2K=l}CU0vty}U))u+hg@b79Yj(sdLt}{VdCw&5gkSbu zlkwpHE>^@h1ZPSM9D3}5VKx$dzpb!uPiTKI8??JDN~TqpViemOkync@8(A=b6 zq+86LHVi<0{@>O63LGGnz7IpRn$akWQ-!^1uul3-?p@cXzE0m5V^LKhU#PEWG}SJt?X$O zd#82grHf^LTD@4iJ=0q{tjEyv7QKs6==D4Pz&3y8ds6`-_AhFhGiAQA=aWLKe&=c< zWQX1Ndu3tp|Fh$Uul^7UAptv}fgg!n!>jGA*3)k~C~eGd@4;|~@!&}gAe2nP%hcsbKm*hL@6aFvF7HcHTq5MmaPf9VvaPy zR^exQJr_-F;V>zYPPp40cG$q9Y5ZS7GV#A*K(J~LdKkoE)_c2WcHZ2yw&qHAn+jXL z+Iod3@G0X|FcT;Z<}dd4zw*0Up)lx38oh5IRk(D9}5D;9D|6gzHC}& zQ^6?j%I;H6;!ADK)5FF!Ff|_xCK8`^h!z_=t~X}l`cvLtj_zOh;#?%#36HboPfWPC z!WZykYiIZ8%!Pz<7zEU~L+G>{-yP(Mo1;Hcqv+|RUK#%tF* z2ca$Cu*o?s+`hrb&#$Rjc16w*aeupFCh`iN=NIOB#lCUM8CQzDytC8kv5XXHGpATo z6h7xoTso!K(_p6HK-oP_)P3o`Ev>Mp*W{geLz_NrlgdG?9fG}byY;Hc@#6A`MTh`6 zyhL95{`~tqzsJ*5Fo5_8e-(tG@0kdu*gl3+12i^j17rK@weA(}ait_?Fo=QV`@g5x zovV)wzElkc znIpqnYb{z*)TN{o@lh*0yW**tmw>yV-Zs&nYfmz*S^$_`M3gP1XyxG4urm8_*{tiSeW?WAxNw^EPNtt_gO{h9>fgG%2;R&iXAb+#4^Cd^3R%v zv_c@fJ3ETW$qufrtNhN7FVw6(3pimN`g4zekVN!MoN98Ch~e}JS4WNjTXNQ4OS}O?|WvH==6V{%iH3g_0wo! zd$e72EtwinHLf1XsFj}J-1RK!x`|jSKX0YHL6Qp|GZW;+c6bpmzN1b%&dN`@4HkZ0&C^L04; z*Dj~6!h=^HKkSLP$huwr_Hu}{fy0U}n7aSxt^?MxW$^zN?Tg(D#Hy`6`qI5x6x@W= za*Iq9?B7-4ds)cMy?VQXGD$F0o#}k4ds{ig~!uU8*SC_dP%3%08&0*XGh=5GpY^qcQj%1qlk1dgAe7 z0`2H&?@&MiQv_ASX5d=A0!63GDsKXbr1OLQe#mJW#g9t%KVj%_RpqJ`w*R+4h*wLd z|Lx%H`+5xf>%AZsWL*w|uCShc*THSh1LeH1s5iot!!|>_$;kQs5?>;siOJF06H>cU zhy#qX7qT>DY}{|I7n-(we4u>J~5SXj2Vo zYuZ@b7P&JjR>$NZfqsP^`og?i%M0`N+Erx&zCU0JvhqSI$$41A|CRWIm?+wUx@C@a zoa&)wu2A{`{nrqj(c#o=`+ZG^#Ht!>Gw92|Co*skYpsEYuQ0ZsmPhkyo77*pv*ymS zZJM#tWh~F_8`cT$occ*w*k>iB+UnkZy|4$I<`?lkP8c6;Q8LI zX~>FlT1JWUv~%v+X@pot^=u-S5rQku;pzA8{|CSa{*wn#TgaU4Wg?t{VY$2Y zDMfyAS~H9@e)ll8Y^B31MJswmar)90IXY?dV+_}NOZ?vlQJFXjGb_v)pM93K3gc=R zSuvva-QS!}aF#O;YGYg3Vz<=AcTN=H3E$#5IX*+`nWRY(D0G<2%lt%+Z8Y=Xm|eMQ zj+^x4Q$STM=7_Gyq!?O55Roc($T`&Fk3B9IUc1X_LaHWMdYZ)4pc#vV9`Jxwu_hl=i6?? zAb1RS$NhQRjj+gd1f~7?&1+`uR_T#0;l1%wtGt$r0~e>mw^M~t4X!Xrk@EB#vvhH8 znS-{w*OMxgno`J--RyW#$g;>r!v2dQa(5qL**0}N%kv-4rWYxS8o4UBE)KFT&XCao zy&w+N#{{&YB|NrT+>nc`)2ANmq7*3%r`@|cs>fGbRO?quPj~}vdsy{1fw^!t0jayw zJUS{CX${=X(upXLI%}1$;$Z!amYvPY@o0Sfo9wjc&basC=*Cx=gPX0;twY}P!oti( z)LLu*l9J!83%WG_;|N`|v$LV;TAG@=%kRNkUnUUsxwy%1mGEZkYQ|biVwbL9e$NLg zxAsYw!>d4@+ZjJ{U>8FzpU=6sMY|Qj9`~Rr_S79yg1C-);v@9<1AVCSU*U!TPp(gz z-QOO$V6@HWMHTgLGKZ;GNr^&pmI z>xBULw5?!Sh`r54Kq3oy{nV2J+Bp1l88n%m7M?G}CGB6hG8U4%iAb{Tua#BW{C9>k zxN8GAkg(H*6v`|8E6sp_l>xuVs6(T0?K=D&PBEmGx9h4eB!GO|@_Q1SW4!$S6Z!c+ zx#1s@e6b_=4`mhcf>H(eryH^Z{Vs9t(42Mhn)2eu%~uF<-a>@)(Bjk4y+oDn&b&$qv-f*#%i=Zwt39!z^S&jXZ_2k9BU-GNvYY^ zt1XVak$!Pq4-H*Cmwbm=j<>*FFh3Jl+Jsa7H9{W;{fRO#!(sa}7dt+`JKZiQ#$ zQQle@D|JycF9}6j!ECEn9(Su?Itd3Sei3zjiiZK+>{cRvXOrJPqZ?(VP({8&;vta2 zb&`+ed($>*qIOJApHFc(8IXsqEs7V9^P1=#)5UVW%Sy3ambr4qrYgmktYwcn8}XjK z>1W+885FxmtJ+Y1Heu&gu*r2`O?E>f zYU4`t%XH87i6{i?M{LX1Q;-yJ*N`0_3)_QLdq#1HFSW2-GtU;IYz zz|P;Q41`Gdzr*K9usc%b(jMXO!Q zj7AMbF@4Ptv~InNwq_0~CFLc< z7PRHbRQ%Q-=9nVS7kdP``D>Q`ECMPM=TcpFbPMw_8}DZ25a_u@!yzW8q$LQ?w&0hK zk5OcOt1OP(cD#VYW5dYOd5b1A-wMw#PMq3Zk!rgNB;Y0y-^*keFoTaU``~iuf!sOI!l9ee_ibo#;h8|1npcGM-oQ72j{=Z^X!Ii8?xa zR^@gFj&QEG8(W|xVBrt-SImyf=_(sFRa>>TMs3%oHNwn_C!AQv9!({umU?qm#AM~0 zfA_aOm#ZA1Q|TIFj1mD%`WhL*!9z)v_WoO+F&idwNa5<4$CF2ae^k`Qr_~h(;!FXc zwQd=-Rr((H<>8?}YA>DN-!osT-lQNSSqXO{toJ>^Mh+A=W}jI#8j_2++2Uy>r`l|R zFJNLv;lb`Fmu|UK8r&iOK*RdmKOsddK_72#88R{}n%nv~2*sT3H$g}5r=40Ynx;jcQRP}vewDKU%iA>S{ zZ=Pb!525oReT`2BY9yo@FHnPe$9A6wd7}sph`Mc!?q=t|Uk0r#9~sdxFi7><8cEJu zP-7wILu(b{lQ~W+$+?+NYip-hY=zPKsAa!){UZ9cwrf{raqiG#h@eTjx;%DE>l^z` zr-FNC#?D_8XBxPsm{?e{3o88g=QL-kyl6wPnnAs!qo75Xl#8GinumXpV()4VMaPeOFz z=QlTZ;~ybD$gfvy+hLp2qg~b(mh(T@1Qm?dVze7P16%#6kXlbxyhs;Sl^`k*W|e>Q z^l(XEnYDumh=bUpsgRq;NG)UM4ZJn2LVS9C`46PxPe6TV=^q!=JrA=9+K;F*b>b^x zgSPuAQEy$**`LcyGd-n?Fuk3E6y#d9Y3`AP1RE&bQ~Ydn>%hsir3zg-V`{C8q9)E+DS7!c)dy7MeV zPZikTS?G>uWq2GfI^~<6UmZnDq2(vP;yql71ZKy?%h@dg9<&vPzTXvc z4ldDvjn&xkU_)M4;x1Glc`tO+(j+FN7=rbzwBMR>d+{1@W`IJ5fq(r(0DDgSTCAg! zOi^2;$P@#)CxkJFEW0)tPOUKc46?@s=q%W-73aL*uozKFrl{In;F{W|Dx_1-4Khhg z(0m|1&L&HHW&C4s?{VL@!`R75LYxL!8n{7ko;jfA>@!KN;cEA~>xw-+ueL2--g7*Y zn5xAbzMvXj>q33b={-6C<{p(j-Bw)z>{8CJVxb7Sapvzaz?PLz{sl_m_%2jvXz zl=EKKjll*>ASyCBDYyG1aM38!xv$X z4dGid&$BPEFvn)Af`pn}%dN~d!}))xC1ugkC9CiyjcoP_J3t}I;z9y$&bXK;NV+qY zd!WL9`WLm)^PGJy*#XTuG0%puYlxi^P%XiVaYv)i9#ESO|O$l zOYd5e^W&w3+O8=r6^~V&yKY*Z>d5p8O!>_x z?$kj7LvJ`!osH9O43jP|iEPse?daZ@XJXk&U@@mJ3G*4Ze4_4P2RS4GtWw9rA7z+5 zLAXoO!4HD5uRZmm1d~qAA-~7a<>YqJnsWh2eu@9RYM2D7@4#k<4fJ1qP@U9xlb5HOPOH}x zHgKLoIB<E@y1u4~23D8!R6&Mr5`|78dqnk>fBv zYL0sJ4fqs5FQPTIfBnYt7N&G@;c~WK3Z7bh?FZ&kVjs2=9i%_!I$V*v1b+H z7&slYcDPE@5m4PTqarb~^b9uVl;lqp<#ASlKsV1mDk;h9*kH*;U@4FfSeE&{Sk5!q zCGdo!5|O6ANFI2KiE3eMnc?IGZ|u3qfEyfbhK9cRSOAUg@uKjO&l~8AjNE59SMtV* zTMPzm=QK2Vq0lw+M_6?|awZ;pB_&z~1*Mv9vPe!&PeFBa=<8?3?8HE_-*)~;fUT^i z)>S(hCs(paunHL;I}W?ady5EDVmn3~)nASIVZ`dWx5G;YYCIL22!7re+ascL^HAC>IQ z`WcM-$%*D|@tyaj1Scqu=gW?BCSCG`*xsSg+zUmECk{To9#&T!pScv zcu92l96k6kDl(Ckb{{*pa7Str&K4z^p`&GzIioxnmdMG}tc&1(oIG5W;51;9yGJz6 zCUNz6x5260U~U|&yuStq$wH0M<;E594&k>@pZ&ePFQkTbb2P9dMhuT)FIQ7i~M5dCk#UBwY(2CnQX1 zYQk(ZwvGjS1ZI-&zhZrt`vs`r0BboW`GDv73sn|#<5h>sKD@9l{~deWQoEnU77TZ@ z1cFpJ`o*M$-X(a1`Dte{WWX}I9qZwL%5*b|2U{NnCUcaQ_3sD2Me@FLdANv0)`Tl& z%^e~Rz512XP~~*;H8PSzfCr4%U%t4yTyCj*5)|KeIt_W(&O^95*wT^@_w^>)2x^g#|p0=E>&%Z=D?_q*86 zH;TI{u$+7kg7hpO)z36}5yp&jr0_eW#Fgx-(K3W}n(3viBVzh{b%~wI#XC^|8>3i( zdUuz|otb9odgtJGsyeNoLSgJw1rMLVAan7Fqr+xGhqxf+!66{IqGOA*k zM|@qdR1cq{vb7y9on`v9x3id6`?j{oMXu}ZfJv{US#RD)yvj$_&H>)^lFUyfM&{Ih z`@N0}Y7lJ5wyne0N=cU(+59jhVSj~Oe@o%LKH=V9 zKL#!zF;M;?RhM_<*|9s9!scUxH+jnsfxv-M!vey$cf5En@z4phW^+G=YqxnI@Mt## z=l9}dqhXUiYx@D#V2uDUyatT;tJ4z>=wusqNZ^8iKtWLvloJ#5aBh+8CDXkBToy8oiiE>(HXt6&3yC^HQUnO&)}3DAvfHmvivYTS&Ngo25g1tY}5vbcxxFdLt9;}r(<77G)* z3OC|Ai@Cd?Er7nWQ&A1qxecv47=G6RixI%X$_BCu_huqbJ~Hf`UCRgd4cZEGWDtmw zB0|o(@S^w#v8bDt&;7{AoEyF?L6D{0zk{x zQ^D_4Ag`ZkWccZSai-~NUuFdzE>TnB5R*p}Bflr%5{aqd_U9F!?sgBm^x%tAjcs;? z{+R~C_p4-jDJ|`L^WJ?%%<(dv0}%6B)Qu2OHA&U_@Lz_6qe0AdU|kIJ6fZ%;OLu{m zm=7K|wf}-w1V=KhW@MG&ypL+Uon2NI#33x-WT5XOPh-HH(J}9f@3i#@5gpr(eJBma z4~d}bXUiBNPq=HJR;tVki^xZzfx>`%Y`hTU^<8vNP^S&~ z%3P;|4~P799BGZXV9<^-B+)PC%7H(dphC3FuCF=sn_Cx~?Z$0H^U1>8M5vR8*o66@ zwUY!%B)bKrg;`lyDg9x`SR=%q@B`#h-8KzOH;BYaOWo4n%h9gtT3aZmtYi-jh_boO zhV`gZhkwuUycPE$w<%#Fn_q&=s{yP61epmWI`S611MB1|@){bRjyG%LA zIXn|pV6m}b+MBCts@6F)Iw^h#+7>Hk7+<|IvbL}_l-hI!{PMIXSH5o(L%Y$@N1`6S z5o$!n=lw0W``WN*ZI{Q+X=M!3jx8|IX^=#+<8kq3BAWm_2N>_^eYiLWRdn<;4Nk5* z7@NDNb3fQ8)wg&5{HlzSF;T`%2!6gtA6z1G`?o6k)5V{@HS2}3YQtnw9+>@A|5>!X z+h!y-ptggxwFLd02Eavv)=vbUpAhcv468E^=P*p=mzEmKD8B+E7P_B)b7SnpCn?zj z9+iy$kOUCn`UU1_g~4n%r&b+jRZRnN7wcur{pBX~6A#hh$*ta1f};6ai72o)_mhb1 zYM_($?9-5hJG3>`@osWXLmK}{Ad#b!*IQLCFkhT0+j-_EZU75AL)WBcMn?g)1#H&w z*3oEunC}aJ=o_kGAI_LmypS3|qP=)SR*I+wHx>+1O@N128-j3J8#S_#5_so#{Y3dF=#xDy0y!3JZ0razVL zCgk=Vq^35XZG;+nnWr!H{62iow)_YT!ZdZY^&Ps>f50hcq;F1?J~B|iv$VW?#|+{W zI`c;x8?V3++H;4^gWG8Px|WhyBPr~oyC%D*+DYTCBc-YJ3$_6NPMLx#aXcw1t<2EM z_UFVWNbr*i3lSU)>^rZ^vHOt=IeGGnWgOfHX!w4H(GhP|6}aJGcy#_x{f2{3sfm?S zh1{v*WB5;H+9+iuUEO98cK+eOw8d!GQI{I76z?@U%GP`N4-o3z}<5Y%)!LY$iaiqKBGQZXvQQb(^oNUrkHmFyIWU+ zS1LaSZ#WCK*)ZjLw9ATj`Kn}}GsQ~{toOY(%*T$^X8o$$yCRq45D#@|fN1OD$m zj9;l^Y+`*}ST68?OZvGskmE&+96D9&kFugME{eci(#IY+6xTZ=CJC34XsxwPu8)=#+q_O~n-xoo53+WXN4PA_z@Jmh=P}Bl*LYk}Pl}Vo2mmP1ND*c8 zhyr?i{PovP_uPMGM5{+OUnkeh@%>usi{>NhXhk{dqaPcscp{%F2*_8OzRXGXZ)d)@ z}-5Pr-OS*56S|>Gk&(u^Qc!tadJOcWR`dJ?qTC-mF)+Mj_t5@n#IzMM;Mu)B7=YpeS#2^&c z@wx!0-F|xz0<{U2k|ZWgXMEz04^2}w^+*L$1If-Vf`)r+mc&5MET;@B+EBYtnn1-yaY&4Wa=WFb6ZUehG z7hAzXF#;L%2q8z9>VoWkP18GoitcIuovpl2<7kVPtS7E<1x&Y6-ZdPDg~-~X0?S;L`k+NF z)PT--mF?qmpPw71eXpO%FePEh>ag$;A6K$s#c0!ipo&3tc^onx+Lo1~uk&h!N#N*n zzalxke&x!yDdNw^Lby99YJ7-+N9qxk{scqV_+*iJWmQTAf3J7FA#o;k=DKB<@905Y z0ZY}Z5S-PMD|7SwJiq~uLcyr{&9IYWVdg~X@3J{W#N=!JHOba?c1F(DDay2wPWtz) ztDd9gU*A(}R@#_IJW9%qtq#;Bz(hTS-#{lDzrX(xWd1eyn&0(cOMf$R?5%~hcYwC= z$mt*>=*7^W$yj!5uos@JRiCPf=Chu9hK{;5-&#UF?=wHRN9J@AHJepfC~YI>QW1N+ z*5BXheY4^PGC3*o0?RJ^ z#^_eqnJ#yet8=+k&+G#ji?9fCJ2;y58!0-mOAQOHtolqrVg?ge@j?_h`f4(?F>kb) z32SO5UK2tDnbY1!%hL31IO@-wjG-d?($h0c+L-Cm6)zSHv~aq;7uI`GS^kzk^}!>M za^{+VymksIqoq*51zN8$J1F=Bs7i#XsG;OPQg`i5HBhq3gi%a;=SOh}f5U(gUmb%c z-HIHq5huY(KpQLlodpl+QQg1?FqEO0v3Z9(O3TW3Z~ej?42E!j=|8^x6F4|~y3e^~ z!uR`YFbOa&DD8d5E~;>u*-*H?RNb1lN2I}y?#0Pq7 zVNm_T$o#bPz^+7SsCmGK5`FZ9(`lBfZjD6_B>RjTBGNqWKI znM8%`^DfQ@SlJmF`iAEG4JrijBX%QmT1r86#n19Yz822z7WZqR`Kva0PAN0Rf`U3O z4T6MSZ>d(x*wVPOt=jKr2!Xc7ZiIPuP7_2B29BP=GYuYw6}%O|_+NI2adz+R-GnJR z=-Vgs29Qe!b%_EPeBg?dsOjw-po8#OxmO4(W)&$qRkJ!$@y<}9Mw2@^yUy=ZXrIMP z3=9xAfDx-(!I37K`Go<6g|7)UG>g0+6cskEI{r%9DTH**n)Iol%XvA!6efC%i~Z=0 zUe0V~Yw39bTvLuYJ}*nK+0q;r{m~PYo7V&Apx!Q^)^MRr`K5;D?cSLu*ji;JrPiJ6 zuq-e&kCq1jeq6~=z2|rd`I#j73 z@7BLU>auxipQX2*O}o;sK!W3C!*z2lON@@flT}I>5-Yc`#<9AY6g-KL?*^)O%T#x; z$f7Z+uGd4_6A6?AE{fCBXA#}@UV?jzGks;ZJ8m+Q`}>qX+x)%(4w+TKJEM&~P-)+! z^Ep6tXUEdQYNoSQsObr+8cqlpdvhC)KL8xK9LbJVgU^L9@IL23EHatCtjl=~1>b>K zUfyN}ODcQv_M%G|6*VLwAq7-nNz(w~PHvu=5F|QhNt#}X^_-s@GMt(CUGa!8p?3P} zZC|`)PG37;fY1Bx)xa;~7a5)iD;G$3dcuh)$c=27#a<>>c4-cD?z@6kKp+$5n#ep) zC7(k`q-R9JLO!)W!;#)XBp$)qE(qdFwKo@UZC_$2fe)OUo4W+P@WLRbNNIETfVKj1 z9AHoPs|8I6Gb-|FL^qu|iEnyTcd)0cvu&OgEV~dUa6w_exrj_do7Zbx2^>C9vw_eB zz80lTiI$pR&slOEF$J+!#mz#ULYy~Y$$4v=uf0fxw&fb+Ua456I1?a^Spf;1zYzp+ zH3VW0>eXb_9?!H%QQW?)U}4tu>&NqJS75C_Z!<|xafR-lJUfJ|RVUw7&fD_n!glbz zZR;@V27(F;p;yvaU33#=Gr?5HaDR`LGwk=A%Tgz40>iN^B z#JAp*-I_Y^r@FT+axuJ7Qwb3{qQFCEh&q`OKH;mJ+2e@3Ugr{IZ(MP~msqj8JC89O z*xe~a_l5KLrB;E7n%kRZ2z|KGRuTA;kJ~mxs9?Ux25_Rz7t^AeqFNp+;x3TaspR_z z9Twd3R^wvLYpkEz57d;7k&~Q zA};ECN-DBEA2i^7ex*^W-4>c_@gp{9W^qw<-qhVW1w-bc3SI$IB4|R))ulGH@@!{+>^F&B0AWt@e65^6&)UE-AzL0%6XV>jzDF?zVeX~6l%TK&61 z#&Izgy!WzSqeCU_>wVn2sBU8MFN^AypQx?c)6orQ=v0u-Vs~)c7yG^hRIfcP+x6<4 zGwj%s>meQL*zV`C+$Rd#?KHo5`a#&KR=S{F(VW$6J@h;i=qmQS`30r)1snawm6(`V zRX%e*!+MSVpg;rKgBl!6OipShT=`bc1wYp!_C`xX2@j!g$r`C+TW)M@@cC>Arl<3b z{65V7o!?j(-QA5U*75cOk>lEA>gouXS|#iunwwSp*mR$}-zq)LqY|sAXTP&b@&(+4 zmuyEl{r-s0>VfP4eQ?W2xCKcLY~|zn$vE?`kNQw6t0dD8@vqzp~b_5|^ z{!SLdeX!I-y=#y!q({v~m3q48W-Fr-7=7OTdHn_^$ai=g#HG`Lt4qZz^!VK0M;$v+kDDJ;V&J!`IjhE}b*X#r;lWST)1;rlG=W>omC z8$UTFb_8D0cZ{Hi74A1jgu{38KsG#*{?}}w%Na6Nx-kSXEMQ|43Wy6+RR3DRE7ZPv ziW@#|wAC=k!~Vx7#Y98BQB*kgMY{B-tZx{oZx~e#%n5RJ+er`C7|X<-SU=JWB>y(h z4ER&tZ*)bvcF#>Fa%?Y(MYW);>GA3^o(*km^dbcv8eJ-|hD^bXlOO9VZ#brD*~zid z1Xgba#7_FX;7fQVW-9N0VXkj0IF zTxWwiGt0svR@s=DnTF`N)Byu&ITuL9j&q`k1}IS*YBj@bMgnfV!2xdjp?1Bu1(>PzBm&FuVWXbxQCq+AeyozVtDAZ&WDD? z98a1z9$Jf6y_=+4tf|9*GU43vGq$FMl2Cp#9LIjjOejsDOn*!A!Wu!evnn?>{3l7l0qMmztN9mj3k7Vvy1kQD+aPU2-kSaDX59n3`?!U3DuJ z(lfAP#uOwHA1v%L53?i>nQk9!o4^jpUq68LZV}bN=2@P&HJ$ITv|D*u6qog^JAUso z1>9i;)T#hkKUa|s( z@bYg~kXI-fl0ymf=i02+QT@#c;^?aS`d%&Cr59w_>|8=Fr!Sxj5@z>UO0^& z(*pVqE+ zY!5Mjg8~+)*_1LaPsxm;oj>tF%4aXmB#s&H)NxDZ84%F4*hdEw@a zk{}gZcQBuwRlGOTgP=q?|4|}5Jo|V9zQC>R$J>2P)RL6Zx(T%Lvidu-byaP-CQ9$~ zMxFRhtY_aK&8m=s ze9#m%Q!_(@Kw?KYCjsr2la{Vc{c|wbq%ZQ? zIY!VxuqY2QN0s`Nb~MR4Ri4bTntu)SMC9|HN6keHtat9$Y7z2q|0!#Xu+UVuq7HAg zEjHh^97#C#F8hMc*b)N0a>no&3%6jOVFVSG6EgIIu@3-Y(3BTF0^xH z2&4}rK0&NK9@UZya>Kx;Gn)kmfwWMbot+vSj0$MqkV46bOralbo*5w4aK{HMIYz*s zSvlGJOH)(H1RTF?Y|xbJ1HC3`M;cM)2rb10&;*9cJk|I@ur&UClQC>6{Bys^JI?q@rtcqSk}$sbz(E2^y5Yrz8{~$XQ^v# z?TA(lBz^k$(!$m{!^lejetxhz{k=;?#Hjs@zObywYg8OpVdc#8GQ3S#N^j{!p9(0c z_`pk+Rhbn4Kk`qmK9mY~!--FBuD0Mh z>cFWr4W*;jgyC#ljFD)(2s;zA#I_zG1 zf*6ILl9XFek!idTr2bVwL}WmWGk9Q|aaabvLE1Bk>5e5XHKo>uE5U?r)lv=(x;Nhod8d5>Q=cr3l<^1N!*z9qBSS_HB8{LvS zmX=}ZYgbo~0VOh~haB^%rq!E!I6J4*PL?1l0Dexm0;C1P$z8{a;g|S6V~sD8ptdS( z3GGVEKtju)i&Je-X#p6$)d0aFpUYS)Yd1`@ znCvpjpFsW1fu@i@jF zPVckUUVIa>bNfEpzJW+F!M7J2nhWn4BDznj0S{odV=tm_;W=HD_~rAMh9S|o@p$6) z?o&QJ>XQ4K2}(F-tHMn>EfGlh$D=I9PH@G=sSR9{@pHCMZ#~Y|s*KP|O6K*tMggP$ z@ii7c#yUJfdFa2qE-@I4f%32eL!1YtUyN+5=$q!d{zq&xLcDtvWOrR#S16kN?}QuQ zd7H%bc4E$`|Ins?(r7xrU1C{Q>*91Ytf>(fVa+u28EVjV;GjJI=Tnzj)P!<~b&2T5 zJ!r&7+(y*szVf;_d`0atRrlPtFWhb4y~2$+SQxhCLK#?H~^85Sa61SzS$xWY8aWB(TXSdPug|h%Ds_BTh4H`|Yq^rG?fgJj} zckF%Z40;ANn!Li?n%`*~`cj+L0KUc-Y|m7l)d;f)mmReNZTA<#KRt_JsWe9DSi--v3D$q^aOlH9Y15xt}HT$(yAhAdA7+}}RyC-q< zy_o%F<2+7OIATR@iNojI2N6qXm=0?ze>vS?a=*vMwBzD=g@gt=S3k~x=`1Bv7SkVV z>Qd!)*DU{@fH}~PY&vo4W@%cxcDA`C6MC*`W}AfWyj(gH5&Ell;^2mlfzS7~sv>uB z8d}Ss-8?sZ`J#|k`Cb6)v=(JXq4!AMJ z-~7IkSxL4jmf235?$dECiIhAMHeotHzidB!bx^nDH6IV}H@rz_^ix3Ok)tr0yd?x7g;u@UW>(XIHbA@MPaOq5aFk=Vx?c@xj9lZ+&=2q*9qck47 zcLD-)N5IQLEV>OHp7s67-e=mVbZUM2*b#KTSgSI0iHDe5oyFV!1e3x|osG?>$PR8R zD{H$~#~c&u=O=ga@|ucd=NEn{ujPW;2vt9s56csr5$myBlat*2j?;DFHHp@7qp!qG zR+-Cp&0;1D!Id;s)CU0uYm4)L-usl4Q6B>4B1plrzkgRr8p%I9XKriRXTLR&het_s5y54)ed3#$=_WNasLNTSm)} z-uWHgV_*kGA-L|3fL%yrZoD82K7B^LDOysk5hKfO>?LFh6^$sN(DI?RG>q_m`Ihn3J=UgR@O&=lzKYJgy z{Jsj7|H%C&WExwSu&eWU;07r}MzUTbz#Ra{<=@WUS|*3;?e zfpc=W@3oE<7ek4f-?YoNo$aEKYSBC#!s1W8mkV|Cs}*Q#cZ#R2c}SfX?J`5TaYESm z`TL&viu>}{T ze=$ZO&huiM2dECxr9Ho!y%|l|!Qc0E|L+mo-7l46QZA}UTLsr-7pi#^thO=z;GKHa z7iCPePBgDJIXl~|=R>}Pi}lj)>KGZI34;Us%fxK!3JqS4 z30=xR!m_~DpM1hhqxcLqC|B=~I=R>KD=5bu9o>2QTB%8z4i8niUo8C#@mY&zptFqV zoINIt4gYMce=o`k-n(c&(^b=2{ClKXt<4++nr(YtnJjj>8K2JCy$jFN!7Q~NlO7Xx z+Xg$(s_%NdUYD-dP#V6t>V2hrV0>4ra38Ix?VB+d!iy(^kJcTNJcV>i2RW~cKJI*( z>YbeKSU7Ue242?Nl|Hewaeq@y8w=WG8cjUXyMH$}%#W(xZS*w^)fN@bQeY$7yLck_ z$f5zZFfw+YedKn_QutQ09%Ac_986_AcG~XRFfw}XJoCM9EZ9Xe&Wi_!hSrsGG%IW1->t~!t7oxVTD zYjZ31#A{!F?d`h>x>lu~$i-`I4?5{QNqkb$W+xg?)7tf=veqH2f1{xKOgx4<+K&bs z84(J^1$<;gzqRl}LhHoLC>^d`7YE4|(YCE>08b7b~ykul*z9c<76#6_)=gRwM`|m=Uf?kl6j3~GG)2xvqg*>eyNQR8m+kd}kA3 zpm77Y4k=dgR5M9-O*4jiC=uOPB%6A|=B=t~ch{03DUpzthACGvFPrD5$(s8J%@klP z?wS6BMfmcQ9-VmJd}OZ)O`;r|Ab)>B2CEt!9*@IcL@6n$mj-r*hWD6Wy`u3YWc@kg zn52=GphVx>GQ_sAL6RcuQft(Pij68&?X~v!OzZI^^}(toVbqGh=?@J?0?8oE=ltCL z=aTQWn1jEYU+#~mVIv3LlD$G@^o^b3fQ%QHt41TU_;Z3zDkvC+Mf}G_7W}Faxk)OC z%?vW%`cq6L!l!%xL{kzZB%GbGcx#uoU#$d_s{qmtsoPU6clS=|`9Z~yjZoOA9=EfLd}Ns{Tm+}?~L zpoS8D1V)7v33t$46SN zHG0#pQ7~5eSBsUgu}Z`B#hVYMER6Trp^1GKquH1hexT^x17&`p4fWf&n+^Hk zdoFP$N*7wrJfzA++>8Y5@l1)#AosP1bSY~HP&zLCaG-Ogrd~k62$#x$UcF`wEszcE z%8E;qmTTJjSUa+5)+DcfHT&%#Gh8OW1VYMPRLGtVQo){xZ)KxW*cp>1SCCQ*N$_(u z9*j`ObbaVjkDT3Z{cG7etRV7As`IIs(UTX8BzH6NUX1vi52Pwhd`hr}dlRAmg%33`QppTY7Bd#$zLPR(1>r2ahVJ zx@PTrum8%A4;e7_qZN%~yBZTYhq--_!0>gkz=?S5;k|?_;K9c~<${N}_JFWtdJD{q zV~)~ubHNL=r1D`lHpBQBcQvdskR5x9n?3t9ByT0o@wfM@@h8 z3Cg%a65QO>Bw}Kcjdd$q!!J!$Z>#Tu)Iu8z+YN=Dg8;j2ru)vDz(KmEOn zC35eCvp@-;!*uk_2sG>cqs1I4^ZXVeaWO^eXpc~uJ)woyPOjQvgGD*#?(dC$72D+7 z)!n9q(>KC~nN*jHt&wWlnk>_mH6_tIUb_Wk7uS6HC2Fn*6$hW>XzNpnZRW{L3(O)> zit9^%?f?4AEGS~@LYVcMZ0!hb4GiSzJ#1Y6V5h$e02MeP2TN{gR@LSU}iH8pHa9`^TClr{=q zAL4M^&i+0MTYG#UP4oesoc0lF>`Nd84<&#Ah2z!IdHA$elU-d#L$AfkW@0P^lB6X= zDd!ze?&kIT*C{;ChsY(a2+GPeo-4%B(sPmo>Q~05Y*Q%xe>pz6ESNyzI7L@D;egU&}ukxlZm14dnM&TveutU8{4~o zMyUESjb+?+j>`sN;y87lbhz!n6yhE4+~?yMg@U1BgA%0)Cfk*{Q!nqcjn~!oNA7{z z_2V1O79}6Whql&~hv~~|s&?kBxD21G&Nnf3f1*cJYf$1u50Y&OEX#U^r(|L21$BX% z37IZkc7B2FN3T_o3)&eivu=>wo%3Ge#9LY5+Ptq^;2QaicDT^bj)S(W)HUT201PvblRJI|*0F$Nc(A-8L0wD!+a%6?`(nrB#=VfA!w(gVQUq z=~7$mVTCGEZV81qc*Y&cp+>`HE{1Sx5t_>+kn0hAMRo-g6r;jK?C-MWy^(%|pUs~^ z(!aL!Mw%$GAtr$OnRKaNzM9DRAS0?t-MzBb;K|v52BC-~nKzx(oiwpVvCm3#&})x9 zP0i#??&q~ew5|VGbWEQ}`LxBH&-_#+0XM8Q(8}(~v$2l;{!!(n>hB4Z)GsLS+2Hr+ zD0DGkd-}`J{BC!u_QG8?J+YaeK?o1;_f&gL=7Pa-kzRp8u4PpIUhbMOa9P9#^R`kGwni zjitu@iWcfe`hfmdTFg&pwLhbiKVDwm%S_>S$jx}g_}J8Q@ou!)2Q@}{7gZ^V)I4e# z&;4~8@SqR9sy&^ZKV#Y!PFWl$_i2Y~lbDpsl&AI4I1vsaLNoSGyY61opIB83b~)S{<#us#?Ieg~Z2kz$PHed7d{Kf7CsWocP%q~};nU+lEb8vC7+TBpX zqNf0=hozIGfqtRXGSyo0mrT8+LL5IrN)-Ci__b-RU}c=c?-_GP?X|Hj55}UxczOx$ z1DwdmM87X572#utYB9eSNYz_x7Hj!Um;2oY7Y|+Y$inTT$KH9H16`=7mo?J~?KTPi z-kxjD`B*+(wdG8C)j1LApQY0YI@8x_+4O~{mFgMW)IT8f$k8fJx;izy{lZ6g;dN!J zB@oLXG zlk)$9Z``Ru$coEShUcQKNXWq0DKAbA|HZrM#t&CJmlv)V$L_|2@LdB`T`#3-%8&Kb zR85ObNRu1kgv5(kMF@t`AEKXI&$Nhz51I0V!KXfsg_BCH+E&yk&#T{wZSvguIYLHX|`EzVFoS* zPJHFz0jGw)8_am9_@f<2ypnLSDO~rEeN~|)NG0K0&XAn5v2V^^oZV0En zzW?;ST}Kw&PR$g$!Uvle#6sHNqR^wl?n_(c$08#RR_Yb{5c=S_Y4#EqnSK? zPT$3*5=^GrfaL-fM?sQ3h3-aq-Pz?{Q_uzD(V)>^kaduIA3lR0^GRw)>jJEztRPS3eyBHLlLXYajLa;c zIELnvRFF-pMp1?yg(W$T3541UQ{kG*9iO^aP7e>dFE3TexOt`91O{$$vuWWN|to z!`ZaTDReY+^sT-8r8y+o66sNlLe-ns-z^-tnOm@KieFr~AE*2yadO&R_VymaLdkK(*^J}O_1KYfPxRvxqMcSF9A#xYJ`B6l0TFWO zb>CCAoO|lDuS)*&)8J2%{_{rVl#4NbTcNR%80rwTHTmJWRZ~bj-Q9WO847HP=%tK? z6&ld}ohBzk>YsX^HneuIUpH+-JE8NUDx}xM7)k*EcYcl8R@@h)11i+9?^GI}+lRhB z=LqzEs32ZaJfe+zsX&)a7m5PY|Nf0;fLUIC&iyP<9AO6N)eikVw1qP?b2R0?2pyB&E+}>*p zbYVxnSM;CT*WW1}CcgY8V_Wy|)#Ac)gnuux-Ty8!k~`pVy*48556l17*z%X!b{mBH zeMgC%4U;HQTr&GH_^~}fUO`%-i-ziJ>%*Zv#6wOzKG5 zwna)NSv9TOUe20QY}-81pU}CdRv*dc2F>4ik{P+37j` z39_b8M`tlx7DlEYn?2jsiqEPKpY_O-D0eq%urlaX{@9Bh7`ygtXLR*8Dpj|y@tow# z1K+Cs?2O&^f;zA|Xpox`bok5D(IE+-#M9Vb`;$4urt?3zAmz?cN&@)eD_~d6*K?sV z69r}Cxf&Fp7!qU;?lsA5=#7L~NpjEU>YFGMZd<@Ep z{{(r|0(D`Vtu29>=y~!v6!Kl*E7O1nNtOPg(LIf`EfBH-Tp%B zIsPx5J_8O5dn51mPbUmR9OpT5C$)DZsc~qq(c=m%q1<VkTX7J(ac)c zNc?PXj;=Yq8P$Q_-iu#jJx}&s&?-tW<=?WJpf8SkUPtQjVg zqrw7PY~&zN+qzoJ@E@yV6lFcw;c|H|&8YHl_RX;;_1nGATSu9K`5Grfw6sD=>o7&n%{iVV^vaKzzAyj zS{1VK@42qPMksQL=lsFCTp-XfKuf@Hl&l>m#2}XC1Ep8$)$r?0=Pwo;|C@%#4& zRo(Z0EDoW9hRZm^D6c8d!Bl>)`C?~*aVm7|ydJizv`o0J&i8l{T5F36k*w`HXQ(5+-MiVN5OoFAjl z{qovWG6!P{hFrg@)rs3f72f_&`-e|{(i}lD@!j<8G%^`b>VYZ}J`aS}c*MD0ujPXp zFVb*(xX}#a+bb*hs{{mam8-Q@R8}B5)SP__tv`xil?24|SG&i+^bifb_H)$x6^j#F z0l7KG27l#mi^|AoRrF-%PR;f#6&2H4OqjuDV%nx_^T;hb53rtUC5@``@|NX8tF~7! z6o<eTct4!z7N=(T8rWUCmf z&|BSD;yY`zR^@XL9OUFMcs@8kq=nrJ~_ECKo3&;S_g`E1z4!8I~GJNW{}9I=W)1#)zxzoD1so6_Kg)O2j{Seh+y zF>iw#sOLJ9E~ZesK<5X*>92EdV&V0?kR^VF&NUZ2uqC#_RZj~LeIYTsRlnvUv~%Zr z)nrQJ3X)J(`F7u|9p98@i3TH#Ee&Ff$G8vx(Fh9Z-^%r)W zi*mG`Ph;`eWcJso6J29Og|PV4K4a#~BZba}7`W)$@s!les?9Rv)se(bCRL$!{vQ_r z^ZS}sfhNWzLMU#J4eMk;H3K&Coz~Ea--xDm=9b*?*LSn`HXE+;L^SzFM#aMBJD0-6 zDTsa7pHU^aa{qj~lGmMf-KI-P*tFp|`>9^;`&&eW7bdH)e4Yu*REUl3r=AZ>W5&}n z=$IM=wX<_oO0OBR<8VJPC!lpyMy<-xin(hR>Qu<=i#B&Alg*ge*74fpjcU*i_4P4< zI#yYZHnI6yNJCTeWn7A>eA`PzzP;_2nI8`*3I^mv> z@2;=u5(Kh^j8-^p&yblyL4Gptkt}@ErJFGIKun)@`*msKLu!J^gJTjxhW6q!Z7qzY zn*AL!nfRCUIpG)>j^!10N9Rmq=6;&k{ z_BorZ5!~q{M7>;8B`<4y__ZeI;UqP{;_6x&%&QWrp~Ee&#GxzHAq)5cj~%i9-lWyU z{bWHs`$uv0?vFFAEYeKGVo>C0S=Ga>%SB5vxbFvYMBUe(dP2H0SY#ynR*o(d0|45F zyN;Y;sbR6>D7q(+r{Ik z3<4K&>OCY5PYdfKn5{MgpYi293SdJwJGM8e@CT@6o)APDmT9FY{9^-fr+fRF}K*s^_ln}MR?y{E4~JQr{@yFoG{@e-T`=rhGtpt&PW=SgfYq`|YJ zjx>-3^E{43LP3^#Vl4m2x$g5VCcE9!MenwT#A(JA@Y-$KGw}Pir&eBRWMwI1Tu45W z{zb(<-`CqKl<}368F$$eBwMm-uCd9zW#?1+F4%>p0W&%aad>IA#Xhv;CILKhk`r9oZ+-cJ=m(3k>7 zW%}+*Bvothi4%IRfgOtHY;sqWp#Bet}$1C+121E&109?rv5dN4*Qkiqc=4qA9{8IBW z-nwH@VB1QrS5mLZg9{H{@6Fq<<9l71;e1CXG5qg~@#YnKdzdcAXgg3mqBnkM`$PuE zt6}y-1iIb%@^e5*v;b{_HV4K2N>&}iGp{SY}J9?!rK z$oWca{#cS|bBE?}WF{SL;e2&(PbCj>)pQ#qiKh{f&plnEfJeM@ehwd6WY?a`r16%B z;YK0z9+7~B4%6^CKjoUAC~7%+wz}AtZ*THjW|x9HOxki~(v8j-O~aHMRx<`Pd)7xs zuU3v;(o)Bw#P$ZrL>IqQ=`;;rBjqZtd%@PU@JoC4k$;y7avg1!0+F>Pf)v9<5{8}X zTkNv02)=qxGagnu-NUh?V!k|7->q*^>Ft(%ckn=~36af^=6=f}$!rL3zSfC|h|rskSA|W_XMho|mdPg6IJji=*iR}h!6;a% zV&~pK#V?B(iznaOEZWP($o1s7bOd}JubK9-B8?P)G{)zQT&ZoH<;ECLS1AXRHX z>qDI;SDO=m<#75X4hB?{vKk8qx8xrM8}55YmTetD*p2vYMxv9=v?B4#i`O)dv)E)H zAR&&P&ABu>{a|v0PS?)J)oflfh3|P#7xnPa(9fPtf#2@}X~|;bgye z7w!Zu_KIv-dqYC%GAaAiYhp1|_|_)|asK8@eUeMoj!xdFsF;_RgoiTI4JIF#bHMlS zk`K<^6H^ln&5Z-!(1{8}i!fz(mVRi}&l+26+p$frs*8>O-3kSii|6e8eEMQFF=2mN zIu!rcjgL)C3DvZ9L9QCrWfDz|lGo-3crS!9h#{mxBd>K|yNotM`&`^)n@rcp9mBZS zfc0x0E1s-z?dsYD$izk3&l6db^L&EIg}Hw18Ai^$u~$w}gdyKL*mN2O@Bz#&IZ13B zETEe=>ep*BeNcZdML^0M%%ABR*C-K{*G3MOw%HjeliTJ`>P_o zcnOEs;ySF1X=Qh%dmi~@-b;$6v^plR&d^1y)sHo@^DVefy0x(DUoe<$5YN>1!GLlb z6>*+J%jUGtg)*8$d^+4oO>4rVZv9!Y+K&}K2g1}Vp0xWlq%#eM$YU4yE`mB{W~|qh z)6F^!W(vD82mU*ak-ZiY%AAI5@-c7ZP*w8oCk%)5ucbFOMjVf+8Z$DU5z&HcB9>Ra9xKqw+#aV$XYP3 z2h)kp)%{QSfq;-l9CMLkwl=>|z++AoZtWbPgnpsM6SM8>f<3RSdgIN(&FTD>N0V4E z5)q$3by4MYJnbdZD=@73P;rDI`kS@ODAY6ky#X6U);(7XGjp4kwb?8Aj`{0e@=cEq z$%jYI!{gJv=jRW6_5M*4c)^?|CfZ_9@&;&WjfL?+=e61ww+Y)7elW{zWn#`6=3yCf z#ZgtclC@>kB>mWD0ikxFPt+Y(3EL4~cllh^T@aItcxW;--LPCwHcp>F@n50_R5(DT zcdIyVu~j$0ZyRw&Y%*+d%+vD23`{>D$cgOkKLHQ|@bYcxpjTyD^$tpv#4R~pHcB%O zgg6n^WeXG%b9us)%RFA4T9=T-$bCshFHw9OdQpte;C|57#GU6}^(C*}AyHYn?*%im zMT;wQgTdj(CW2)F<#!>hhsrFWqk(vMI8l)=X3clW*sT(Kg^H`g@arJHCjZl_|4&_v zmC~x@lj8C_xJyCSd+~lhbLE5r#+?6b1P7@OI-ITZw75C#KzC zcbOvpCYO){S;yXcLrVCE6(~C}WMWto<&bbtvP@S$x$YJpR=01h0&&J|qc`l((J7u@ z1BUFbJiN-41>ZOD33^{=ysn*P?n@PFF3F?Sircnvd<=q$v0Gd5j~)|; z53dFE9F6|`KqwOb_9tH~aP&9rePyOR`)H#Y#`%7W3WJi5VSjQQgMfcr(PYFX!KW>h zL;q9z_AB+gE$%LaEG=e6MygLn$2N`@X2rz4RKPrE#)j}sgQzphF^=9zMoEcpdwbB+ zze``rD=O=YD+OmiUu^G~vk9_GvBf=6FTeMiI+i-t9D<$Mk!pm8leNDHg<56bmi^Wv zRmy)!5LnMiZrKnl#FGX+)tdD|#l)vW*?*i)hzxQICb8X&??;hO3ho3_6Xv=1ex%ps zW^hA8Y5k?n{hdwL%uP(>6_beP5Vi{UQycb;piYZY68w6THf+x{l=I9Ib6&%qb*H7% zuL(c6QJu0<2O&2$=e4U?8fW2N76hqn91%qd-#DIZq1_k5*3t3iygwIbEVeuwmPAZt z>$({bEv%(jwnpoxiWu9aq##(UEBYIG&o$$)Iz2sNyRZ+H3dmYN%OB?#8o?UOKVN%|Ev>HDS1Gv^oCAOC~baF=ZxZFELV-} z)>{b_vj|0u-QVtmaR=Vhe)5N?!2mZXUrZw-qDW=D=D0oOw_nyP3yYb{-ubJ0SWmNL z6Z`K7pEn~pIyt@3Rn@fc03yw{@FycT{FZXCF$2Sk=nPv7x_PWrm^Ta`a`Y; z^s{QpQjK~&Yt{fAO?EW_$)Fuyrj)y}ZP>=I#xe$yIqZFo40LRr?=50cHfS(!$G67^ z{Vd;0shjU?ic8y94Jjm9qW_6r_g4$iUcqqQ;+I-^%iI;bJzEX}v=lzW8C+b{=AR9- z(?$6|&i`&(>qxQ@sp(GFxvR!3{CUpf_5gE7*g$?4gF=_CKRlKiMW(R6{Z_y1W{jUU zu30KO=Gbtlakn+~i~?b&Ws$8!?E{Q^7zwC|!@xhKgWtA6$AYRG2RvB7YSMs<0f1;` zlzLbL?%4>$ewhWwOEzAo`S?%y3m#cF?A@@;KnURs*mOAbZk6x%%xW z&D%Q>+Hns}60YR9cRVep{=r&}_61fKRIOs@n1?7*4{u*0@IRQgUhYp4W%=rpc0a^W zjQnuD6MrhBe;QQMqIoS#iSR38dglC!j3yo><9+$09ERvlx^LbYL|I{_#-6b6-u*ze z+*XJCIIB8*Q!^~9dZ**+;TPZU#BsG61S9#Be^y(f7))^1xEQoTV>{iCx>VusPROfr zm%IE}zL)vd<*9+fKOK~Dh`|SE;X5)iKf`H~XB)Joo*o{f*{Qw>F;1oe zC*^67KA?0a@8Q%dKvE^-nQk65G1`2IR6_F+-O{Wqi;fP7g4g<=y1+wb1Pg`b-UpQK zcdGKs6A0(u@8jfa1W;-XKi@GFTV+uwz9M~~$%3A*q2JnDf1f7P&) z*g|+mn%si6y04Mv%@&!2?0Sc>LyyPcr169b8sc=$(HYS4Xp&c<5mz0z`C?8F>?V-J z0xjV-U;_p5=qP-s5(>@9Gq+pLP>oi^l3^x=3{ow%nT<_GW<%VK;}SuLIL`b2&^X#z zZ8G4_!hAE-z{JbYA38{fi#}KLi_}6)jVq>3<=hAtu^4)WaOH~HA9Xd20{$)stCdn- zKw7Xf`%=`iy*sv5_ci7jkn%g$9b>vo)YR3fu+jInHH$LoUaB|U-i6x`B5V7a+qNlZ z(Vp*Cl#BIP9ydb#A4x;;DhX?-I_6Su*}Ha&6F`X&yz-M|x{X#H|HFk#Gc6_1R#Ns{ zha0P-SlP^R+4XYn$yyIKP8us6Z3j{lIrpB?eI>xqT=guc+uo+lCMfePdm+t4BwA8H z)WdwN+?JOYB&{V)EGwjYfgnf!TROmz&;Pr*T7ilHr_C)x?(ZMHFHH$^sfC1sR<}=1;K6^KVO0z! zOFHaH?4QPBU!9!am!WBS>Dk`R+wZJYpK2CTAOG-oq9-@{C>f1twB_Q3DhA2gNDQSw zvelP~@De3_w<@DUb6zT4p0Wpt_|ip08HI(E^iJ>y%6=^QCM7jYuN*}63x4*}si}8K z=ALukzcMQGK&!_LR(NJrCU|y@s4EPp9GoohpRhZb6F2vwwpd=|BX#ae<88Af>}PX! z3^)sQ^11TT)B?k|5|$Xn<8zQ}j0379bl z;}_rp+~!IuY({ItGIih;u61_m!_n>C0+W&cI}*1?9_}@vrw$9W^S_t(ofk@(#^&H~o%YHC_fh{LGvI@gi4UH-{hfm$5; zJLfNUDKOYl@j(lIaFGb<*vb0y8y->m#Eds|dT;RnZUb&SglQmlBi$-NnLs5S{< zV`BtBVlc}uf@GtKhZ;#L>!>ZJ=yDbXc-QT5=eeVj7YB_Dh*WeA-~8KBqW>?O4&gBv za$83XKQbts#E8J8${ZiFGTNfYME|YKoogF=fL(Kc-Pmxt<3+cB>ia{SFE9=bE&GI& zPlDfKF^272cGs{=0z+So5ckt9Or%%xe$wi)L9-&S@CClhSOT&3ymom|hQ9x4r`O6^ z-^GqlStBTh&aRQ>4WN4yVHKy3lZ>HG!Q^LR>IIYZxT#}Dm!ZkQcA#W~8iQH}5Js4x zGiSx_cwY!MUTmE_wj>2;U~2kO-0(RUmmhG+-mY^1YnYC9lZzjeR#3?Be2yTyIP0B1 zy-vMwzgpzI1uo_dr(dTf^L)lUzi{7mw}9dD$oTkTP7WYT1`Ko7`lL-t>Z?VC{>(P6 zxc_};w`aCl=)Z5tb9SIKia~_(eixD0ZpDaS0}6GRfxj+WX4=h78kFC)7@iq9 z?Kv3)HB!N7lPP~}m$l<)cA-O&d$C_zY5g zZ6P}!TfnT&c61|fW+f@!R2F`35A0s|Ol`ddxBtsC2+a(k|7nRf+D&re4X$7OX#HOpdv{-P0`nQ|8?YvH}kVwf%m@2fjHP^Nq zP{1y<``pad`rEg&Ni^8a@Nd$*{g3O>e@KXD!84Nu8x0=eVQuS&@o7hm@NT*Nel%U3 zPzyI`or%Ao;TDuyn7{V$yV;I3KTW$P+3b*Fn6`cq^Wj3f(PpzlMPnEv+J$>)+@@qN z*e5`T28`##;jI__13&L{1jMdxb|cgDegYFE0m>)1te36fn%|rfinJsYI3_0hG|2Y{5z_4g^~ zpSTMEKv0~&p&AHM2N-{5tJzinFdrVqq9^`;AGf*tzeeNV56^<{-uPqxX1_@RIq2@Y z2D{XxoutYozaC#kYZ zqU`(jb?pax>kl-O1)1A4-Mjy?=~TJ5<)Ut5TaDs{TeXhfm6L3{? zx2n)MEg-*IxE~=6z|8QU%}q~GO5Yx2J=LH2AO3d$7QPv*oZP$@W&MydCfnU~oq%8Y zBc{!7Y57q^tRc1c5lZvTi7?Jp*Zh}}@kRFo(NQ5MFQ2%=B8>+-u@Ss`8~raAZDxgG zfM(mIGA9zldXb!SVSB?+f3p&)c9w9HB+A5pUFjO9R|;b z2i|m?p5BA`BFM2;;*{f6Rl27xG?REa20A7NscwUPe7tFbC8H~!cqU8VHxn?qJlr|w zBab-@HAWS9ps2{cjCTJ{L;0@{)v+jT`KjyO`Awpf z4fhL9qu|fsHy85{FEel6A8g7{Cs$;AE)<;qJ98eiR+i?!ykR5NZ-jC^=yT`G@3bpL zQq$MlQ*+BX>04Mg7-%@{LD*$&Qs(&ppke&e~|W zxDbBg-dY*a#-bz)zkqQRblkW2Iyza46<5=rbhP8F#(5oqD!{W(wGYS7zql( zWT?)zY47J1$S(f7qJE~4|Aw3Yjx18GPA;wWwd#%MYdaU*j>%Xap^KQ2(d2;Z)Bfy> ztR~e#6JeG1K)(`!XRnyr_XRrF!i~A96LYUe(uJ?t?~p!?*nYMh&)UUtljqa7e{+r` z?z7MB>T@YbwV+0U{qZ@^K*xdz`ETiuA{5e362HEoqv&P>RY_XEtm2YGEw1?P2#AArhrLRN()*@sy7*Z;e3<9PozH~)SV9n>N2?f01R z$0|Kr1xQns$K*FuZ&ht$PEUvW5Q=I&$j@fx4AylxxJkMXzPx#FHTLMlM*6*$1hTZJ zCkkuC>78xp=Q zSYfMLeQK$QGJL1|)kZ^6y^o&k*nGl^s?t8P457}ZkLeBVS`*xDmFt0u0jT(842@4aIU6o<3!o5SJU#mz|X-MgU%xoW~fd+&jP&&X1Q z6V{=ijFH^?5&(TT(dcBvMqs0egq1~Kc?BHQ#aXEpm-IK__g*I_|Edf)?EjV{x1wI_ z0#c&K8D*ITu;6qV4~BB|f~mS{^cyVD&1LyqtA6W%KfdJ^o=FU7^m?K?NMTU|TOc>z zvEm{*auNbNl=YpB^yB9?Y*P{6H{|35^eo)tVZ;vu(;6*InV4dY0vOT*N8r!S*7vF` zkCR4@@Vcdw+gj1hI9!?<%mgK3s6ogKOo8z5Bj6ga56p*kug_F8fj0e9Qj)&8F@Pm< ze6jbnJ1k(;ZyhMdvN9XCa>&q{4@_;m^*h#J3X!%Xji^fq^1z)_Euir^kcQkoI~`{o z-yDYjdyL%v2Ao5N@fCmn82i{7D=yE5EB(Tjqk5QK^|c(YL7F& z%0-4_g!pwKB;$%G>X2z57r1T6o6lMj_U*s32qLN420lYVqOKa^0{^^wmen-qep3L* zdlC)L%=^$ED|dS-^R>_|!2pV8*R!hv92L`Cf9(IF&rzz)5AQO{ zfT>quA7&6H);mwDkA_kbo6UKW)Wl1+*W2XuV>hd|o;Nu=vcnuOao9TrFNfrIuK4YB zuO^4;ov+z(QzsQl7ef_??ibA4MDrUp4ub5B?8tgg?S!a(V?8^ONOqB0Mf6&cu^-8h zQnQjyJnl%{`_NG~Q&DRp>`49U2 z72X{;w?0aV)HSbEpA;p&S3(J5dBgf#iSPI}C#=TC8(%f6MrP1mcBNez%UpDj>!cr8 zK8n0OTyr}AaXN0pf-A#-yM^@Y{!-43)&aM}$@NJ+wXF_qg%RfNT&k*`iW!`ELVf+~ zEkalP`ufJlH41Pp?@fR6+i_m!W_Kf`KkcOaNkjffVYiGXX|M zCZH1d`&Da3jP4S5Gu*v1gI`$MJ>#+aslRA;8HzHA7UuV`%7m)1xgj_bcC&b%cOiYP zstj$1>G9CD))me^qCe%WDPd-M*8M%lU^z)Jz~|^%rZov8dTq@#CfG%=5#4!>88-DR zBrTXSac23vfFITmz7LK}!=A;(w`NOx!$$NrhoiguZhXQ$*R@r3O_+A$$)jVEx_KnZ z1p#<;0OUtEj>GZ+=5988=BF{#4|O!bua=dUvo(Jl%&WyR2j877o(+|NNlsByb@T9V z?cl0Os}_@rC*5p-#D$0RTnExzqRG0hc?Psv8kMP^yVr%C*V$b#H`Tg-t~((om_mOb z2u>{pl44I1sfoi&aF9!JkYQpVYsUE@gAVGF{mu)~-6P8MvGPWzHShGT))STnPm|vd zKb^3!ZXDgx`pr1y7%N}cD}HAEGHO<=##o(#X|~IqD1k4&$^ZtJAIj$>c`6xpsL%L--bZoV3%xFL1E6Z{PtOCG+h#vczzUw2`bFx-A4C0IfUSMXJphC}fK-KMuZr8$A!a zZ?!@euHhdtz<^cE!ZO#~);hh=#wBJ5-Ub%AFcXeTf102KC?MhWjntnIPwUM!{TPTf zMHI_BC5*3*ZU`P;{{mubij3DnX{&p&zn|E-?5YWa)&fY=}E^hW5KDD~{xBjr!;(DBguH8=OVh){=jCb;V@|o*FnI;=lJqbg>GUR=S5r##DTiTW{foX8!-RnARC|`};?| zr&lJFluusV_p_z_9_vpbV{{p2L=Zo~NqQ~1Gu3n{c85`w`J>mI-W~sk|1?&oi6f-G zem|NU+A?bU`)IU8;Sss-T5Pc9oDGr((bbs!3c?1t&jQ?$1~b=!US4_Kh$O%am_ zc&;sBRl8m@VjMlj>7tJ9&nlj_x@_zBMiJquZ;#FDhvrr&=0|e(%BR#lHm<$;0orc1 zwZ4?aGIGy^ZF$c4^Yte2D1sO(~?q+z4fCTt%E=N=tsl8Oi^8UBSM}xPskg5693Y3 zK7lv zB%%wF>3=B-{uXx!?2+Crci|%7r}e8=&(CP-1PG!6Lpm@};`*{^q`%4VssTxIL^eiz z`fkfDyB-;l|G#iCM^7DfL}5-*l_b`fP1RsJKdtsQ(wsz^~_1=8I?;WJs4>p|hn zy_?f4i^hFfX`x3?&h(J)jFVq}-DG2~BCaDvulIaZ#%>`v*U4ASFq%Af=jDUS$}d$| zR>xEgrK(RF?`Bfv-s4VIt|AN1-kwc-=H$uJYUGE?&C^XCQhUAd^k-AG@`TT7S@1sr zJu7NwQa9*tBI7>UQbF$G-TzpQ&ffU!)J1 zL9|=3>6d&8X>*pi>QxGL^&C&n8sA_g{-CrS(lctt;pkLeR*JKHF@N=SAhOMXHkP+G zPZJW0ERKERPTm>I!$E;dtB<#~kxOIRDhSOPYxx9dad9^J1ne3G@dX7;U@sxt%@AnJ z#m()uYxYmLE2(E=aR=y|>ET{v8)gb8X|8V{6wPbj=Mg44YIFTQ;E55lq*9rNu& z(LghbSbgOBw9A3RPGrb$3{&HvI{|u-9qPWc%c!4QNOZo~VLm%MiYJjbLi=dU(y+qJ zZ|?747XW2i&Cji2d=o63)4-ySX2a#r$|e)rP8XfBvRpnQPI^GWXr} za=is4h#`pFU~wCsJwAv2Ab0Y2WPYeAw`}ZBUE^vj$TWG|E*3 zrbSn~$B`OLVO{cga+c_p(u*Jd)x;3758tL;cp){4_j>1-v9z}Nh4_z51Xs!%9FH3W z_192G7ru6L9(wF}RPC=3kyq^T=XM8ENldYmyr3pXJsA|F%lXyn>2NrQsUqlf@>_t6 zG`2{@ewL;Duoye$bF%5Uu25dy(b)7TVGuz^xrKbr{s4Z}e!~I%IA@&4zH;iZw};4P zo5$-#%cEP9kMRR#F!%T*t%Bz~j=9&Ci%UpD3EBkrK4b{cL)f%SDkqYwJD&hk41U%* zFYw!E3|Zcdq6!cXl(8flfVmMYp*hdP?OBz)-(!cS)a*H^_*&jua1ey(QN}1sytpXr zZm?vq=COTdKIQ!z`R6obFo_`WO|J}r$zKC%?Z)uXNjXTL3GwkWb$2ViKY&tx!ZeXm zwW*m|&0hCxF9?N9**ei+agY`n3(ndU-DofG(0rYk?`5UpMgdVP@^~M@X(7-y`<0ed zx19ca+HNe}N{2^VIBXy^ym-K*)V5?TJsMe23n7eA{G_9asZ|N%FDvdOtD*`?MC z+;HHx&vV^9rfrSn7O|AQrzACR^x2_RtSr&bl*^L1JJ21$BPy$m3Hkq{NCT5sW;qZc zXBO7%JHK|@#>=^N>Jqm?n+|K|~a zClIs4GlF?xxg5kEueJQ2uC*LMPuq3>dbzJmfiyaZa4YV}E|&#kCV4HxxrUYUwF6>R z=;wF(2m>3MBKWL*);`U?$GU&O?c&U3J!^2_*0We$Q7FzqN*&Y?)4K?_-PqLpXZrSZ zuY%Hfp_wC`)b#YMuowQ}!-mz9NeLx67gR%#JeN;HcGa`Y%#whItkCaC2Ywc-waAI) z_%FeC_6RFH&xGk`KB5rW(~9#@Ts=AT(AkPU8Kqg_187xLNP|fzC3e5!B;#Qu_gaTL zZ?U!$iPDoVEXwPvWTNsox%tAAQXPm$j}5U~18P@}El-HUY7O3;Y)0QMOr0)cS2!*> znI0#)f=&u?`ce6|+!P9hjr#q!UvKs(1r*|FBa#A2Fm>2SACNd`#st#bkz05$;;)ra z4U%eZt)OJVag$ey{j)IL#!O?ykIt7b4vsU`m~Wb4eiTZ7^3mjjft}f#tWUGedx!6o zlt0xX`lJ*7FsRz>MUXl%H_`W-=|tMJ7e!K-lP{v6U-3F_Qq~Z7V94cGSJ#60-=q>0 zl)U-Az@Ya1JHQL{NtOfcBUO))tkBZgd_asnNKQ$j=ctc6n=ig(!(&~d3F89Whx#5X z8@b$R-5>m2CmMn2?{$kL{5Kcs-YqrS0P*CiI3+Z*6|{6=YhJ#*|Hx(GqM>b4=J9UB z1DLukVqS5?b<6`EamZu!8*HTJmIJtK^u&}Fx&;$cs05Bz?RC=1>{6V{xClV3ex;LL z>rE_hsP9jvTeXk$G$sYT<#1fk3V$rP=lVS$Ywa#^db{>mhs*5lR5c^eCMgRoOr_XC zE)DXgedn)F?+UqF61# zN+NixQDhgply&Ljy&HU#FZ{E5xnSmjB;R!-Q^vPSDYYhf&z04mh^aHyV`4sXDL%A( zBY4~?$ZE3!Qv+f;O~Rrgp%=7Xy3M(Pojlui*`{-3^!jFpOpWdi7S=(R^6 zRHYhUsf&=Gf7RaA2XZm@phxFNa)+jh2kosXW#tSaO0l>s{+;;4MYw8g{|X40-yZ-a zp*yb6(Q|Zv+>($#YHPpHZO2`1&_Q6|Q{49J0sid`eaCmI8UA@&SJc(jZ~0zMPDw`V zZlR?oxE0-z(;H3}!)0xqiPTWXxsK~4Zean5I^Ks!=n3?@O$Ks0;i@Rm+!0_>JK=I) zecA7RO0C>Kt6G&ln~Qkvbe-*bpN8kuU9+?@*D_0ZN15anahO03-QCVff$WPa^n!%2UXHGS!;J%ffhX!~`z(!U#m!z} z5(?3bUcCoj8?pt@1AkwGMZF7D4clMhmoMFIBGqqcGHpSLC3ePk2BVZi3^)!nD)%(} zT#u(8c4mMu(Vv5hEI|#s!l8?cW81@+&~_FYn^;Yo2U1-G&XMV6(iSYytk$atM3?RS zgcC*-uK%j5b3XkFH@OyLp^Fevrn>s~M*@9q)853NO7rnvZ(0{J-1uPJlXVmeNv`70h#H*}Kfij6% zs%f-$`G0q_TCDGFg%6dS{Hi%BntXLNBW8Y`h)lSg(K~Bo;++304H}$+>ix@} z4-Ho?r=vR;nV4AQP)YHzu~D$MNEi7U00ZqZxfKa3-TAAk8Y+nJh{5#MdH zI~CtS6J^X%*KNvGXp6cd8|C*k<2I$|JP9jxJOPv+Gs6a^j-*h_WYIinFnCY%4ot4w zc6$@6h?ZY2!}P}=NEmW?R8uV``|aEJ`_7{)wY;;FYe7cRZH}Lw>bdR&;d@UUUwC~@ zYt*&D*#RZUFl1?ALf?sUjm=+&K4QtJP#P@M5Z`ORy- z`6CsXHGpT?*b;!FM_M{aR3J4fYT;&D?Nm|+HcZ@>1{P3oFclzWFOmqulL#Rp#;Gqz zEZI0X=wc9DHp!9RnT*`myA$i1?mk@gr%SU7ymTT3_n&ALd2S%qQIE%BBf@ z%8RmKSI%zX`_fcqBJwv>4-uC6%{#JDE$wF7wsBUIm`)vUJxug2+^_W&{+d)7Gds1W z2RzCNyGMT)a^Gw2ogB4C-|T6b?Vg18C-2tx1aB`CGHT@J<)M+c!d&SGg^ebUq+ylk zh|zxndr3wC&O;=GQ=ypg^Ich9-T|vVb09@Me6(nwV;we@&->_x?@g?i=sPIi31)Z7 zhMPe{24Mb?zfmr{g(qVVdqLG|JpSJM{NiF#p20!TA*q?fijsYnlS@to5avvzi?O{L z1X&Th8@lKC{1?sOYZ-K0S z8@9%igEv@o;o;#!|10Uhl< z&f23u)pM00a=k6+spSBJ<++MBS8su{= zb&1MFa6wb1ProiShTR-VSq!)WM|~}mSUqp`)t(e(q;K{nHjx@*;o;Y9LBR&Veuq3b z6n1g#A1!Te*~yRF1j-Q_8kROY&i*mX;d4V2FR!M9qUc`cUs;j&II7fW7Jch7c3B#; zNwXhQ=!rBE>mqWWbQ>Di8)j{XJa#X_Hh~#vbGd4W8=vB^7~lf%De>A>P_ZdFWpjKa z;f}3@eD`p+RxZfJR?OGXCRqCXg^8pNwnG|4JSMy=OLcfXIl=c;+_Pl72R*GEk zoCQ}`*PAvR#wHUxTi40y#qt)F)V~9lmno863O2s1pegFRN&&OJHO-4#&YRAfa_S6` zh8vfxuZIt=Bv$>+zf>Pu6ur*6+Y#9^^ZBXX^Y=Is?zW@R<_N}DF4p>XbU`|co+@+t zHXH9*rm7#XPa4>{X8)3zuEm+%-JHY+5tpj@%=pfv`pMCgH4lcHWgF!5<($v}-S=D; z&@dY+@duz7jh9ngEJ~l-xGw2A-(U2Gn(G?wLpFqr2UwG5O$!SQ0!ir;&0uPwI|DaK z*V@?Lx4ZiR<7+C2W8ww_(%Mzfvrs@Pwxaz!3M!iMlR7_i~GF^EYW&8fDhZsPwoTh1GYqn@_9aY z9t{PQosG$5c(&uKYL(Vua)hGy=$zO}c?CQ{=goGlN)<#9|IXXN8Q6IQ8k$py2hRn} zi`{|k8fWKV^=PR}Ntq&9YeDOKxRyY*rM_99n1A%mPbEe&kz)YJxAzYE_UqGJyRv4d z|8f^RFGlUcqhAe6BDt};CV#vzTcO*N(n{(E_Yx%0>M;*sSebB$zQ92_sjBOiH<`$JO9!KR zoO?`5vZQ_fOvI=iXq1KAD-UX<`(tbnN8ZA9?&;})oZm;?VTC9}Q$x+LXHjpYLR{U{ zHr7qo=JU8wyvU%1srk&?CgSs9e)!6$`4UQEPD_6$6d*_ztZ|oY~%9u)Ws{g>L7ASDdoMR29ZWDwH(}-CKeQsj9_LQ zSQI-Ripy^)BV`=u9cJ)M7q7pm?5@&#D6Djs z{a#^lmpW~7Y?A^hv!GQkpV8*0G4bR$*z^j3RX=IF)O2I@A8z@ zraG)hp+Z|)6eKQYL9T0gcnw$_{CpO^h9>b`WrnhBFasRZrfl*3V}8AT?|KAvgEIjSG)6^SiP2=eo_8FTo@kxI1+X)`IrPO^~#yWB6; z$GYdczLy{vjqNd6(Y4(3!CbLx-=*mQ1zf>a7P|HM-VG)uribi{%t^M7_$LiUDjvV` zmy!&bzQLu-ovk|kxL$!S=>C;vUgKO+4%Vct@V1IS#D}`lbOd>v-Ce!i54jVt*&vzT zojHPh-PnZ5PxI=5J%l>i*em5skbJr3D4)au1(LM1 zG|N&mKE zPuFx_)s@?C^CGTZc9UosFZ1yMHP}i1O@#YqxZvYJ8m05+4nfGQz_j2z2S-=uz>vZ< z2M6d;`~l2}{r%!MV?0nC?XZcVT5Sx}ST7>QO}Ve)=-P~yKojVbMTFPR+r`oM2Oi1GE2`Q=)#;MeOsoYS zo$TL#=Gxcy5g0M*Q<;b`pUoY6b~c0@&FYHa&XW`!@CtFqYM>vtV9a_wmW+%KY8UK0 zh;uHoLJ|{OA|ZXSa8 zqSkW?Qz-8>8xjOtaAD+V-3I^O+`5mw)(F7QW&c_6hq(a3Mk-CyHUuz3J z-)3c6cbvNqpMP7wPvVX!9uyJ)WwIwB26gwMHfp!jp&O-Ng{jW+Xq9Wu%(8Z#=}7mQ zuc-G$J?~nd2II#e1~bGr_ckgHFSVVOZo zbYicoS?b`V-SRlb%EO%h#YCn9&(fo%?YJw86wupbn3J^X$Vo_7`YO|uBIf7M@6NKC z63(xcQWA=bu?tG#sQ&!ycnP32;LRYF5A~|?ysfxTOuPifjlOL$T!g-?gxEQxT8yRj zO*$O6=8R2a3lejdHlT3JAc-E=vFo}4OKkc6hNQX_JH>Juq@Ao??VGGjYu-qt zo{lvMK%uSz^^#QRq#h}&EHOM%9Ye4B)ohROc0%fI3H4m^oE;CY^98#2EUQ=#+G|to zf8`$&<$ziRa1cJ+Oy}Vp1c{ufy-i&999s-%(1g-rR@QYGoqJA1?%P_c_3X&oxPc;I zvOyA?yIH+o%Dx4)x?K8-SLI#=nLKB{cTTGC@_{|G}o+ z#h~`bz|;#duo!iFKDP*x=CGo^lP-Y8g$v`zZiey$tOi}z2`8O?uYG3|Q-yOsij!}I zw=`x5R>&}<@%W%dJf6Y~BOGtg z=K_{Y6$Gsiy7nlE5?O8RWk1Z=gW=Sp-npnlM7Z>$rToC+znRnu-yh!E{L#7KV#gRy z*j@IFj?4QZ63Av=Eo#SQ+Ih*>%aJ$VR(k40t8>BZSnj8~%G&+}1>^_yq0)3x5r03& zt!4o7_bAgpEp7M{b%2VGF-JaQjAX*v&a3derHfb?DYY7GKf#AoSwjMDW@bjnpV4l- z8!xz*bD_Q<)R;*U$^v0SH70q#q7M#2tf4TIocuJSH*{I=!(WqcN%N|Z*<*d^{dg}B z?ikc&_JE2Q(*DP$y)^cMq-({i#v}e5n43Yd9cb`Ol=`MONlw4Q?$GGKz}=vRFD-^p zUNW=z`FUbVh~Mv(%S(@#^62f`VyYnlBKzNAX}KEwtMNCB1)kn}S5YY@y43Q@EBS^Oa`;)+XNH0ioIF$e@3V^zo|K zpN*M?)t>Hdt3wq*w76n%j(VsSkYP$aVyOls0-Lj5Ysrw`);2NB&x~M_qLL6__pVPA zEecV-X47vbx3nQs;lf(DXs5PdlJe5Rg6VTenf=^_QDq2#HCS*^pt9&HX?4$`Lbwk;kCa1CjqQlyH~&4xK5?SG&G*i89Q zKE54FOL#t#JtmyST5qW=^S(qz2;}eU1<}nM6hZYAq;S^rt$Lv#BS@ZSWF2$9qB-pBW~Zm6zdP_N`#?XT?WI z*;fP|n*rP3IKCvDGXCZl5F7#=E-EECP6)9eNehk?V|r5pMldM|(v;M5M{WBfoR4QW zj4^0aVwS?GesIl6Y4q{Jp10$9D1-zgv0SDm*bZG{G73=OO0BzC$MA>qZNk;&mW7s) zOJwX{@E$W@BweG&`jdbh*;>36ZiW#_flH*FsyG>%mZrUUx!!ZXZ_M3E8J$t0qtr^% z34<;33Z~h%NIIA^-@6F$I5qi*??c6}Oi+?71Cb*^7wn*Rm7e+B(O5^qMv>x~jpVUR zXd1L=jaVn}zxQni)l-Cf@d*gILJ03yx}4u*n66QZ@%ydV6KTud%f3(JL>_j<)RE$E zZdt7~--rKut`rl%IYmyMdJg?M?mF(ry;?6)_Td> zTdUN{4?T6taI$~y76bu+rt1cg860$&mo+b&F5k5t&j{-~Sd^2PLzS_Q1vc6lc9 zP2tsrwd7rs$%%!}Fget)jy+&eD(J0qXINN~1i+zufSMb+} zqe)f`nZD3Q@O<%yhx;;JG_pjML+D3R*6U(5`-u;RvhQ{?(zO`LH*98W!XFRJM)Vl# z=aMeJ&M@WrjuaVg+l#Z+IT3J|>&MtC3mP1CtT_`_V10W=LJ5D9Dt}4-EsjP#Rgl8_ z;jQ{iXH4OOF7eq-#w(>_Wq5QA$%Uron7uE5mE*2##1y>kxoAA*dHc_Q*HgG|z4=z8 z|ES=4as9pvchBfSm4VOY3!?|EVh|K`baq!tQYl!asx=!Xr!Yb*si6j0E8Nf{`Wtl14EXsPJxhR+7IYs7e4=WPza8n!ifiOI8M;a;fp)b6Y%2H@$g|FXIoxrlVX;?9i0sK&Xc7jx~yy zn3~QlnAP*n>KV|AJDNv6W&0FI5A+qtCV&Kqo^fPmIoEA&F-`kOU+Mj#8bOXq$U2*hA;HH*sj&P$n3INt1QizuG$+k1xk5eXs6Ii+AW}gML+~oB(kQljH-i;#w zwX+{9_K@$^grSTqQ@8P6sLqz54blkVSv+WYBM|ow)k~oaMQVS8tKay>1QJCb-J885 zfP)q7+*Iau#Yq3JYWE*wDQ{8|^Ou*TsBbNHojmJKzQT;9bIP1S165nVgZwSH8+}qw zo#AlH+5t07sj0v7UQ)6hftEVvZ&26-B5QIg{ZlnM0*M>pCDygzONaz)YU65Tp>^y7 zrIBJn_~^-S^w(UJKkudPhy8!YbXvK9GZ85*Dg?BOf*^58~8+Dq01=S4q)iPPYqI7Am=~GkQ3q?oTa2ROR zPrK&5oRl(M;J!;DaB@Ct?y{s(WlS%65_$Ryc>pYRLFEhxZ9s|wqU_VVz@L0+Q^drR zhL_X-Zcq~)ey?En;?(yJ_scjK@d6Cg>|J6}`I^8?Vehpk~gZvqwn=)X!E52PWk zjSGK9*ZgzXc-&P$7Wmjv;$Q8*Th+1DPOHdnJh)Do z?RO~DTAG0oI&KZ)Hxp$e$ACPlM#x`QO0I3ou1Ve=(G>isW%Ob;4RQ2A5nqw(%B5M4 zpY+>WfeCkofcvG(MpSQNSup2|BYN*k{$W(6RpXluhDp>-W@TXK{KVL1C8nNRnp48CjAol2cz{!FW_zrsC_4KW|O8#E_O6BoOR^j zkWLtMqqp98pqtY)Pv1Wa=`W3>+lL}2LD9EDWnn&ZTl<0ZyGOt3V-NG*AKClGK4L4X zny=9u7Y_XK#){OpPDS1S>v9|KY_;|SUA81Wj$6320nK8x0ewt1iBMXMc;zCYIX>;_ z9JOFqT=n$(QC2;YNK)xe%GVy956hET%c7$~Ic_VcM~M`#)S*A|G1Z@r4#|Ej8FUvH zikB{sCKxC7G8|s8-%Kla@}2v1e0qC}rBe z&bh5oU)h7_#qhV}@$7SoGU1{BbauH)L8!U6<8c@*PUmoOga+asme8P?pLKT=yZ_8R z>dYC5n`^o(OTo$6ja2&vMoMknY5ia-8jy@gmRAd{2gHs7{8BWe@o`nP9qWxzET4Nr zX^ZBJ665GGMK=uD)b$Ay=zl83w-c7l4iT|HaZ+RvnD&6q&M(djm)xuB;pOrNM%RPf zVw6FMznTXLkpH7rWS|uS1agI9k6=)Uv3^)z-DP0S!t)14ql;E()xbUvu*aa4_?Gj2 z>Yq!c(J;q$fjUxKL5g&fjSfC8aU9W2>-?U%HkmLvWi)}QL!W8J2J zQJQ|sT}9}Y?@Hx2XEDm)J2Q+jAtId?-(SSCGNTL9DX(m9H@zf>=7D!Rir(r|peo^4z$q~Yk=}&Xt8t6r?=f%`@t)wlgDJNok z(**^zn6H@wdvr2ZCsm1YICA;c)yqI_@bVJ7a`6dAmkY=pF)r*Vnr7lrq6+a<(6uB&WcX1E}W_iVPEj)d#5R+t$7c)k4}*If=B)ra`6 zh}=&*(sWF3w*LF4OGYC3=h3x?qg7`U-pt%pUIEx;(?7`nBtLKh&BTQb%b!8-@Tl0KJqXlq4?G4}l!?daUWr zsS3w#eztsc??^&VbK3Eh7q895P#4XllLA`%FMh#vd#@(jJA%2bmAT{DgG(BzwxQfZ zMGl&7r`gjROU4y!;tLnbm@v-+H^?7mOCZ9hm7|ffdz(xa1vtK`FnuIaH6tT4s@7~~ zy>txPEl3D-25t3!ggORw^}*+rXV$pbgZ$;WW+db>X|s-Ozfi63~SI?&O?Etd8RtEJA-|@%|U@I^(u9h=EBnymZg26tjaA?igAdVu7 zc5U6Avh@+AR`OOQa?DW;Y|t0-8S(Bno0wV?8iCe#DO4omfGp%N&8nMlI5>XQuA%YvqvXY>T0?1M`YM=}`v>K{$}v zHrP@9oG*+4?Ckv0cu-_Vf0DdQ6{7t;n8=?N?Qm{T&G z^FK|ElmG>5rFg~RvTQ@%s{Z&o7DnstX`I2lS80PQ!{CJ!1E9+rU891vgkiN;wgI$d zsCrjZ>j5Aa&^8+e{c9*By_!-=cL&_gHN7KPK7ly1t*+1Fq0gNZ@Lni6MDV%$Ku_w; z0k;jD-5H0`+so$68ty1QfIY!gU|Uo{N!H_7x#IVD<_0E|hq4F%OxsS`CR{Jdq=-~! z;dL6#222yu0hkF$SR?Bhd#?@XX}D=hZ$;x1%JR^`T3Ez)mj2ezu!EtFp&BUuR2n}3 z%P1e^>qp%E_F000!<-PvYXeCKojdJjxwl3L$i3k0na|u9*<=5KkRR%JiDO*?+7Os^ zytfxo(@q1!qdEFCI|-8LY%1KmWVzFt5V#Q>(ONZgJV92ebV zfQl6K?p|M5(e#8|4!8&^SYFsHBhdWSYca&aB(JI1@BxLKSa+F~TzG)ai-D7}79QkYt$pvaHNAc5Y7JVT<^!k6ZOku`5mM2b#JkNm|ahF2%gu6*qvUe#+>Q zP<+&;|Fz1cay+xMyS)`n5IasUlO)eaZ+k5YYXdF#yBurj(6f2=KH&lPujQEAxi?Ho zv$I~55rvEzo)m1lUj8cm@}M=_>9f&#i0KoCit?Xnl>8#j zA;}O4Ix*6s)WDb-7$Aj^4443M)0`T8#8*ZxfrLmyohW&HVgQabue&?9pukGk$`fkR@?{w^Deo4_hf9#0=(5L3D@Cr_ zRWp!y_Q`_B3TV37j!?FT3(^inz{YiE3gZ_Qk^q>utO{2pW4he2&Pe=0@tUpLX zZRM-WnUh(T%LZLYpn)kufcv8;HIxPo%$bF4Y=c|{{JTwJfpG=xu|KFdj{n`Xr*M&(dy};2A+Gfq5P*3V#oQ>OIV81!xf_jMRpaY9Hbm- z%%EH(vOL||i9cHLP9`HhKi>;zvJe*J=d;b(^T4x$o~R!n0BRV?dSoSfJ!U&}C)T;ka%2x~1(B_V2-+jRVT+SLVZIRjH+7 zxx?-<1Lf1S-NTG83r>15z7HQ{zuIx)h_m=lVlqZ1BId#fmH_fa=mn0;x|+|X{sl9r z;p4DH;?Lw81tk-Ul*x}*gLNOw?QI6(gMRCpv)enRYO|j&Kwh|02MQVi$0HUD3>p}& zDBjyZM27BeY|xTZrPg~Go@7^YuKU^ULB-A>?cn`;tE9f75VC^e6NAYp68~mQS{})V zVNoc-0QL#BrXmfQw1Nejj-f8}@Jrw`t)#yyE*U`9uiUTF9G{rPXJP-_`xZJngFSgv zX~M*_gB!lI%>p9-%|{eQVS}dy&Hz+#Co>1}@_c80UWRN4T^ALs_yZh6GrhOXA#X&f z_429rDzgpK()w&%0%Fi zPlWFfTuHm(ZT<_CHTBp?03+xG)-?ZlqCP_M6+S)47J%kQaK(8w7d<2h%J8Y3D%tVe?oi9L<%wUx9U{O&jux5IvwX=Vu zuGAx7>mw;AV33)E%Uv!eAckP%#QoTrQL{@~RPK+yq<=ixz>MI&IBt@;kJfmqRDL2* z;3ltdr+})*0;iBWA=iBNxK%G7h5A@{NzAh7fShSna`3#Rd)v{CHD!6Gl@&LQ!i-@e zmw+9<9=U7o@2mfVq@djtk^tC>;7j^7@XEAy5+*$=aG~=Ca$UNhJJHIueDRf@S{Ww; zb(_y>X9v@QM}~$DIsK+m3`|YE9r=XJsAc#lp}Y$gem-y-dP(;RPL4tKDKGqeK5W6m zW7N^RomTI_3uybONJV}+GBf>4Q}UJ-JJ}cCw}GBZbo%lxL&Zy|7xHxlnh)uk*aSVuMeX@1Xa7z|xHd zmY`JK2Af`HJPdewV%Bp!Q&jkh+GeAv?G7#>c`(@?+@QbJ>v7;9negH}Ql;y#>dnoY zH@kDXFW+H-4DXIOkb^?i?!y-;%IwV{1)ix*+Q%lKYKy zIw%`j%fg=>uli;7*@q-pKcta9CM*_I+d;ley3yw^DElR_S+(K&*CpKsmf#4RhJG!V z`{+x;z*v&LJDyxxDm{8K?r*=P*4DUOj!OAiEU6hOrl_fyRI8vC%7W}Zxb2?G*qffg zmmXU#^8qh6h1v2l8^)OXov}-vA2jDA`X%o3(>ZmjW2U&Y*et$uvi{9jOH^(sY?DGm zau=Nyj9ciIdPlujXn`(XV2N68oCr58hk%kX0c~k$ZfMBk+F@D zg{7lYHnJy)K=#*CKY^kj}x{0Ez=aFIy~398B&TFRqo zgQOH>y@!WyTt`FA)freB8;tA1Cf?UM^{pO8j>>#C}XJEZyor)Rz|_v~37R9@_N$J~q3O9q=R zdDh>6g|b8>cT0KAE9}wI)tr>>(%6hgQ&%S*Ji-oTaCstOT8=DYR%35+c(!FJLu-}0 zVl5S%-_+yIsyBa}z)BJ*-HI9+qXN#3A_?effF-d#=p!s)%i zz{vFRB*vh;6k9>KX_)XQ=*={u)&0=6aAx**P%dKXs&a})=o9Vx<*eAbH+IwCfj>76 zB?(cwFp_Z4obb2DZer}!a$86a;TX%P%zNO+oxKKy;6eTO<#Lf${=aW9GR68z%Fu7e zbb=a32I;s&EXJKCUb1%72>;rX{*ijS0g*8AE-6{}$+Sdz?b#!IEC9;~14BEKF}~d0 znbTHQE9LIXg#tnO2;0FuAz9)Nd|S^hl7{1RhT~0N3N$BWuufQbA(a;V6R)?QXJqMD z_P0#pvnzObdY~9j#_A~dksxMABw^Zd?}Leqyq!xrG@Tp@ArCgwh^3TP!d0$p?I+}p ztTZeP#bl5Xl>a2IF71`=d!e3}=66|4b|q)4YW!W)2x_FW4fFKSo@JllPGVs6J+5lC zOd}WV5T@%g<9RXQ-Sylei6d*j@GEgc-c@G(yPV1@jN>R*x{guTzzzoiiFu=5o41pn z?>?zbPfERAVAi_Zktc`j6?Jpt(SE7TlfLS9eC-bF={bH+`kkHQ_v`Pz9-7CQf+@Mg z_peY>{IW*4Y7o|9p;(=B_Qw;XWeN|TddIVyrw@QXD)H)Y{}IstIMmCvY&cx8&c92L zWUgfPMKa4n`@+^2Pm1hO0#v8R$Ji$ScYj75vyH0{j)&Wb6_pK55EMHm?lYe8L1|}1=Aijx2qCB#VDfW#JdubOgEzAx z&DHk-`Zrqx&Y>?8WAzr**d_RTB`5nw()y32>~~omJ$pyTsdyUsQ+-}Cs2l^*qNHVI z|9cL4NvGeyaQt(96}|0u!b~L&lBFq9^S0K^WdqSSThRS$$Ew*cd^K{4Us>HMI?3r> z3g$`o>*J*VEz7+tj&NR2%rSUsMtFq_;kX=mw+al)xv$U7)Wi)Wo98L2o6!4T7%6@s z?@JV-#>h-zZq=pYZe$+w?|SFJoWsc}J=5vLGAN}OKK|g!Ft9VIK^A3rbSR%pEwsV! zByD0|&dBQSH(oR=Nol+N>=%uY;{RS*j*kUAIARxc6n57*X@3g1aKuVgk4XMzl-LM+ z?ya@ysdN>6(x`#KK?fHs3=Ff+XKSymeB-6$?XCJdC^&%p0l6mmcDG7aj-+s=z2%NXB=T3hNJcaP?5LUp!dKfau2*-@Mw{4gzEA%VB{;V-^5OJA7{8yqKDz-=>hM0l z^w|3JL-K}~T8f!lUvziv9ocx>*f-BfBk-^VjF7ii$vGkf>^v+&9mVMVC&*02lZpx2_acUyi4CzOf@ezn6@BqT9mDzMA! z>B%xwmqj@!PW}CUb|{R%>mqWwgWl*X+y2a0tyMV~&S)OItSyjE{1m+a5X8oGME57_ zD?&;_6y)@i(wm>VJm!^S9lEEoee!61YfEI6gbodf_arZs{pP1kV1_pM#2>KCP`M+b&Aw7;i z5gA#oe0F;_7m>1tfAZK+Wbc9+`Zstk--R{Fw{&JFT&OyMl6o@Xp+G3YMlKdSdiY&Z z%UMRrDU9a+x5&;avWmZ($m6uTZ9zJ>Om;(0E_9>gxZh8_;EAke{#)HI9`L6Oo^*S# zN-((Z=PtOT9B8WP569>``cC#O^LAH01pep|+>6#%e9>^aotV()#^<#yINfGT_S7Dm zfF#$pMJNrUJWMC8lml^}*jJn|6A9Y#%of4<(5HNL?bIeZ+_6nl9{K$Rw^wl(M#|?$ zEANz4P*>YeU&Xy|o3cy%wOyShRysZ5@9NmHGPi{tPbH8G5kEyOYqRrpjSySCiv_gj>(;ccSCyUGadDM zBsNc*e$I}fX|ST8+avn<>J2x;`IH}_5Wlh=(m|-XP18V(chH+SM>S+_KWZS$7q}#8Nw+?F`WIUC;yxOz0OY8#{c&(E)Dk#^mzM{l2EpN2(_&x{ie5VN z<)>%)|K$$-U(ZC8P^8_0^`8evUqvP-13Iqx_tN(N-*>2LWchUI`LnZr5g=Jbl%70K zOH0>K#(XF)*d(YmP8?a{`WVfSA>9kHQ}uXIGtKH;cx=C1HxJ6P!3yD+Hi z6=j1^BC*sf>;HV>*6AmPVi~F3N6aa%9y-70RhHLX*}j48e68LY>X`q%3r}yKS+y=ADlhzMT<~^t zI6up=fI^n3+3xq+l^%9wcK07tJ_t9Tmu82Q;D(h@75qfTu6Me05if4l+RCIzG36Svrk712iUS=?6i>ApHQ}{hglvH`2s?O-R&RdeD=~=) zeNNYN_Z?ePI73#^bK5X+Rlz`WNg|P-3yspWOKAlS18(I}1}4*-&h>7-&0g5TNpXLk zyZEN9|G2~Y#qb3gl1V%4XYyy|-T;_wN!hc4QkO5Un|+eNcON(59d-BDZv#j@)A-@C zLnk)(+>R)xoOoqKz=|-g>?*AHi?7CJ)IhoISEkEsA}6Ek@r<{}}9iZ73hm z;ZEQ5K;b(_mx@Jl`BLkX1Bh!UH(t+l1Y`@*Jn{Ohk@U0Xg?#O{pVaAtSe-+=Z;U=K zkByl(FHD7_N7fEM*V$f(YQ383rIUW&{3|W@&rPI9x?R)rR3oOpNRL1U$I;iMQYQ`a zwZ({qMOHzk!*9wwLCz)>@%RV)Zgz|*i+Zm`4KK792#d&(D|Lse@u(Qh+l8mJkq;fa zb~jZ=wc^*M*?%xR|BU4wdEwoZUu|vvN|QB`1l~^{6_CrH@CHJZQ484bhdnQ3~&A+?DSe+ z-TL>Sg2lq~$auY$e7s)s((NYda(Amcnycj=>(W_`H@vheB6?UY9g8`M{@|nU`2GTc z$bKGywdu^ss*qZz_ujcg1MyMkB&ON?@`lHw$G=vOk9C!WjRrN{{-WmNk5kkA_ejI8 zazy(QzLz>E8S04TQBU0Ac256&d_3yG!|Ksutv;vgg>UJ!zuL2qHS*%+d^CT_QCJZ= ze?}cHAi_1S;N%+}d+*$|b!U;i^}U4<4=I~Bu-~{A$2@xAGRt0!P%FHTEN*5TiZOZ^Y3&*+wIifm%Nm zmp+f++~VQbVPl)U!B6*-=@&#rUdNlhmo!Nl(%u~U-t+EapIQ8L)2MT&6tOUGq|ClQ zr-Yc@&WL8}2=z~EHK+K7w=O(FjDK%)V*FjX$DOoZmY-YOS7nvGaFq2{QnELPgk+y| zzAk^ocE5Mvk)zh1r~Bj6xg*6<-C_mVkj0t0zx~TRe`~?QX0yv&HX0>9*S*qW)S^YU zwKd5|QZ^jao_N7}w>a!VUVbr|dE_u^;r)~J)_hBf=Q}=_&Wp~Xs2u})oxh#FpB~G5 z?@74YXC=k^=F8;qI3IsWf#u5G9nKgh9{RxzlA4w66WM4Mxl#R?k%vf+4GBrXqVICK zxnWU5p%tSQE-dj>J{-|ld0#&1lXetnG2P!K*}r$;sJp)C{}lHgP)%;_)+k#)Wm|y# zZB$eQ6cv=JAVj)~Aiei0(mT=uq3Kp(3jzWH1_VSp0U{-Y0HKJ|A+!)$LT?EWdJBQO zqTf09Klh$7?)}d_XWWdz7?6;+tnxhbnRBl7Qg{0PX`CT9MW%L(E>lTM;SU|mQ91Lh z)t6IPHeLB6?T{U(j?fvMf)*n;D6w0y`*I-z^{^`v#wq)B(V6g`(dQupgq`m5tj#wU zMM+)sU{NUFW^9JYAcHJ{DrDd=$lL+Fz%m1ybM9un@(Gc??%xR+wRe$4_4^nw2I$G6 zi8B_jS9dtp6-h^P8#yUjZ(z&M%#hYGv6*k*9N4y$W`jDa^Y-N6ohd-O5kW)NMXEUlw~;mE*CJ@+iWF?TZr7Dw`8V(FX(brlTUntl zet5mS)6pAYA{cd=IWhOzCFKw3disNPMa6NMj6Sr2n)`@DRhXF0k)2wB+t{OhM9aob zn^x?WOzE)e`D$ccr-5-+F`$=3Sc}6yH;F$NTm;GT2^n(8p657bOszt`@#DDRdvA#B zceUvJ71zuwGUwRxc(lEvG|&Mmyk8@LF_%;Pxuh( zbvNtGD|4Qm>*X&)?{nsRE(Snu`2BPJXV0vf{46Dga$lh;mFFM5(FH8pSRocw{&YE~ z!7x5XLWb;8VQB5(;_I;`g`KX0wH(XA=6e|~^x49i4{A?0X0cSp44NaB)3WZ*n0nq7 z3>l&>@*9f_c%MZXn->aI&O~G?J1TBz&gGQ@8bmJyQvl8sBQbkaxI2>bt}aLf%;&k2 zNwcbodE1ymQStN2&nNtCTKhEwSX(cM#T{-ZR77$qZrSIiTN(FWe9h?HO)yHEh%qP4 zBgk%s7gF_ZbY&}UX`igVKXcn;a*6qb}dqaTT0Z zimVLC$S&UxftF{j@bU9cBxa|V-mfLzo8XEzk3~0iDAR+}QNude z>4#cO!G1SNUXP z_vtYNG3`#I;A4e_4l+vplI4|1#R9iK068osZQw`=C{GX%+x_-Fj}1gOZyCrKeZ4f> zYEdJ+5ZoLJv+#n_EW5unv0A z^Lm#TAKVtLyE^gX`YA5YGQ*^M07U|zLcoT;hsAW5omPNH0Rj)xst6YQV}4s z5}@hzzBe*O{rLR~@kW|&bM`dy&nVV~hRS7uP>SrVu9IC_>~hVO=DZS8>N?%-_Y224 z{fY?Tv!?kVVjS+aoN@aQR`+jSfD=6Z7S8A0+{f^Ch?=%RPJ)=AVP^b*%p9fpvCf@| zu9I=FX4$QhGojlA5U##LiuEic?{np2czfn!`8Kx_RIy$G5=`rg&S9Eny4kg+CG*U( zmfY*p^TuX^=rHfmej44X+wncv^!M$UR2Dy=lMB#^US|OX#v=6QD?Q<*JlCpkXirDM z6xS!#b%97AE@1|S5kfs^j6QZ4{!kyjKU%^}fU5ru-5 z!pXr1egw!{EYO>avstG?rVUE#V6t)g(IdSRt*Eo~J((z}mkTu^rfDPdGykaN#7LaK zWy2}mJGF4eQdJH=mtXoV-bRJ}jEz<5M2(-TfR19|XXENA`WjpjL6hNp?1Fq7TVKC- z0~%({fRaP~t!|&gyz1tj!xp!pT}dLCaUqF4F799_&6X&Jp#$xtW?5Wnf(iJDcGS z#hZ8toXzn>N;xWkf9n5D8^`6lF%t2Ue|qtR{U?eGsYJHx8E0jc@bTyUaG?f#2A5HL zHI6{8gbI}?UrEIkZ!Wo2;4w;q!>CA0MNw|mnb$S(cBy@Wma4>0t6OdE+SqBtOM@GW zbJ<99eZ+56&=!K%57i`A%8pAUX;n%~O|F!II4*j{+wXZRp<&bIs-JUfKT21Df5Ng; z*{pRYbWr8F((`jaG~W_rhRF-ju9xVI9PI`vcMOv58KnGO@1O^c`sSK752<~w>!FB0 z3+S~4ab{xea#$r%_sHN8&!!`wfj!K}5LtBqYoUbS1g)JV9c)=%-X0*%ET|Jz>2r&` zT<%pz^|0idELh(gaqKH<@vfKlA35ql_>YAI3#PK?(rmI*6JB~~zHzyQW7FqRw$yx{ zItSSKTV~MS$5fNa7ig$ZPxRZd2~?{@lE4%i?b$qc3`O{EIP2PEd0QT5Ej>kU|C-FP zx*gNPaYx9GHxZ0wLh~_8?rrZmSM|P92V=*Pu}@ymVZpRhAeHUgHJBGX=FVXAv%hf| zD0T0b{1z+uvo>aa8tAbw@&f8BqC++L3{VpnJzGcR`H!r8N4GsrVC1ly10{kTctL3=Jg9cy4HvCONDM^>$JW>m+Xly(4ZJ+Nr zF{PcQ#zN-M%+*V}CzT*xcw1tt&&Jptk72vRvREIG`Pg1nznc#;v!$z@9D%JJ9YqKO z9q7zS=lB65`$9x-FS~Gwn>gvP@{%Vy6OMmjEO1VtMfjzwx(3#32+KC<5xRx6y#)Ib zI89IcniF$UJ%YSc>#{gG>{U=5==qP=?)X8q^VAWaLPuF0T)=1JLAlVooQutmgG-9> zx;)0;2}yI@$HPmdpUBLwMaO8NsyQoF6i7=8PPP^WSpROH_9zhTo$N$<8XpG>jisL+ zfW(de6|z?)^j&OvxE%SY2RoO!)nGE=8@H;w(yHXR>ucNardl$D5&^?+@!a7nD9|kV0K_mPTFXjlnTr zhIeInnpr**uu)g2Pj9R7G>yBCN%~+3+kYn6*Q)oq>WV);$xI!eg?YFXE8QG7MQ~l7u@^mr zPC9Jc4F=kqw}?CS24sEIGG)-78ip{B8xUU2-cCj>n_BiK9v5Ab-S`18$RO1+Zo6 zPdXrg34n$bhbJv5T+vphEQ&!b$G6_?oqp72*6!w^wOf66#nmbIK|{^M*{9e1?4S2k zz=2#jtF)&(_(-zvnZLxH6wNm&sZ}?*__qVml>ScPN z+hu`|Cnb|oT}mpzgKYeM4-p+m{4u%X(4L@7lC@P$!M&EE1&JJ{%oKn91eZ?19o0jf41!)r0%N&CocC*!2c|=sk`jh!!fL$m0jVpsO2!xL_Uqgo03Per&`{dU(MM3>)?+= z8{?VFf`+wOKEsKlLHx&vCWOenxyPSVDFRc|!!;{0$9l_N>)xrg>_8cMaXP+I8P1u$ zGyO#E{QV3*j&Cy3c^As!E{N&1M+pZ1k;LT)-OAgT!MRvSSHNJtjY@Ay?d^AG-{{IN;@_Wpt@j71<}|K? zC&I!Nlyr}*{wR=jUPy+>g}`JG(Im0o&!Yp=Ss1c)qEc?U+=3Gba|G@41rD0_C9a&_ z?uv)ir}4Z5oi(|Ibhp-9L%cGqIO^dRx}$UoSA9wG&8Q5sjj#3&^;MZ{#7;D2IB^={ z(Q?JKpPcJMI}g-I3oMDJ)JDAVs-$7yQH{doBeP1CW2_ds=R-WR3)+Z@o7eR}wq@53Mt%&LZW36A9~I z{wgehN?M0A>_t1TzTppt?oURl?fY@EVbl{~7lM|JMV<1+V~fj| zowdz6=M?xz<3V>O@p_aEMmdMQ%bgGHBmmcjF93n#b{j{3px+_QTmS+6_Gvpb8h z7d%TiE14)9tcBTjq0PK@&(CkzJNG)ytWbzPxF~bxmzw}QZI+>;O#CL`&Ef}J=F8s5%t%Gp5fh&{E+8piWtYPcVRBNzCs4Y;;jcOi4I2Zi?J>Sn%}bM6sX* zDC`&8RXkcD36b~GA_q)#cj-?Yj$2+@o4$Zc`rxa9@xS6ahjM{rz2S+?zh z6V~s^{J@Y!aNI)*Ukgn`pwF$aN6Nm?*E!VFv`@$Mo6cKTCmYR+pSGt=35GWv8ksKs z93BsTC6Ngb4E!WUVAEy}ITGH04*~Sr!|YFY+ELjhIfdhCmp`5wfLw|Q?Xa1FDT=>r zp5HiL-#%4E_A_-aFkO}4<4}yod2$Po-u`gQZhNCsZ20`WL#iIbXp`6g>BIb{4XDY( z1CFQ^6BElOP-em$ z*X7L6jv=c-4+A~5PgDaFj9bto?bV&WRtufgPx%6p#v^ckH$^}Dq|5EXTQNwhfcI0|Zikdyd^Zo9tA`43F8008)An@SQZp`_@Cj;`1(1Ei!?Wb;z*oK=qOm=q zcw}%N3fwURGAn|dkG+czBAbB5GA@^46la@1bk|_!vVhe-;CbYFr}90&5ex)aD|0VA z0#tkoFqS=zD*tn}#4$A-q!uzL&YMpQ@=vfln(cf*w02*7T3p=zOus)05nCg+L>c>> zC%){_xVlfy&r4;0NveT&Vd$WIcPTWnOwOcsZ5_B1-naT1SJ`@*2X zXI}o5-*u)^1iZ6>aW7oVXO{PufcI~z$IJT`9c*dMbH`bXROyuio3t2+K7ARW!+ov9*`1UA`#A?K7)(xBd zEKqJ{6{CZUk2jR=>3DA04VXDE8f)M1*&b~HO&xR{q3szYg|wWx2uK>&u&xmaC4qBa z$3??=FDW0=7piv~1fU2| z%+^wtuPCpTR_W*JR{hvou*k1dwT>WH9wy{qMNy`VdOhvJs%rlOS1;sOM zexUm1d8zRD%1kItmaC{^fs;Q$z#MEHn4?Hv&&|_jmMw;U9W)9;6+eS+twoT9{O%3G zHekw)DT=!XpOHKJvRwIozF#GGhIrsCexW`6M|<1fT&gI|uCxfpNI%$klcC{H4>Z#X z+s_({OJ!*7tagWi)-4~9KyW2FiC=S?wkm}bFI)e<<^7~=Vrir#r(rEx&nIUD=_p&G zY-yzbtT3z5sD;ajQ}Tm(ih2Z4Ap!=e#RWQ==X3v3sg|0gETAz9zT*<9U-1Bar zL;&{a7)xi-$q~S9Zrrw^2B(Ey1j%I(|4-}jy&DXtn0|3ddqS>5U#2{Ed2y@58JMl= zqia$>)#?O>MHln$V5Ix!7KsvuQ%!*G_PQplDviY%>c6?&@$NWPn>iR8dOJ-#ujYo$ zLWY9zmwxvXlDr_AuBiOWvBcRq4=k1(KNaDn2cT`h-Mbqmd1%a>j6zy==7)(HsOQ{n zy5n0rJlMhY#{7DVk0O_!#PDTv7r`JO-d5+3(cY(s@?Krlscwg?T&zxpTuP5?vedEj@<#OZA6~?{(l;xUIi6mq2?w!gVYBYw>jId-xL7{mq+|~60P68!22{WL&P+j0 zpI)3T5NMn6STr_Ks!7ix?x3&tb-K(#$=INkEyc}z%ww;`*vNW^URQL|@faBRfJ8So z>y=Idx{VG;xGZQNPRR^sA3v9jtnTKqEi_>Ww(|55;PL_ap5`-7Nfsk>o$>wJtp`%@ zvuk~O4@Hq;fH5lOh`q77^c!T}Us1s1<^E?-vWQ;s-vXrlVLhAP{?~DRP1P$4Y#J@a zsaU^hs5(32UdV07Xf>4sV1O133J5xiRNSBw_o@VHFyHjDRUAhwLNK)MK}&0g!W`au zwIJZRw5~=NDA4dC#7t;2u}YUqBmKQSA^}dD}J8!zuOA8FCBc{g22@_*MQ2ItY}R za2@JBdtfhZH;|?7@8=`y+QvfGyr1X+;t6fIc=l&H7rr#7MQ>%NdXA+LrDb4D|Oy5z9@2lI)S;?LgizBVPMOZ>?;eBAd z?*qp}xVW12qK13JAeX%yo~$w0Nr(4bU?>Be9$NIb-ghI4iPQB+R zi23FguS$-`WU<6(Ra8q4lNS^Ggi9UuGf9il3N3Gwx&#fPEEO#^xBHaX*Y1{Y^S)E` z1A_J|6f{&Tr!13Upf!-}W2UE<#JB}_s`LRFAL)B@Yijb_XdZT?4?$d`gd9CHle0x2 zAz~bWjk&d3Yi~`~S}=~ex%sC1V0+?S# zE!XChf%XG9ciu$4vnT^ISiM4xeXF6V8(AY2ksMRC|IG2rQzuLCH;=4oHh>|_F2W%_ z$@m-_g*?0F0x%HzYdS~ZM z#Gk+u`hkTP4DhVsO*&lS0BFCqJ}-q7fxh3&%ZI- zY>7IjS|+UMxi!;`vvh!mgVF_zv)7@s0eTUTf)csWm3GOT6g_>AF*X77I=zv4q%f&nlDm%aZ}kA+SUlE1Zrx|#q~((V?ULi=X-PpN_$hUYzr zW*Bf8Pq3&zS4AjJU-7+FukI8+s7qks-OJpJ)>kz=pDJzQO8NF439`qTVVxNJ!Y{X2 zRcbDC$@w(k`)TNs??t!oZpC(Apm?PfmoJx;#Ozng&AI~DOt7@xAF45z&`0it6~0y7 zgKsZ9!Et+S2tWw}qLEG0Kpoab)d1xl0Z?VDMSj5#ohZ1Dja_T$6rtqyUA&(CqF2bl zzBanXy!(Z)=EeOkaV3ycC?Eg;ONfUybBfvTiR;<7B0u=POEel|b`=I0%6w_it<1mU z!(q9jqz6wemnhT?dAk2jw#wc^1V=ONfH4-xf9ivOw!FA`?>@WJUCy>&ev*QFc>K%) zoL-VX@+{0ecau~50-|up0C+|yS#`?uQ&F5k;(GR_IdiA=?N7{UP`?A&rrs}C1*H9S zx2VxSa6;jyuiu_jLETK+Hgva?!q)T2C&dnoN-f7nS=c(xe~^^VtG(K%AZuRK?5)nl zQdtrckYe!;6pDaT2l$_Lzyzod! zZ9D-iFZ^y`o|qHUTot`JTg%Qj-+2f@{HjPs z-$z2%*C_ZhWYFJt z=#Mttf`82c!=9{BgQz=Y4gB3@FYP$jDBy;rb! zK zTZMEoPhFJ+s|Yx#!i7T;0EMtw%SR>;-y~?v78Y8%pe%m-$nskVJfEqY{g| z09rU87zLK@YypE{Ckj>e5Hc@A~Tz+J|J5?J0Q=+m|4Vevi z^n^@Z&XE12_w(kSqJIKZ*{i6WT;Rt$(D4>7s2l5RysVzLEd@LDdSty&RqjR5xuF>E z8Ye5q`YuOw8*PyE&T%y*JhLo26M)($oNjX1alHDIKglk&l0!! z$3sg@^rJHMtZFsYEEHL0b6N2t(imJ~(0ty9v#K~At%bd&oysrVzxv7Q&X-$XVmSfw zIv&40b=qq5onm3owORK=ibby+j7Rp$&^Y2R9krm$vrRgsK~#Cj=r3wWw(~z)lmD*^ z7JgaenI?`rsom)_(m0uiM_L}Jr{j>n-n=&|6wKis{(ZZ7xGhI!5K$Z9Aj$4_+3k z?FaG-@W%Ox;h=S*;=H=`!Q+g;tNi-k%+XID|NDh1KXxzpHJF$>er#@T7LV%d>#N`Y zlj)+?zZshw{{DBP_q*R2xV`)2#%G~$i?zLdX z`HO|rrA9$uaQEZ_gZMV(xUGalH%rU5I^nH@7GsZ2+V1?$y)wsX+>tGrEw;jY*UfQ( zD(Upr0xV>>%B1@Ep+Rxsj4=;q*wuN{g%Rta(bf_c`7gM6v-0E}EvWap9)yshnrED= zD_jQq(wdvdIJhQ!Mus_ML%yXx*u%TKz8;#NxVX_o2%)67)K!KpJ!A++ObxhB>sZi& z8oKB9pyPE(M$i>HP7}ZJqoBF(tU%jZ6!C!g(jnBlD6MH;S_)dsvwA_P%)6*{|9s*B zWuCv>Q(ewJ{%Avnz??qa5p+2)6xV0jWL-bnnOXCQq=^vNgNT*{Je^-iYCGB@HoAt{ zcwQG>vaEKsUa^uIY2RT(tvA0lim_apUDpsLT8SBnmceRUv&>!g=*dPoW~wB4d^eP} z@?`pS*zTK2%5E1r_4qaFpah<|dWDJUT}(kiK@RsZCLt9ti|#xVP&%4V(_fa_37edR zwVzWL%UwJ}Jjl!FoJsY>%{+NBsu&x%J&BpLhtEW_`^3`M{|v8zU_%KXtzest#$Ns% zGsOvLoc?XzG0TSW+VM`FddUP&>}V%wh0GS&YWtNicW^;kdC(RrTI9ewqlVF#ImNFT z!|Y=$7=us0pS!JpJBhC~4L4p(=**~>O6B3<DT)eCS^tQ-aLeB9qy+&9B#OlV*;`un;%O@CTKP^vkk!3GX+bZ0;YFH2Q3onMcAmJ zLv7lz==EvaSHjPCJd5Yoicv+}NV{A)Xs2s)RM92t&}(B&lod}6W?aQaMyPZGn|z@V zv8+1&h@NA3M&5z=IL?o~gF2F&1<|h9Xz!hSP-Tv|A-crXq3DVzFgnQtt*0>fwmSlh z5PUsXCCTsvwe(Ed6)DJ&L`W8fC6$Sc@b>9B|CMXo1Fn`{ouKDJTp(Hah z3OvVeob^S~NB)!Q1G@Z84KZ^CWsk2HFGe8}1fe{aooL zTQSWyEMv6?Mt8@xq>NYDt&LKeWqd2U%qOrW6zan;hN+OO>l`T zx=6{OPHv%=#>I}F{K&ZCIbKc7=VRZx_R=RFjA;$)kLJYv&Td$!SAbVNDYdew#17Yt znLk`B-R`k9z85LG-&@;RnE=tQ^q$faBY!9`jQ0~105K^k&woG<(W&rULAKBA z&efy!bmeXpr1^` z7mF8*5zFdDmmg=fR=-uNEGcl4GCbBQECb^@jG_Zt+t1qTHoh5L{>c;by|q$*(%#oJTaIce zA5R+?*l(#TFRv!GYS>wcU_xvbc_j)V;>I(TB6-wZ;kZ!k*UQGP-R^8HH7(pyoJya^B(8}dXurE z_tLlJ_*t7}_z@9}#O>`U1j1ykKa$7g11dq7k_lKI9W+??47Z@AX<0AMJ?USrJ$xt_ z(e39mr3c|a?s(Hxq?dXwemB^C0xGuV1u!pgnxsmaF2njr@>mY(^$x{_Jo&@uE z&vz)Zni*wI*_(_r0wJ%BnL`F6W}Z7LSngdEzwC+#baNGEgbbvdWYXHTmq+wnw(**D zqdblBe(QJmX(f@aF{_WRU1DMT&7GfGiZY63cC5`3Z|s#r9M&6i8q3y^D?CA;f1}3v zq#Za_r$MwfUmda`eSH>{May~Y52sOfP3msI9xx2~W&}y+yYg5Q`;J zkM=#p74DC?=v=U~p{cRw(tPc&Ev1U+a2pJb~q9G1$6II4B6+ZjqgT(l-_5Gz! zVG6X>v8T(c7_Dwg%Is$1O0kY#-HURS^*qnckUHctPX{=9#}l)?X@cX1F|~890bYYd zB-?VtXIyce#rAJmRQGmJWo1gACN5EUHjxx%ghGBYH&^X;P16q+>ArDFHN~;8b@;kIyhdZrgL`?wjn16CvpM# zArZ7Ux-)OYapcMAD&?P>`8+55CQqi4#@~6qeKz78oQMcCfE;IMp?L zBG%QvJ(#K^h!xwLxBjSNuky`2_akJ6o}H98qt+EXzaD#6^RNkcge7|IgOa~dbE^!JeciuA)nz{^D-DO zY^s&$-qcq=p$IDF)24aE(OzoT%Z5XbE-iR{fU6{;SuoJaQo@?FG4X96cKUnH3a(ap zBXHJ9Fl@CSe$Yk{KTa_@*Ou~DZG&DL* zwA(2BIn!F$Ms9sbJ^W~0%jfDC@#~j(4xURLb;78ki-O*3%A(Ya74SrMGqk{4(Xm?_ z$<$7V4)P)CYpOA^L^{~bTsYR9685RKR{-RF3_inpc&F`TaIqF>0GdzV$_;G~q);D533+oXzyZgI>EQ)Am+9tv2*aT0it3vHcv?j0hk;yg)6jrIkqH zHFw*x;kyqU3He_4@tQ>0bxS8G=Laz<3 zNQ4hA6Ann4s3i+XSjVDv9|NV%j+XCjKpdIB5g9Gw$W!PD_P{9iI2x+Y@R%jCdDdSz z+D{vHGtq79_QPx2DLiG2(|&D$8^1ngoSa7!-M7-s;+i*TykVY^+8RY`E^}0rh&GGc zAOr`GKd2i&3%fW+4hPaiSVTQjK5Bh)epAkv71i zOL&iN%NjJP+%v;vev5tirCP_lzr;E|#MWo~24miU2;5FOrGVV| zQto-IH86`r?U3enwNj0Y$`-Tee~(KKr|(q3Pytu*aDdypwPR2l3AR4RyHN>=!SuDY zgYACyz~Ip_xzHWABKy%4my|TI7ExdC72@C!z`K@CZtQA+0zfb_|ubv37>|scL|3@*B0T3$-*l7G{BvF}W0)XJa@8 zrFPM-rh#_jnYRQ^s&Y;X^ie)QMlKf-KJk~QDJCf_0-O5JMxR6!2An_A+uwxdk?euDpc>&v>RvY4SN9AxV z23A*5bN7!G(&la@EIp(ujvvi-c!&k4FTi2N=fb5r+?q_@2m|qQ@Hls#f+pC}Qe4u< z<&yF$*}|(FOZE`F_Jbi>?JrU!lq11{HcL|&pe&f5P>+@9& z{wLib-Zu9@E37Ww1dA_Cjyab2ZcHXNdO6NlyZC#4tS3L;X*L7U$!=@+Yh{U2`?~+C zFV=K!V3zbiX*vm?C|gmI!gZzsO{}a=(L~IJ8pu8`NKQyjHg-Zg>I>7*XETsn418|0 zDlLPZ0rjx4BQ=C)I>&oy>ZzYw{1VZ^yyC|ui1kZg>0KvKc4W_YzS=0Yb(e^BE1VTi zjmU7tHM``7*IJ2oZF<}L2V#x5U$ZAyA1{U{*tJxX{|Y)rwJ_$)w>z59^IY&@U@0Nx zCFcn0dz-~px|&N zZ1O?}V`@0hPM|VC9Sn-2dor`dbnA%a`qUc$hnD-jq^CoQiyQz%9n>`PUTa={-d(Xz z`z>t5BIR~OC0OQc)HYr>-U)uLtmoHFm5}$vjcJsiLzw4+>p5^kPZ>Kqfg8#)oNInx ztOU@~ap5=AN`QLHN>}fydSiz>P;*Z&O7x3tgauQ`af-8zL9nW!r*m*;VrV*N zv6!(#5N5FU`UKbCJhVZLbEY!c%d477y+_{~9?M|@TIgL`qQ(C3vQG-K+)Bm@Dd-yd zBmxqC1zXi2jN6&tM)shQX2 z3Sx&HFg$9>i`$@KL{V>Hac{3pE~k+bv*ojUP{v7%+ey$j&gGU4xpGxT(Jo^CY#CE6 zE=reCyxeVL2f1~8>dkuqembuZ~OM?fKg($lpRTaC5Q||bVfUf zwtd47flFe7{t0&75W0@%EfD(i??kNF?0Z7zn7^x26mt z=z&&Xi|1@_W4MPY>2UAfV&ZJi4!$Ks8ztRQAAbd0f=TF4)c@23Z`+3qun-Dx^KZ{I zd~Lt~+kobl%iW5;N+Z=!s-Peh+KN7VTh^))h81fHH!l$4&K5<%`~tR~qmwsRY*?hR z+5LhMCB~?QBiY}vR`3-|Rgauo;2GVwBQe&}7yY(e^pNM^7{NJuR~}y(w7=y{V9oW- z&|^%y5zky)TnZwXn9lrcjhCR|+pZOVbTqqE-7=q6f^N6qDMPPJNbS?MNX7jWYSsRD z{hdJSajRz#L0#%6cnv})!r8CABEmrB!j8^u>;NBG$>^-}!w@i5&3xAA?np=wh9o53 zpB@xe?Cs+@CBtpe&E9n3#}}Wm71r=WCEZ*-yU%6N0ZmB()4N79?Mq{{QKDG=;ch@B z67Ry;)n#`^_!Y6AiRp0CRLaV3cIfG@-y{r@>>+f8WL2v>*Vj3P^(1H+mH8|Aeb(EB zl_w*1{`f;w)IPH2+cyuM_o-dIZ%*`nsxWSrvwLg8a@YJZn3hQ6MNMGRU%1MHx#GP^gSwPV#i}99yJ(ZC@8NN6p@9`xGa%BrV^L zQm9s0lpd505SSDQH~Pu*VKK)YrKO%1Ft}93(TAeU0K9hd_V>6Y!?`Z38nq9|H)?;I zJw6od52idwsQyK8^Ydm&3?B1}9D4N!1F5V z%Md$6;#qe#d9oz3&~B96C_pSX?)X$Kc0}8rnYGHrLA|%l>I-3kby?shUg&0my>=S@ z9IDPu;c|6VP4QU?JM!iCOmmx8uOScL%_dS@c`7zm7PZ1>Bd}I_B)k*UMNy&#VzANp z19NJuv7A`zSC;1P8jk)z2M`#r5D9I{y`KDXMs1Iad87|J=0gvQ(*%{`YEn<&(Dh4c zW<+nN6V$HL{TcYLtlx{ZPLA+~S=2xV0G}kxjO%7`0Z;8t0~Et-IU8Qgi1W&K&{Yf$ zfcok3*?=97LVH3uhGKO)GIRNZ3^tTDxmQusBp855oMLC`Np5eVAcj$;Nwtujke~%O zeg#v%+mMo0B0MN_OciwC7H9A~*APB-_!8tm)O)9dny_arI4ty3Q2dbMC z_VB}i>O{J^i>Zuh7e_82^{CtNRBo3!{+7|bFzdRwnJoHWoJxSX5jyG@EeZBYSQRI4 zN1kYE$>w>$ig*zE$N5~8OPrbCozB#{p0-h*NlDbTN*q{iFWSkYzfniAGTg>?Kh z8cA<}YXPRa8%;{Ku;rvFi;5yJVuTiPn$?p=KwM#?}Hs7S4h39eCt> z9n|(qpT@!d1Lg4L4^jcS2@wQ>9%8%xs@J9k1e9*Gvf#E4cW1=70YO1;$KQ`3?}X5`El|KwvJGTw~w;Z_bPYNLBmOUo+7+!4uks5&Und`)3-jYC5AGF)r?&UnWtf<(Kk^JRWyvzuoZbQEg33dcFjik1WEkFFn zdznF_GJuF{AcNjBV`Hd*JrzM@NKbcjVxn(Q8ApM zTvrk<%5vCge@t=fVBPUDU@v)Q#s?M?e^%qGUNYu`2L1VbgcSQ2%Z1KUZHUAf0yj^G z@piO5wRuvwkAeR#Ff89Dys5^9>m3=+Gng36DP@PfrKh zXkQoQaVF7yZ_l3+2M}!rl72-SZR~FA&yw^Pb5y5qgRzADzmUrE?N#756T(m%D5 zG}U){OI1#awXP3ZZt%Z-C9|`=C4V|REcfntrSxG_oaoAOL*-1HTMhB44W9Vh%59Hr7zk_g!r+((;ui;p^I^)pnNJlXik_`jJ+*h`xms1 zFre8qcykfA{HSp?pSH!%*GIl#i{~Ae@9Er=A=M;1z%cj3gXI`Jt1GQ#JvKe1RXw(l z#F&Bd+&=*qEEH$rAk!8g_mlJ7`zo#zf`Qe>KS2)yH9?ut3j>91`{(hpWd%tH=$pt5 zdlv@ohGwL7R!V?+%c3ilUq%X6m*7J<`6?fVY8}`I#i&)sMor5)o^Cr_Z@(5B4TzYq z_j^6nL5Qb9k#@^=aWze2W`2`uy)X&qfykGoiDxRf>j-ymwk7*RyaRKSm5W;ipO}NW z=GYxtfl@2;R^gnd$>G9*`nFQeK3rB9|3nhMzW>%AND?yxvnxGU{c5f3T2j=u-3#Uy zBRB&?p>m?~Vqu?6ZbzQGWYGjesrbFL8APaJC3mZS2!v4yg{70rUpdPBy6A>2BpmD= zK7KsZL6!nUiXeSq2ASFb_t&x_=ZMdI12cc7w0KK)!%I#y)IrFa$p15f$ulT#st)yr?Bjo}8VPhbMHp&L2jkp}{ zaqzA0MUVjrCetF~?=zT__Xj3jbcjFK%ck9*rZ)i?rJgQ+?s4GPc| zuB8N?&!Cniyu$qAGK((?t|QYqL(^@7HsodSt>yaBLEOgi2P4zd!*!J@dC)3T-HK8`S)ZX$$U8yy^6 zuRrL+QUecih|$5$JM`k9oLlRCho!Qms3f$OpEpRfc_o|PYp@-oH-1<%yROG^%dRx* z*4?F;{g4xFATvZSE-sp*^Kx^OylybvvCvIYu=SJ%OSe8oLE1mn3~H9^=bGIX14Wp# z{mq1(Kgvi*Eo3JKLC1zTj@UIggwR7+z1)UIjfUy=@gHwt_1}W;DqpFaDF^@@BkV{PSNv0VbyZ zoi~-h;|=xL7_gCXj2{JzosSr=|D9v}zrO@j&M&V7lMu&$WNOa?)#2ys`mb&D!0&f> z8AZu|%bQ1^I#|Jro#e>GM7r%sFi(wpb(O_S8+ey!{PndpD`Z2y1RLcR!fco#7LoEQKq zPZ|8&z7q8E|5v}se`;6xWkO+$p`@t)5H&vi+dhN;#VPpzFnx4C*qe%MU1gjYyiES5 z&t^{k)t(LBcje?lDBA-A1AoT+gDG79-!^#sZ=9F^%Uq8v6Y9v}{ { console.log('Output :', result); @@ -54,7 +65,7 @@ function deleteCluster() { //Create a Node pool function createNodePool() { - let clusterID = 12345; + let clusterID = 127044; let poolDetails = { type: 'g6-standard-4', count: 6, @@ -78,8 +89,8 @@ function createNodePool() { //Delete a node pool function deleteNodePool() { - let nodePoolID = 12345; - let clusterID = 456; + let nodePoolID = 188341; + let clusterID = 127044; kubernetes.deleteNodePool(clusterID, nodePoolID).then( result => { console.log('Output :', result); @@ -92,8 +103,8 @@ function deleteNodePool() { //Get details of Node Pools function getNodePool() { - let nodePoolID = 12345; - let clusterID = 456; + let nodePoolID = 188341; + let clusterID = 127044; kubernetes.getNodePool(clusterID, nodePoolID).then( result => { console.log('Output :', result); @@ -106,7 +117,7 @@ function getNodePool() { //Get all Nodepools function getNodePools() { - let clusterID = 12345; + let clusterID = 127044; kubernetes.getNodePools(clusterID).then( result => { console.log('Output :', result); diff --git a/examples/database/linode-sql.js b/examples/database/linode-sql.js index 91286b09..e9a8f0f0 100644 --- a/examples/database/linode-sql.js +++ b/examples/database/linode-sql.js @@ -8,16 +8,13 @@ const ncProviders = nodeCloud.getProviders(optionsProvider); const linodeSql = ncProviders.linode.sql(); function createDatabase() { + const engine = 'mysql'; const dbParams = { label: 'example-db', region: 'us-east', type: 'g6-dedicated-2', - cluster_size: 3, engine: 'mysql/8.0.26', - encrypted: false, - ssl_connection: true, replication_type: 'semi_synch', - allow_list: ['203.0.113.1', '192.0.1.0/24'], }; // create database @@ -45,7 +42,7 @@ function listDatabases() { //delete a Database function deleteDatabase() { - const engine = 'mysql/8.0.26'; + const engine = 'mysql'; const dbId = 12345; linodeSql .deleteDatabase(engine, dbId) @@ -58,7 +55,7 @@ function deleteDatabase() { } //update a Database function updateDatabase() { - const engine = 'mysql/8.0.26'; + const engine = 'mysql'; const dbId = 12345; const updateData = { label: 'example-db', diff --git a/examples/images/linode-images.js b/examples/images/linode-images.js new file mode 100644 index 00000000..dd61a061 --- /dev/null +++ b/examples/images/linode-images.js @@ -0,0 +1,70 @@ +const nodeCloud = require('../../lib/'); +const optionsProvider = { + overrideProviders: false, +}; +const ncProviders = nodeCloud.getProviders(optionsProvider); + +const images = ncProviders.linode.images(); + +function createImage() { + const diskId = 123; + const label = 'this_is_a_label'; + const description = 'A longer description of the image'; + images + .createImage(diskId, label, description) + .then(result => { + console.log('Volumes are: ', result); + }) + .catch(err => { + console.log('Error is: ', err); + }); +} + +function updateImage() { + const imageId = 123; + const label = 'this_is_a_new_label'; + const description = 'A new longer description of the image'; + images + .updateImage(imageId, label, description) + .then(result => { + console.log('Volumes are: ', result); + }) + .catch(err => { + console.log('Error is: ', err); + }); +} + +function deleteImage() { + const imageId = 123; + images + .deleteImage(details) + .then(result => { + console.log('Output is: ', result); + }) + .catch(err => { + console.log('Error is: ', err); + }); +} + +function getImage() { + const imageId = 1234; + images + .getImage(imageId) + .then(result => { + console.log('Output is: ', result); + }) + .catch(err => { + console.log('Error is: ', err); + }); +} + +function listImages() { + images + .getImages() + .then(result => { + console.log('Output is: ', result); + }) + .catch(err => { + console.log('Error is: ', err); + }); +} diff --git a/examples/network/linode-dns.js b/examples/network/linode-dns.js index bd72728e..deef064f 100644 --- a/examples/network/linode-dns.js +++ b/examples/network/linode-dns.js @@ -9,7 +9,7 @@ const dns = ncProviders.linode.dns(); // Create a DNS Domain function createDomain() { let domainCreateOptions = { - domain: 'example.com', + domain: 'scorelab.com', type: 'master', soa_email: 'admin@example.com', description: 'Example Description', @@ -72,7 +72,7 @@ function deleteDomain() { function updateDomain() { let recordID = 3352896; let options = { - domain: 'example.com', + domain: 'scorelab.com', type: 'master', soa_email: 'admin@example.com', description: 'Example Description', @@ -86,7 +86,7 @@ function updateDomain() { group: 'Example Display Group', tags: ['tag1', 'tag2'], }; - updateDomain(recordID, options) + dns.updateDomain(recordID, options) .then(result => { console.log('Output is: ', result); }) diff --git a/examples/network/linode-lb.js b/examples/network/linode-lb.js index c596f0e2..43af4742 100644 --- a/examples/network/linode-lb.js +++ b/examples/network/linode-lb.js @@ -11,41 +11,7 @@ function create() { region: 'us-east', label: 'balancer12345', client_conn_throttle: 0, - configs: [ - { - port: 443, - protocol: 'https', - algorithm: 'roundrobin', - stickiness: 'http_cookie', - check: 'http_body', - check_interval: 90, - check_timeout: 10, - check_attempts: 3, - check_path: '/test', - check_body: 'it works', - check_passive: true, - proxy_protocol: 'none', - cipher_suite: 'recommended', - ssl_cert: - '-----BEGIN CERTIFICATE-----\nCERTIFICATE_INFORMATION\n-----END CERTIFICATE-----', - ssl_key: - '-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY_INFORMATION\n-----END PRIVATE KEY-----', - nodes: [ - { - address: '192.168.210.120:80', - label: 'node1', - weight: 50, - mode: 'accept', - }, - { - address: '192.168.210.122:81', - label: 'node2', - weight: 50, - mode: 'accept', - }, - ], - }, - ], + configs: [], }; lb.create(options) @@ -85,43 +51,9 @@ function updateLoadBalancer() { let lbId = 4954884; let options = { region: 'us-east', - label: 'balancer12345', + label: 'newbalancer12345', client_conn_throttle: 0, - configs: [ - { - port: 443, - protocol: 'https', - algorithm: 'roundrobin', - stickiness: 'http_cookie', - check: 'http_body', - check_interval: 90, - check_timeout: 10, - check_attempts: 3, - check_path: '/test', - check_body: 'it works', - check_passive: true, - proxy_protocol: 'none', - cipher_suite: 'recommended', - ssl_cert: - '-----BEGIN CERTIFICATE-----\nCERTIFICATE_INFORMATION\n-----END CERTIFICATE-----', - ssl_key: - '-----BEGIN PRIVATE KEY-----\nPRIVATE_KEY_INFORMATION\n-----END PRIVATE KEY-----', - nodes: [ - { - address: '192.168.210.120:80', - label: 'node1', - weight: 50, - mode: 'accept', - }, - { - address: '192.168.210.122:81', - label: 'node2', - weight: 50, - mode: 'accept', - }, - ], - }, - ], + configs: [], }; lb.update(lbId, options) .then(result => { diff --git a/examples/storage/linode-objectStorage.js b/examples/storage/linode-objectStorage.js new file mode 100644 index 00000000..03e355ad --- /dev/null +++ b/examples/storage/linode-objectStorage.js @@ -0,0 +1,62 @@ +const nodeCloud = require('../../lib/'); +const optionsProvider = { + overrideProviders: false, +}; +const ncProviders = nodeCloud.getProviders(optionsProvider); + +const objectStorage = ncProviders.linode.objectStorage(); + +function createBucket() { + const details = { + label: 'nodecloud-bucket', + cluster: 'us-east-1', + cors_enabled: true, + }; + objectStorage + .create(details) + .then(result => { + console.log('Volumes are: ', result); + }) + .catch(err => { + console.log('Error is: ', err); + }); +} + +function deleteBucket() { + const details = { + cluster: 'us-east-1', + label: 'nodecloud-bucket', + }; + objectStorage + .delete(details) + .then(result => { + console.log('Output is: ', result); + }) + .catch(err => { + console.log('Error is: ', err); + }); +} + +function getBucket() { + const clusterId = 'us-east-1'; + const bucketName = 'nodecloud-bucket'; + objectStorage + .get(clusterId, bucketName) + .then(result => { + console.log('Output is: ', result); + }) + .catch(err => { + console.log('Error is: ', err); + }); +} + +function listBuckets() { + objectStorage + .list() + .then(result => { + console.log('Output is: ', result); + }) + .catch(err => { + console.log('Error is: ', err); + }); +} diff --git a/generator/README.md b/generator/README.md index 39a7ac6e..864154c8 100644 --- a/generator/README.md +++ b/generator/README.md @@ -23,7 +23,7 @@ The execution of the generator starts form the `main.ts` file, where the basic i ## Structure of `node-cloud.yml` file -- AWS +- AWS ``` AWS: @@ -35,7 +35,7 @@ AWS:

-- Azure +- Azure ``` Azure: @@ -47,7 +47,7 @@ Azure:

-- Google Cloud (client based) +- Google Cloud (client based) ``` GCP: @@ -67,7 +67,7 @@ GCP:

-- Google Cloud (class based) +- Google Cloud (class based) ``` GCP: @@ -82,7 +82,7 @@ GCP: For the class-based SDKs there is a minor change in the `node-cloud.yml` to record the main class of an SDK. For the above scenario, it’s the DNS class. -- Digital Ocean +- Digital Ocean ``` DO: @@ -94,11 +94,13 @@ DO:

-- Oracle +- Oracle + ``` Oracle: create: containerengine createCluster ``` +

@@ -108,12 +110,13 @@ Oracle: Oracle: createKey: keymanagement createKey KmsManagementClient ``` +

-- Linode +- Linode ``` Linode: @@ -121,17 +124,16 @@ Linode: ``` +

- ## Code parsers This is the simplest part of the code generation tool. The SDK files are read from the relevant SDKs as specified in the `node-cloud.yml` file. Afterwards, it is converted to an **Abstract Syntax Tree**. Finally, the class declaration Node of that **Abstract Syntax Tree** is returned in case of SDKs which are class based,for SDKs like Linode which are function based we collect the FirstStatement nodes in an array which represent the exported arrow function declaration. This retured Node is another **Abstract Syntax Tree** since a class declaration itself is another **Abstract Syntax Tree**. - ## Data extraction functions These functions are located in the generators of the each cloud providers. Each data extration function has a unique logic depending on the **Abstract Syntax Tree** of a SDK class. The goal here is to extract all the data required to generate the new JavaScript class. At the end it is retured as `classData`. The data extration function collects imports, clients, method parameters, types of parameters, method return types and package names. Additionally, class relationships are identified in the Google Cloud data extraction function for the Google Cloud class based transformer. @@ -140,11 +142,11 @@ These functions are located in the generators of the each cloud providers. Each This is the most important part of the code generator tool. Currently, there are four transformers. Two transformers for Google Cloud, and one each for AWS and Azure. All of the transformers runs three main transformations. -- `addFunctions`: In this transformation the basic structure of the code is created. Method Nodes are created to the number of functions in the `classData` object. If there are imports related to the class those statments are also added to the dummy **Abstract Syntax Tree**. +- `addFunctions`: In this transformation the basic structure of the code is created. Method Nodes are created to the number of functions in the `classData` object. If there are imports related to the class those statments are also added to the dummy **Abstract Syntax Tree**. -- `addIdentifiers`: In this transformation all the Identifier nodes are updated. After this transformation the code is logically compelete. All the neccessary code parts are added and finalized such as parameter names, parameter types, client names, class name, package names, SDK function names etc. +- `addIdentifiers`: In this transformation all the Identifier nodes are updated. After this transformation the code is logically compelete. All the neccessary code parts are added and finalized such as parameter names, parameter types, client names, class name, package names, SDK function names etc. -- `addComments`: This transformation aims to auto-generate the API documentation. All the comments are added to the structure required by `JSDoc`. The `@category` is used to categorize the generated classes depending on the cloud provider. This tag is from the `better-docs` template used with `JSDoc`. +- `addComments`: This transformation aims to auto-generate the API documentation. All the comments are added to the structure required by `JSDoc`. The `@category` is used to categorize the generated classes depending on the cloud provider. This tag is from the `better-docs` template used with `JSDoc`. ## Understanding the directory structure of generator @@ -170,4 +172,4 @@ transformer which transforms the dummy class into an working Nodecloud class for ## Running the code generation tool -- To build classes run `tsc main && node main` or 'yarn run tool' if inside generator directory and `yarn run generator` if inside nodecloud directory. +- To build classes run `tsc main && node main` or 'yarn run tool' if inside generator directory and `yarn run generator` if inside nodecloud directory. diff --git a/packages/linode-plugin/compute/linode-kubernetes.js b/packages/linode-plugin/compute/linode-kubernetes.js index 34e3ef4c..0656b2c6 100644 --- a/packages/linode-plugin/compute/linode-kubernetes.js +++ b/packages/linode-plugin/compute/linode-kubernetes.js @@ -12,6 +12,21 @@ class Linode_Kubernetes { constructor(linodeSdk, linodeToken) { this._linode = linodeSdk; this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getKubernetesClusters function of KubernetesLinodeClass + * @param {Params} params - Data required for getKubernetesClusters + * @param {Filter} filters - Data required for getKubernetesClusters + * @returns {Promise} + */ + getAllClusters(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getKubernetesClusters(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); } /** * Trigers the createKubernetesCluster function of KubernetesLinodeClass @@ -19,7 +34,6 @@ class Linode_Kubernetes { * @returns {Promise} */ create(data) { - this._linode.setToken(this._linodeToken); return new Promise((resolve, reject) => { this._linode .createKubernetesCluster(data) @@ -33,7 +47,6 @@ class Linode_Kubernetes { * @returns {Promise} */ delete(clusterID) { - this._linode.setToken(this._linodeToken); return new Promise((resolve, reject) => { this._linode .deleteKubernetesCluster(clusterID) @@ -41,6 +54,21 @@ class Linode_Kubernetes { .catch(err => reject(err)); }); } + /** + * Trigers the getNodePools function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for getNodePools + * @param {Params} params - Data required for getNodePools + * @param {Filter} filters - Data required for getNodePools + * @returns {Promise} + */ + getNodePools(clusterID, params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getNodePools(clusterID, params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } /** * Trigers the getNodePool function of KubernetesLinodeClass * @param {NumberKeyword} clusterID - Data required for getNodePool @@ -48,7 +76,6 @@ class Linode_Kubernetes { * @returns {Promise} */ getNodePool(clusterID, nodePoolID) { - this._linode.setToken(this._linodeToken); return new Promise((resolve, reject) => { this._linode .getNodePool(clusterID, nodePoolID) @@ -63,7 +90,6 @@ class Linode_Kubernetes { * @returns {Promise} */ createNodePool(clusterID, data) { - this._linode.setToken(this._linodeToken); return new Promise((resolve, reject) => { this._linode .createNodePool(clusterID, data) @@ -79,7 +105,6 @@ class Linode_Kubernetes { * @returns {Promise} */ updateNodePool(clusterID, nodePoolID, data) { - this._linode.setToken(this._linodeToken); return new Promise((resolve, reject) => { this._linode .updateNodePool(clusterID, nodePoolID, data) @@ -94,7 +119,6 @@ class Linode_Kubernetes { * @returns {Promise} */ deleteNodePool(clusterID, nodePoolID) { - this._linode.setToken(this._linodeToken); return new Promise((resolve, reject) => { this._linode .deleteNodePool(clusterID, nodePoolID) diff --git a/packages/linode-plugin/database/linode-noSql.js b/packages/linode-plugin/database/linode-RDBMS.js similarity index 80% rename from packages/linode-plugin/database/linode-noSql.js rename to packages/linode-plugin/database/linode-RDBMS.js index fe19e6e0..6dc5e55e 100644 --- a/packages/linode-plugin/database/linode-noSql.js +++ b/packages/linode-plugin/database/linode-RDBMS.js @@ -1,9 +1,9 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a NoSqlLinodeClass object + * Class to create a RDBMSLinodeClass object * @category Linode */ -class Linode_NoSql { +class Linode_RDBMS { /** * * @param {module} do Linode SDK @@ -12,15 +12,15 @@ class Linode_NoSql { constructor(linodeSdk, linodeToken) { this._linode = linodeSdk; this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); } /** - * Trigers the getDatabases function of NoSqlLinodeClass + * Trigers the getDatabases function of RDBMSLinodeClass * @param {Params} params - Data required for getDatabases * @param {Filter} filter - Data required for getDatabases * @returns {Promise} */ getDatabases(params = undefined, filter = undefined) { - this._linode.setToken(this._linodeToken); return new Promise((resolve, reject) => { this._linode .getDatabases(params, filter) @@ -29,13 +29,12 @@ class Linode_NoSql { }); } /** - * Trigers the getDatabaseEngines function of NoSqlLinodeClass + * Trigers the getDatabaseEngines function of RDBMSLinodeClass * @param {Params} params - Data required for getDatabaseEngines * @param {Filter} filter - Data required for getDatabaseEngines * @returns {Promise} */ getDatabaseEngines(params = undefined, filter = undefined) { - this._linode.setToken(this._linodeToken); return new Promise((resolve, reject) => { this._linode .getDatabaseEngines(params, filter) @@ -44,13 +43,12 @@ class Linode_NoSql { }); } /** - * Trigers the createDatabase function of NoSqlLinodeClass + * Trigers the createDatabase function of RDBMSLinodeClass * @param {UnionType} engine - Data required for createDatabase * @param {CreateDatabasePayload} data - Data required for createDatabase * @returns {Promise} */ createDatabase(engine, data) { - this._linode.setToken(this._linodeToken); return new Promise((resolve, reject) => { this._linode .createDatabase(engine, data) @@ -59,13 +57,12 @@ class Linode_NoSql { }); } /** - * Trigers the getEngineDatabase function of NoSqlLinodeClass + * Trigers the getEngineDatabase function of RDBMSLinodeClass * @param {Engine} engine - Data required for getEngineDatabase * @param {NumberKeyword} databaseID - Data required for getEngineDatabase * @returns {Promise} */ getEngineDatabase(engine, databaseID) { - this._linode.setToken(this._linodeToken); return new Promise((resolve, reject) => { this._linode .getEngineDatabase(engine, databaseID) @@ -74,14 +71,13 @@ class Linode_NoSql { }); } /** - * Trigers the updateDatabase function of NoSqlLinodeClass + * Trigers the updateDatabase function of RDBMSLinodeClass * @param {Engine} engine - Data required for updateDatabase * @param {NumberKeyword} databaseID - Data required for updateDatabase * @param {UpdateDatabasePayload} data - Data required for updateDatabase * @returns {Promise} */ updateDatabase(engine, databaseID, data) { - this._linode.setToken(this._linodeToken); return new Promise((resolve, reject) => { this._linode .updateDatabase(engine, databaseID, data) @@ -90,13 +86,12 @@ class Linode_NoSql { }); } /** - * Trigers the deleteDatabase function of NoSqlLinodeClass + * Trigers the deleteDatabase function of RDBMSLinodeClass * @param {Engine} engine - Data required for deleteDatabase * @param {NumberKeyword} databaseID - Data required for deleteDatabase * @returns {Promise} */ deleteDatabase(engine, databaseID) { - this._linode.setToken(this._linodeToken); return new Promise((resolve, reject) => { this._linode .deleteDatabase(engine, databaseID) @@ -105,4 +100,4 @@ class Linode_NoSql { }); } } -module.exports = Linode_NoSql; +module.exports = Linode_RDBMS; diff --git a/packages/linode-plugin/linode.js b/packages/linode-plugin/linode.js index 464c32f8..fa81e8e9 100644 --- a/packages/linode-plugin/linode.js +++ b/packages/linode-plugin/linode.js @@ -1,11 +1,13 @@ const computeInstance = require('./compute/linode-computeInstance'); const kubernetes = require('./compute/linode-kubernetes'); -const noSql = require('./database/linode-noSql'); +const sql = require('./database/linode-RDBMS'); const loadBalancer = require('./network/linode-loadBalancer'); const linodeDns = require('./network/linode-DNS'); const volume = require('./storage/linode-blockStorage'); const images = require('./images/linode-images'); const firewalls = require('./firewalls/linode-firewalls'); +const objectStorage = require('./storage/linode-storageBucket'); +const monitoring = require('./management/linode-monitoring'); class Linode { constructor(linodeSdk) { this._linodeSdk = linodeSdk; @@ -20,10 +22,12 @@ class Linode { blockStorage: this.volume, loadBalancer: this.loadBalancer, dns: this.linodeDns, - noSql: this.noSql, + sql: this.sql, kubernetes: this.kubernetes, firewalls: this.firewalls, images: this.images, + objectStorage: this.objectStorage, + monitoring: this.monitoring, }; } @@ -33,8 +37,8 @@ class Linode { kubernetes() { return new kubernetes(this.getSDK(), this.getToken()); } - noSql() { - return new noSql(this.getSDK(), this.getToken()); + sql() { + return new sql(this.getSDK(), this.getToken()); } linodeDns() { return new linodeDns(this.getSDK(), this.getToken()); @@ -51,5 +55,11 @@ class Linode { firewalls() { return new firewalls(this.getSDK(), this.getToken()); } + objectStorage() { + return new objectStorage(this.getSDK(), this.getToken()); + } + monitoring() { + return new monitoring(this.getSDK(), this.getToken()); + } } module.exports = Linode; diff --git a/packages/linode-plugin/storage/linode-storageBucket.js b/packages/linode-plugin/storage/linode-storageBucket.js new file mode 100644 index 00000000..5b3b0741 --- /dev/null +++ b/packages/linode-plugin/storage/linode-storageBucket.js @@ -0,0 +1,101 @@ +/*This is an auto generated class, please do not change.*/ +/** + * Class to create a StorageBucketLinodeClass object + * @category Linode + */ +class Linode_StorageBucket { + /** + * + * @param {module} do Linode SDK + * @param {object} options SDK options + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getBucket function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for getBucket + * @param {StringKeyword} bucketName - Data required for getBucket + * @returns {Promise} + */ + get(clusterId, bucketName) { + return new Promise((resolve, reject) => { + this._linode + .getBucket(clusterId, bucketName) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getBuckets function of StorageBucketLinodeClass + * @param {Params} params - Data required for getBuckets + * @param {Filter} filters - Data required for getBuckets + * @returns {Promise} + */ + list(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getBuckets(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createBucket function of StorageBucketLinodeClass + * @param {ObjectStorageBucketRequestPayload} data - Data required for createBucket + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode + .createBucket(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteBucket function of StorageBucketLinodeClass + * @param {ObjectStorageDeleteBucketRequestPayload} {cluster,label} - Data required for deleteBucket + * @returns {Promise} + */ + delete({ cluster, label }) { + return new Promise((resolve, reject) => { + this._linode + .deleteBucket({ cluster, label }) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getBucketAccess function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for getBucketAccess + * @param {StringKeyword} bucketName - Data required for getBucketAccess + * @returns {Promise} + */ + getBucketAccess(clusterId, bucketName) { + return new Promise((resolve, reject) => { + this._linode + .getBucketAccess(clusterId, bucketName) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateBucketAccess function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for updateBucketAccess + * @param {StringKeyword} bucketName - Data required for updateBucketAccess + * @param {ObjectStorageBucketAccessRequest} data - Data required for updateBucketAccess + * @returns {Promise} + */ + updateBucketAccess(clusterId, bucketName, data) { + return new Promise((resolve, reject) => { + this._linode + .updateBucketAccess(clusterId, bucketName, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } +} +module.exports = Linode_StorageBucket; From b097c86c139657f440358afc6001c25555165104 Mon Sep 17 00:00:00 2001 From: Partik SIngh Date: Mon, 28 Aug 2023 00:57:58 +0530 Subject: [PATCH 5/6] Changed the linode and oracle dummy class Signed-off-by: Partik SIngh --- examples/database/linode-sql.js | 3 +- generator/dummyClasses/linode.js | 4 +- generator/dummyClasses/oracle.js | 7 +- .../DO/storage/do-archivalStorage.js | 72 ---- .../Linode/compute/linode-computeInstance.js | 130 ++++--- .../Linode/compute/linode-kubernetes.js | 242 ++++++------ .../Linode/database/linode-RDBMS.js | 190 +++++----- .../Linode/firewalls/linode-firewalls.js | 205 +++++----- .../Linode/images/linode-images.js | 193 +++++----- .../Linode/management/linode-monitoring.js | 259 +++++++------ .../Linode/network/linode-DNS.js | 182 +++++---- .../Linode/network/linode-loadBalancer.js | 130 ++++--- .../Linode/storage/linode-blockStorage.js | 130 ++++--- .../Linode/storage/linode-storageBucket.js | 186 +++++---- .../Oracle/blockchain/oci-blockChain.js | 278 +++++++------- .../Oracle/compute/oci-computeInstance.js | 253 ++++++------- .../Oracle/compute/oci-container.js | 178 +++++---- .../Oracle/compute/oci-kubernetes.js | 278 +++++++------- .../Oracle/database/oci-RDBMS.js | 203 +++++----- .../Oracle/database/oci-noSql.js | 225 ++++++----- .../Oracle/devops/oci-devops.js | 353 +++++++++--------- .../Oracle/management/oci-keyManagement.js | 128 +++---- .../management/oci-notificationService.js | 128 +++---- .../Oracle/network/oci-DNS.js | 125 +++---- .../Oracle/network/oci-loadBalancer.js | 153 ++++---- .../Oracle/storage/oci-archivalStorage.js | 128 +++---- .../Oracle/storage/oci-blockStorage.js | 128 +++---- .../Oracle/storage/oci-storageBucket.js | 153 ++++---- .../compute/linode-computeInstance.js | 133 ++++--- .../compute/linode-kubernetes.js | 242 ++++++------ .../linode-plugin/database/linode-RDBMS.js | 190 +++++----- .../firewalls/linode-firewalls.js | 211 +++++------ .../linode-plugin/images/linode-images.js | 198 +++++----- .../management/linode-monitoring.js | 267 +++++++------ packages/linode-plugin/network/linode-DNS.js | 187 +++++----- .../network/linode-loadBalancer.js | 133 ++++--- .../storage/linode-blockStorage.js | 133 ++++--- .../storage/linode-storageBucket.js | 186 +++++---- .../oracle-plugin/compute/oci-kubernetes.js | 278 +++++++------- packages/oracle-plugin/database/oci-RDBMS.js | 203 +++++----- packages/oracle-plugin/database/oci-noSql.js | 225 ++++++----- packages/oracle-plugin/devops/oci-devops.js | 353 +++++++++--------- .../management/oci-keyManagement.js | 128 +++---- .../management/oci-notificationService.js | 128 +++---- packages/oracle-plugin/network/oci-DNS.js | 125 +++---- .../oracle-plugin/network/oci-loadBalancer.js | 153 ++++---- .../storage/oci-archivalStorage.js | 128 +++---- .../oracle-plugin/storage/oci-blockStorage.js | 128 +++---- .../storage/oci-storageBucket.js | 153 ++++---- 49 files changed, 4047 insertions(+), 4479 deletions(-) delete mode 100644 generator/generatedClasses/DO/storage/do-archivalStorage.js diff --git a/examples/database/linode-sql.js b/examples/database/linode-sql.js index e9a8f0f0..ed48bacc 100644 --- a/examples/database/linode-sql.js +++ b/examples/database/linode-sql.js @@ -13,8 +13,9 @@ function createDatabase() { label: 'example-db', region: 'us-east', type: 'g6-dedicated-2', - engine: 'mysql/8.0.26', + engine: 'mysql/8.0.30', replication_type: 'semi_synch', + }; // create database diff --git a/generator/dummyClasses/linode.js b/generator/dummyClasses/linode.js index f83f7bf1..3982cd47 100644 --- a/generator/dummyClasses/linode.js +++ b/generator/dummyClasses/linode.js @@ -1,8 +1,8 @@ class ClassName { /** * - * @param {module} do Linode SDK - * @param {object} options SDK options + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token */ constructor(linodeSdk, linodeToken) { this._linode = linodeSdk; diff --git a/generator/dummyClasses/oracle.js b/generator/dummyClasses/oracle.js index 34cdfbef..cc7dece5 100644 --- a/generator/dummyClasses/oracle.js +++ b/generator/dummyClasses/oracle.js @@ -1,12 +1,13 @@ class ClassName { /** * - * @param {module} do Oracle SDK - * @param {object} options SDK options + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration */ constructor(ocisdk, params, clientConfiguration) { this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.SDKClassName( + this._sdkClassName = this._oci.SDKClassName( params, clientConfiguration ); diff --git a/generator/generatedClasses/DO/storage/do-archivalStorage.js b/generator/generatedClasses/DO/storage/do-archivalStorage.js deleted file mode 100644 index 9ce3d3ff..00000000 --- a/generator/generatedClasses/DO/storage/do-archivalStorage.js +++ /dev/null @@ -1,72 +0,0 @@ -/*This is an auto generated class, please do not change.*/ -/** - * Class to create a ObjectStorageClient object - * @category Oracle Cloud - */ -class Oracle_ArchivalStorage { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk; - this._sdkclassName = this._oci.objectStorageClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createBucket function of ObjectStorageClient - * @param {CreateBucketRequest} createBucketRequest - Data required for createBucket - * @returns {Promise} - */ - create(createBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .createBucket(createBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteBucket function of ObjectStorageClient - * @param {DeleteBucketRequest} deleteBucketRequest - Data required for deleteBucket - * @returns {Promise} - */ - delete(deleteBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .deleteBucket(deleteBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listBuckets function of ObjectStorageClient - * @param {ListBucketsRequest} listBucketsRequest - Data required for listBuckets - * @returns {Promise} - */ - list(listBucketsRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .listBuckets(listBucketsRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateBucket function of ObjectStorageClient - * @param {UpdateBucketRequest} updateBucketRequest - Data required for updateBucket - * @returns {Promise} - */ - update(updateBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .updateBucket(updateBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } -} -module.exports = Oracle_ArchivalStorage; diff --git a/generator/generatedClasses/Linode/compute/linode-computeInstance.js b/generator/generatedClasses/Linode/compute/linode-computeInstance.js index 1c04aa1b..bfba842e 100644 --- a/generator/generatedClasses/Linode/compute/linode-computeInstance.js +++ b/generator/generatedClasses/Linode/compute/linode-computeInstance.js @@ -1,72 +1,68 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ComputeInstanceLinodeClass object - * @category Linode - */ + * Class to create a ComputeInstanceLinodeClass object + * @category Linode + */ class Linode_ComputeInstance { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getLinodes function of ComputeInstanceLinodeClass - * @param {Params} params - Data required for getLinodes - * @param {Filter} filter - Data required for getLinodes - * @returns {Promise} - */ - list(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getLinodes(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createLinode function of ComputeInstanceLinodeClass - * @param {CreateLinodeRequest} data - Data required for createLinode - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode - .createLinode(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateLinode function of ComputeInstanceLinodeClass - * @param {NumberKeyword} linodeId - Data required for updateLinode - * @param {DeepPartial} values - Data required for updateLinode - * @returns {Promise} - */ - update(linodeId, values) { - return new Promise((resolve, reject) => { - this._linode - .updateLinode(linodeId, values) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteLinode function of ComputeInstanceLinodeClass - * @param {NumberKeyword} linodeId - Data required for deleteLinode - * @returns {Promise} - */ - delete(linodeId) { - return new Promise((resolve, reject) => { - this._linode - .deleteLinode(linodeId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getLinodes function of ComputeInstanceLinodeClass + * @param {Params} params - Data required for getLinodes + * @param {Filter} filter - Data required for getLinodes + * @returns {Promise} + */ + list(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode.getLinodes(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createLinode function of ComputeInstanceLinodeClass + * @param {CreateLinodeRequest} data - Data required for createLinode + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode.createLinode(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateLinode function of ComputeInstanceLinodeClass + * @param {NumberKeyword} linodeId - Data required for updateLinode + * @param {DeepPartial} values - Data required for updateLinode + * @returns {Promise} + */ + update(linodeId, values) { + return new Promise((resolve, reject) => { + this._linode.updateLinode(linodeId, values) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteLinode function of ComputeInstanceLinodeClass + * @param {NumberKeyword} linodeId - Data required for deleteLinode + * @returns {Promise} + */ + delete(linodeId) { + return new Promise((resolve, reject) => { + this._linode.deleteLinode(linodeId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_ComputeInstance; diff --git a/generator/generatedClasses/Linode/compute/linode-kubernetes.js b/generator/generatedClasses/Linode/compute/linode-kubernetes.js index 0656b2c6..a7414df0 100644 --- a/generator/generatedClasses/Linode/compute/linode-kubernetes.js +++ b/generator/generatedClasses/Linode/compute/linode-kubernetes.js @@ -1,130 +1,122 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a KubernetesLinodeClass object - * @category Linode - */ + * Class to create a KubernetesLinodeClass object + * @category Linode + */ class Linode_Kubernetes { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getKubernetesClusters function of KubernetesLinodeClass - * @param {Params} params - Data required for getKubernetesClusters - * @param {Filter} filters - Data required for getKubernetesClusters - * @returns {Promise} - */ - getAllClusters(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getKubernetesClusters(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createKubernetesCluster function of KubernetesLinodeClass - * @param {CreateKubeClusterPayload} data - Data required for createKubernetesCluster - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode - .createKubernetesCluster(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteKubernetesCluster function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for deleteKubernetesCluster - * @returns {Promise} - */ - delete(clusterID) { - return new Promise((resolve, reject) => { - this._linode - .deleteKubernetesCluster(clusterID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getNodePools function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for getNodePools - * @param {Params} params - Data required for getNodePools - * @param {Filter} filters - Data required for getNodePools - * @returns {Promise} - */ - getNodePools(clusterID, params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getNodePools(clusterID, params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for getNodePool - * @param {NumberKeyword} nodePoolID - Data required for getNodePool - * @returns {Promise} - */ - getNodePool(clusterID, nodePoolID) { - return new Promise((resolve, reject) => { - this._linode - .getNodePool(clusterID, nodePoolID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for createNodePool - * @param {CreateNodePoolData} data - Data required for createNodePool - * @returns {Promise} - */ - createNodePool(clusterID, data) { - return new Promise((resolve, reject) => { - this._linode - .createNodePool(clusterID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for updateNodePool - * @param {NumberKeyword} nodePoolID - Data required for updateNodePool - * @param {Partial} data - Data required for updateNodePool - * @returns {Promise} - */ - updateNodePool(clusterID, nodePoolID, data) { - return new Promise((resolve, reject) => { - this._linode - .updateNodePool(clusterID, nodePoolID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for deleteNodePool - * @param {NumberKeyword} nodePoolID - Data required for deleteNodePool - * @returns {Promise} - */ - deleteNodePool(clusterID, nodePoolID) { - return new Promise((resolve, reject) => { - this._linode - .deleteNodePool(clusterID, nodePoolID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getKubernetesClusters function of KubernetesLinodeClass + * @param {Params} params - Data required for getKubernetesClusters + * @param {Filter} filters - Data required for getKubernetesClusters + * @returns {Promise} + */ + getAllClusters(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getKubernetesClusters(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createKubernetesCluster function of KubernetesLinodeClass + * @param {CreateKubeClusterPayload} data - Data required for createKubernetesCluster + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode.createKubernetesCluster(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteKubernetesCluster function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for deleteKubernetesCluster + * @returns {Promise} + */ + delete(clusterID) { + return new Promise((resolve, reject) => { + this._linode.deleteKubernetesCluster(clusterID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getNodePools function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for getNodePools + * @param {Params} params - Data required for getNodePools + * @param {Filter} filters - Data required for getNodePools + * @returns {Promise} + */ + getNodePools(clusterID, params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getNodePools(clusterID, params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for getNodePool + * @param {NumberKeyword} nodePoolID - Data required for getNodePool + * @returns {Promise} + */ + getNodePool(clusterID, nodePoolID) { + return new Promise((resolve, reject) => { + this._linode.getNodePool(clusterID, nodePoolID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for createNodePool + * @param {CreateNodePoolData} data - Data required for createNodePool + * @returns {Promise} + */ + createNodePool(clusterID, data) { + return new Promise((resolve, reject) => { + this._linode.createNodePool(clusterID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for updateNodePool + * @param {NumberKeyword} nodePoolID - Data required for updateNodePool + * @param {Partial} data - Data required for updateNodePool + * @returns {Promise} + */ + updateNodePool(clusterID, nodePoolID, data) { + return new Promise((resolve, reject) => { + this._linode.updateNodePool(clusterID, nodePoolID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for deleteNodePool + * @param {NumberKeyword} nodePoolID - Data required for deleteNodePool + * @returns {Promise} + */ + deleteNodePool(clusterID, nodePoolID) { + return new Promise((resolve, reject) => { + this._linode.deleteNodePool(clusterID, nodePoolID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_Kubernetes; diff --git a/generator/generatedClasses/Linode/database/linode-RDBMS.js b/generator/generatedClasses/Linode/database/linode-RDBMS.js index 6dc5e55e..25bfe893 100644 --- a/generator/generatedClasses/Linode/database/linode-RDBMS.js +++ b/generator/generatedClasses/Linode/database/linode-RDBMS.js @@ -1,103 +1,97 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a RDBMSLinodeClass object - * @category Linode - */ + * Class to create a RDBMSLinodeClass object + * @category Linode + */ class Linode_RDBMS { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getDatabases function of RDBMSLinodeClass - * @param {Params} params - Data required for getDatabases - * @param {Filter} filter - Data required for getDatabases - * @returns {Promise} - */ - getDatabases(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getDatabases(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDatabaseEngines function of RDBMSLinodeClass - * @param {Params} params - Data required for getDatabaseEngines - * @param {Filter} filter - Data required for getDatabaseEngines - * @returns {Promise} - */ - getDatabaseEngines(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getDatabaseEngines(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createDatabase function of RDBMSLinodeClass - * @param {UnionType} engine - Data required for createDatabase - * @param {CreateDatabasePayload} data - Data required for createDatabase - * @returns {Promise} - */ - createDatabase(engine, data) { - return new Promise((resolve, reject) => { - this._linode - .createDatabase(engine, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getEngineDatabase function of RDBMSLinodeClass - * @param {Engine} engine - Data required for getEngineDatabase - * @param {NumberKeyword} databaseID - Data required for getEngineDatabase - * @returns {Promise} - */ - getEngineDatabase(engine, databaseID) { - return new Promise((resolve, reject) => { - this._linode - .getEngineDatabase(engine, databaseID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateDatabase function of RDBMSLinodeClass - * @param {Engine} engine - Data required for updateDatabase - * @param {NumberKeyword} databaseID - Data required for updateDatabase - * @param {UpdateDatabasePayload} data - Data required for updateDatabase - * @returns {Promise} - */ - updateDatabase(engine, databaseID, data) { - return new Promise((resolve, reject) => { - this._linode - .updateDatabase(engine, databaseID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDatabase function of RDBMSLinodeClass - * @param {Engine} engine - Data required for deleteDatabase - * @param {NumberKeyword} databaseID - Data required for deleteDatabase - * @returns {Promise} - */ - deleteDatabase(engine, databaseID) { - return new Promise((resolve, reject) => { - this._linode - .deleteDatabase(engine, databaseID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getDatabases function of RDBMSLinodeClass + * @param {Params} params - Data required for getDatabases + * @param {Filter} filter - Data required for getDatabases + * @returns {Promise} + */ + getDatabases(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode.getDatabases(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDatabaseEngines function of RDBMSLinodeClass + * @param {Params} params - Data required for getDatabaseEngines + * @param {Filter} filter - Data required for getDatabaseEngines + * @returns {Promise} + */ + getDatabaseEngines(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode.getDatabaseEngines(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createDatabase function of RDBMSLinodeClass + * @param {UnionType} engine - Data required for createDatabase + * @param {CreateDatabasePayload} data - Data required for createDatabase + * @returns {Promise} + */ + createDatabase(engine, data) { + return new Promise((resolve, reject) => { + this._linode.createDatabase(engine, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getEngineDatabase function of RDBMSLinodeClass + * @param {Engine} engine - Data required for getEngineDatabase + * @param {NumberKeyword} databaseID - Data required for getEngineDatabase + * @returns {Promise} + */ + getEngineDatabase(engine, databaseID) { + return new Promise((resolve, reject) => { + this._linode.getEngineDatabase(engine, databaseID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateDatabase function of RDBMSLinodeClass + * @param {Engine} engine - Data required for updateDatabase + * @param {NumberKeyword} databaseID - Data required for updateDatabase + * @param {UpdateDatabasePayload} data - Data required for updateDatabase + * @returns {Promise} + */ + updateDatabase(engine, databaseID, data) { + return new Promise((resolve, reject) => { + this._linode.updateDatabase(engine, databaseID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDatabase function of RDBMSLinodeClass + * @param {Engine} engine - Data required for deleteDatabase + * @param {NumberKeyword} databaseID - Data required for deleteDatabase + * @returns {Promise} + */ + deleteDatabase(engine, databaseID) { + return new Promise((resolve, reject) => { + this._linode.deleteDatabase(engine, databaseID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_RDBMS; diff --git a/generator/generatedClasses/Linode/firewalls/linode-firewalls.js b/generator/generatedClasses/Linode/firewalls/linode-firewalls.js index d5f7f8ec..dca7266c 100644 --- a/generator/generatedClasses/Linode/firewalls/linode-firewalls.js +++ b/generator/generatedClasses/Linode/firewalls/linode-firewalls.js @@ -1,111 +1,104 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a FirewallsLinodeClass object - * @category Linode - */ + * Class to create a FirewallsLinodeClass object + * @category Linode + */ class Linode_Firewalls { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getFirewalls function of FirewallsLinodeClass - * @param {Params} params - Data required for getFirewalls - * @param {Filter} filter - Data required for getFirewalls - * @returns {Promise} - */ - getFirewalls(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getFirewalls(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for getFirewall - * @returns {Promise} - */ - getFirewall(firewallID) { - return new Promise((resolve, reject) => { - this._linode - .getFirewall(firewallID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createFirewall function of FirewallsLinodeClass - * @param {CreateFirewallPayload} data - Data required for createFirewall - * @returns {Promise} - */ - createFirewall(data) { - return new Promise((resolve, reject) => { - this._linode - .createFirewall(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for updateFirewall - * @param {UpdateFirewallPayload} data - Data required for updateFirewall - * @returns {Promise} - */ - updateFirewall(firewallID, data) { - return new Promise((resolve, reject) => { - this._linode - .updateFirewall(firewallID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the enableFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for enableFirewall - * @returns {Promise} - */ - enableFirewall(firewallID) { - return new Promise((resolve, reject) => { - this._linode - .enableFirewall(firewallID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the disableFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for disableFirewall - * @returns {Promise} - */ - disableFirewall(firewallID) { - return new Promise((resolve, reject) => { - this._linode - .disableFirewall(firewallID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for deleteFirewall - * @returns {Promise} - */ - deleteFirewall(firewallID) { - return new Promise((resolve, reject) => { - this._linode - .deleteFirewall(firewallID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getFirewalls function of FirewallsLinodeClass + * @param {Params} params - Data required for getFirewalls + * @param {Filter} filter - Data required for getFirewalls + * @returns {Promise} + */ + getFirewalls(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode.getFirewalls(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for getFirewall + * @returns {Promise} + */ + getFirewall(firewallID) { + return new Promise((resolve, reject) => { + this._linode.getFirewall(firewallID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createFirewall function of FirewallsLinodeClass + * @param {CreateFirewallPayload} data - Data required for createFirewall + * @returns {Promise} + */ + createFirewall(data) { + return new Promise((resolve, reject) => { + this._linode.createFirewall(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for updateFirewall + * @param {UpdateFirewallPayload} data - Data required for updateFirewall + * @returns {Promise} + */ + updateFirewall(firewallID, data) { + return new Promise((resolve, reject) => { + this._linode.updateFirewall(firewallID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the enableFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for enableFirewall + * @returns {Promise} + */ + enableFirewall(firewallID) { + return new Promise((resolve, reject) => { + this._linode.enableFirewall(firewallID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the disableFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for disableFirewall + * @returns {Promise} + */ + disableFirewall(firewallID) { + return new Promise((resolve, reject) => { + this._linode.disableFirewall(firewallID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for deleteFirewall + * @returns {Promise} + */ + deleteFirewall(firewallID) { + return new Promise((resolve, reject) => { + this._linode.deleteFirewall(firewallID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_Firewalls; diff --git a/generator/generatedClasses/Linode/images/linode-images.js b/generator/generatedClasses/Linode/images/linode-images.js index 2fc677ab..1be67ed1 100644 --- a/generator/generatedClasses/Linode/images/linode-images.js +++ b/generator/generatedClasses/Linode/images/linode-images.js @@ -1,107 +1,96 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ImagesLinodeClass object - * @category Linode - */ + * Class to create a ImagesLinodeClass object + * @category Linode + */ class Linode_Images { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getImage function of ImagesLinodeClass - * @param {StringKeyword} imageId - Data required for getImage - * @returns {Promise} - */ - getImage(imageId) { - return new Promise((resolve, reject) => { - this._linode - .getImage(imageId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getImages function of ImagesLinodeClass - * @param {Params} params - Data required for getImages - * @param {Filter} filters - Data required for getImages - * @returns {Promise} - */ - getImages(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getImages(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createImage function of ImagesLinodeClass - * @param {NumberKeyword} diskId - Data required for createImage - * @param {StringKeyword} label - Data required for createImage - * @param {StringKeyword} description - Data required for createImage - * @param {BooleanKeyword} cloud_init - Data required for createImage - * @returns {Promise} - */ - createImage( - diskId, - label = undefined, - description = undefined, - cloud_init = undefined - ) { - return new Promise((resolve, reject) => { - this._linode - .createImage(diskId, label, description, cloud_init) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateImage function of ImagesLinodeClass - * @param {StringKeyword} imageId - Data required for updateImage - * @param {StringKeyword} label - Data required for updateImage - * @param {StringKeyword} description - Data required for updateImage - * @returns {Promise} - */ - updateImage(imageId, label = undefined, description = undefined) { - return new Promise((resolve, reject) => { - this._linode - .updateImage(imageId, label, description) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteImage function of ImagesLinodeClass - * @param {StringKeyword} imageId - Data required for deleteImage - * @returns {Promise} - */ - deleteImage(imageId) { - return new Promise((resolve, reject) => { - this._linode - .deleteImage(imageId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the uploadImage function of ImagesLinodeClass - * @param {ImageUploadPayload} data - Data required for uploadImage - * @returns {Promise} - */ - uploadImage(data) { - return new Promise((resolve, reject) => { - this._linode - .uploadImage(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getImage function of ImagesLinodeClass + * @param {StringKeyword} imageId - Data required for getImage + * @returns {Promise} + */ + getImage(imageId) { + return new Promise((resolve, reject) => { + this._linode.getImage(imageId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getImages function of ImagesLinodeClass + * @param {Params} params - Data required for getImages + * @param {Filter} filters - Data required for getImages + * @returns {Promise} + */ + getImages(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getImages(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createImage function of ImagesLinodeClass + * @param {NumberKeyword} diskId - Data required for createImage + * @param {StringKeyword} label - Data required for createImage + * @param {StringKeyword} description - Data required for createImage + * @param {BooleanKeyword} cloud_init - Data required for createImage + * @returns {Promise} + */ + createImage(diskId, label = undefined, description = undefined, cloud_init = undefined) { + return new Promise((resolve, reject) => { + this._linode.createImage(diskId, label, description, cloud_init) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateImage function of ImagesLinodeClass + * @param {StringKeyword} imageId - Data required for updateImage + * @param {StringKeyword} label - Data required for updateImage + * @param {StringKeyword} description - Data required for updateImage + * @returns {Promise} + */ + updateImage(imageId, label = undefined, description = undefined) { + return new Promise((resolve, reject) => { + this._linode.updateImage(imageId, label, description) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteImage function of ImagesLinodeClass + * @param {StringKeyword} imageId - Data required for deleteImage + * @returns {Promise} + */ + deleteImage(imageId) { + return new Promise((resolve, reject) => { + this._linode.deleteImage(imageId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the uploadImage function of ImagesLinodeClass + * @param {ImageUploadPayload} data - Data required for uploadImage + * @returns {Promise} + */ + uploadImage(data) { + return new Promise((resolve, reject) => { + this._linode.uploadImage(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_Images; diff --git a/generator/generatedClasses/Linode/management/linode-monitoring.js b/generator/generatedClasses/Linode/management/linode-monitoring.js index 875b7917..bce2e4ca 100644 --- a/generator/generatedClasses/Linode/management/linode-monitoring.js +++ b/generator/generatedClasses/Linode/management/linode-monitoring.js @@ -1,139 +1,130 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a MonitoringLinodeClass object - * @category Linode - */ + * Class to create a MonitoringLinodeClass object + * @category Linode + */ class Linode_Monitoring { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getServices function of MonitoringLinodeClass - * @param {Params} params - Data required for getServices - * @param {Filter} filters - Data required for getServices - * @returns {Promise} - */ - getServices(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getServices(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the disableServiceMonitor function of MonitoringLinodeClass - * @param {NumberKeyword} serviceID - Data required for disableServiceMonitor - * @returns {Promise} - */ - disableServiceMonitor(serviceID) { - return new Promise((resolve, reject) => { - this._linode - .disableServiceMonitor(serviceID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the enableServiceMonitor function of MonitoringLinodeClass - * @param {NumberKeyword} serviceID - Data required for enableServiceMonitor - * @returns {Promise} - */ - enableServiceMonitor(serviceID) { - return new Promise((resolve, reject) => { - this._linode - .enableServiceMonitor(serviceID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteServiceMonitor function of MonitoringLinodeClass - * @param {NumberKeyword} serviceID - Data required for deleteServiceMonitor - * @returns {Promise} - */ - deleteServiceMonitor(serviceID) { - return new Promise((resolve, reject) => { - this._linode - .deleteServiceMonitor(serviceID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createServiceMonitor function of MonitoringLinodeClass - * @param {ManagedServicePayload} data - Data required for createServiceMonitor - * @returns {Promise} - */ - createServiceMonitor(data) { - return new Promise((resolve, reject) => { - this._linode - .createServiceMonitor(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateServiceMonitor function of MonitoringLinodeClass - * @param {NumberKeyword} monitorID - Data required for updateServiceMonitor - * @param {Partial} data - Data required for updateServiceMonitor - * @returns {Promise} - */ - updateServiceMonitor(monitorID, data) { - return new Promise((resolve, reject) => { - this._linode - .updateServiceMonitor(monitorID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getCredentials function of MonitoringLinodeClass - * @param {Params} params - Data required for getCredentials - * @param {Filter} filters - Data required for getCredentials - * @returns {Promise} - */ - getCredentials(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getCredentials(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateCredential function of MonitoringLinodeClass - * @param {NumberKeyword} credentialID - Data required for updateCredential - * @param {UpdateCredentialPayload} data - Data required for updateCredential - * @returns {Promise} - */ - updateCredential(credentialID, data) { - return new Promise((resolve, reject) => { - this._linode - .updateCredential(credentialID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteCredential function of MonitoringLinodeClass - * @param {NumberKeyword} credentialID - Data required for deleteCredential - * @returns {Promise} - */ - deleteCredential(credentialID) { - return new Promise((resolve, reject) => { - this._linode - .deleteCredential(credentialID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getServices function of MonitoringLinodeClass + * @param {Params} params - Data required for getServices + * @param {Filter} filters - Data required for getServices + * @returns {Promise} + */ + getServices(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getServices(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the disableServiceMonitor function of MonitoringLinodeClass + * @param {NumberKeyword} serviceID - Data required for disableServiceMonitor + * @returns {Promise} + */ + disableServiceMonitor(serviceID) { + return new Promise((resolve, reject) => { + this._linode.disableServiceMonitor(serviceID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the enableServiceMonitor function of MonitoringLinodeClass + * @param {NumberKeyword} serviceID - Data required for enableServiceMonitor + * @returns {Promise} + */ + enableServiceMonitor(serviceID) { + return new Promise((resolve, reject) => { + this._linode.enableServiceMonitor(serviceID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteServiceMonitor function of MonitoringLinodeClass + * @param {NumberKeyword} serviceID - Data required for deleteServiceMonitor + * @returns {Promise} + */ + deleteServiceMonitor(serviceID) { + return new Promise((resolve, reject) => { + this._linode.deleteServiceMonitor(serviceID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createServiceMonitor function of MonitoringLinodeClass + * @param {ManagedServicePayload} data - Data required for createServiceMonitor + * @returns {Promise} + */ + createServiceMonitor(data) { + return new Promise((resolve, reject) => { + this._linode.createServiceMonitor(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateServiceMonitor function of MonitoringLinodeClass + * @param {NumberKeyword} monitorID - Data required for updateServiceMonitor + * @param {Partial} data - Data required for updateServiceMonitor + * @returns {Promise} + */ + updateServiceMonitor(monitorID, data) { + return new Promise((resolve, reject) => { + this._linode.updateServiceMonitor(monitorID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getCredentials function of MonitoringLinodeClass + * @param {Params} params - Data required for getCredentials + * @param {Filter} filters - Data required for getCredentials + * @returns {Promise} + */ + getCredentials(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getCredentials(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateCredential function of MonitoringLinodeClass + * @param {NumberKeyword} credentialID - Data required for updateCredential + * @param {UpdateCredentialPayload} data - Data required for updateCredential + * @returns {Promise} + */ + updateCredential(credentialID, data) { + return new Promise((resolve, reject) => { + this._linode.updateCredential(credentialID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteCredential function of MonitoringLinodeClass + * @param {NumberKeyword} credentialID - Data required for deleteCredential + * @returns {Promise} + */ + deleteCredential(credentialID) { + return new Promise((resolve, reject) => { + this._linode.deleteCredential(credentialID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_Monitoring; diff --git a/generator/generatedClasses/Linode/network/linode-DNS.js b/generator/generatedClasses/Linode/network/linode-DNS.js index 6871defd..ce3dc8a0 100644 --- a/generator/generatedClasses/Linode/network/linode-DNS.js +++ b/generator/generatedClasses/Linode/network/linode-DNS.js @@ -1,99 +1,93 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a DNSLinodeClass object - * @category Linode - */ + * Class to create a DNSLinodeClass object + * @category Linode + */ class Linode_DNS { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getDomains function of DNSLinodeClass - * @param {Params} params - Data required for getDomains - * @param {Filter} filter - Data required for getDomains - * @returns {Promise} - */ - getDomains(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getDomains(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDomain function of DNSLinodeClass - * @param {NumberKeyword} domainId - Data required for getDomain - * @returns {Promise} - */ - getDomain(domainId) { - return new Promise((resolve, reject) => { - this._linode - .getDomain(domainId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createDomain function of DNSLinodeClass - * @param {CreateDomainPayload} data - Data required for createDomain - * @returns {Promise} - */ - createDomain(data) { - return new Promise((resolve, reject) => { - this._linode - .createDomain(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateDomain function of DNSLinodeClass - * @param {NumberKeyword} domainId - Data required for updateDomain - * @param {UpdateDomainPayload} data - Data required for updateDomain - * @returns {Promise} - */ - updateDomain(domainId, data) { - return new Promise((resolve, reject) => { - this._linode - .updateDomain(domainId, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDomain function of DNSLinodeClass - * @param {NumberKeyword} domainId - Data required for deleteDomain - * @returns {Promise} - */ - deleteDomain(domainId) { - return new Promise((resolve, reject) => { - this._linode - .deleteDomain(domainId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the cloneDomain function of DNSLinodeClass - * @param {NumberKeyword} domainId - Data required for cloneDomain - * @param {CloneDomainPayload} data - Data required for cloneDomain - * @returns {Promise} - */ - cloneDomain(domainId, data) { - return new Promise((resolve, reject) => { - this._linode - .cloneDomain(domainId, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getDomains function of DNSLinodeClass + * @param {Params} params - Data required for getDomains + * @param {Filter} filter - Data required for getDomains + * @returns {Promise} + */ + getDomains(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode.getDomains(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDomain function of DNSLinodeClass + * @param {NumberKeyword} domainId - Data required for getDomain + * @returns {Promise} + */ + getDomain(domainId) { + return new Promise((resolve, reject) => { + this._linode.getDomain(domainId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createDomain function of DNSLinodeClass + * @param {CreateDomainPayload} data - Data required for createDomain + * @returns {Promise} + */ + createDomain(data) { + return new Promise((resolve, reject) => { + this._linode.createDomain(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateDomain function of DNSLinodeClass + * @param {NumberKeyword} domainId - Data required for updateDomain + * @param {UpdateDomainPayload} data - Data required for updateDomain + * @returns {Promise} + */ + updateDomain(domainId, data) { + return new Promise((resolve, reject) => { + this._linode.updateDomain(domainId, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDomain function of DNSLinodeClass + * @param {NumberKeyword} domainId - Data required for deleteDomain + * @returns {Promise} + */ + deleteDomain(domainId) { + return new Promise((resolve, reject) => { + this._linode.deleteDomain(domainId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the cloneDomain function of DNSLinodeClass + * @param {NumberKeyword} domainId - Data required for cloneDomain + * @param {CloneDomainPayload} data - Data required for cloneDomain + * @returns {Promise} + */ + cloneDomain(domainId, data) { + return new Promise((resolve, reject) => { + this._linode.cloneDomain(domainId, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_DNS; diff --git a/generator/generatedClasses/Linode/network/linode-loadBalancer.js b/generator/generatedClasses/Linode/network/linode-loadBalancer.js index 08b9315d..eb97ba0e 100644 --- a/generator/generatedClasses/Linode/network/linode-loadBalancer.js +++ b/generator/generatedClasses/Linode/network/linode-loadBalancer.js @@ -1,72 +1,68 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a LoadBalancerLinodeClass object - * @category Linode - */ + * Class to create a LoadBalancerLinodeClass object + * @category Linode + */ class Linode_LoadBalancer { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getNodeBalancers function of LoadBalancerLinodeClass - * @param {Params} params - Data required for getNodeBalancers - * @param {Filter} filters - Data required for getNodeBalancers - * @returns {Promise} - */ - list(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getNodeBalancers(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateNodeBalancer function of LoadBalancerLinodeClass - * @param {NumberKeyword} nodeBalancerId - Data required for updateNodeBalancer - * @param {Partial} data - Data required for updateNodeBalancer - * @returns {Promise} - */ - update(nodeBalancerId, data) { - return new Promise((resolve, reject) => { - this._linode - .updateNodeBalancer(nodeBalancerId, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createNodeBalancer function of LoadBalancerLinodeClass - * @param {CreateNodeBalancerPayload} data - Data required for createNodeBalancer - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode - .createNodeBalancer(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteNodeBalancer function of LoadBalancerLinodeClass - * @param {NumberKeyword} nodeBalancerId - Data required for deleteNodeBalancer - * @returns {Promise} - */ - delete(nodeBalancerId) { - return new Promise((resolve, reject) => { - this._linode - .deleteNodeBalancer(nodeBalancerId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getNodeBalancers function of LoadBalancerLinodeClass + * @param {Params} params - Data required for getNodeBalancers + * @param {Filter} filters - Data required for getNodeBalancers + * @returns {Promise} + */ + list(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getNodeBalancers(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateNodeBalancer function of LoadBalancerLinodeClass + * @param {NumberKeyword} nodeBalancerId - Data required for updateNodeBalancer + * @param {Partial} data - Data required for updateNodeBalancer + * @returns {Promise} + */ + update(nodeBalancerId, data) { + return new Promise((resolve, reject) => { + this._linode.updateNodeBalancer(nodeBalancerId, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createNodeBalancer function of LoadBalancerLinodeClass + * @param {CreateNodeBalancerPayload} data - Data required for createNodeBalancer + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode.createNodeBalancer(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteNodeBalancer function of LoadBalancerLinodeClass + * @param {NumberKeyword} nodeBalancerId - Data required for deleteNodeBalancer + * @returns {Promise} + */ + delete(nodeBalancerId) { + return new Promise((resolve, reject) => { + this._linode.deleteNodeBalancer(nodeBalancerId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_LoadBalancer; diff --git a/generator/generatedClasses/Linode/storage/linode-blockStorage.js b/generator/generatedClasses/Linode/storage/linode-blockStorage.js index 7d8ab850..63c16610 100644 --- a/generator/generatedClasses/Linode/storage/linode-blockStorage.js +++ b/generator/generatedClasses/Linode/storage/linode-blockStorage.js @@ -1,72 +1,68 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a BlockStorageLinodeClass object - * @category Linode - */ + * Class to create a BlockStorageLinodeClass object + * @category Linode + */ class Linode_BlockStorage { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getVolumes function of BlockStorageLinodeClass - * @param {Params} params - Data required for getVolumes - * @param {Filter} filters - Data required for getVolumes - * @returns {Promise} - */ - list(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getVolumes(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteVolume function of BlockStorageLinodeClass - * @param {NumberKeyword} volumeId - Data required for deleteVolume - * @returns {Promise} - */ - delete(volumeId) { - return new Promise((resolve, reject) => { - this._linode - .deleteVolume(volumeId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateVolume function of BlockStorageLinodeClass - * @param {NumberKeyword} volumeId - Data required for updateVolume - * @param {UpdateVolumeRequest} data - Data required for updateVolume - * @returns {Promise} - */ - update(volumeId, data) { - return new Promise((resolve, reject) => { - this._linode - .updateVolume(volumeId, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createVolume function of BlockStorageLinodeClass - * @param {VolumeRequestPayload} data - Data required for createVolume - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode - .createVolume(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getVolumes function of BlockStorageLinodeClass + * @param {Params} params - Data required for getVolumes + * @param {Filter} filters - Data required for getVolumes + * @returns {Promise} + */ + list(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getVolumes(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteVolume function of BlockStorageLinodeClass + * @param {NumberKeyword} volumeId - Data required for deleteVolume + * @returns {Promise} + */ + delete(volumeId) { + return new Promise((resolve, reject) => { + this._linode.deleteVolume(volumeId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateVolume function of BlockStorageLinodeClass + * @param {NumberKeyword} volumeId - Data required for updateVolume + * @param {UpdateVolumeRequest} data - Data required for updateVolume + * @returns {Promise} + */ + update(volumeId, data) { + return new Promise((resolve, reject) => { + this._linode.updateVolume(volumeId, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createVolume function of BlockStorageLinodeClass + * @param {VolumeRequestPayload} data - Data required for createVolume + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode.createVolume(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_BlockStorage; diff --git a/generator/generatedClasses/Linode/storage/linode-storageBucket.js b/generator/generatedClasses/Linode/storage/linode-storageBucket.js index 5b3b0741..6cdf3dfb 100644 --- a/generator/generatedClasses/Linode/storage/linode-storageBucket.js +++ b/generator/generatedClasses/Linode/storage/linode-storageBucket.js @@ -1,101 +1,95 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a StorageBucketLinodeClass object - * @category Linode - */ + * Class to create a StorageBucketLinodeClass object + * @category Linode + */ class Linode_StorageBucket { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getBucket function of StorageBucketLinodeClass - * @param {StringKeyword} clusterId - Data required for getBucket - * @param {StringKeyword} bucketName - Data required for getBucket - * @returns {Promise} - */ - get(clusterId, bucketName) { - return new Promise((resolve, reject) => { - this._linode - .getBucket(clusterId, bucketName) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getBuckets function of StorageBucketLinodeClass - * @param {Params} params - Data required for getBuckets - * @param {Filter} filters - Data required for getBuckets - * @returns {Promise} - */ - list(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getBuckets(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createBucket function of StorageBucketLinodeClass - * @param {ObjectStorageBucketRequestPayload} data - Data required for createBucket - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode - .createBucket(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteBucket function of StorageBucketLinodeClass - * @param {ObjectStorageDeleteBucketRequestPayload} {cluster,label} - Data required for deleteBucket - * @returns {Promise} - */ - delete({ cluster, label }) { - return new Promise((resolve, reject) => { - this._linode - .deleteBucket({ cluster, label }) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getBucketAccess function of StorageBucketLinodeClass - * @param {StringKeyword} clusterId - Data required for getBucketAccess - * @param {StringKeyword} bucketName - Data required for getBucketAccess - * @returns {Promise} - */ - getBucketAccess(clusterId, bucketName) { - return new Promise((resolve, reject) => { - this._linode - .getBucketAccess(clusterId, bucketName) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateBucketAccess function of StorageBucketLinodeClass - * @param {StringKeyword} clusterId - Data required for updateBucketAccess - * @param {StringKeyword} bucketName - Data required for updateBucketAccess - * @param {ObjectStorageBucketAccessRequest} data - Data required for updateBucketAccess - * @returns {Promise} - */ - updateBucketAccess(clusterId, bucketName, data) { - return new Promise((resolve, reject) => { - this._linode - .updateBucketAccess(clusterId, bucketName, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getBucket function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for getBucket + * @param {StringKeyword} bucketName - Data required for getBucket + * @returns {Promise} + */ + get(clusterId, bucketName) { + return new Promise((resolve, reject) => { + this._linode.getBucket(clusterId, bucketName) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getBuckets function of StorageBucketLinodeClass + * @param {Params} params - Data required for getBuckets + * @param {Filter} filters - Data required for getBuckets + * @returns {Promise} + */ + list(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getBuckets(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createBucket function of StorageBucketLinodeClass + * @param {ObjectStorageBucketRequestPayload} data - Data required for createBucket + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode.createBucket(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteBucket function of StorageBucketLinodeClass + * @param {ObjectStorageDeleteBucketRequestPayload} {cluster,label} - Data required for deleteBucket + * @returns {Promise} + */ + delete({ cluster, label }) { + return new Promise((resolve, reject) => { + this._linode.deleteBucket({ cluster, label }) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getBucketAccess function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for getBucketAccess + * @param {StringKeyword} bucketName - Data required for getBucketAccess + * @returns {Promise} + */ + getBucketAccess(clusterId, bucketName) { + return new Promise((resolve, reject) => { + this._linode.getBucketAccess(clusterId, bucketName) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateBucketAccess function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for updateBucketAccess + * @param {StringKeyword} bucketName - Data required for updateBucketAccess + * @param {ObjectStorageBucketAccessRequest} data - Data required for updateBucketAccess + * @returns {Promise} + */ + updateBucketAccess(clusterId, bucketName, data) { + return new Promise((resolve, reject) => { + this._linode.updateBucketAccess(clusterId, bucketName, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_StorageBucket; diff --git a/generator/generatedClasses/Oracle/blockchain/oci-blockChain.js b/generator/generatedClasses/Oracle/blockchain/oci-blockChain.js index b69a1a5e..50155811 100644 --- a/generator/generatedClasses/Oracle/blockchain/oci-blockChain.js +++ b/generator/generatedClasses/Oracle/blockchain/oci-blockChain.js @@ -1,150 +1,138 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a BlockchainPlatformClient object - * @category Oracle Cloud - */ + * Class to create a BlockchainPlatformClient object + * @category Oracle Cloud + */ class Oracle_BlockChain { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.BlockchainPlatformClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createBlockchainPlatform function of BlockchainPlatformClient - * @param {CreateBlockchainPlatformRequest} createBlockchainPlatformRequest - Data required for createBlockchainPlatform - * @returns {Promise} - */ - createBlockchainPlatform(createBlockchainPlatformRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient - .createBlockchainPlatform(createBlockchainPlatformRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createOsn function of BlockchainPlatformClient - * @param {CreateOsnRequest} createOsnRequest - Data required for createOsn - * @returns {Promise} - */ - createOsn(createOsnRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient - .createOsn(createOsnRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createPeer function of BlockchainPlatformClient - * @param {CreatePeerRequest} createPeerRequest - Data required for createPeer - * @returns {Promise} - */ - createPeer(createPeerRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient - .createPeer(createPeerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteBlockchainPlatform function of BlockchainPlatformClient - * @param {DeleteBlockchainPlatformRequest} deleteBlockchainPlatformRequest - Data required for deleteBlockchainPlatform - * @returns {Promise} - */ - deleteBlockchainPlatform(deleteBlockchainPlatformRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient - .deleteBlockchainPlatform(deleteBlockchainPlatformRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteOsn function of BlockchainPlatformClient - * @param {DeleteOsnRequest} deleteOsnRequest - Data required for deleteOsn - * @returns {Promise} - */ - deleteOsn(deleteOsnRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient - .deleteOsn(deleteOsnRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deletePeer function of BlockchainPlatformClient - * @param {DeletePeerRequest} deletePeerRequest - Data required for deletePeer - * @returns {Promise} - */ - deletePeer(deletePeerRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient - .deletePeer(deletePeerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getOsn function of BlockchainPlatformClient - * @param {GetOsnRequest} getOsnRequest - Data required for getOsn - * @returns {Promise} - */ - getOsn(getOsnRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient - .getOsn(getOsnRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listBlockchainPlatforms function of BlockchainPlatformClient - * @param {ListBlockchainPlatformsRequest} listBlockchainPlatformsRequest - Data required for listBlockchainPlatforms - * @returns {Promise} - */ - listBlockchainPlatforms(listBlockchainPlatformsRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient - .listBlockchainPlatforms(listBlockchainPlatformsRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listOsns function of BlockchainPlatformClient - * @param {ListOsnsRequest} listOsnsRequest - Data required for listOsns - * @returns {Promise} - */ - listOsns(listOsnsRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient - .listOsns(listOsnsRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listPeers function of BlockchainPlatformClient - * @param {ListPeersRequest} listPeersRequest - Data required for listPeers - * @returns {Promise} - */ - listPeers(listPeersRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient - .listPeers(listPeersRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._blockchainPlatformClient = this._oci.BlockchainPlatformClient(params, clientConfiguration); + } + /** + * Trigers the createBlockchainPlatform function of BlockchainPlatformClient + * @param {CreateBlockchainPlatformRequest} createBlockchainPlatformRequest - Data required for createBlockchainPlatform + * @returns {Promise} + */ + createBlockchainPlatform(createBlockchainPlatformRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient.createBlockchainPlatform(createBlockchainPlatformRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createOsn function of BlockchainPlatformClient + * @param {CreateOsnRequest} createOsnRequest - Data required for createOsn + * @returns {Promise} + */ + createOsn(createOsnRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient.createOsn(createOsnRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createPeer function of BlockchainPlatformClient + * @param {CreatePeerRequest} createPeerRequest - Data required for createPeer + * @returns {Promise} + */ + createPeer(createPeerRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient.createPeer(createPeerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteBlockchainPlatform function of BlockchainPlatformClient + * @param {DeleteBlockchainPlatformRequest} deleteBlockchainPlatformRequest - Data required for deleteBlockchainPlatform + * @returns {Promise} + */ + deleteBlockchainPlatform(deleteBlockchainPlatformRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient.deleteBlockchainPlatform(deleteBlockchainPlatformRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteOsn function of BlockchainPlatformClient + * @param {DeleteOsnRequest} deleteOsnRequest - Data required for deleteOsn + * @returns {Promise} + */ + deleteOsn(deleteOsnRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient.deleteOsn(deleteOsnRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deletePeer function of BlockchainPlatformClient + * @param {DeletePeerRequest} deletePeerRequest - Data required for deletePeer + * @returns {Promise} + */ + deletePeer(deletePeerRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient.deletePeer(deletePeerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getOsn function of BlockchainPlatformClient + * @param {GetOsnRequest} getOsnRequest - Data required for getOsn + * @returns {Promise} + */ + getOsn(getOsnRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient.getOsn(getOsnRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listBlockchainPlatforms function of BlockchainPlatformClient + * @param {ListBlockchainPlatformsRequest} listBlockchainPlatformsRequest - Data required for listBlockchainPlatforms + * @returns {Promise} + */ + listBlockchainPlatforms(listBlockchainPlatformsRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient.listBlockchainPlatforms(listBlockchainPlatformsRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listOsns function of BlockchainPlatformClient + * @param {ListOsnsRequest} listOsnsRequest - Data required for listOsns + * @returns {Promise} + */ + listOsns(listOsnsRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient.listOsns(listOsnsRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listPeers function of BlockchainPlatformClient + * @param {ListPeersRequest} listPeersRequest - Data required for listPeers + * @returns {Promise} + */ + listPeers(listPeersRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient.listPeers(listPeersRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_BlockChain; diff --git a/generator/generatedClasses/Oracle/compute/oci-computeInstance.js b/generator/generatedClasses/Oracle/compute/oci-computeInstance.js index 041d1d7b..4ee962dd 100644 --- a/generator/generatedClasses/Oracle/compute/oci-computeInstance.js +++ b/generator/generatedClasses/Oracle/compute/oci-computeInstance.js @@ -1,137 +1,126 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ContainerInstanceClient object - * @category Oracle Cloud - */ + * Class to create a ContainerInstanceClient object + * @category Oracle Cloud + */ class Oracle_ComputeInstance { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.ContainerInstanceClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createContainerInstance function of ContainerInstanceClient - * @param {CreateContainerInstanceRequest} createContainerInstanceRequest - Data required for createContainerInstance - * @returns {Promise} - */ - create(createContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient - .createContainerInstance(createContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteContainerInstance function of ContainerInstanceClient - * @param {DeleteContainerInstanceRequest} deleteContainerInstanceRequest - Data required for deleteContainerInstance - * @returns {Promise} - */ - delete(deleteContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient - .deleteContainerInstance(deleteContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getContainer function of ContainerInstanceClient - * @param {GetContainerRequest} getContainerRequest - Data required for getContainer - * @returns {Promise} - */ - getAll(getContainerRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient - .getContainer(getContainerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getContainerInstance function of ContainerInstanceClient - * @param {GetContainerInstanceRequest} getContainerInstanceRequest - Data required for getContainerInstance - * @returns {Promise} - */ - get(getContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient - .getContainerInstance(getContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listContainers function of ContainerInstanceClient - * @param {ListContainersRequest} listContainersRequest - Data required for listContainers - * @returns {Promise} - */ - list(listContainersRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient - .listContainers(listContainersRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the restartContainerInstance function of ContainerInstanceClient - * @param {RestartContainerInstanceRequest} restartContainerInstanceRequest - Data required for restartContainerInstance - * @returns {Promise} - */ - restart(restartContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient - .restartContainerInstance(restartContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the startContainerInstance function of ContainerInstanceClient - * @param {StartContainerInstanceRequest} startContainerInstanceRequest - Data required for startContainerInstance - * @returns {Promise} - */ - start(startContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient - .startContainerInstance(startContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the stopContainerInstance function of ContainerInstanceClient - * @param {StopContainerInstanceRequest} stopContainerInstanceRequest - Data required for stopContainerInstance - * @returns {Promise} - */ - stop(stopContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient - .stopContainerInstance(stopContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateContainer function of ContainerInstanceClient - * @param {UpdateContainerRequest} updateContainerRequest - Data required for updateContainer - * @returns {Promise} - */ - update(updateContainerRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient - .updateContainer(updateContainerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._containerInstanceClient = this._oci.ContainerInstanceClient(params, clientConfiguration); + } + /** + * Trigers the createContainerInstance function of ContainerInstanceClient + * @param {CreateContainerInstanceRequest} createContainerInstanceRequest - Data required for createContainerInstance + * @returns {Promise} + */ + create(createContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient.createContainerInstance(createContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteContainerInstance function of ContainerInstanceClient + * @param {DeleteContainerInstanceRequest} deleteContainerInstanceRequest - Data required for deleteContainerInstance + * @returns {Promise} + */ + delete(deleteContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient.deleteContainerInstance(deleteContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getContainer function of ContainerInstanceClient + * @param {GetContainerRequest} getContainerRequest - Data required for getContainer + * @returns {Promise} + */ + getAll(getContainerRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient.getContainer(getContainerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getContainerInstance function of ContainerInstanceClient + * @param {GetContainerInstanceRequest} getContainerInstanceRequest - Data required for getContainerInstance + * @returns {Promise} + */ + get(getContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient.getContainerInstance(getContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listContainers function of ContainerInstanceClient + * @param {ListContainersRequest} listContainersRequest - Data required for listContainers + * @returns {Promise} + */ + list(listContainersRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient.listContainers(listContainersRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the restartContainerInstance function of ContainerInstanceClient + * @param {RestartContainerInstanceRequest} restartContainerInstanceRequest - Data required for restartContainerInstance + * @returns {Promise} + */ + restart(restartContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient.restartContainerInstance(restartContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the startContainerInstance function of ContainerInstanceClient + * @param {StartContainerInstanceRequest} startContainerInstanceRequest - Data required for startContainerInstance + * @returns {Promise} + */ + start(startContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient.startContainerInstance(startContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the stopContainerInstance function of ContainerInstanceClient + * @param {StopContainerInstanceRequest} stopContainerInstanceRequest - Data required for stopContainerInstance + * @returns {Promise} + */ + stop(stopContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient.stopContainerInstance(stopContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateContainer function of ContainerInstanceClient + * @param {UpdateContainerRequest} updateContainerRequest - Data required for updateContainer + * @returns {Promise} + */ + update(updateContainerRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient.updateContainer(updateContainerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_ComputeInstance; diff --git a/generator/generatedClasses/Oracle/compute/oci-container.js b/generator/generatedClasses/Oracle/compute/oci-container.js index c6d2446a..84192a0e 100644 --- a/generator/generatedClasses/Oracle/compute/oci-container.js +++ b/generator/generatedClasses/Oracle/compute/oci-container.js @@ -1,98 +1,90 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ContainerInstanceClient object - * @category Oracle Cloud - */ + * Class to create a ContainerInstanceClient object + * @category Oracle Cloud + */ class Oracle_Container { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.ContainerInstanceClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createContainerInstance function of ContainerInstanceClient - * @param {CreateContainerInstanceRequest} createContainerInstanceRequest - Data required for createContainerInstance - * @returns {Promise} - */ - create(createContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient - .createContainerInstance(createContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteContainerInstance function of ContainerInstanceClient - * @param {DeleteContainerInstanceRequest} deleteContainerInstanceRequest - Data required for deleteContainerInstance - * @returns {Promise} - */ - delete(deleteContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient - .deleteContainerInstance(deleteContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getContainer function of ContainerInstanceClient - * @param {GetContainerRequest} getContainerRequest - Data required for getContainer - * @returns {Promise} - */ - describe(getContainerRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient - .getContainer(getContainerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listContainers function of ContainerInstanceClient - * @param {ListContainersRequest} listContainersRequest - Data required for listContainers - * @returns {Promise} - */ - list(listContainersRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient - .listContainers(listContainersRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the startContainerInstance function of ContainerInstanceClient - * @param {StartContainerInstanceRequest} startContainerInstanceRequest - Data required for startContainerInstance - * @returns {Promise} - */ - start(startContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient - .startContainerInstance(startContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the stopContainerInstance function of ContainerInstanceClient - * @param {StopContainerInstanceRequest} stopContainerInstanceRequest - Data required for stopContainerInstance - * @returns {Promise} - */ - stop(stopContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient - .stopContainerInstance(stopContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._containerInstanceClient = this._oci.ContainerInstanceClient(params, clientConfiguration); + } + /** + * Trigers the createContainerInstance function of ContainerInstanceClient + * @param {CreateContainerInstanceRequest} createContainerInstanceRequest - Data required for createContainerInstance + * @returns {Promise} + */ + create(createContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient.createContainerInstance(createContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteContainerInstance function of ContainerInstanceClient + * @param {DeleteContainerInstanceRequest} deleteContainerInstanceRequest - Data required for deleteContainerInstance + * @returns {Promise} + */ + delete(deleteContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient.deleteContainerInstance(deleteContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getContainer function of ContainerInstanceClient + * @param {GetContainerRequest} getContainerRequest - Data required for getContainer + * @returns {Promise} + */ + describe(getContainerRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient.getContainer(getContainerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listContainers function of ContainerInstanceClient + * @param {ListContainersRequest} listContainersRequest - Data required for listContainers + * @returns {Promise} + */ + list(listContainersRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient.listContainers(listContainersRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the startContainerInstance function of ContainerInstanceClient + * @param {StartContainerInstanceRequest} startContainerInstanceRequest - Data required for startContainerInstance + * @returns {Promise} + */ + start(startContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient.startContainerInstance(startContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the stopContainerInstance function of ContainerInstanceClient + * @param {StopContainerInstanceRequest} stopContainerInstanceRequest - Data required for stopContainerInstance + * @returns {Promise} + */ + stop(stopContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient.stopContainerInstance(stopContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_Container; diff --git a/generator/generatedClasses/Oracle/compute/oci-kubernetes.js b/generator/generatedClasses/Oracle/compute/oci-kubernetes.js index 3efe8d9a..8d14026f 100644 --- a/generator/generatedClasses/Oracle/compute/oci-kubernetes.js +++ b/generator/generatedClasses/Oracle/compute/oci-kubernetes.js @@ -1,150 +1,138 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ContainerEngineClient object - * @category Oracle Cloud - */ + * Class to create a ContainerEngineClient object + * @category Oracle Cloud + */ class Oracle_Kubernetes { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.ContainerEngineClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createCluster function of ContainerEngineClient - * @param {CreateClusterRequest} createClusterRequest - Data required for createCluster - * @returns {Promise} - */ - create(createClusterRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .createCluster(createClusterRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createNodePool function of ContainerEngineClient - * @param {CreateNodePoolRequest} createNodePoolRequest - Data required for createNodePool - * @returns {Promise} - */ - createNodePool(createNodePoolRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .createNodePool(createNodePoolRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteCluster function of ContainerEngineClient - * @param {DeleteClusterRequest} deleteClusterRequest - Data required for deleteCluster - * @returns {Promise} - */ - delete(deleteClusterRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .deleteCluster(deleteClusterRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteNode function of ContainerEngineClient - * @param {DeleteNodeRequest} deleteNodeRequest - Data required for deleteNode - * @returns {Promise} - */ - deleteNode(deleteNodeRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .deleteNode(deleteNodeRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteNodePool function of ContainerEngineClient - * @param {DeleteNodePoolRequest} deleteNodePoolRequest - Data required for deleteNodePool - * @returns {Promise} - */ - deleteNodePool(deleteNodePoolRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .deleteNodePool(deleteNodePoolRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getCluster function of ContainerEngineClient - * @param {GetClusterRequest} getClusterRequest - Data required for getCluster - * @returns {Promise} - */ - get(getClusterRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .getCluster(getClusterRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getNodePool function of ContainerEngineClient - * @param {GetNodePoolRequest} getNodePoolRequest - Data required for getNodePool - * @returns {Promise} - */ - getNodePool(getNodePoolRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .getNodePool(getNodePoolRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listClusters function of ContainerEngineClient - * @param {ListClustersRequest} listClustersRequest - Data required for listClusters - * @returns {Promise} - */ - list(listClustersRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .listClusters(listClustersRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateCluster function of ContainerEngineClient - * @param {UpdateClusterRequest} updateClusterRequest - Data required for updateCluster - * @returns {Promise} - */ - update(updateClusterRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .updateCluster(updateClusterRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateNodePool function of ContainerEngineClient - * @param {UpdateNodePoolRequest} updateNodePoolRequest - Data required for updateNodePool - * @returns {Promise} - */ - updateNodePool(updateNodePoolRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .updateNodePool(updateNodePoolRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._containerEngineClient = this._oci.ContainerEngineClient(params, clientConfiguration); + } + /** + * Trigers the createCluster function of ContainerEngineClient + * @param {CreateClusterRequest} createClusterRequest - Data required for createCluster + * @returns {Promise} + */ + create(createClusterRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.createCluster(createClusterRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createNodePool function of ContainerEngineClient + * @param {CreateNodePoolRequest} createNodePoolRequest - Data required for createNodePool + * @returns {Promise} + */ + createNodePool(createNodePoolRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.createNodePool(createNodePoolRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteCluster function of ContainerEngineClient + * @param {DeleteClusterRequest} deleteClusterRequest - Data required for deleteCluster + * @returns {Promise} + */ + delete(deleteClusterRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.deleteCluster(deleteClusterRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteNode function of ContainerEngineClient + * @param {DeleteNodeRequest} deleteNodeRequest - Data required for deleteNode + * @returns {Promise} + */ + deleteNode(deleteNodeRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.deleteNode(deleteNodeRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteNodePool function of ContainerEngineClient + * @param {DeleteNodePoolRequest} deleteNodePoolRequest - Data required for deleteNodePool + * @returns {Promise} + */ + deleteNodePool(deleteNodePoolRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.deleteNodePool(deleteNodePoolRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getCluster function of ContainerEngineClient + * @param {GetClusterRequest} getClusterRequest - Data required for getCluster + * @returns {Promise} + */ + get(getClusterRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.getCluster(getClusterRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getNodePool function of ContainerEngineClient + * @param {GetNodePoolRequest} getNodePoolRequest - Data required for getNodePool + * @returns {Promise} + */ + getNodePool(getNodePoolRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.getNodePool(getNodePoolRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listClusters function of ContainerEngineClient + * @param {ListClustersRequest} listClustersRequest - Data required for listClusters + * @returns {Promise} + */ + list(listClustersRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.listClusters(listClustersRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateCluster function of ContainerEngineClient + * @param {UpdateClusterRequest} updateClusterRequest - Data required for updateCluster + * @returns {Promise} + */ + update(updateClusterRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.updateCluster(updateClusterRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateNodePool function of ContainerEngineClient + * @param {UpdateNodePoolRequest} updateNodePoolRequest - Data required for updateNodePool + * @returns {Promise} + */ + updateNodePool(updateNodePoolRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.updateNodePool(updateNodePoolRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_Kubernetes; diff --git a/generator/generatedClasses/Oracle/database/oci-RDBMS.js b/generator/generatedClasses/Oracle/database/oci-RDBMS.js index cd2dbaeb..56d2130a 100644 --- a/generator/generatedClasses/Oracle/database/oci-RDBMS.js +++ b/generator/generatedClasses/Oracle/database/oci-RDBMS.js @@ -1,111 +1,102 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a DbSystemClient object - * @category Oracle Cloud - */ + * Class to create a DbSystemClient object + * @category Oracle Cloud + */ class Oracle_RDBMS { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.DbSystemClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createDbSystem function of DbSystemClient - * @param {CreateDbSystemRequest} createDbSystemRequest - Data required for createDbSystem - * @returns {Promise} - */ - createDBSystem(createDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient - .createDbSystem(createDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDbSystem function of DbSystemClient - * @param {DeleteDbSystemRequest} deleteDbSystemRequest - Data required for deleteDbSystem - * @returns {Promise} - */ - deleteDBSystem(deleteDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient - .deleteDbSystem(deleteDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDbSystem function of DbSystemClient - * @param {GetDbSystemRequest} getDbSystemRequest - Data required for getDbSystem - * @returns {Promise} - */ - getDBSystem(getDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient - .getDbSystem(getDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the restartDbSystem function of DbSystemClient - * @param {RestartDbSystemRequest} restartDbSystemRequest - Data required for restartDbSystem - * @returns {Promise} - */ - restartDBSystem(restartDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient - .restartDbSystem(restartDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the startDbSystem function of DbSystemClient - * @param {StartDbSystemRequest} startDbSystemRequest - Data required for startDbSystem - * @returns {Promise} - */ - startDBSystem(startDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient - .startDbSystem(startDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the stopDbSystem function of DbSystemClient - * @param {StopDbSystemRequest} stopDbSystemRequest - Data required for stopDbSystem - * @returns {Promise} - */ - stopDBSystem(stopDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient - .stopDbSystem(stopDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateDbSystem function of DbSystemClient - * @param {UpdateDbSystemRequest} updateDbSystemRequest - Data required for updateDbSystem - * @returns {Promise} - */ - updateDBSystem(updateDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient - .updateDbSystem(updateDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._dbSystemClient = this._oci.DbSystemClient(params, clientConfiguration); + } + /** + * Trigers the createDbSystem function of DbSystemClient + * @param {CreateDbSystemRequest} createDbSystemRequest - Data required for createDbSystem + * @returns {Promise} + */ + createDBSystem(createDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient.createDbSystem(createDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDbSystem function of DbSystemClient + * @param {DeleteDbSystemRequest} deleteDbSystemRequest - Data required for deleteDbSystem + * @returns {Promise} + */ + deleteDBSystem(deleteDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient.deleteDbSystem(deleteDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDbSystem function of DbSystemClient + * @param {GetDbSystemRequest} getDbSystemRequest - Data required for getDbSystem + * @returns {Promise} + */ + getDBSystem(getDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient.getDbSystem(getDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the restartDbSystem function of DbSystemClient + * @param {RestartDbSystemRequest} restartDbSystemRequest - Data required for restartDbSystem + * @returns {Promise} + */ + restartDBSystem(restartDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient.restartDbSystem(restartDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the startDbSystem function of DbSystemClient + * @param {StartDbSystemRequest} startDbSystemRequest - Data required for startDbSystem + * @returns {Promise} + */ + startDBSystem(startDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient.startDbSystem(startDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the stopDbSystem function of DbSystemClient + * @param {StopDbSystemRequest} stopDbSystemRequest - Data required for stopDbSystem + * @returns {Promise} + */ + stopDBSystem(stopDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient.stopDbSystem(stopDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateDbSystem function of DbSystemClient + * @param {UpdateDbSystemRequest} updateDbSystemRequest - Data required for updateDbSystem + * @returns {Promise} + */ + updateDBSystem(updateDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient.updateDbSystem(updateDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_RDBMS; diff --git a/generator/generatedClasses/Oracle/database/oci-noSql.js b/generator/generatedClasses/Oracle/database/oci-noSql.js index 2d8f73db..53a598e3 100644 --- a/generator/generatedClasses/Oracle/database/oci-noSql.js +++ b/generator/generatedClasses/Oracle/database/oci-noSql.js @@ -1,121 +1,114 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a NosqlClient object - * @category Oracle Cloud - */ + * Class to create a NosqlClient object + * @category Oracle Cloud + */ class Oracle_NoSql { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.NosqlClient(params, clientConfiguration); - } - /** - * Trigers the createTable function of NosqlClient - * @param {CreateTableRequest} createTableRequest - Data required for createTable - * @returns {Promise} - */ - createTable(createTableRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient - .createTable(createTableRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteRow function of NosqlClient - * @param {DeleteRowRequest} deleteRowRequest - Data required for deleteRow - * @returns {Promise} - */ - deleteRow(deleteRowRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient - .deleteRow(deleteRowRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteTable function of NosqlClient - * @param {DeleteTableRequest} deleteTableRequest - Data required for deleteTable - * @returns {Promise} - */ - deleteTable(deleteTableRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient - .deleteTable(deleteTableRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getRow function of NosqlClient - * @param {GetRowRequest} getRowRequest - Data required for getRow - * @returns {Promise} - */ - getRow(getRowRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient - .getRow(getRowRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getTable function of NosqlClient - * @param {GetTableRequest} getTableRequest - Data required for getTable - * @returns {Promise} - */ - getTable(getTableRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient - .getTable(getTableRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listTables function of NosqlClient - * @param {ListTablesRequest} listTablesRequest - Data required for listTables - * @returns {Promise} - */ - listTables(listTablesRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient - .listTables(listTablesRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateRow function of NosqlClient - * @param {UpdateRowRequest} updateRowRequest - Data required for updateRow - * @returns {Promise} - */ - updateRow(updateRowRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient - .updateRow(updateRowRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateTable function of NosqlClient - * @param {UpdateTableRequest} updateTableRequest - Data required for updateTable - * @returns {Promise} - */ - updateTable(updateTableRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient - .updateTable(updateTableRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._nosqlClient = this._oci.NosqlClient(params, clientConfiguration); + } + /** + * Trigers the createTable function of NosqlClient + * @param {CreateTableRequest} createTableRequest - Data required for createTable + * @returns {Promise} + */ + createTable(createTableRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient.createTable(createTableRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteRow function of NosqlClient + * @param {DeleteRowRequest} deleteRowRequest - Data required for deleteRow + * @returns {Promise} + */ + deleteRow(deleteRowRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient.deleteRow(deleteRowRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteTable function of NosqlClient + * @param {DeleteTableRequest} deleteTableRequest - Data required for deleteTable + * @returns {Promise} + */ + deleteTable(deleteTableRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient.deleteTable(deleteTableRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getRow function of NosqlClient + * @param {GetRowRequest} getRowRequest - Data required for getRow + * @returns {Promise} + */ + getRow(getRowRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient.getRow(getRowRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getTable function of NosqlClient + * @param {GetTableRequest} getTableRequest - Data required for getTable + * @returns {Promise} + */ + getTable(getTableRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient.getTable(getTableRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listTables function of NosqlClient + * @param {ListTablesRequest} listTablesRequest - Data required for listTables + * @returns {Promise} + */ + listTables(listTablesRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient.listTables(listTablesRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateRow function of NosqlClient + * @param {UpdateRowRequest} updateRowRequest - Data required for updateRow + * @returns {Promise} + */ + updateRow(updateRowRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient.updateRow(updateRowRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateTable function of NosqlClient + * @param {UpdateTableRequest} updateTableRequest - Data required for updateTable + * @returns {Promise} + */ + updateTable(updateTableRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient.updateTable(updateTableRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_NoSql; diff --git a/generator/generatedClasses/Oracle/devops/oci-devops.js b/generator/generatedClasses/Oracle/devops/oci-devops.js index d8563f82..4fba5d28 100644 --- a/generator/generatedClasses/Oracle/devops/oci-devops.js +++ b/generator/generatedClasses/Oracle/devops/oci-devops.js @@ -1,189 +1,174 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a DevopsClient object - * @category Oracle Cloud - */ + * Class to create a DevopsClient object + * @category Oracle Cloud + */ class Oracle_Devops { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.DevopsClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createDeployArtifact function of DevopsClient - * @param {CreateDeployArtifactRequest} createDeployArtifactRequest - Data required for createDeployArtifact - * @returns {Promise} - */ - createDeployArtifact(createDeployArtifactRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .createDeployArtifact(createDeployArtifactRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createDeployPipeline function of DevopsClient - * @param {CreateDeployPipelineRequest} createDeployPipelineRequest - Data required for createDeployPipeline - * @returns {Promise} - */ - createDeployPipeline(createDeployPipelineRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .createDeployPipeline(createDeployPipelineRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createDeployment function of DevopsClient - * @param {CreateDeploymentRequest} createDeploymentRequest - Data required for createDeployment - * @returns {Promise} - */ - createDeployment(createDeploymentRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .createDeployment(createDeploymentRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createProject function of DevopsClient - * @param {CreateProjectRequest} createProjectRequest - Data required for createProject - * @returns {Promise} - */ - createProject(createProjectRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .createProject(createProjectRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createRepository function of DevopsClient - * @param {CreateRepositoryRequest} createRepositoryRequest - Data required for createRepository - * @returns {Promise} - */ - createRepository(createRepositoryRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .createRepository(createRepositoryRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDeployArtifact function of DevopsClient - * @param {DeleteDeployArtifactRequest} deleteDeployArtifactRequest - Data required for deleteDeployArtifact - * @returns {Promise} - */ - deleteDeployArtifact(deleteDeployArtifactRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .deleteDeployArtifact(deleteDeployArtifactRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDeployPipeline function of DevopsClient - * @param {DeleteDeployPipelineRequest} deleteDeployPipelineRequest - Data required for deleteDeployPipeline - * @returns {Promise} - */ - deleteDeployPipeline(deleteDeployPipelineRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .deleteDeployPipeline(deleteDeployPipelineRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteProject function of DevopsClient - * @param {DeleteProjectRequest} deleteProjectRequest - Data required for deleteProject - * @returns {Promise} - */ - deleteProject(deleteProjectRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .deleteProject(deleteProjectRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteRepository function of DevopsClient - * @param {DeleteRepositoryRequest} deleteRepositoryRequest - Data required for deleteRepository - * @returns {Promise} - */ - deleteRepository(deleteRepositoryRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .deleteRepository(deleteRepositoryRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDeployArtifact function of DevopsClient - * @param {GetDeployArtifactRequest} getDeployArtifactRequest - Data required for getDeployArtifact - * @returns {Promise} - */ - getDeployArtifact(getDeployArtifactRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .getDeployArtifact(getDeployArtifactRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDeployPipeline function of DevopsClient - * @param {GetDeployPipelineRequest} getDeployPipelineRequest - Data required for getDeployPipeline - * @returns {Promise} - */ - getDeployPipeline(getDeployPipelineRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .getDeployPipeline(getDeployPipelineRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDeployment function of DevopsClient - * @param {GetDeploymentRequest} getDeploymentRequest - Data required for getDeployment - * @returns {Promise} - */ - getDeployment(getDeploymentRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .getDeployment(getDeploymentRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getProject function of DevopsClient - * @param {GetProjectRequest} getProjectRequest - Data required for getProject - * @returns {Promise} - */ - getProject(getProjectRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .getProject(getProjectRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._devopsClient = this._oci.DevopsClient(params, clientConfiguration); + } + /** + * Trigers the createDeployArtifact function of DevopsClient + * @param {CreateDeployArtifactRequest} createDeployArtifactRequest - Data required for createDeployArtifact + * @returns {Promise} + */ + createDeployArtifact(createDeployArtifactRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.createDeployArtifact(createDeployArtifactRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createDeployPipeline function of DevopsClient + * @param {CreateDeployPipelineRequest} createDeployPipelineRequest - Data required for createDeployPipeline + * @returns {Promise} + */ + createDeployPipeline(createDeployPipelineRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.createDeployPipeline(createDeployPipelineRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createDeployment function of DevopsClient + * @param {CreateDeploymentRequest} createDeploymentRequest - Data required for createDeployment + * @returns {Promise} + */ + createDeployment(createDeploymentRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.createDeployment(createDeploymentRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createProject function of DevopsClient + * @param {CreateProjectRequest} createProjectRequest - Data required for createProject + * @returns {Promise} + */ + createProject(createProjectRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.createProject(createProjectRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createRepository function of DevopsClient + * @param {CreateRepositoryRequest} createRepositoryRequest - Data required for createRepository + * @returns {Promise} + */ + createRepository(createRepositoryRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.createRepository(createRepositoryRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDeployArtifact function of DevopsClient + * @param {DeleteDeployArtifactRequest} deleteDeployArtifactRequest - Data required for deleteDeployArtifact + * @returns {Promise} + */ + deleteDeployArtifact(deleteDeployArtifactRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.deleteDeployArtifact(deleteDeployArtifactRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDeployPipeline function of DevopsClient + * @param {DeleteDeployPipelineRequest} deleteDeployPipelineRequest - Data required for deleteDeployPipeline + * @returns {Promise} + */ + deleteDeployPipeline(deleteDeployPipelineRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.deleteDeployPipeline(deleteDeployPipelineRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteProject function of DevopsClient + * @param {DeleteProjectRequest} deleteProjectRequest - Data required for deleteProject + * @returns {Promise} + */ + deleteProject(deleteProjectRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.deleteProject(deleteProjectRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteRepository function of DevopsClient + * @param {DeleteRepositoryRequest} deleteRepositoryRequest - Data required for deleteRepository + * @returns {Promise} + */ + deleteRepository(deleteRepositoryRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.deleteRepository(deleteRepositoryRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDeployArtifact function of DevopsClient + * @param {GetDeployArtifactRequest} getDeployArtifactRequest - Data required for getDeployArtifact + * @returns {Promise} + */ + getDeployArtifact(getDeployArtifactRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.getDeployArtifact(getDeployArtifactRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDeployPipeline function of DevopsClient + * @param {GetDeployPipelineRequest} getDeployPipelineRequest - Data required for getDeployPipeline + * @returns {Promise} + */ + getDeployPipeline(getDeployPipelineRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.getDeployPipeline(getDeployPipelineRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDeployment function of DevopsClient + * @param {GetDeploymentRequest} getDeploymentRequest - Data required for getDeployment + * @returns {Promise} + */ + getDeployment(getDeploymentRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.getDeployment(getDeploymentRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getProject function of DevopsClient + * @param {GetProjectRequest} getProjectRequest - Data required for getProject + * @returns {Promise} + */ + getProject(getProjectRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.getProject(getProjectRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_Devops; diff --git a/generator/generatedClasses/Oracle/management/oci-keyManagement.js b/generator/generatedClasses/Oracle/management/oci-keyManagement.js index 0c83bcc8..c8ba87c7 100644 --- a/generator/generatedClasses/Oracle/management/oci-keyManagement.js +++ b/generator/generatedClasses/Oracle/management/oci-keyManagement.js @@ -1,72 +1,66 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a KmsManagementClient object - * @category Oracle Cloud - */ + * Class to create a KmsManagementClient object + * @category Oracle Cloud + */ class Oracle_KeyManagement { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.KmsManagementClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createKey function of KmsManagementClient - * @param {CreateKeyRequest} createKeyRequest - Data required for createKey - * @returns {Promise} - */ - createKey(createKeyRequest) { - return new Promise((resolve, reject) => { - this._kmsManagementClient - .createKey(createKeyRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the disableKey function of KmsManagementClient - * @param {DisableKeyRequest} disableKeyRequest - Data required for disableKey - * @returns {Promise} - */ - disableKey(disableKeyRequest) { - return new Promise((resolve, reject) => { - this._kmsManagementClient - .disableKey(disableKeyRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the enableKey function of KmsManagementClient - * @param {EnableKeyRequest} enableKeyRequest - Data required for enableKey - * @returns {Promise} - */ - enableKey(enableKeyRequest) { - return new Promise((resolve, reject) => { - this._kmsManagementClient - .enableKey(enableKeyRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateKey function of KmsManagementClient - * @param {UpdateKeyRequest} updateKeyRequest - Data required for updateKey - * @returns {Promise} - */ - update(updateKeyRequest) { - return new Promise((resolve, reject) => { - this._kmsManagementClient - .updateKey(updateKeyRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._kmsManagementClient = this._oci.KmsManagementClient(params, clientConfiguration); + } + /** + * Trigers the createKey function of KmsManagementClient + * @param {CreateKeyRequest} createKeyRequest - Data required for createKey + * @returns {Promise} + */ + createKey(createKeyRequest) { + return new Promise((resolve, reject) => { + this._kmsManagementClient.createKey(createKeyRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the disableKey function of KmsManagementClient + * @param {DisableKeyRequest} disableKeyRequest - Data required for disableKey + * @returns {Promise} + */ + disableKey(disableKeyRequest) { + return new Promise((resolve, reject) => { + this._kmsManagementClient.disableKey(disableKeyRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the enableKey function of KmsManagementClient + * @param {EnableKeyRequest} enableKeyRequest - Data required for enableKey + * @returns {Promise} + */ + enableKey(enableKeyRequest) { + return new Promise((resolve, reject) => { + this._kmsManagementClient.enableKey(enableKeyRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateKey function of KmsManagementClient + * @param {UpdateKeyRequest} updateKeyRequest - Data required for updateKey + * @returns {Promise} + */ + update(updateKeyRequest) { + return new Promise((resolve, reject) => { + this._kmsManagementClient.updateKey(updateKeyRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_KeyManagement; diff --git a/generator/generatedClasses/Oracle/management/oci-notificationService.js b/generator/generatedClasses/Oracle/management/oci-notificationService.js index e881d089..d0895c41 100644 --- a/generator/generatedClasses/Oracle/management/oci-notificationService.js +++ b/generator/generatedClasses/Oracle/management/oci-notificationService.js @@ -1,72 +1,66 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a NotificationDataPlaneClient object - * @category Oracle Cloud - */ + * Class to create a NotificationDataPlaneClient object + * @category Oracle Cloud + */ class Oracle_NotificationService { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.NotificationDataPlaneClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createSubscription function of NotificationDataPlaneClient - * @param {CreateSubscriptionRequest} createSubscriptionRequest - Data required for createSubscription - * @returns {Promise} - */ - subscribe(createSubscriptionRequest) { - return new Promise((resolve, reject) => { - this._notificationDataPlaneClient - .createSubscription(createSubscriptionRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteSubscription function of NotificationDataPlaneClient - * @param {DeleteSubscriptionRequest} deleteSubscriptionRequest - Data required for deleteSubscription - * @returns {Promise} - */ - unsubscribe(deleteSubscriptionRequest) { - return new Promise((resolve, reject) => { - this._notificationDataPlaneClient - .deleteSubscription(deleteSubscriptionRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listSubscriptions function of NotificationDataPlaneClient - * @param {ListSubscriptionsRequest} listSubscriptionsRequest - Data required for listSubscriptions - * @returns {Promise} - */ - listSubscriptions(listSubscriptionsRequest) { - return new Promise((resolve, reject) => { - this._notificationDataPlaneClient - .listSubscriptions(listSubscriptionsRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the publishMessage function of NotificationDataPlaneClient - * @param {PublishMessageRequest} publishMessageRequest - Data required for publishMessage - * @returns {Promise} - */ - publish(publishMessageRequest) { - return new Promise((resolve, reject) => { - this._notificationDataPlaneClient - .publishMessage(publishMessageRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._notificationDataPlaneClient = this._oci.NotificationDataPlaneClient(params, clientConfiguration); + } + /** + * Trigers the createSubscription function of NotificationDataPlaneClient + * @param {CreateSubscriptionRequest} createSubscriptionRequest - Data required for createSubscription + * @returns {Promise} + */ + subscribe(createSubscriptionRequest) { + return new Promise((resolve, reject) => { + this._notificationDataPlaneClient.createSubscription(createSubscriptionRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteSubscription function of NotificationDataPlaneClient + * @param {DeleteSubscriptionRequest} deleteSubscriptionRequest - Data required for deleteSubscription + * @returns {Promise} + */ + unsubscribe(deleteSubscriptionRequest) { + return new Promise((resolve, reject) => { + this._notificationDataPlaneClient.deleteSubscription(deleteSubscriptionRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listSubscriptions function of NotificationDataPlaneClient + * @param {ListSubscriptionsRequest} listSubscriptionsRequest - Data required for listSubscriptions + * @returns {Promise} + */ + listSubscriptions(listSubscriptionsRequest) { + return new Promise((resolve, reject) => { + this._notificationDataPlaneClient.listSubscriptions(listSubscriptionsRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the publishMessage function of NotificationDataPlaneClient + * @param {PublishMessageRequest} publishMessageRequest - Data required for publishMessage + * @returns {Promise} + */ + publish(publishMessageRequest) { + return new Promise((resolve, reject) => { + this._notificationDataPlaneClient.publishMessage(publishMessageRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_NotificationService; diff --git a/generator/generatedClasses/Oracle/network/oci-DNS.js b/generator/generatedClasses/Oracle/network/oci-DNS.js index 934c277e..bd996e42 100644 --- a/generator/generatedClasses/Oracle/network/oci-DNS.js +++ b/generator/generatedClasses/Oracle/network/oci-DNS.js @@ -1,69 +1,66 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a DnsClient object - * @category Oracle Cloud - */ + * Class to create a DnsClient object + * @category Oracle Cloud + */ class Oracle_DNS { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.DnsClient(params, clientConfiguration); - } - /** - * Trigers the createZone function of DnsClient - * @param {CreateZoneRequest} createZoneRequest - Data required for createZone - * @returns {Promise} - */ - create(createZoneRequest) { - return new Promise((resolve, reject) => { - this._dnsClient - .createZone(createZoneRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteZone function of DnsClient - * @param {DeleteZoneRequest} deleteZoneRequest - Data required for deleteZone - * @returns {Promise} - */ - delete(deleteZoneRequest) { - return new Promise((resolve, reject) => { - this._dnsClient - .deleteZone(deleteZoneRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listZones function of DnsClient - * @param {ListZonesRequest} listZonesRequest - Data required for listZones - * @returns {Promise} - */ - list(listZonesRequest) { - return new Promise((resolve, reject) => { - this._dnsClient - .listZones(listZonesRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateZone function of DnsClient - * @param {UpdateZoneRequest} updateZoneRequest - Data required for updateZone - * @returns {Promise} - */ - update(updateZoneRequest) { - return new Promise((resolve, reject) => { - this._dnsClient - .updateZone(updateZoneRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._dnsClient = this._oci.DnsClient(params, clientConfiguration); + } + /** + * Trigers the createZone function of DnsClient + * @param {CreateZoneRequest} createZoneRequest - Data required for createZone + * @returns {Promise} + */ + create(createZoneRequest) { + return new Promise((resolve, reject) => { + this._dnsClient.createZone(createZoneRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteZone function of DnsClient + * @param {DeleteZoneRequest} deleteZoneRequest - Data required for deleteZone + * @returns {Promise} + */ + delete(deleteZoneRequest) { + return new Promise((resolve, reject) => { + this._dnsClient.deleteZone(deleteZoneRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listZones function of DnsClient + * @param {ListZonesRequest} listZonesRequest - Data required for listZones + * @returns {Promise} + */ + list(listZonesRequest) { + return new Promise((resolve, reject) => { + this._dnsClient.listZones(listZonesRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateZone function of DnsClient + * @param {UpdateZoneRequest} updateZoneRequest - Data required for updateZone + * @returns {Promise} + */ + update(updateZoneRequest) { + return new Promise((resolve, reject) => { + this._dnsClient.updateZone(updateZoneRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_DNS; diff --git a/generator/generatedClasses/Oracle/network/oci-loadBalancer.js b/generator/generatedClasses/Oracle/network/oci-loadBalancer.js index fdc04bd4..e0ec4f08 100644 --- a/generator/generatedClasses/Oracle/network/oci-loadBalancer.js +++ b/generator/generatedClasses/Oracle/network/oci-loadBalancer.js @@ -1,85 +1,78 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a LoadBalancerClient object - * @category Oracle Cloud - */ + * Class to create a LoadBalancerClient object + * @category Oracle Cloud + */ class Oracle_LoadBalancer { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.LoadBalancerClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createLoadBalancer function of LoadBalancerClient - * @param {CreateLoadBalancerRequest} createLoadBalancerRequest - Data required for createLoadBalancer - * @returns {Promise} - */ - create(createLoadBalancerRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient - .createLoadBalancer(createLoadBalancerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteLoadBalancer function of LoadBalancerClient - * @param {DeleteLoadBalancerRequest} deleteLoadBalancerRequest - Data required for deleteLoadBalancer - * @returns {Promise} - */ - delete(deleteLoadBalancerRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient - .deleteLoadBalancer(deleteLoadBalancerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getLoadBalancer function of LoadBalancerClient - * @param {GetLoadBalancerRequest} getLoadBalancerRequest - Data required for getLoadBalancer - * @returns {Promise} - */ - get(getLoadBalancerRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient - .getLoadBalancer(getLoadBalancerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listLoadBalancers function of LoadBalancerClient - * @param {ListLoadBalancersRequest} listLoadBalancersRequest - Data required for listLoadBalancers - * @returns {Promise} - */ - list(listLoadBalancersRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient - .listLoadBalancers(listLoadBalancersRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateLoadBalancer function of LoadBalancerClient - * @param {UpdateLoadBalancerRequest} updateLoadBalancerRequest - Data required for updateLoadBalancer - * @returns {Promise} - */ - update(updateLoadBalancerRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient - .updateLoadBalancer(updateLoadBalancerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._loadBalancerClient = this._oci.LoadBalancerClient(params, clientConfiguration); + } + /** + * Trigers the createLoadBalancer function of LoadBalancerClient + * @param {CreateLoadBalancerRequest} createLoadBalancerRequest - Data required for createLoadBalancer + * @returns {Promise} + */ + create(createLoadBalancerRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient.createLoadBalancer(createLoadBalancerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteLoadBalancer function of LoadBalancerClient + * @param {DeleteLoadBalancerRequest} deleteLoadBalancerRequest - Data required for deleteLoadBalancer + * @returns {Promise} + */ + delete(deleteLoadBalancerRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient.deleteLoadBalancer(deleteLoadBalancerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getLoadBalancer function of LoadBalancerClient + * @param {GetLoadBalancerRequest} getLoadBalancerRequest - Data required for getLoadBalancer + * @returns {Promise} + */ + get(getLoadBalancerRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient.getLoadBalancer(getLoadBalancerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listLoadBalancers function of LoadBalancerClient + * @param {ListLoadBalancersRequest} listLoadBalancersRequest - Data required for listLoadBalancers + * @returns {Promise} + */ + list(listLoadBalancersRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient.listLoadBalancers(listLoadBalancersRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateLoadBalancer function of LoadBalancerClient + * @param {UpdateLoadBalancerRequest} updateLoadBalancerRequest - Data required for updateLoadBalancer + * @returns {Promise} + */ + update(updateLoadBalancerRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient.updateLoadBalancer(updateLoadBalancerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_LoadBalancer; diff --git a/generator/generatedClasses/Oracle/storage/oci-archivalStorage.js b/generator/generatedClasses/Oracle/storage/oci-archivalStorage.js index 5ee149d6..202582b3 100644 --- a/generator/generatedClasses/Oracle/storage/oci-archivalStorage.js +++ b/generator/generatedClasses/Oracle/storage/oci-archivalStorage.js @@ -1,72 +1,66 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ObjectStorageClient object - * @category Oracle Cloud - */ + * Class to create a ObjectStorageClient object + * @category Oracle Cloud + */ class Oracle_ArchivalStorage { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.ObjectStorageClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createBucket function of ObjectStorageClient - * @param {CreateBucketRequest} createBucketRequest - Data required for createBucket - * @returns {Promise} - */ - create(createBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .createBucket(createBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteBucket function of ObjectStorageClient - * @param {DeleteBucketRequest} deleteBucketRequest - Data required for deleteBucket - * @returns {Promise} - */ - delete(deleteBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .deleteBucket(deleteBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listBuckets function of ObjectStorageClient - * @param {ListBucketsRequest} listBucketsRequest - Data required for listBuckets - * @returns {Promise} - */ - list(listBucketsRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .listBuckets(listBucketsRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateBucket function of ObjectStorageClient - * @param {UpdateBucketRequest} updateBucketRequest - Data required for updateBucket - * @returns {Promise} - */ - update(updateBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .updateBucket(updateBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._objectStorageClient = this._oci.ObjectStorageClient(params, clientConfiguration); + } + /** + * Trigers the createBucket function of ObjectStorageClient + * @param {CreateBucketRequest} createBucketRequest - Data required for createBucket + * @returns {Promise} + */ + create(createBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient.createBucket(createBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteBucket function of ObjectStorageClient + * @param {DeleteBucketRequest} deleteBucketRequest - Data required for deleteBucket + * @returns {Promise} + */ + delete(deleteBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient.deleteBucket(deleteBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listBuckets function of ObjectStorageClient + * @param {ListBucketsRequest} listBucketsRequest - Data required for listBuckets + * @returns {Promise} + */ + list(listBucketsRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient.listBuckets(listBucketsRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateBucket function of ObjectStorageClient + * @param {UpdateBucketRequest} updateBucketRequest - Data required for updateBucket + * @returns {Promise} + */ + update(updateBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient.updateBucket(updateBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_ArchivalStorage; diff --git a/generator/generatedClasses/Oracle/storage/oci-blockStorage.js b/generator/generatedClasses/Oracle/storage/oci-blockStorage.js index 564157f5..36b43d66 100644 --- a/generator/generatedClasses/Oracle/storage/oci-blockStorage.js +++ b/generator/generatedClasses/Oracle/storage/oci-blockStorage.js @@ -1,72 +1,66 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a BlockstorageClient object - * @category Oracle Cloud - */ + * Class to create a BlockstorageClient object + * @category Oracle Cloud + */ class Oracle_BlockStorage { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.BlockstorageClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createVolume function of BlockstorageClient - * @param {CreateVolumeRequest} createVolumeRequest - Data required for createVolume - * @returns {Promise} - */ - create(createVolumeRequest) { - return new Promise((resolve, reject) => { - this._blockstorageClient - .createVolume(createVolumeRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteVolume function of BlockstorageClient - * @param {DeleteVolumeRequest} deleteVolumeRequest - Data required for deleteVolume - * @returns {Promise} - */ - delete(deleteVolumeRequest) { - return new Promise((resolve, reject) => { - this._blockstorageClient - .deleteVolume(deleteVolumeRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getVolume function of BlockstorageClient - * @param {GetVolumeRequest} getVolumeRequest - Data required for getVolume - * @returns {Promise} - */ - get(getVolumeRequest) { - return new Promise((resolve, reject) => { - this._blockstorageClient - .getVolume(getVolumeRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listVolumes function of BlockstorageClient - * @param {ListVolumesRequest} listVolumesRequest - Data required for listVolumes - * @returns {Promise} - */ - list(listVolumesRequest) { - return new Promise((resolve, reject) => { - this._blockstorageClient - .listVolumes(listVolumesRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._blockstorageClient = this._oci.BlockstorageClient(params, clientConfiguration); + } + /** + * Trigers the createVolume function of BlockstorageClient + * @param {CreateVolumeRequest} createVolumeRequest - Data required for createVolume + * @returns {Promise} + */ + create(createVolumeRequest) { + return new Promise((resolve, reject) => { + this._blockstorageClient.createVolume(createVolumeRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteVolume function of BlockstorageClient + * @param {DeleteVolumeRequest} deleteVolumeRequest - Data required for deleteVolume + * @returns {Promise} + */ + delete(deleteVolumeRequest) { + return new Promise((resolve, reject) => { + this._blockstorageClient.deleteVolume(deleteVolumeRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getVolume function of BlockstorageClient + * @param {GetVolumeRequest} getVolumeRequest - Data required for getVolume + * @returns {Promise} + */ + get(getVolumeRequest) { + return new Promise((resolve, reject) => { + this._blockstorageClient.getVolume(getVolumeRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listVolumes function of BlockstorageClient + * @param {ListVolumesRequest} listVolumesRequest - Data required for listVolumes + * @returns {Promise} + */ + list(listVolumesRequest) { + return new Promise((resolve, reject) => { + this._blockstorageClient.listVolumes(listVolumesRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_BlockStorage; diff --git a/generator/generatedClasses/Oracle/storage/oci-storageBucket.js b/generator/generatedClasses/Oracle/storage/oci-storageBucket.js index d275871b..f85aff48 100644 --- a/generator/generatedClasses/Oracle/storage/oci-storageBucket.js +++ b/generator/generatedClasses/Oracle/storage/oci-storageBucket.js @@ -1,85 +1,78 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ObjectStorageClient object - * @category Oracle Cloud - */ + * Class to create a ObjectStorageClient object + * @category Oracle Cloud + */ class Oracle_StorageBucket { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.ObjectStorageClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createBucket function of ObjectStorageClient - * @param {CreateBucketRequest} createBucketRequest - Data required for createBucket - * @returns {Promise} - */ - create(createBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .createBucket(createBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteBucket function of ObjectStorageClient - * @param {DeleteBucketRequest} deleteBucketRequest - Data required for deleteBucket - * @returns {Promise} - */ - delete(deleteBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .deleteBucket(deleteBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getBucket function of ObjectStorageClient - * @param {GetBucketRequest} getBucketRequest - Data required for getBucket - * @returns {Promise} - */ - get(getBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .getBucket(getBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listBuckets function of ObjectStorageClient - * @param {ListBucketsRequest} listBucketsRequest - Data required for listBuckets - * @returns {Promise} - */ - list(listBucketsRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .listBuckets(listBucketsRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the reencryptBucket function of ObjectStorageClient - * @param {ReencryptBucketRequest} reencryptBucketRequest - Data required for reencryptBucket - * @returns {Promise} - */ - reencrypt(reencryptBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .reencryptBucket(reencryptBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._objectStorageClient = this._oci.ObjectStorageClient(params, clientConfiguration); + } + /** + * Trigers the createBucket function of ObjectStorageClient + * @param {CreateBucketRequest} createBucketRequest - Data required for createBucket + * @returns {Promise} + */ + create(createBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient.createBucket(createBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteBucket function of ObjectStorageClient + * @param {DeleteBucketRequest} deleteBucketRequest - Data required for deleteBucket + * @returns {Promise} + */ + delete(deleteBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient.deleteBucket(deleteBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getBucket function of ObjectStorageClient + * @param {GetBucketRequest} getBucketRequest - Data required for getBucket + * @returns {Promise} + */ + get(getBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient.getBucket(getBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listBuckets function of ObjectStorageClient + * @param {ListBucketsRequest} listBucketsRequest - Data required for listBuckets + * @returns {Promise} + */ + list(listBucketsRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient.listBuckets(listBucketsRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the reencryptBucket function of ObjectStorageClient + * @param {ReencryptBucketRequest} reencryptBucketRequest - Data required for reencryptBucket + * @returns {Promise} + */ + reencrypt(reencryptBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient.reencryptBucket(reencryptBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_StorageBucket; diff --git a/packages/linode-plugin/compute/linode-computeInstance.js b/packages/linode-plugin/compute/linode-computeInstance.js index 11073154..bfba842e 100644 --- a/packages/linode-plugin/compute/linode-computeInstance.js +++ b/packages/linode-plugin/compute/linode-computeInstance.js @@ -1,75 +1,68 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ComputeInstanceLinodeClass object - * @category Linode - */ + * Class to create a ComputeInstanceLinodeClass object + * @category Linode + */ class Linode_ComputeInstance { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - } - /** - * Trigers the getLinodes function of ComputeInstanceLinodeClass - * @param {Params} params - Data required for getLinodes - * @param {Filter} filter - Data required for getLinodes - * @returns {Promise} - */ - list(params = undefined, filter = undefined) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .getLinodes(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createLinode function of ComputeInstanceLinodeClass - * @param {CreateLinodeRequest} data - Data required for createLinode - * @returns {Promise} - */ - create(data) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .createLinode(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateLinode function of ComputeInstanceLinodeClass - * @param {NumberKeyword} linodeId - Data required for updateLinode - * @param {DeepPartial} values - Data required for updateLinode - * @returns {Promise} - */ - update(linodeId, values) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .updateLinode(linodeId, values) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteLinode function of ComputeInstanceLinodeClass - * @param {NumberKeyword} linodeId - Data required for deleteLinode - * @returns {Promise} - */ - delete(linodeId) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .deleteLinode(linodeId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getLinodes function of ComputeInstanceLinodeClass + * @param {Params} params - Data required for getLinodes + * @param {Filter} filter - Data required for getLinodes + * @returns {Promise} + */ + list(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode.getLinodes(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createLinode function of ComputeInstanceLinodeClass + * @param {CreateLinodeRequest} data - Data required for createLinode + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode.createLinode(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateLinode function of ComputeInstanceLinodeClass + * @param {NumberKeyword} linodeId - Data required for updateLinode + * @param {DeepPartial} values - Data required for updateLinode + * @returns {Promise} + */ + update(linodeId, values) { + return new Promise((resolve, reject) => { + this._linode.updateLinode(linodeId, values) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteLinode function of ComputeInstanceLinodeClass + * @param {NumberKeyword} linodeId - Data required for deleteLinode + * @returns {Promise} + */ + delete(linodeId) { + return new Promise((resolve, reject) => { + this._linode.deleteLinode(linodeId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_ComputeInstance; diff --git a/packages/linode-plugin/compute/linode-kubernetes.js b/packages/linode-plugin/compute/linode-kubernetes.js index 0656b2c6..a7414df0 100644 --- a/packages/linode-plugin/compute/linode-kubernetes.js +++ b/packages/linode-plugin/compute/linode-kubernetes.js @@ -1,130 +1,122 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a KubernetesLinodeClass object - * @category Linode - */ + * Class to create a KubernetesLinodeClass object + * @category Linode + */ class Linode_Kubernetes { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getKubernetesClusters function of KubernetesLinodeClass - * @param {Params} params - Data required for getKubernetesClusters - * @param {Filter} filters - Data required for getKubernetesClusters - * @returns {Promise} - */ - getAllClusters(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getKubernetesClusters(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createKubernetesCluster function of KubernetesLinodeClass - * @param {CreateKubeClusterPayload} data - Data required for createKubernetesCluster - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode - .createKubernetesCluster(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteKubernetesCluster function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for deleteKubernetesCluster - * @returns {Promise} - */ - delete(clusterID) { - return new Promise((resolve, reject) => { - this._linode - .deleteKubernetesCluster(clusterID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getNodePools function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for getNodePools - * @param {Params} params - Data required for getNodePools - * @param {Filter} filters - Data required for getNodePools - * @returns {Promise} - */ - getNodePools(clusterID, params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getNodePools(clusterID, params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for getNodePool - * @param {NumberKeyword} nodePoolID - Data required for getNodePool - * @returns {Promise} - */ - getNodePool(clusterID, nodePoolID) { - return new Promise((resolve, reject) => { - this._linode - .getNodePool(clusterID, nodePoolID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for createNodePool - * @param {CreateNodePoolData} data - Data required for createNodePool - * @returns {Promise} - */ - createNodePool(clusterID, data) { - return new Promise((resolve, reject) => { - this._linode - .createNodePool(clusterID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for updateNodePool - * @param {NumberKeyword} nodePoolID - Data required for updateNodePool - * @param {Partial} data - Data required for updateNodePool - * @returns {Promise} - */ - updateNodePool(clusterID, nodePoolID, data) { - return new Promise((resolve, reject) => { - this._linode - .updateNodePool(clusterID, nodePoolID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for deleteNodePool - * @param {NumberKeyword} nodePoolID - Data required for deleteNodePool - * @returns {Promise} - */ - deleteNodePool(clusterID, nodePoolID) { - return new Promise((resolve, reject) => { - this._linode - .deleteNodePool(clusterID, nodePoolID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getKubernetesClusters function of KubernetesLinodeClass + * @param {Params} params - Data required for getKubernetesClusters + * @param {Filter} filters - Data required for getKubernetesClusters + * @returns {Promise} + */ + getAllClusters(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getKubernetesClusters(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createKubernetesCluster function of KubernetesLinodeClass + * @param {CreateKubeClusterPayload} data - Data required for createKubernetesCluster + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode.createKubernetesCluster(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteKubernetesCluster function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for deleteKubernetesCluster + * @returns {Promise} + */ + delete(clusterID) { + return new Promise((resolve, reject) => { + this._linode.deleteKubernetesCluster(clusterID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getNodePools function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for getNodePools + * @param {Params} params - Data required for getNodePools + * @param {Filter} filters - Data required for getNodePools + * @returns {Promise} + */ + getNodePools(clusterID, params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getNodePools(clusterID, params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for getNodePool + * @param {NumberKeyword} nodePoolID - Data required for getNodePool + * @returns {Promise} + */ + getNodePool(clusterID, nodePoolID) { + return new Promise((resolve, reject) => { + this._linode.getNodePool(clusterID, nodePoolID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for createNodePool + * @param {CreateNodePoolData} data - Data required for createNodePool + * @returns {Promise} + */ + createNodePool(clusterID, data) { + return new Promise((resolve, reject) => { + this._linode.createNodePool(clusterID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for updateNodePool + * @param {NumberKeyword} nodePoolID - Data required for updateNodePool + * @param {Partial} data - Data required for updateNodePool + * @returns {Promise} + */ + updateNodePool(clusterID, nodePoolID, data) { + return new Promise((resolve, reject) => { + this._linode.updateNodePool(clusterID, nodePoolID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for deleteNodePool + * @param {NumberKeyword} nodePoolID - Data required for deleteNodePool + * @returns {Promise} + */ + deleteNodePool(clusterID, nodePoolID) { + return new Promise((resolve, reject) => { + this._linode.deleteNodePool(clusterID, nodePoolID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_Kubernetes; diff --git a/packages/linode-plugin/database/linode-RDBMS.js b/packages/linode-plugin/database/linode-RDBMS.js index 6dc5e55e..25bfe893 100644 --- a/packages/linode-plugin/database/linode-RDBMS.js +++ b/packages/linode-plugin/database/linode-RDBMS.js @@ -1,103 +1,97 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a RDBMSLinodeClass object - * @category Linode - */ + * Class to create a RDBMSLinodeClass object + * @category Linode + */ class Linode_RDBMS { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getDatabases function of RDBMSLinodeClass - * @param {Params} params - Data required for getDatabases - * @param {Filter} filter - Data required for getDatabases - * @returns {Promise} - */ - getDatabases(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getDatabases(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDatabaseEngines function of RDBMSLinodeClass - * @param {Params} params - Data required for getDatabaseEngines - * @param {Filter} filter - Data required for getDatabaseEngines - * @returns {Promise} - */ - getDatabaseEngines(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getDatabaseEngines(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createDatabase function of RDBMSLinodeClass - * @param {UnionType} engine - Data required for createDatabase - * @param {CreateDatabasePayload} data - Data required for createDatabase - * @returns {Promise} - */ - createDatabase(engine, data) { - return new Promise((resolve, reject) => { - this._linode - .createDatabase(engine, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getEngineDatabase function of RDBMSLinodeClass - * @param {Engine} engine - Data required for getEngineDatabase - * @param {NumberKeyword} databaseID - Data required for getEngineDatabase - * @returns {Promise} - */ - getEngineDatabase(engine, databaseID) { - return new Promise((resolve, reject) => { - this._linode - .getEngineDatabase(engine, databaseID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateDatabase function of RDBMSLinodeClass - * @param {Engine} engine - Data required for updateDatabase - * @param {NumberKeyword} databaseID - Data required for updateDatabase - * @param {UpdateDatabasePayload} data - Data required for updateDatabase - * @returns {Promise} - */ - updateDatabase(engine, databaseID, data) { - return new Promise((resolve, reject) => { - this._linode - .updateDatabase(engine, databaseID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDatabase function of RDBMSLinodeClass - * @param {Engine} engine - Data required for deleteDatabase - * @param {NumberKeyword} databaseID - Data required for deleteDatabase - * @returns {Promise} - */ - deleteDatabase(engine, databaseID) { - return new Promise((resolve, reject) => { - this._linode - .deleteDatabase(engine, databaseID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getDatabases function of RDBMSLinodeClass + * @param {Params} params - Data required for getDatabases + * @param {Filter} filter - Data required for getDatabases + * @returns {Promise} + */ + getDatabases(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode.getDatabases(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDatabaseEngines function of RDBMSLinodeClass + * @param {Params} params - Data required for getDatabaseEngines + * @param {Filter} filter - Data required for getDatabaseEngines + * @returns {Promise} + */ + getDatabaseEngines(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode.getDatabaseEngines(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createDatabase function of RDBMSLinodeClass + * @param {UnionType} engine - Data required for createDatabase + * @param {CreateDatabasePayload} data - Data required for createDatabase + * @returns {Promise} + */ + createDatabase(engine, data) { + return new Promise((resolve, reject) => { + this._linode.createDatabase(engine, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getEngineDatabase function of RDBMSLinodeClass + * @param {Engine} engine - Data required for getEngineDatabase + * @param {NumberKeyword} databaseID - Data required for getEngineDatabase + * @returns {Promise} + */ + getEngineDatabase(engine, databaseID) { + return new Promise((resolve, reject) => { + this._linode.getEngineDatabase(engine, databaseID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateDatabase function of RDBMSLinodeClass + * @param {Engine} engine - Data required for updateDatabase + * @param {NumberKeyword} databaseID - Data required for updateDatabase + * @param {UpdateDatabasePayload} data - Data required for updateDatabase + * @returns {Promise} + */ + updateDatabase(engine, databaseID, data) { + return new Promise((resolve, reject) => { + this._linode.updateDatabase(engine, databaseID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDatabase function of RDBMSLinodeClass + * @param {Engine} engine - Data required for deleteDatabase + * @param {NumberKeyword} databaseID - Data required for deleteDatabase + * @returns {Promise} + */ + deleteDatabase(engine, databaseID) { + return new Promise((resolve, reject) => { + this._linode.deleteDatabase(engine, databaseID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_RDBMS; diff --git a/packages/linode-plugin/firewalls/linode-firewalls.js b/packages/linode-plugin/firewalls/linode-firewalls.js index b1b07143..dca7266c 100644 --- a/packages/linode-plugin/firewalls/linode-firewalls.js +++ b/packages/linode-plugin/firewalls/linode-firewalls.js @@ -1,117 +1,104 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a FirewallsLinodeClass object - * @category Linode - */ + * Class to create a FirewallsLinodeClass object + * @category Linode + */ class Linode_Firewalls { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - } - /** - * Trigers the getFirewalls function of FirewallsLinodeClass - * @param {Params} params - Data required for getFirewalls - * @param {Filter} filter - Data required for getFirewalls - * @returns {Promise} - */ - getFirewalls(params = undefined, filter = undefined) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .getFirewalls(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for getFirewall - * @returns {Promise} - */ - getFirewall(firewallID) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .getFirewall(firewallID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createFirewall function of FirewallsLinodeClass - * @param {CreateFirewallPayload} data - Data required for createFirewall - * @returns {Promise} - */ - createFirewall(data) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .createFirewall(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for updateFirewall - * @param {UpdateFirewallPayload} data - Data required for updateFirewall - * @returns {Promise} - */ - updateFirewall(firewallID, data) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .updateFirewall(firewallID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the enableFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for enableFirewall - * @returns {Promise} - */ - enableFirewall(firewallID) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .enableFirewall(firewallID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the disableFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for disableFirewall - * @returns {Promise} - */ - disableFirewall(firewallID) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .disableFirewall(firewallID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for deleteFirewall - * @returns {Promise} - */ - deleteFirewall(firewallID) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .deleteFirewall(firewallID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getFirewalls function of FirewallsLinodeClass + * @param {Params} params - Data required for getFirewalls + * @param {Filter} filter - Data required for getFirewalls + * @returns {Promise} + */ + getFirewalls(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode.getFirewalls(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for getFirewall + * @returns {Promise} + */ + getFirewall(firewallID) { + return new Promise((resolve, reject) => { + this._linode.getFirewall(firewallID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createFirewall function of FirewallsLinodeClass + * @param {CreateFirewallPayload} data - Data required for createFirewall + * @returns {Promise} + */ + createFirewall(data) { + return new Promise((resolve, reject) => { + this._linode.createFirewall(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for updateFirewall + * @param {UpdateFirewallPayload} data - Data required for updateFirewall + * @returns {Promise} + */ + updateFirewall(firewallID, data) { + return new Promise((resolve, reject) => { + this._linode.updateFirewall(firewallID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the enableFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for enableFirewall + * @returns {Promise} + */ + enableFirewall(firewallID) { + return new Promise((resolve, reject) => { + this._linode.enableFirewall(firewallID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the disableFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for disableFirewall + * @returns {Promise} + */ + disableFirewall(firewallID) { + return new Promise((resolve, reject) => { + this._linode.disableFirewall(firewallID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for deleteFirewall + * @returns {Promise} + */ + deleteFirewall(firewallID) { + return new Promise((resolve, reject) => { + this._linode.deleteFirewall(firewallID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_Firewalls; diff --git a/packages/linode-plugin/images/linode-images.js b/packages/linode-plugin/images/linode-images.js index 09118eb2..1be67ed1 100644 --- a/packages/linode-plugin/images/linode-images.js +++ b/packages/linode-plugin/images/linode-images.js @@ -1,112 +1,96 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ImagesLinodeClass object - * @category Linode - */ + * Class to create a ImagesLinodeClass object + * @category Linode + */ class Linode_Images { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - } - /** - * Trigers the getImage function of ImagesLinodeClass - * @param {StringKeyword} imageId - Data required for getImage - * @returns {Promise} - */ - getImage(imageId) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .getImage(imageId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getImages function of ImagesLinodeClass - * @param {Params} params - Data required for getImages - * @param {Filter} filters - Data required for getImages - * @returns {Promise} - */ - getImages(params = undefined, filters = undefined) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .getImages(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createImage function of ImagesLinodeClass - * @param {NumberKeyword} diskId - Data required for createImage - * @param {StringKeyword} label - Data required for createImage - * @param {StringKeyword} description - Data required for createImage - * @param {BooleanKeyword} cloud_init - Data required for createImage - * @returns {Promise} - */ - createImage( - diskId, - label = undefined, - description = undefined, - cloud_init = undefined - ) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .createImage(diskId, label, description, cloud_init) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateImage function of ImagesLinodeClass - * @param {StringKeyword} imageId - Data required for updateImage - * @param {StringKeyword} label - Data required for updateImage - * @param {StringKeyword} description - Data required for updateImage - * @returns {Promise} - */ - updateImage(imageId, label = undefined, description = undefined) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .updateImage(imageId, label, description) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteImage function of ImagesLinodeClass - * @param {StringKeyword} imageId - Data required for deleteImage - * @returns {Promise} - */ - deleteImage(imageId) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .deleteImage(imageId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the uploadImage function of ImagesLinodeClass - * @param {ImageUploadPayload} data - Data required for uploadImage - * @returns {Promise} - */ - uploadImage(data) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .uploadImage(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getImage function of ImagesLinodeClass + * @param {StringKeyword} imageId - Data required for getImage + * @returns {Promise} + */ + getImage(imageId) { + return new Promise((resolve, reject) => { + this._linode.getImage(imageId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getImages function of ImagesLinodeClass + * @param {Params} params - Data required for getImages + * @param {Filter} filters - Data required for getImages + * @returns {Promise} + */ + getImages(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getImages(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createImage function of ImagesLinodeClass + * @param {NumberKeyword} diskId - Data required for createImage + * @param {StringKeyword} label - Data required for createImage + * @param {StringKeyword} description - Data required for createImage + * @param {BooleanKeyword} cloud_init - Data required for createImage + * @returns {Promise} + */ + createImage(diskId, label = undefined, description = undefined, cloud_init = undefined) { + return new Promise((resolve, reject) => { + this._linode.createImage(diskId, label, description, cloud_init) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateImage function of ImagesLinodeClass + * @param {StringKeyword} imageId - Data required for updateImage + * @param {StringKeyword} label - Data required for updateImage + * @param {StringKeyword} description - Data required for updateImage + * @returns {Promise} + */ + updateImage(imageId, label = undefined, description = undefined) { + return new Promise((resolve, reject) => { + this._linode.updateImage(imageId, label, description) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteImage function of ImagesLinodeClass + * @param {StringKeyword} imageId - Data required for deleteImage + * @returns {Promise} + */ + deleteImage(imageId) { + return new Promise((resolve, reject) => { + this._linode.deleteImage(imageId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the uploadImage function of ImagesLinodeClass + * @param {ImageUploadPayload} data - Data required for uploadImage + * @returns {Promise} + */ + uploadImage(data) { + return new Promise((resolve, reject) => { + this._linode.uploadImage(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_Images; diff --git a/packages/linode-plugin/management/linode-monitoring.js b/packages/linode-plugin/management/linode-monitoring.js index a10c532f..bce2e4ca 100644 --- a/packages/linode-plugin/management/linode-monitoring.js +++ b/packages/linode-plugin/management/linode-monitoring.js @@ -1,147 +1,130 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a MonitoringLinodeClass object - * @category Linode - */ + * Class to create a MonitoringLinodeClass object + * @category Linode + */ class Linode_Monitoring { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - } - /** - * Trigers the getServices function of MonitoringLinodeClass - * @param {Params} params - Data required for getServices - * @param {Filter} filters - Data required for getServices - * @returns {Promise} - */ - getServices(params = undefined, filters = undefined) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .getServices(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the disableServiceMonitor function of MonitoringLinodeClass - * @param {NumberKeyword} serviceID - Data required for disableServiceMonitor - * @returns {Promise} - */ - disableServiceMonitor(serviceID) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .disableServiceMonitor(serviceID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the enableServiceMonitor function of MonitoringLinodeClass - * @param {NumberKeyword} serviceID - Data required for enableServiceMonitor - * @returns {Promise} - */ - enableServiceMonitor(serviceID) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .enableServiceMonitor(serviceID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteServiceMonitor function of MonitoringLinodeClass - * @param {NumberKeyword} serviceID - Data required for deleteServiceMonitor - * @returns {Promise} - */ - deleteServiceMonitor(serviceID) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .deleteServiceMonitor(serviceID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createServiceMonitor function of MonitoringLinodeClass - * @param {ManagedServicePayload} data - Data required for createServiceMonitor - * @returns {Promise} - */ - createServiceMonitor(data) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .createServiceMonitor(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateServiceMonitor function of MonitoringLinodeClass - * @param {NumberKeyword} monitorID - Data required for updateServiceMonitor - * @param {Partial} data - Data required for updateServiceMonitor - * @returns {Promise} - */ - updateServiceMonitor(monitorID, data) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .updateServiceMonitor(monitorID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getCredentials function of MonitoringLinodeClass - * @param {Params} params - Data required for getCredentials - * @param {Filter} filters - Data required for getCredentials - * @returns {Promise} - */ - getCredentials(params = undefined, filters = undefined) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .getCredentials(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateCredential function of MonitoringLinodeClass - * @param {NumberKeyword} credentialID - Data required for updateCredential - * @param {UpdateCredentialPayload} data - Data required for updateCredential - * @returns {Promise} - */ - updateCredential(credentialID, data) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .updateCredential(credentialID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteCredential function of MonitoringLinodeClass - * @param {NumberKeyword} credentialID - Data required for deleteCredential - * @returns {Promise} - */ - deleteCredential(credentialID) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .deleteCredential(credentialID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getServices function of MonitoringLinodeClass + * @param {Params} params - Data required for getServices + * @param {Filter} filters - Data required for getServices + * @returns {Promise} + */ + getServices(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getServices(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the disableServiceMonitor function of MonitoringLinodeClass + * @param {NumberKeyword} serviceID - Data required for disableServiceMonitor + * @returns {Promise} + */ + disableServiceMonitor(serviceID) { + return new Promise((resolve, reject) => { + this._linode.disableServiceMonitor(serviceID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the enableServiceMonitor function of MonitoringLinodeClass + * @param {NumberKeyword} serviceID - Data required for enableServiceMonitor + * @returns {Promise} + */ + enableServiceMonitor(serviceID) { + return new Promise((resolve, reject) => { + this._linode.enableServiceMonitor(serviceID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteServiceMonitor function of MonitoringLinodeClass + * @param {NumberKeyword} serviceID - Data required for deleteServiceMonitor + * @returns {Promise} + */ + deleteServiceMonitor(serviceID) { + return new Promise((resolve, reject) => { + this._linode.deleteServiceMonitor(serviceID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createServiceMonitor function of MonitoringLinodeClass + * @param {ManagedServicePayload} data - Data required for createServiceMonitor + * @returns {Promise} + */ + createServiceMonitor(data) { + return new Promise((resolve, reject) => { + this._linode.createServiceMonitor(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateServiceMonitor function of MonitoringLinodeClass + * @param {NumberKeyword} monitorID - Data required for updateServiceMonitor + * @param {Partial} data - Data required for updateServiceMonitor + * @returns {Promise} + */ + updateServiceMonitor(monitorID, data) { + return new Promise((resolve, reject) => { + this._linode.updateServiceMonitor(monitorID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getCredentials function of MonitoringLinodeClass + * @param {Params} params - Data required for getCredentials + * @param {Filter} filters - Data required for getCredentials + * @returns {Promise} + */ + getCredentials(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getCredentials(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateCredential function of MonitoringLinodeClass + * @param {NumberKeyword} credentialID - Data required for updateCredential + * @param {UpdateCredentialPayload} data - Data required for updateCredential + * @returns {Promise} + */ + updateCredential(credentialID, data) { + return new Promise((resolve, reject) => { + this._linode.updateCredential(credentialID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteCredential function of MonitoringLinodeClass + * @param {NumberKeyword} credentialID - Data required for deleteCredential + * @returns {Promise} + */ + deleteCredential(credentialID) { + return new Promise((resolve, reject) => { + this._linode.deleteCredential(credentialID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_Monitoring; diff --git a/packages/linode-plugin/network/linode-DNS.js b/packages/linode-plugin/network/linode-DNS.js index 215b4427..ce3dc8a0 100644 --- a/packages/linode-plugin/network/linode-DNS.js +++ b/packages/linode-plugin/network/linode-DNS.js @@ -1,104 +1,93 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a DNSLinodeClass object - * @category Linode - */ + * Class to create a DNSLinodeClass object + * @category Linode + */ class Linode_DNS { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - } - /** - * Trigers the getDomains function of DNSLinodeClass - * @param {Params} params - Data required for getDomains - * @param {Filter} filter - Data required for getDomains - * @returns {Promise} - */ - getDomains(params = undefined, filter = undefined) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .getDomains(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDomain function of DNSLinodeClass - * @param {NumberKeyword} domainId - Data required for getDomain - * @returns {Promise} - */ - getDomain(domainId) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .getDomain(domainId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createDomain function of DNSLinodeClass - * @param {CreateDomainPayload} data - Data required for createDomain - * @returns {Promise} - */ - createDomain(data) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .createDomain(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateDomain function of DNSLinodeClass - * @param {NumberKeyword} domainId - Data required for updateDomain - * @param {UpdateDomainPayload} data - Data required for updateDomain - * @returns {Promise} - */ - updateDomain(domainId, data) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .updateDomain(domainId, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDomain function of DNSLinodeClass - * @param {NumberKeyword} domainId - Data required for deleteDomain - * @returns {Promise} - */ - deleteDomain(domainId) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .deleteDomain(domainId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the cloneDomain function of DNSLinodeClass - * @param {NumberKeyword} domainId - Data required for cloneDomain - * @param {CloneDomainPayload} data - Data required for cloneDomain - * @returns {Promise} - */ - cloneDomain(domainId, data) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .cloneDomain(domainId, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getDomains function of DNSLinodeClass + * @param {Params} params - Data required for getDomains + * @param {Filter} filter - Data required for getDomains + * @returns {Promise} + */ + getDomains(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode.getDomains(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDomain function of DNSLinodeClass + * @param {NumberKeyword} domainId - Data required for getDomain + * @returns {Promise} + */ + getDomain(domainId) { + return new Promise((resolve, reject) => { + this._linode.getDomain(domainId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createDomain function of DNSLinodeClass + * @param {CreateDomainPayload} data - Data required for createDomain + * @returns {Promise} + */ + createDomain(data) { + return new Promise((resolve, reject) => { + this._linode.createDomain(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateDomain function of DNSLinodeClass + * @param {NumberKeyword} domainId - Data required for updateDomain + * @param {UpdateDomainPayload} data - Data required for updateDomain + * @returns {Promise} + */ + updateDomain(domainId, data) { + return new Promise((resolve, reject) => { + this._linode.updateDomain(domainId, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDomain function of DNSLinodeClass + * @param {NumberKeyword} domainId - Data required for deleteDomain + * @returns {Promise} + */ + deleteDomain(domainId) { + return new Promise((resolve, reject) => { + this._linode.deleteDomain(domainId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the cloneDomain function of DNSLinodeClass + * @param {NumberKeyword} domainId - Data required for cloneDomain + * @param {CloneDomainPayload} data - Data required for cloneDomain + * @returns {Promise} + */ + cloneDomain(domainId, data) { + return new Promise((resolve, reject) => { + this._linode.cloneDomain(domainId, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_DNS; diff --git a/packages/linode-plugin/network/linode-loadBalancer.js b/packages/linode-plugin/network/linode-loadBalancer.js index bdcce93e..eb97ba0e 100644 --- a/packages/linode-plugin/network/linode-loadBalancer.js +++ b/packages/linode-plugin/network/linode-loadBalancer.js @@ -1,75 +1,68 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a LoadBalancerLinodeClass object - * @category Linode - */ + * Class to create a LoadBalancerLinodeClass object + * @category Linode + */ class Linode_LoadBalancer { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - } - /** - * Trigers the getNodeBalancers function of LoadBalancerLinodeClass - * @param {Params} params - Data required for getNodeBalancers - * @param {Filter} filters - Data required for getNodeBalancers - * @returns {Promise} - */ - list(params = undefined, filters = undefined) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .getNodeBalancers(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateNodeBalancer function of LoadBalancerLinodeClass - * @param {NumberKeyword} nodeBalancerId - Data required for updateNodeBalancer - * @param {Partial} data - Data required for updateNodeBalancer - * @returns {Promise} - */ - update(nodeBalancerId, data) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .updateNodeBalancer(nodeBalancerId, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createNodeBalancer function of LoadBalancerLinodeClass - * @param {CreateNodeBalancerPayload} data - Data required for createNodeBalancer - * @returns {Promise} - */ - create(data) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .createNodeBalancer(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteNodeBalancer function of LoadBalancerLinodeClass - * @param {NumberKeyword} nodeBalancerId - Data required for deleteNodeBalancer - * @returns {Promise} - */ - delete(nodeBalancerId) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .deleteNodeBalancer(nodeBalancerId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getNodeBalancers function of LoadBalancerLinodeClass + * @param {Params} params - Data required for getNodeBalancers + * @param {Filter} filters - Data required for getNodeBalancers + * @returns {Promise} + */ + list(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getNodeBalancers(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateNodeBalancer function of LoadBalancerLinodeClass + * @param {NumberKeyword} nodeBalancerId - Data required for updateNodeBalancer + * @param {Partial} data - Data required for updateNodeBalancer + * @returns {Promise} + */ + update(nodeBalancerId, data) { + return new Promise((resolve, reject) => { + this._linode.updateNodeBalancer(nodeBalancerId, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createNodeBalancer function of LoadBalancerLinodeClass + * @param {CreateNodeBalancerPayload} data - Data required for createNodeBalancer + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode.createNodeBalancer(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteNodeBalancer function of LoadBalancerLinodeClass + * @param {NumberKeyword} nodeBalancerId - Data required for deleteNodeBalancer + * @returns {Promise} + */ + delete(nodeBalancerId) { + return new Promise((resolve, reject) => { + this._linode.deleteNodeBalancer(nodeBalancerId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_LoadBalancer; diff --git a/packages/linode-plugin/storage/linode-blockStorage.js b/packages/linode-plugin/storage/linode-blockStorage.js index a4d93e6d..63c16610 100644 --- a/packages/linode-plugin/storage/linode-blockStorage.js +++ b/packages/linode-plugin/storage/linode-blockStorage.js @@ -1,75 +1,68 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a BlockStorageLinodeClass object - * @category Linode - */ + * Class to create a BlockStorageLinodeClass object + * @category Linode + */ class Linode_BlockStorage { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - } - /** - * Trigers the getVolumes function of BlockStorageLinodeClass - * @param {Params} params - Data required for getVolumes - * @param {Filter} filters - Data required for getVolumes - * @returns {Promise} - */ - list(params = undefined, filters = undefined) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .getVolumes(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteVolume function of BlockStorageLinodeClass - * @param {NumberKeyword} volumeId - Data required for deleteVolume - * @returns {Promise} - */ - delete(volumeId) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .deleteVolume(volumeId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateVolume function of BlockStorageLinodeClass - * @param {NumberKeyword} volumeId - Data required for updateVolume - * @param {UpdateVolumeRequest} data - Data required for updateVolume - * @returns {Promise} - */ - update(volumeId, data) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .updateVolume(volumeId, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createVolume function of BlockStorageLinodeClass - * @param {VolumeRequestPayload} data - Data required for createVolume - * @returns {Promise} - */ - create(data) { - this._linode.setToken(this._linodeToken); - return new Promise((resolve, reject) => { - this._linode - .createVolume(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getVolumes function of BlockStorageLinodeClass + * @param {Params} params - Data required for getVolumes + * @param {Filter} filters - Data required for getVolumes + * @returns {Promise} + */ + list(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getVolumes(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteVolume function of BlockStorageLinodeClass + * @param {NumberKeyword} volumeId - Data required for deleteVolume + * @returns {Promise} + */ + delete(volumeId) { + return new Promise((resolve, reject) => { + this._linode.deleteVolume(volumeId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateVolume function of BlockStorageLinodeClass + * @param {NumberKeyword} volumeId - Data required for updateVolume + * @param {UpdateVolumeRequest} data - Data required for updateVolume + * @returns {Promise} + */ + update(volumeId, data) { + return new Promise((resolve, reject) => { + this._linode.updateVolume(volumeId, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createVolume function of BlockStorageLinodeClass + * @param {VolumeRequestPayload} data - Data required for createVolume + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode.createVolume(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_BlockStorage; diff --git a/packages/linode-plugin/storage/linode-storageBucket.js b/packages/linode-plugin/storage/linode-storageBucket.js index 5b3b0741..6cdf3dfb 100644 --- a/packages/linode-plugin/storage/linode-storageBucket.js +++ b/packages/linode-plugin/storage/linode-storageBucket.js @@ -1,101 +1,95 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a StorageBucketLinodeClass object - * @category Linode - */ + * Class to create a StorageBucketLinodeClass object + * @category Linode + */ class Linode_StorageBucket { - /** - * - * @param {module} do Linode SDK - * @param {object} options SDK options - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getBucket function of StorageBucketLinodeClass - * @param {StringKeyword} clusterId - Data required for getBucket - * @param {StringKeyword} bucketName - Data required for getBucket - * @returns {Promise} - */ - get(clusterId, bucketName) { - return new Promise((resolve, reject) => { - this._linode - .getBucket(clusterId, bucketName) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getBuckets function of StorageBucketLinodeClass - * @param {Params} params - Data required for getBuckets - * @param {Filter} filters - Data required for getBuckets - * @returns {Promise} - */ - list(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode - .getBuckets(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createBucket function of StorageBucketLinodeClass - * @param {ObjectStorageBucketRequestPayload} data - Data required for createBucket - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode - .createBucket(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteBucket function of StorageBucketLinodeClass - * @param {ObjectStorageDeleteBucketRequestPayload} {cluster,label} - Data required for deleteBucket - * @returns {Promise} - */ - delete({ cluster, label }) { - return new Promise((resolve, reject) => { - this._linode - .deleteBucket({ cluster, label }) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getBucketAccess function of StorageBucketLinodeClass - * @param {StringKeyword} clusterId - Data required for getBucketAccess - * @param {StringKeyword} bucketName - Data required for getBucketAccess - * @returns {Promise} - */ - getBucketAccess(clusterId, bucketName) { - return new Promise((resolve, reject) => { - this._linode - .getBucketAccess(clusterId, bucketName) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateBucketAccess function of StorageBucketLinodeClass - * @param {StringKeyword} clusterId - Data required for updateBucketAccess - * @param {StringKeyword} bucketName - Data required for updateBucketAccess - * @param {ObjectStorageBucketAccessRequest} data - Data required for updateBucketAccess - * @returns {Promise} - */ - updateBucketAccess(clusterId, bucketName, data) { - return new Promise((resolve, reject) => { - this._linode - .updateBucketAccess(clusterId, bucketName, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getBucket function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for getBucket + * @param {StringKeyword} bucketName - Data required for getBucket + * @returns {Promise} + */ + get(clusterId, bucketName) { + return new Promise((resolve, reject) => { + this._linode.getBucket(clusterId, bucketName) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getBuckets function of StorageBucketLinodeClass + * @param {Params} params - Data required for getBuckets + * @param {Filter} filters - Data required for getBuckets + * @returns {Promise} + */ + list(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode.getBuckets(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createBucket function of StorageBucketLinodeClass + * @param {ObjectStorageBucketRequestPayload} data - Data required for createBucket + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode.createBucket(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteBucket function of StorageBucketLinodeClass + * @param {ObjectStorageDeleteBucketRequestPayload} {cluster,label} - Data required for deleteBucket + * @returns {Promise} + */ + delete({ cluster, label }) { + return new Promise((resolve, reject) => { + this._linode.deleteBucket({ cluster, label }) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getBucketAccess function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for getBucketAccess + * @param {StringKeyword} bucketName - Data required for getBucketAccess + * @returns {Promise} + */ + getBucketAccess(clusterId, bucketName) { + return new Promise((resolve, reject) => { + this._linode.getBucketAccess(clusterId, bucketName) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateBucketAccess function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for updateBucketAccess + * @param {StringKeyword} bucketName - Data required for updateBucketAccess + * @param {ObjectStorageBucketAccessRequest} data - Data required for updateBucketAccess + * @returns {Promise} + */ + updateBucketAccess(clusterId, bucketName, data) { + return new Promise((resolve, reject) => { + this._linode.updateBucketAccess(clusterId, bucketName, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_StorageBucket; diff --git a/packages/oracle-plugin/compute/oci-kubernetes.js b/packages/oracle-plugin/compute/oci-kubernetes.js index 3efe8d9a..8d14026f 100644 --- a/packages/oracle-plugin/compute/oci-kubernetes.js +++ b/packages/oracle-plugin/compute/oci-kubernetes.js @@ -1,150 +1,138 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ContainerEngineClient object - * @category Oracle Cloud - */ + * Class to create a ContainerEngineClient object + * @category Oracle Cloud + */ class Oracle_Kubernetes { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.ContainerEngineClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createCluster function of ContainerEngineClient - * @param {CreateClusterRequest} createClusterRequest - Data required for createCluster - * @returns {Promise} - */ - create(createClusterRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .createCluster(createClusterRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createNodePool function of ContainerEngineClient - * @param {CreateNodePoolRequest} createNodePoolRequest - Data required for createNodePool - * @returns {Promise} - */ - createNodePool(createNodePoolRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .createNodePool(createNodePoolRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteCluster function of ContainerEngineClient - * @param {DeleteClusterRequest} deleteClusterRequest - Data required for deleteCluster - * @returns {Promise} - */ - delete(deleteClusterRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .deleteCluster(deleteClusterRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteNode function of ContainerEngineClient - * @param {DeleteNodeRequest} deleteNodeRequest - Data required for deleteNode - * @returns {Promise} - */ - deleteNode(deleteNodeRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .deleteNode(deleteNodeRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteNodePool function of ContainerEngineClient - * @param {DeleteNodePoolRequest} deleteNodePoolRequest - Data required for deleteNodePool - * @returns {Promise} - */ - deleteNodePool(deleteNodePoolRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .deleteNodePool(deleteNodePoolRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getCluster function of ContainerEngineClient - * @param {GetClusterRequest} getClusterRequest - Data required for getCluster - * @returns {Promise} - */ - get(getClusterRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .getCluster(getClusterRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getNodePool function of ContainerEngineClient - * @param {GetNodePoolRequest} getNodePoolRequest - Data required for getNodePool - * @returns {Promise} - */ - getNodePool(getNodePoolRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .getNodePool(getNodePoolRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listClusters function of ContainerEngineClient - * @param {ListClustersRequest} listClustersRequest - Data required for listClusters - * @returns {Promise} - */ - list(listClustersRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .listClusters(listClustersRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateCluster function of ContainerEngineClient - * @param {UpdateClusterRequest} updateClusterRequest - Data required for updateCluster - * @returns {Promise} - */ - update(updateClusterRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .updateCluster(updateClusterRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateNodePool function of ContainerEngineClient - * @param {UpdateNodePoolRequest} updateNodePoolRequest - Data required for updateNodePool - * @returns {Promise} - */ - updateNodePool(updateNodePoolRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient - .updateNodePool(updateNodePoolRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._containerEngineClient = this._oci.ContainerEngineClient(params, clientConfiguration); + } + /** + * Trigers the createCluster function of ContainerEngineClient + * @param {CreateClusterRequest} createClusterRequest - Data required for createCluster + * @returns {Promise} + */ + create(createClusterRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.createCluster(createClusterRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createNodePool function of ContainerEngineClient + * @param {CreateNodePoolRequest} createNodePoolRequest - Data required for createNodePool + * @returns {Promise} + */ + createNodePool(createNodePoolRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.createNodePool(createNodePoolRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteCluster function of ContainerEngineClient + * @param {DeleteClusterRequest} deleteClusterRequest - Data required for deleteCluster + * @returns {Promise} + */ + delete(deleteClusterRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.deleteCluster(deleteClusterRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteNode function of ContainerEngineClient + * @param {DeleteNodeRequest} deleteNodeRequest - Data required for deleteNode + * @returns {Promise} + */ + deleteNode(deleteNodeRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.deleteNode(deleteNodeRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteNodePool function of ContainerEngineClient + * @param {DeleteNodePoolRequest} deleteNodePoolRequest - Data required for deleteNodePool + * @returns {Promise} + */ + deleteNodePool(deleteNodePoolRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.deleteNodePool(deleteNodePoolRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getCluster function of ContainerEngineClient + * @param {GetClusterRequest} getClusterRequest - Data required for getCluster + * @returns {Promise} + */ + get(getClusterRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.getCluster(getClusterRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getNodePool function of ContainerEngineClient + * @param {GetNodePoolRequest} getNodePoolRequest - Data required for getNodePool + * @returns {Promise} + */ + getNodePool(getNodePoolRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.getNodePool(getNodePoolRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listClusters function of ContainerEngineClient + * @param {ListClustersRequest} listClustersRequest - Data required for listClusters + * @returns {Promise} + */ + list(listClustersRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.listClusters(listClustersRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateCluster function of ContainerEngineClient + * @param {UpdateClusterRequest} updateClusterRequest - Data required for updateCluster + * @returns {Promise} + */ + update(updateClusterRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.updateCluster(updateClusterRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateNodePool function of ContainerEngineClient + * @param {UpdateNodePoolRequest} updateNodePoolRequest - Data required for updateNodePool + * @returns {Promise} + */ + updateNodePool(updateNodePoolRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient.updateNodePool(updateNodePoolRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_Kubernetes; diff --git a/packages/oracle-plugin/database/oci-RDBMS.js b/packages/oracle-plugin/database/oci-RDBMS.js index cd2dbaeb..56d2130a 100644 --- a/packages/oracle-plugin/database/oci-RDBMS.js +++ b/packages/oracle-plugin/database/oci-RDBMS.js @@ -1,111 +1,102 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a DbSystemClient object - * @category Oracle Cloud - */ + * Class to create a DbSystemClient object + * @category Oracle Cloud + */ class Oracle_RDBMS { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.DbSystemClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createDbSystem function of DbSystemClient - * @param {CreateDbSystemRequest} createDbSystemRequest - Data required for createDbSystem - * @returns {Promise} - */ - createDBSystem(createDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient - .createDbSystem(createDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDbSystem function of DbSystemClient - * @param {DeleteDbSystemRequest} deleteDbSystemRequest - Data required for deleteDbSystem - * @returns {Promise} - */ - deleteDBSystem(deleteDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient - .deleteDbSystem(deleteDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDbSystem function of DbSystemClient - * @param {GetDbSystemRequest} getDbSystemRequest - Data required for getDbSystem - * @returns {Promise} - */ - getDBSystem(getDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient - .getDbSystem(getDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the restartDbSystem function of DbSystemClient - * @param {RestartDbSystemRequest} restartDbSystemRequest - Data required for restartDbSystem - * @returns {Promise} - */ - restartDBSystem(restartDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient - .restartDbSystem(restartDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the startDbSystem function of DbSystemClient - * @param {StartDbSystemRequest} startDbSystemRequest - Data required for startDbSystem - * @returns {Promise} - */ - startDBSystem(startDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient - .startDbSystem(startDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the stopDbSystem function of DbSystemClient - * @param {StopDbSystemRequest} stopDbSystemRequest - Data required for stopDbSystem - * @returns {Promise} - */ - stopDBSystem(stopDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient - .stopDbSystem(stopDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateDbSystem function of DbSystemClient - * @param {UpdateDbSystemRequest} updateDbSystemRequest - Data required for updateDbSystem - * @returns {Promise} - */ - updateDBSystem(updateDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient - .updateDbSystem(updateDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._dbSystemClient = this._oci.DbSystemClient(params, clientConfiguration); + } + /** + * Trigers the createDbSystem function of DbSystemClient + * @param {CreateDbSystemRequest} createDbSystemRequest - Data required for createDbSystem + * @returns {Promise} + */ + createDBSystem(createDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient.createDbSystem(createDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDbSystem function of DbSystemClient + * @param {DeleteDbSystemRequest} deleteDbSystemRequest - Data required for deleteDbSystem + * @returns {Promise} + */ + deleteDBSystem(deleteDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient.deleteDbSystem(deleteDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDbSystem function of DbSystemClient + * @param {GetDbSystemRequest} getDbSystemRequest - Data required for getDbSystem + * @returns {Promise} + */ + getDBSystem(getDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient.getDbSystem(getDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the restartDbSystem function of DbSystemClient + * @param {RestartDbSystemRequest} restartDbSystemRequest - Data required for restartDbSystem + * @returns {Promise} + */ + restartDBSystem(restartDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient.restartDbSystem(restartDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the startDbSystem function of DbSystemClient + * @param {StartDbSystemRequest} startDbSystemRequest - Data required for startDbSystem + * @returns {Promise} + */ + startDBSystem(startDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient.startDbSystem(startDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the stopDbSystem function of DbSystemClient + * @param {StopDbSystemRequest} stopDbSystemRequest - Data required for stopDbSystem + * @returns {Promise} + */ + stopDBSystem(stopDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient.stopDbSystem(stopDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateDbSystem function of DbSystemClient + * @param {UpdateDbSystemRequest} updateDbSystemRequest - Data required for updateDbSystem + * @returns {Promise} + */ + updateDBSystem(updateDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient.updateDbSystem(updateDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_RDBMS; diff --git a/packages/oracle-plugin/database/oci-noSql.js b/packages/oracle-plugin/database/oci-noSql.js index 2d8f73db..53a598e3 100644 --- a/packages/oracle-plugin/database/oci-noSql.js +++ b/packages/oracle-plugin/database/oci-noSql.js @@ -1,121 +1,114 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a NosqlClient object - * @category Oracle Cloud - */ + * Class to create a NosqlClient object + * @category Oracle Cloud + */ class Oracle_NoSql { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.NosqlClient(params, clientConfiguration); - } - /** - * Trigers the createTable function of NosqlClient - * @param {CreateTableRequest} createTableRequest - Data required for createTable - * @returns {Promise} - */ - createTable(createTableRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient - .createTable(createTableRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteRow function of NosqlClient - * @param {DeleteRowRequest} deleteRowRequest - Data required for deleteRow - * @returns {Promise} - */ - deleteRow(deleteRowRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient - .deleteRow(deleteRowRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteTable function of NosqlClient - * @param {DeleteTableRequest} deleteTableRequest - Data required for deleteTable - * @returns {Promise} - */ - deleteTable(deleteTableRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient - .deleteTable(deleteTableRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getRow function of NosqlClient - * @param {GetRowRequest} getRowRequest - Data required for getRow - * @returns {Promise} - */ - getRow(getRowRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient - .getRow(getRowRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getTable function of NosqlClient - * @param {GetTableRequest} getTableRequest - Data required for getTable - * @returns {Promise} - */ - getTable(getTableRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient - .getTable(getTableRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listTables function of NosqlClient - * @param {ListTablesRequest} listTablesRequest - Data required for listTables - * @returns {Promise} - */ - listTables(listTablesRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient - .listTables(listTablesRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateRow function of NosqlClient - * @param {UpdateRowRequest} updateRowRequest - Data required for updateRow - * @returns {Promise} - */ - updateRow(updateRowRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient - .updateRow(updateRowRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateTable function of NosqlClient - * @param {UpdateTableRequest} updateTableRequest - Data required for updateTable - * @returns {Promise} - */ - updateTable(updateTableRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient - .updateTable(updateTableRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._nosqlClient = this._oci.NosqlClient(params, clientConfiguration); + } + /** + * Trigers the createTable function of NosqlClient + * @param {CreateTableRequest} createTableRequest - Data required for createTable + * @returns {Promise} + */ + createTable(createTableRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient.createTable(createTableRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteRow function of NosqlClient + * @param {DeleteRowRequest} deleteRowRequest - Data required for deleteRow + * @returns {Promise} + */ + deleteRow(deleteRowRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient.deleteRow(deleteRowRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteTable function of NosqlClient + * @param {DeleteTableRequest} deleteTableRequest - Data required for deleteTable + * @returns {Promise} + */ + deleteTable(deleteTableRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient.deleteTable(deleteTableRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getRow function of NosqlClient + * @param {GetRowRequest} getRowRequest - Data required for getRow + * @returns {Promise} + */ + getRow(getRowRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient.getRow(getRowRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getTable function of NosqlClient + * @param {GetTableRequest} getTableRequest - Data required for getTable + * @returns {Promise} + */ + getTable(getTableRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient.getTable(getTableRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listTables function of NosqlClient + * @param {ListTablesRequest} listTablesRequest - Data required for listTables + * @returns {Promise} + */ + listTables(listTablesRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient.listTables(listTablesRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateRow function of NosqlClient + * @param {UpdateRowRequest} updateRowRequest - Data required for updateRow + * @returns {Promise} + */ + updateRow(updateRowRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient.updateRow(updateRowRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateTable function of NosqlClient + * @param {UpdateTableRequest} updateTableRequest - Data required for updateTable + * @returns {Promise} + */ + updateTable(updateTableRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient.updateTable(updateTableRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_NoSql; diff --git a/packages/oracle-plugin/devops/oci-devops.js b/packages/oracle-plugin/devops/oci-devops.js index d8563f82..4fba5d28 100644 --- a/packages/oracle-plugin/devops/oci-devops.js +++ b/packages/oracle-plugin/devops/oci-devops.js @@ -1,189 +1,174 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a DevopsClient object - * @category Oracle Cloud - */ + * Class to create a DevopsClient object + * @category Oracle Cloud + */ class Oracle_Devops { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.DevopsClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createDeployArtifact function of DevopsClient - * @param {CreateDeployArtifactRequest} createDeployArtifactRequest - Data required for createDeployArtifact - * @returns {Promise} - */ - createDeployArtifact(createDeployArtifactRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .createDeployArtifact(createDeployArtifactRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createDeployPipeline function of DevopsClient - * @param {CreateDeployPipelineRequest} createDeployPipelineRequest - Data required for createDeployPipeline - * @returns {Promise} - */ - createDeployPipeline(createDeployPipelineRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .createDeployPipeline(createDeployPipelineRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createDeployment function of DevopsClient - * @param {CreateDeploymentRequest} createDeploymentRequest - Data required for createDeployment - * @returns {Promise} - */ - createDeployment(createDeploymentRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .createDeployment(createDeploymentRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createProject function of DevopsClient - * @param {CreateProjectRequest} createProjectRequest - Data required for createProject - * @returns {Promise} - */ - createProject(createProjectRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .createProject(createProjectRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createRepository function of DevopsClient - * @param {CreateRepositoryRequest} createRepositoryRequest - Data required for createRepository - * @returns {Promise} - */ - createRepository(createRepositoryRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .createRepository(createRepositoryRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDeployArtifact function of DevopsClient - * @param {DeleteDeployArtifactRequest} deleteDeployArtifactRequest - Data required for deleteDeployArtifact - * @returns {Promise} - */ - deleteDeployArtifact(deleteDeployArtifactRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .deleteDeployArtifact(deleteDeployArtifactRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDeployPipeline function of DevopsClient - * @param {DeleteDeployPipelineRequest} deleteDeployPipelineRequest - Data required for deleteDeployPipeline - * @returns {Promise} - */ - deleteDeployPipeline(deleteDeployPipelineRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .deleteDeployPipeline(deleteDeployPipelineRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteProject function of DevopsClient - * @param {DeleteProjectRequest} deleteProjectRequest - Data required for deleteProject - * @returns {Promise} - */ - deleteProject(deleteProjectRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .deleteProject(deleteProjectRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteRepository function of DevopsClient - * @param {DeleteRepositoryRequest} deleteRepositoryRequest - Data required for deleteRepository - * @returns {Promise} - */ - deleteRepository(deleteRepositoryRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .deleteRepository(deleteRepositoryRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDeployArtifact function of DevopsClient - * @param {GetDeployArtifactRequest} getDeployArtifactRequest - Data required for getDeployArtifact - * @returns {Promise} - */ - getDeployArtifact(getDeployArtifactRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .getDeployArtifact(getDeployArtifactRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDeployPipeline function of DevopsClient - * @param {GetDeployPipelineRequest} getDeployPipelineRequest - Data required for getDeployPipeline - * @returns {Promise} - */ - getDeployPipeline(getDeployPipelineRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .getDeployPipeline(getDeployPipelineRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDeployment function of DevopsClient - * @param {GetDeploymentRequest} getDeploymentRequest - Data required for getDeployment - * @returns {Promise} - */ - getDeployment(getDeploymentRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .getDeployment(getDeploymentRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getProject function of DevopsClient - * @param {GetProjectRequest} getProjectRequest - Data required for getProject - * @returns {Promise} - */ - getProject(getProjectRequest) { - return new Promise((resolve, reject) => { - this._devopsClient - .getProject(getProjectRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._devopsClient = this._oci.DevopsClient(params, clientConfiguration); + } + /** + * Trigers the createDeployArtifact function of DevopsClient + * @param {CreateDeployArtifactRequest} createDeployArtifactRequest - Data required for createDeployArtifact + * @returns {Promise} + */ + createDeployArtifact(createDeployArtifactRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.createDeployArtifact(createDeployArtifactRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createDeployPipeline function of DevopsClient + * @param {CreateDeployPipelineRequest} createDeployPipelineRequest - Data required for createDeployPipeline + * @returns {Promise} + */ + createDeployPipeline(createDeployPipelineRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.createDeployPipeline(createDeployPipelineRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createDeployment function of DevopsClient + * @param {CreateDeploymentRequest} createDeploymentRequest - Data required for createDeployment + * @returns {Promise} + */ + createDeployment(createDeploymentRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.createDeployment(createDeploymentRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createProject function of DevopsClient + * @param {CreateProjectRequest} createProjectRequest - Data required for createProject + * @returns {Promise} + */ + createProject(createProjectRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.createProject(createProjectRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createRepository function of DevopsClient + * @param {CreateRepositoryRequest} createRepositoryRequest - Data required for createRepository + * @returns {Promise} + */ + createRepository(createRepositoryRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.createRepository(createRepositoryRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDeployArtifact function of DevopsClient + * @param {DeleteDeployArtifactRequest} deleteDeployArtifactRequest - Data required for deleteDeployArtifact + * @returns {Promise} + */ + deleteDeployArtifact(deleteDeployArtifactRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.deleteDeployArtifact(deleteDeployArtifactRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDeployPipeline function of DevopsClient + * @param {DeleteDeployPipelineRequest} deleteDeployPipelineRequest - Data required for deleteDeployPipeline + * @returns {Promise} + */ + deleteDeployPipeline(deleteDeployPipelineRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.deleteDeployPipeline(deleteDeployPipelineRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteProject function of DevopsClient + * @param {DeleteProjectRequest} deleteProjectRequest - Data required for deleteProject + * @returns {Promise} + */ + deleteProject(deleteProjectRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.deleteProject(deleteProjectRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteRepository function of DevopsClient + * @param {DeleteRepositoryRequest} deleteRepositoryRequest - Data required for deleteRepository + * @returns {Promise} + */ + deleteRepository(deleteRepositoryRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.deleteRepository(deleteRepositoryRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDeployArtifact function of DevopsClient + * @param {GetDeployArtifactRequest} getDeployArtifactRequest - Data required for getDeployArtifact + * @returns {Promise} + */ + getDeployArtifact(getDeployArtifactRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.getDeployArtifact(getDeployArtifactRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDeployPipeline function of DevopsClient + * @param {GetDeployPipelineRequest} getDeployPipelineRequest - Data required for getDeployPipeline + * @returns {Promise} + */ + getDeployPipeline(getDeployPipelineRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.getDeployPipeline(getDeployPipelineRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDeployment function of DevopsClient + * @param {GetDeploymentRequest} getDeploymentRequest - Data required for getDeployment + * @returns {Promise} + */ + getDeployment(getDeploymentRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.getDeployment(getDeploymentRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getProject function of DevopsClient + * @param {GetProjectRequest} getProjectRequest - Data required for getProject + * @returns {Promise} + */ + getProject(getProjectRequest) { + return new Promise((resolve, reject) => { + this._devopsClient.getProject(getProjectRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_Devops; diff --git a/packages/oracle-plugin/management/oci-keyManagement.js b/packages/oracle-plugin/management/oci-keyManagement.js index 0c83bcc8..c8ba87c7 100644 --- a/packages/oracle-plugin/management/oci-keyManagement.js +++ b/packages/oracle-plugin/management/oci-keyManagement.js @@ -1,72 +1,66 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a KmsManagementClient object - * @category Oracle Cloud - */ + * Class to create a KmsManagementClient object + * @category Oracle Cloud + */ class Oracle_KeyManagement { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.KmsManagementClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createKey function of KmsManagementClient - * @param {CreateKeyRequest} createKeyRequest - Data required for createKey - * @returns {Promise} - */ - createKey(createKeyRequest) { - return new Promise((resolve, reject) => { - this._kmsManagementClient - .createKey(createKeyRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the disableKey function of KmsManagementClient - * @param {DisableKeyRequest} disableKeyRequest - Data required for disableKey - * @returns {Promise} - */ - disableKey(disableKeyRequest) { - return new Promise((resolve, reject) => { - this._kmsManagementClient - .disableKey(disableKeyRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the enableKey function of KmsManagementClient - * @param {EnableKeyRequest} enableKeyRequest - Data required for enableKey - * @returns {Promise} - */ - enableKey(enableKeyRequest) { - return new Promise((resolve, reject) => { - this._kmsManagementClient - .enableKey(enableKeyRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateKey function of KmsManagementClient - * @param {UpdateKeyRequest} updateKeyRequest - Data required for updateKey - * @returns {Promise} - */ - update(updateKeyRequest) { - return new Promise((resolve, reject) => { - this._kmsManagementClient - .updateKey(updateKeyRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._kmsManagementClient = this._oci.KmsManagementClient(params, clientConfiguration); + } + /** + * Trigers the createKey function of KmsManagementClient + * @param {CreateKeyRequest} createKeyRequest - Data required for createKey + * @returns {Promise} + */ + createKey(createKeyRequest) { + return new Promise((resolve, reject) => { + this._kmsManagementClient.createKey(createKeyRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the disableKey function of KmsManagementClient + * @param {DisableKeyRequest} disableKeyRequest - Data required for disableKey + * @returns {Promise} + */ + disableKey(disableKeyRequest) { + return new Promise((resolve, reject) => { + this._kmsManagementClient.disableKey(disableKeyRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the enableKey function of KmsManagementClient + * @param {EnableKeyRequest} enableKeyRequest - Data required for enableKey + * @returns {Promise} + */ + enableKey(enableKeyRequest) { + return new Promise((resolve, reject) => { + this._kmsManagementClient.enableKey(enableKeyRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateKey function of KmsManagementClient + * @param {UpdateKeyRequest} updateKeyRequest - Data required for updateKey + * @returns {Promise} + */ + update(updateKeyRequest) { + return new Promise((resolve, reject) => { + this._kmsManagementClient.updateKey(updateKeyRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_KeyManagement; diff --git a/packages/oracle-plugin/management/oci-notificationService.js b/packages/oracle-plugin/management/oci-notificationService.js index e881d089..d0895c41 100644 --- a/packages/oracle-plugin/management/oci-notificationService.js +++ b/packages/oracle-plugin/management/oci-notificationService.js @@ -1,72 +1,66 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a NotificationDataPlaneClient object - * @category Oracle Cloud - */ + * Class to create a NotificationDataPlaneClient object + * @category Oracle Cloud + */ class Oracle_NotificationService { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.NotificationDataPlaneClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createSubscription function of NotificationDataPlaneClient - * @param {CreateSubscriptionRequest} createSubscriptionRequest - Data required for createSubscription - * @returns {Promise} - */ - subscribe(createSubscriptionRequest) { - return new Promise((resolve, reject) => { - this._notificationDataPlaneClient - .createSubscription(createSubscriptionRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteSubscription function of NotificationDataPlaneClient - * @param {DeleteSubscriptionRequest} deleteSubscriptionRequest - Data required for deleteSubscription - * @returns {Promise} - */ - unsubscribe(deleteSubscriptionRequest) { - return new Promise((resolve, reject) => { - this._notificationDataPlaneClient - .deleteSubscription(deleteSubscriptionRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listSubscriptions function of NotificationDataPlaneClient - * @param {ListSubscriptionsRequest} listSubscriptionsRequest - Data required for listSubscriptions - * @returns {Promise} - */ - listSubscriptions(listSubscriptionsRequest) { - return new Promise((resolve, reject) => { - this._notificationDataPlaneClient - .listSubscriptions(listSubscriptionsRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the publishMessage function of NotificationDataPlaneClient - * @param {PublishMessageRequest} publishMessageRequest - Data required for publishMessage - * @returns {Promise} - */ - publish(publishMessageRequest) { - return new Promise((resolve, reject) => { - this._notificationDataPlaneClient - .publishMessage(publishMessageRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._notificationDataPlaneClient = this._oci.NotificationDataPlaneClient(params, clientConfiguration); + } + /** + * Trigers the createSubscription function of NotificationDataPlaneClient + * @param {CreateSubscriptionRequest} createSubscriptionRequest - Data required for createSubscription + * @returns {Promise} + */ + subscribe(createSubscriptionRequest) { + return new Promise((resolve, reject) => { + this._notificationDataPlaneClient.createSubscription(createSubscriptionRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteSubscription function of NotificationDataPlaneClient + * @param {DeleteSubscriptionRequest} deleteSubscriptionRequest - Data required for deleteSubscription + * @returns {Promise} + */ + unsubscribe(deleteSubscriptionRequest) { + return new Promise((resolve, reject) => { + this._notificationDataPlaneClient.deleteSubscription(deleteSubscriptionRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listSubscriptions function of NotificationDataPlaneClient + * @param {ListSubscriptionsRequest} listSubscriptionsRequest - Data required for listSubscriptions + * @returns {Promise} + */ + listSubscriptions(listSubscriptionsRequest) { + return new Promise((resolve, reject) => { + this._notificationDataPlaneClient.listSubscriptions(listSubscriptionsRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the publishMessage function of NotificationDataPlaneClient + * @param {PublishMessageRequest} publishMessageRequest - Data required for publishMessage + * @returns {Promise} + */ + publish(publishMessageRequest) { + return new Promise((resolve, reject) => { + this._notificationDataPlaneClient.publishMessage(publishMessageRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_NotificationService; diff --git a/packages/oracle-plugin/network/oci-DNS.js b/packages/oracle-plugin/network/oci-DNS.js index 934c277e..bd996e42 100644 --- a/packages/oracle-plugin/network/oci-DNS.js +++ b/packages/oracle-plugin/network/oci-DNS.js @@ -1,69 +1,66 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a DnsClient object - * @category Oracle Cloud - */ + * Class to create a DnsClient object + * @category Oracle Cloud + */ class Oracle_DNS { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.DnsClient(params, clientConfiguration); - } - /** - * Trigers the createZone function of DnsClient - * @param {CreateZoneRequest} createZoneRequest - Data required for createZone - * @returns {Promise} - */ - create(createZoneRequest) { - return new Promise((resolve, reject) => { - this._dnsClient - .createZone(createZoneRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteZone function of DnsClient - * @param {DeleteZoneRequest} deleteZoneRequest - Data required for deleteZone - * @returns {Promise} - */ - delete(deleteZoneRequest) { - return new Promise((resolve, reject) => { - this._dnsClient - .deleteZone(deleteZoneRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listZones function of DnsClient - * @param {ListZonesRequest} listZonesRequest - Data required for listZones - * @returns {Promise} - */ - list(listZonesRequest) { - return new Promise((resolve, reject) => { - this._dnsClient - .listZones(listZonesRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateZone function of DnsClient - * @param {UpdateZoneRequest} updateZoneRequest - Data required for updateZone - * @returns {Promise} - */ - update(updateZoneRequest) { - return new Promise((resolve, reject) => { - this._dnsClient - .updateZone(updateZoneRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._dnsClient = this._oci.DnsClient(params, clientConfiguration); + } + /** + * Trigers the createZone function of DnsClient + * @param {CreateZoneRequest} createZoneRequest - Data required for createZone + * @returns {Promise} + */ + create(createZoneRequest) { + return new Promise((resolve, reject) => { + this._dnsClient.createZone(createZoneRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteZone function of DnsClient + * @param {DeleteZoneRequest} deleteZoneRequest - Data required for deleteZone + * @returns {Promise} + */ + delete(deleteZoneRequest) { + return new Promise((resolve, reject) => { + this._dnsClient.deleteZone(deleteZoneRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listZones function of DnsClient + * @param {ListZonesRequest} listZonesRequest - Data required for listZones + * @returns {Promise} + */ + list(listZonesRequest) { + return new Promise((resolve, reject) => { + this._dnsClient.listZones(listZonesRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateZone function of DnsClient + * @param {UpdateZoneRequest} updateZoneRequest - Data required for updateZone + * @returns {Promise} + */ + update(updateZoneRequest) { + return new Promise((resolve, reject) => { + this._dnsClient.updateZone(updateZoneRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_DNS; diff --git a/packages/oracle-plugin/network/oci-loadBalancer.js b/packages/oracle-plugin/network/oci-loadBalancer.js index fdc04bd4..e0ec4f08 100644 --- a/packages/oracle-plugin/network/oci-loadBalancer.js +++ b/packages/oracle-plugin/network/oci-loadBalancer.js @@ -1,85 +1,78 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a LoadBalancerClient object - * @category Oracle Cloud - */ + * Class to create a LoadBalancerClient object + * @category Oracle Cloud + */ class Oracle_LoadBalancer { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.LoadBalancerClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createLoadBalancer function of LoadBalancerClient - * @param {CreateLoadBalancerRequest} createLoadBalancerRequest - Data required for createLoadBalancer - * @returns {Promise} - */ - create(createLoadBalancerRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient - .createLoadBalancer(createLoadBalancerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteLoadBalancer function of LoadBalancerClient - * @param {DeleteLoadBalancerRequest} deleteLoadBalancerRequest - Data required for deleteLoadBalancer - * @returns {Promise} - */ - delete(deleteLoadBalancerRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient - .deleteLoadBalancer(deleteLoadBalancerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getLoadBalancer function of LoadBalancerClient - * @param {GetLoadBalancerRequest} getLoadBalancerRequest - Data required for getLoadBalancer - * @returns {Promise} - */ - get(getLoadBalancerRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient - .getLoadBalancer(getLoadBalancerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listLoadBalancers function of LoadBalancerClient - * @param {ListLoadBalancersRequest} listLoadBalancersRequest - Data required for listLoadBalancers - * @returns {Promise} - */ - list(listLoadBalancersRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient - .listLoadBalancers(listLoadBalancersRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateLoadBalancer function of LoadBalancerClient - * @param {UpdateLoadBalancerRequest} updateLoadBalancerRequest - Data required for updateLoadBalancer - * @returns {Promise} - */ - update(updateLoadBalancerRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient - .updateLoadBalancer(updateLoadBalancerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._loadBalancerClient = this._oci.LoadBalancerClient(params, clientConfiguration); + } + /** + * Trigers the createLoadBalancer function of LoadBalancerClient + * @param {CreateLoadBalancerRequest} createLoadBalancerRequest - Data required for createLoadBalancer + * @returns {Promise} + */ + create(createLoadBalancerRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient.createLoadBalancer(createLoadBalancerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteLoadBalancer function of LoadBalancerClient + * @param {DeleteLoadBalancerRequest} deleteLoadBalancerRequest - Data required for deleteLoadBalancer + * @returns {Promise} + */ + delete(deleteLoadBalancerRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient.deleteLoadBalancer(deleteLoadBalancerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getLoadBalancer function of LoadBalancerClient + * @param {GetLoadBalancerRequest} getLoadBalancerRequest - Data required for getLoadBalancer + * @returns {Promise} + */ + get(getLoadBalancerRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient.getLoadBalancer(getLoadBalancerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listLoadBalancers function of LoadBalancerClient + * @param {ListLoadBalancersRequest} listLoadBalancersRequest - Data required for listLoadBalancers + * @returns {Promise} + */ + list(listLoadBalancersRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient.listLoadBalancers(listLoadBalancersRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateLoadBalancer function of LoadBalancerClient + * @param {UpdateLoadBalancerRequest} updateLoadBalancerRequest - Data required for updateLoadBalancer + * @returns {Promise} + */ + update(updateLoadBalancerRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient.updateLoadBalancer(updateLoadBalancerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_LoadBalancer; diff --git a/packages/oracle-plugin/storage/oci-archivalStorage.js b/packages/oracle-plugin/storage/oci-archivalStorage.js index 5ee149d6..202582b3 100644 --- a/packages/oracle-plugin/storage/oci-archivalStorage.js +++ b/packages/oracle-plugin/storage/oci-archivalStorage.js @@ -1,72 +1,66 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ObjectStorageClient object - * @category Oracle Cloud - */ + * Class to create a ObjectStorageClient object + * @category Oracle Cloud + */ class Oracle_ArchivalStorage { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.ObjectStorageClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createBucket function of ObjectStorageClient - * @param {CreateBucketRequest} createBucketRequest - Data required for createBucket - * @returns {Promise} - */ - create(createBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .createBucket(createBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteBucket function of ObjectStorageClient - * @param {DeleteBucketRequest} deleteBucketRequest - Data required for deleteBucket - * @returns {Promise} - */ - delete(deleteBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .deleteBucket(deleteBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listBuckets function of ObjectStorageClient - * @param {ListBucketsRequest} listBucketsRequest - Data required for listBuckets - * @returns {Promise} - */ - list(listBucketsRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .listBuckets(listBucketsRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateBucket function of ObjectStorageClient - * @param {UpdateBucketRequest} updateBucketRequest - Data required for updateBucket - * @returns {Promise} - */ - update(updateBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .updateBucket(updateBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._objectStorageClient = this._oci.ObjectStorageClient(params, clientConfiguration); + } + /** + * Trigers the createBucket function of ObjectStorageClient + * @param {CreateBucketRequest} createBucketRequest - Data required for createBucket + * @returns {Promise} + */ + create(createBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient.createBucket(createBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteBucket function of ObjectStorageClient + * @param {DeleteBucketRequest} deleteBucketRequest - Data required for deleteBucket + * @returns {Promise} + */ + delete(deleteBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient.deleteBucket(deleteBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listBuckets function of ObjectStorageClient + * @param {ListBucketsRequest} listBucketsRequest - Data required for listBuckets + * @returns {Promise} + */ + list(listBucketsRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient.listBuckets(listBucketsRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateBucket function of ObjectStorageClient + * @param {UpdateBucketRequest} updateBucketRequest - Data required for updateBucket + * @returns {Promise} + */ + update(updateBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient.updateBucket(updateBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_ArchivalStorage; diff --git a/packages/oracle-plugin/storage/oci-blockStorage.js b/packages/oracle-plugin/storage/oci-blockStorage.js index 564157f5..36b43d66 100644 --- a/packages/oracle-plugin/storage/oci-blockStorage.js +++ b/packages/oracle-plugin/storage/oci-blockStorage.js @@ -1,72 +1,66 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a BlockstorageClient object - * @category Oracle Cloud - */ + * Class to create a BlockstorageClient object + * @category Oracle Cloud + */ class Oracle_BlockStorage { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.BlockstorageClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createVolume function of BlockstorageClient - * @param {CreateVolumeRequest} createVolumeRequest - Data required for createVolume - * @returns {Promise} - */ - create(createVolumeRequest) { - return new Promise((resolve, reject) => { - this._blockstorageClient - .createVolume(createVolumeRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteVolume function of BlockstorageClient - * @param {DeleteVolumeRequest} deleteVolumeRequest - Data required for deleteVolume - * @returns {Promise} - */ - delete(deleteVolumeRequest) { - return new Promise((resolve, reject) => { - this._blockstorageClient - .deleteVolume(deleteVolumeRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getVolume function of BlockstorageClient - * @param {GetVolumeRequest} getVolumeRequest - Data required for getVolume - * @returns {Promise} - */ - get(getVolumeRequest) { - return new Promise((resolve, reject) => { - this._blockstorageClient - .getVolume(getVolumeRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listVolumes function of BlockstorageClient - * @param {ListVolumesRequest} listVolumesRequest - Data required for listVolumes - * @returns {Promise} - */ - list(listVolumesRequest) { - return new Promise((resolve, reject) => { - this._blockstorageClient - .listVolumes(listVolumesRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._blockstorageClient = this._oci.BlockstorageClient(params, clientConfiguration); + } + /** + * Trigers the createVolume function of BlockstorageClient + * @param {CreateVolumeRequest} createVolumeRequest - Data required for createVolume + * @returns {Promise} + */ + create(createVolumeRequest) { + return new Promise((resolve, reject) => { + this._blockstorageClient.createVolume(createVolumeRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteVolume function of BlockstorageClient + * @param {DeleteVolumeRequest} deleteVolumeRequest - Data required for deleteVolume + * @returns {Promise} + */ + delete(deleteVolumeRequest) { + return new Promise((resolve, reject) => { + this._blockstorageClient.deleteVolume(deleteVolumeRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getVolume function of BlockstorageClient + * @param {GetVolumeRequest} getVolumeRequest - Data required for getVolume + * @returns {Promise} + */ + get(getVolumeRequest) { + return new Promise((resolve, reject) => { + this._blockstorageClient.getVolume(getVolumeRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listVolumes function of BlockstorageClient + * @param {ListVolumesRequest} listVolumesRequest - Data required for listVolumes + * @returns {Promise} + */ + list(listVolumesRequest) { + return new Promise((resolve, reject) => { + this._blockstorageClient.listVolumes(listVolumesRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_BlockStorage; diff --git a/packages/oracle-plugin/storage/oci-storageBucket.js b/packages/oracle-plugin/storage/oci-storageBucket.js index d275871b..f85aff48 100644 --- a/packages/oracle-plugin/storage/oci-storageBucket.js +++ b/packages/oracle-plugin/storage/oci-storageBucket.js @@ -1,85 +1,78 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ObjectStorageClient object - * @category Oracle Cloud - */ + * Class to create a ObjectStorageClient object + * @category Oracle Cloud + */ class Oracle_StorageBucket { - /** - * - * @param {module} do Oracle SDK - * @param {object} options SDK options - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._sdkclassName = this._oci.ObjectStorageClient( - params, - clientConfiguration - ); - } - /** - * Trigers the createBucket function of ObjectStorageClient - * @param {CreateBucketRequest} createBucketRequest - Data required for createBucket - * @returns {Promise} - */ - create(createBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .createBucket(createBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteBucket function of ObjectStorageClient - * @param {DeleteBucketRequest} deleteBucketRequest - Data required for deleteBucket - * @returns {Promise} - */ - delete(deleteBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .deleteBucket(deleteBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getBucket function of ObjectStorageClient - * @param {GetBucketRequest} getBucketRequest - Data required for getBucket - * @returns {Promise} - */ - get(getBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .getBucket(getBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listBuckets function of ObjectStorageClient - * @param {ListBucketsRequest} listBucketsRequest - Data required for listBuckets - * @returns {Promise} - */ - list(listBucketsRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .listBuckets(listBucketsRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the reencryptBucket function of ObjectStorageClient - * @param {ReencryptBucketRequest} reencryptBucketRequest - Data required for reencryptBucket - * @returns {Promise} - */ - reencrypt(reencryptBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient - .reencryptBucket(reencryptBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._objectStorageClient = this._oci.ObjectStorageClient(params, clientConfiguration); + } + /** + * Trigers the createBucket function of ObjectStorageClient + * @param {CreateBucketRequest} createBucketRequest - Data required for createBucket + * @returns {Promise} + */ + create(createBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient.createBucket(createBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteBucket function of ObjectStorageClient + * @param {DeleteBucketRequest} deleteBucketRequest - Data required for deleteBucket + * @returns {Promise} + */ + delete(deleteBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient.deleteBucket(deleteBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getBucket function of ObjectStorageClient + * @param {GetBucketRequest} getBucketRequest - Data required for getBucket + * @returns {Promise} + */ + get(getBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient.getBucket(getBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listBuckets function of ObjectStorageClient + * @param {ListBucketsRequest} listBucketsRequest - Data required for listBuckets + * @returns {Promise} + */ + list(listBucketsRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient.listBuckets(listBucketsRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the reencryptBucket function of ObjectStorageClient + * @param {ReencryptBucketRequest} reencryptBucketRequest - Data required for reencryptBucket + * @returns {Promise} + */ + reencrypt(reencryptBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient.reencryptBucket(reencryptBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_StorageBucket; From 88dcb8822f8e4de3fbb0f4b8dd2750717d580995 Mon Sep 17 00:00:00 2001 From: Partik SIngh Date: Mon, 28 Aug 2023 09:30:35 +0530 Subject: [PATCH 6/6] Final Changes Signed-off-by: Partik SIngh --- README.md | 2 +- examples/database/linode-sql.js | 1 - generator/README.md | 20 +- .../Linode/compute/linode-computeInstance.js | 130 +++---- .../Linode/compute/linode-kubernetes.js | 242 ++++++------ .../Linode/database/linode-RDBMS.js | 190 +++++----- .../Linode/firewalls/linode-firewalls.js | 205 +++++----- .../Linode/images/linode-images.js | 193 +++++----- .../Linode/management/linode-monitoring.js | 259 ++++++------- .../Linode/network/linode-DNS.js | 182 ++++----- .../Linode/network/linode-loadBalancer.js | 130 +++---- .../Linode/storage/linode-blockStorage.js | 130 +++---- .../Linode/storage/linode-storageBucket.js | 186 ++++----- .../Oracle/blockchain/oci-blockChain.js | 279 +++++++------- .../Oracle/compute/oci-computeInstance.js | 254 +++++++------ .../Oracle/compute/oci-container.js | 179 ++++----- .../Oracle/compute/oci-kubernetes.js | 279 +++++++------- .../Oracle/database/oci-RDBMS.js | 204 +++++----- .../Oracle/database/oci-noSql.js | 226 +++++------ .../Oracle/devops/oci-devops.js | 354 +++++++++--------- .../Oracle/management/oci-keyManagement.js | 129 ++++--- .../management/oci-notificationService.js | 129 ++++--- .../Oracle/network/oci-DNS.js | 126 ++++--- .../Oracle/network/oci-loadBalancer.js | 154 ++++---- .../Oracle/storage/oci-archivalStorage.js | 129 ++++--- .../Oracle/storage/oci-blockStorage.js | 129 ++++--- .../Oracle/storage/oci-storageBucket.js | 154 ++++---- .../compute/linode-computeInstance.js | 130 +++---- .../compute/linode-kubernetes.js | 242 ++++++------ .../linode-plugin/database/linode-RDBMS.js | 190 +++++----- .../firewalls/linode-firewalls.js | 205 +++++----- .../linode-plugin/images/linode-images.js | 193 +++++----- .../management/linode-monitoring.js | 259 ++++++------- packages/linode-plugin/network/linode-DNS.js | 182 ++++----- .../network/linode-loadBalancer.js | 130 +++---- .../storage/linode-blockStorage.js | 130 +++---- .../storage/linode-storageBucket.js | 186 ++++----- .../oracle-plugin/compute/oci-kubernetes.js | 279 +++++++------- packages/oracle-plugin/database/oci-RDBMS.js | 204 +++++----- packages/oracle-plugin/database/oci-noSql.js | 226 +++++------ packages/oracle-plugin/devops/oci-devops.js | 354 +++++++++--------- .../management/oci-keyManagement.js | 129 ++++--- .../management/oci-notificationService.js | 129 ++++--- packages/oracle-plugin/network/oci-DNS.js | 126 ++++--- .../oracle-plugin/network/oci-loadBalancer.js | 154 ++++---- .../storage/oci-archivalStorage.js | 129 ++++--- .../oracle-plugin/storage/oci-blockStorage.js | 129 ++++--- .../storage/oci-storageBucket.js | 154 ++++---- 48 files changed, 4413 insertions(+), 4042 deletions(-) diff --git a/README.md b/README.md index 5a7832ad..2b8f9d58 100644 --- a/README.md +++ b/README.md @@ -229,7 +229,7 @@ const ncProviders = nodeCloud.getProviders(options); | | Peering/Dedicated Interconnect | Direct Connect | Cloud Interconnect\* | ExpressRoute\* | - | Express Connect\* | - | - | | | DNS | Route53 | Google Domains, Cloud DNS | Azure DNS | DO DNS | Alibaba Cloud DNS\* | Domains | OCI DNS | | Databases | RDBMS | RDS, Amazon Aurora*, Amazon Redshift* | Cloud SQL\*, Cloud Spanner | SQL Database, Azure Database for MySQL*, Azure Database for PostgreSQL* | Managed Databases(PostgreSQL\* and MySQL) | ApsaraDB (MySQL, MariaDB TX, SQL Server, PostgreSQL) | Database(Postgres and Myssql) | OCI Mysql | -| | NoSQL: key-value | DynamoDB | Cloud Firestore, Cloud Bigtable\* | Table Storage | Managed Databases(Redis)\* | ApsaraDB for Redis\* | - | OCI MOngoDb | +| | NoSQL: key-value | DynamoDB | Cloud Firestore, Cloud Bigtable\* | Table Storage | Managed Databases(Redis)\* | ApsaraDB for Redis\* | - | OCI MongoDb | | | NoSQL: indexed | Amazon SimpleDB\* | Cloud Firestore | Cosmos DB | - | ApsaraDB for MongoDB\* | - | - | | Security/ Authorization | Identity Access Management | AWS IAM | Cloud IAM\* | Azure Active Directory*, Azure Role Based Access Control* | - | Resource Access Management\* | - | - | | Management | Key Management | AWS-KMS | - | - | Do-Keys | - | Monitoring | OCI KeyManagement | diff --git a/examples/database/linode-sql.js b/examples/database/linode-sql.js index ed48bacc..77b82c10 100644 --- a/examples/database/linode-sql.js +++ b/examples/database/linode-sql.js @@ -15,7 +15,6 @@ function createDatabase() { type: 'g6-dedicated-2', engine: 'mysql/8.0.30', replication_type: 'semi_synch', - }; // create database diff --git a/generator/README.md b/generator/README.md index 864154c8..99043f6a 100644 --- a/generator/README.md +++ b/generator/README.md @@ -132,12 +132,30 @@ Linode: ## Code parsers -This is the simplest part of the code generation tool. The SDK files are read from the relevant SDKs as specified in the `node-cloud.yml` file. Afterwards, it is converted to an **Abstract Syntax Tree**. Finally, the class declaration Node of that **Abstract Syntax Tree** is returned in case of SDKs which are class based,for SDKs like Linode which are function based we collect the FirstStatement nodes in an array which represent the exported arrow function declaration. This retured Node is another **Abstract Syntax Tree** since a class declaration itself is another **Abstract Syntax Tree**. +This is the simplest part of the code generation tool. The SDK files are read from the relevant SDKs as specified in the `node-cloud.yml` file. Afterwards, it is converted to an **Abstract Syntax Tree**. Finally, the class declaration Node of that **Abstract Syntax Tree** is returned in case of SDKs which are class based, for SDKs like Linode which are function based we collect the FirstStatement nodes in an array which represent the exported arrow function declaration. This retured Node is another **Abstract Syntax Tree** since a class declaration itself is another **Abstract Syntax Tree**. ## Data extraction functions These functions are located in the generators of the each cloud providers. Each data extration function has a unique logic depending on the **Abstract Syntax Tree** of a SDK class. The goal here is to extract all the data required to generate the new JavaScript class. At the end it is retured as `classData`. The data extration function collects imports, clients, method parameters, types of parameters, method return types and package names. Additionally, class relationships are identified in the Google Cloud data extraction function for the Google Cloud class based transformer. +For Linode Cloud Provider in some function the function parameters had two nested parameters so to solve this problem and take both the parameters into consideration the below code has been implemented. + +``` + if (param.name.elements) { + const parameter: param = { + name: + '{' + + param.name.elements[0].name.text + + ',' + + param.name.elements[1].name.text + + '}', + optional: param.questionToken ? true : false, + type: SyntaxKind[param.type.kind], + typeName: null, + }; +``` +In the above code we have looked for sub elements in a function parameter and printed both of them in braces. + ## Transformers This is the most important part of the code generator tool. Currently, there are four transformers. Two transformers for Google Cloud, and one each for AWS and Azure. All of the transformers runs three main transformations. diff --git a/generator/generatedClasses/Linode/compute/linode-computeInstance.js b/generator/generatedClasses/Linode/compute/linode-computeInstance.js index bfba842e..07d14748 100644 --- a/generator/generatedClasses/Linode/compute/linode-computeInstance.js +++ b/generator/generatedClasses/Linode/compute/linode-computeInstance.js @@ -1,68 +1,72 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ComputeInstanceLinodeClass object - * @category Linode - */ + * Class to create a ComputeInstanceLinodeClass object + * @category Linode + */ class Linode_ComputeInstance { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getLinodes function of ComputeInstanceLinodeClass - * @param {Params} params - Data required for getLinodes - * @param {Filter} filter - Data required for getLinodes - * @returns {Promise} - */ - list(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode.getLinodes(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createLinode function of ComputeInstanceLinodeClass - * @param {CreateLinodeRequest} data - Data required for createLinode - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode.createLinode(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateLinode function of ComputeInstanceLinodeClass - * @param {NumberKeyword} linodeId - Data required for updateLinode - * @param {DeepPartial} values - Data required for updateLinode - * @returns {Promise} - */ - update(linodeId, values) { - return new Promise((resolve, reject) => { - this._linode.updateLinode(linodeId, values) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteLinode function of ComputeInstanceLinodeClass - * @param {NumberKeyword} linodeId - Data required for deleteLinode - * @returns {Promise} - */ - delete(linodeId) { - return new Promise((resolve, reject) => { - this._linode.deleteLinode(linodeId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getLinodes function of ComputeInstanceLinodeClass + * @param {Params} params - Data required for getLinodes + * @param {Filter} filter - Data required for getLinodes + * @returns {Promise} + */ + list(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getLinodes(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createLinode function of ComputeInstanceLinodeClass + * @param {CreateLinodeRequest} data - Data required for createLinode + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode + .createLinode(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateLinode function of ComputeInstanceLinodeClass + * @param {NumberKeyword} linodeId - Data required for updateLinode + * @param {DeepPartial} values - Data required for updateLinode + * @returns {Promise} + */ + update(linodeId, values) { + return new Promise((resolve, reject) => { + this._linode + .updateLinode(linodeId, values) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteLinode function of ComputeInstanceLinodeClass + * @param {NumberKeyword} linodeId - Data required for deleteLinode + * @returns {Promise} + */ + delete(linodeId) { + return new Promise((resolve, reject) => { + this._linode + .deleteLinode(linodeId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_ComputeInstance; diff --git a/generator/generatedClasses/Linode/compute/linode-kubernetes.js b/generator/generatedClasses/Linode/compute/linode-kubernetes.js index a7414df0..5b73741d 100644 --- a/generator/generatedClasses/Linode/compute/linode-kubernetes.js +++ b/generator/generatedClasses/Linode/compute/linode-kubernetes.js @@ -1,122 +1,130 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a KubernetesLinodeClass object - * @category Linode - */ + * Class to create a KubernetesLinodeClass object + * @category Linode + */ class Linode_Kubernetes { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getKubernetesClusters function of KubernetesLinodeClass - * @param {Params} params - Data required for getKubernetesClusters - * @param {Filter} filters - Data required for getKubernetesClusters - * @returns {Promise} - */ - getAllClusters(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getKubernetesClusters(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createKubernetesCluster function of KubernetesLinodeClass - * @param {CreateKubeClusterPayload} data - Data required for createKubernetesCluster - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode.createKubernetesCluster(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteKubernetesCluster function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for deleteKubernetesCluster - * @returns {Promise} - */ - delete(clusterID) { - return new Promise((resolve, reject) => { - this._linode.deleteKubernetesCluster(clusterID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getNodePools function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for getNodePools - * @param {Params} params - Data required for getNodePools - * @param {Filter} filters - Data required for getNodePools - * @returns {Promise} - */ - getNodePools(clusterID, params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getNodePools(clusterID, params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for getNodePool - * @param {NumberKeyword} nodePoolID - Data required for getNodePool - * @returns {Promise} - */ - getNodePool(clusterID, nodePoolID) { - return new Promise((resolve, reject) => { - this._linode.getNodePool(clusterID, nodePoolID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for createNodePool - * @param {CreateNodePoolData} data - Data required for createNodePool - * @returns {Promise} - */ - createNodePool(clusterID, data) { - return new Promise((resolve, reject) => { - this._linode.createNodePool(clusterID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for updateNodePool - * @param {NumberKeyword} nodePoolID - Data required for updateNodePool - * @param {Partial} data - Data required for updateNodePool - * @returns {Promise} - */ - updateNodePool(clusterID, nodePoolID, data) { - return new Promise((resolve, reject) => { - this._linode.updateNodePool(clusterID, nodePoolID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for deleteNodePool - * @param {NumberKeyword} nodePoolID - Data required for deleteNodePool - * @returns {Promise} - */ - deleteNodePool(clusterID, nodePoolID) { - return new Promise((resolve, reject) => { - this._linode.deleteNodePool(clusterID, nodePoolID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getKubernetesClusters function of KubernetesLinodeClass + * @param {Params} params - Data required for getKubernetesClusters + * @param {Filter} filters - Data required for getKubernetesClusters + * @returns {Promise} + */ + getAllClusters(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getKubernetesClusters(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createKubernetesCluster function of KubernetesLinodeClass + * @param {CreateKubeClusterPayload} data - Data required for createKubernetesCluster + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode + .createKubernetesCluster(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteKubernetesCluster function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for deleteKubernetesCluster + * @returns {Promise} + */ + delete(clusterID) { + return new Promise((resolve, reject) => { + this._linode + .deleteKubernetesCluster(clusterID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getNodePools function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for getNodePools + * @param {Params} params - Data required for getNodePools + * @param {Filter} filters - Data required for getNodePools + * @returns {Promise} + */ + getNodePools(clusterID, params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getNodePools(clusterID, params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for getNodePool + * @param {NumberKeyword} nodePoolID - Data required for getNodePool + * @returns {Promise} + */ + getNodePool(clusterID, nodePoolID) { + return new Promise((resolve, reject) => { + this._linode + .getNodePool(clusterID, nodePoolID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for createNodePool + * @param {CreateNodePoolData} data - Data required for createNodePool + * @returns {Promise} + */ + createNodePool(clusterID, data) { + return new Promise((resolve, reject) => { + this._linode + .createNodePool(clusterID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for updateNodePool + * @param {NumberKeyword} nodePoolID - Data required for updateNodePool + * @param {Partial} data - Data required for updateNodePool + * @returns {Promise} + */ + updateNodePool(clusterID, nodePoolID, data) { + return new Promise((resolve, reject) => { + this._linode + .updateNodePool(clusterID, nodePoolID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for deleteNodePool + * @param {NumberKeyword} nodePoolID - Data required for deleteNodePool + * @returns {Promise} + */ + deleteNodePool(clusterID, nodePoolID) { + return new Promise((resolve, reject) => { + this._linode + .deleteNodePool(clusterID, nodePoolID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_Kubernetes; diff --git a/generator/generatedClasses/Linode/database/linode-RDBMS.js b/generator/generatedClasses/Linode/database/linode-RDBMS.js index 25bfe893..a3b2b0f7 100644 --- a/generator/generatedClasses/Linode/database/linode-RDBMS.js +++ b/generator/generatedClasses/Linode/database/linode-RDBMS.js @@ -1,97 +1,103 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a RDBMSLinodeClass object - * @category Linode - */ + * Class to create a RDBMSLinodeClass object + * @category Linode + */ class Linode_RDBMS { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getDatabases function of RDBMSLinodeClass - * @param {Params} params - Data required for getDatabases - * @param {Filter} filter - Data required for getDatabases - * @returns {Promise} - */ - getDatabases(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode.getDatabases(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDatabaseEngines function of RDBMSLinodeClass - * @param {Params} params - Data required for getDatabaseEngines - * @param {Filter} filter - Data required for getDatabaseEngines - * @returns {Promise} - */ - getDatabaseEngines(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode.getDatabaseEngines(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createDatabase function of RDBMSLinodeClass - * @param {UnionType} engine - Data required for createDatabase - * @param {CreateDatabasePayload} data - Data required for createDatabase - * @returns {Promise} - */ - createDatabase(engine, data) { - return new Promise((resolve, reject) => { - this._linode.createDatabase(engine, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getEngineDatabase function of RDBMSLinodeClass - * @param {Engine} engine - Data required for getEngineDatabase - * @param {NumberKeyword} databaseID - Data required for getEngineDatabase - * @returns {Promise} - */ - getEngineDatabase(engine, databaseID) { - return new Promise((resolve, reject) => { - this._linode.getEngineDatabase(engine, databaseID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateDatabase function of RDBMSLinodeClass - * @param {Engine} engine - Data required for updateDatabase - * @param {NumberKeyword} databaseID - Data required for updateDatabase - * @param {UpdateDatabasePayload} data - Data required for updateDatabase - * @returns {Promise} - */ - updateDatabase(engine, databaseID, data) { - return new Promise((resolve, reject) => { - this._linode.updateDatabase(engine, databaseID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDatabase function of RDBMSLinodeClass - * @param {Engine} engine - Data required for deleteDatabase - * @param {NumberKeyword} databaseID - Data required for deleteDatabase - * @returns {Promise} - */ - deleteDatabase(engine, databaseID) { - return new Promise((resolve, reject) => { - this._linode.deleteDatabase(engine, databaseID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getDatabases function of RDBMSLinodeClass + * @param {Params} params - Data required for getDatabases + * @param {Filter} filter - Data required for getDatabases + * @returns {Promise} + */ + getDatabases(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getDatabases(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDatabaseEngines function of RDBMSLinodeClass + * @param {Params} params - Data required for getDatabaseEngines + * @param {Filter} filter - Data required for getDatabaseEngines + * @returns {Promise} + */ + getDatabaseEngines(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getDatabaseEngines(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createDatabase function of RDBMSLinodeClass + * @param {UnionType} engine - Data required for createDatabase + * @param {CreateDatabasePayload} data - Data required for createDatabase + * @returns {Promise} + */ + createDatabase(engine, data) { + return new Promise((resolve, reject) => { + this._linode + .createDatabase(engine, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getEngineDatabase function of RDBMSLinodeClass + * @param {Engine} engine - Data required for getEngineDatabase + * @param {NumberKeyword} databaseID - Data required for getEngineDatabase + * @returns {Promise} + */ + getEngineDatabase(engine, databaseID) { + return new Promise((resolve, reject) => { + this._linode + .getEngineDatabase(engine, databaseID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateDatabase function of RDBMSLinodeClass + * @param {Engine} engine - Data required for updateDatabase + * @param {NumberKeyword} databaseID - Data required for updateDatabase + * @param {UpdateDatabasePayload} data - Data required for updateDatabase + * @returns {Promise} + */ + updateDatabase(engine, databaseID, data) { + return new Promise((resolve, reject) => { + this._linode + .updateDatabase(engine, databaseID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDatabase function of RDBMSLinodeClass + * @param {Engine} engine - Data required for deleteDatabase + * @param {NumberKeyword} databaseID - Data required for deleteDatabase + * @returns {Promise} + */ + deleteDatabase(engine, databaseID) { + return new Promise((resolve, reject) => { + this._linode + .deleteDatabase(engine, databaseID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_RDBMS; diff --git a/generator/generatedClasses/Linode/firewalls/linode-firewalls.js b/generator/generatedClasses/Linode/firewalls/linode-firewalls.js index dca7266c..2cfc10f0 100644 --- a/generator/generatedClasses/Linode/firewalls/linode-firewalls.js +++ b/generator/generatedClasses/Linode/firewalls/linode-firewalls.js @@ -1,104 +1,111 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a FirewallsLinodeClass object - * @category Linode - */ + * Class to create a FirewallsLinodeClass object + * @category Linode + */ class Linode_Firewalls { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getFirewalls function of FirewallsLinodeClass - * @param {Params} params - Data required for getFirewalls - * @param {Filter} filter - Data required for getFirewalls - * @returns {Promise} - */ - getFirewalls(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode.getFirewalls(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for getFirewall - * @returns {Promise} - */ - getFirewall(firewallID) { - return new Promise((resolve, reject) => { - this._linode.getFirewall(firewallID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createFirewall function of FirewallsLinodeClass - * @param {CreateFirewallPayload} data - Data required for createFirewall - * @returns {Promise} - */ - createFirewall(data) { - return new Promise((resolve, reject) => { - this._linode.createFirewall(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for updateFirewall - * @param {UpdateFirewallPayload} data - Data required for updateFirewall - * @returns {Promise} - */ - updateFirewall(firewallID, data) { - return new Promise((resolve, reject) => { - this._linode.updateFirewall(firewallID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the enableFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for enableFirewall - * @returns {Promise} - */ - enableFirewall(firewallID) { - return new Promise((resolve, reject) => { - this._linode.enableFirewall(firewallID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the disableFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for disableFirewall - * @returns {Promise} - */ - disableFirewall(firewallID) { - return new Promise((resolve, reject) => { - this._linode.disableFirewall(firewallID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for deleteFirewall - * @returns {Promise} - */ - deleteFirewall(firewallID) { - return new Promise((resolve, reject) => { - this._linode.deleteFirewall(firewallID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getFirewalls function of FirewallsLinodeClass + * @param {Params} params - Data required for getFirewalls + * @param {Filter} filter - Data required for getFirewalls + * @returns {Promise} + */ + getFirewalls(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getFirewalls(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for getFirewall + * @returns {Promise} + */ + getFirewall(firewallID) { + return new Promise((resolve, reject) => { + this._linode + .getFirewall(firewallID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createFirewall function of FirewallsLinodeClass + * @param {CreateFirewallPayload} data - Data required for createFirewall + * @returns {Promise} + */ + createFirewall(data) { + return new Promise((resolve, reject) => { + this._linode + .createFirewall(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for updateFirewall + * @param {UpdateFirewallPayload} data - Data required for updateFirewall + * @returns {Promise} + */ + updateFirewall(firewallID, data) { + return new Promise((resolve, reject) => { + this._linode + .updateFirewall(firewallID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the enableFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for enableFirewall + * @returns {Promise} + */ + enableFirewall(firewallID) { + return new Promise((resolve, reject) => { + this._linode + .enableFirewall(firewallID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the disableFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for disableFirewall + * @returns {Promise} + */ + disableFirewall(firewallID) { + return new Promise((resolve, reject) => { + this._linode + .disableFirewall(firewallID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for deleteFirewall + * @returns {Promise} + */ + deleteFirewall(firewallID) { + return new Promise((resolve, reject) => { + this._linode + .deleteFirewall(firewallID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_Firewalls; diff --git a/generator/generatedClasses/Linode/images/linode-images.js b/generator/generatedClasses/Linode/images/linode-images.js index 1be67ed1..2d0651fc 100644 --- a/generator/generatedClasses/Linode/images/linode-images.js +++ b/generator/generatedClasses/Linode/images/linode-images.js @@ -1,96 +1,107 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ImagesLinodeClass object - * @category Linode - */ + * Class to create a ImagesLinodeClass object + * @category Linode + */ class Linode_Images { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getImage function of ImagesLinodeClass - * @param {StringKeyword} imageId - Data required for getImage - * @returns {Promise} - */ - getImage(imageId) { - return new Promise((resolve, reject) => { - this._linode.getImage(imageId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getImages function of ImagesLinodeClass - * @param {Params} params - Data required for getImages - * @param {Filter} filters - Data required for getImages - * @returns {Promise} - */ - getImages(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getImages(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createImage function of ImagesLinodeClass - * @param {NumberKeyword} diskId - Data required for createImage - * @param {StringKeyword} label - Data required for createImage - * @param {StringKeyword} description - Data required for createImage - * @param {BooleanKeyword} cloud_init - Data required for createImage - * @returns {Promise} - */ - createImage(diskId, label = undefined, description = undefined, cloud_init = undefined) { - return new Promise((resolve, reject) => { - this._linode.createImage(diskId, label, description, cloud_init) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateImage function of ImagesLinodeClass - * @param {StringKeyword} imageId - Data required for updateImage - * @param {StringKeyword} label - Data required for updateImage - * @param {StringKeyword} description - Data required for updateImage - * @returns {Promise} - */ - updateImage(imageId, label = undefined, description = undefined) { - return new Promise((resolve, reject) => { - this._linode.updateImage(imageId, label, description) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteImage function of ImagesLinodeClass - * @param {StringKeyword} imageId - Data required for deleteImage - * @returns {Promise} - */ - deleteImage(imageId) { - return new Promise((resolve, reject) => { - this._linode.deleteImage(imageId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the uploadImage function of ImagesLinodeClass - * @param {ImageUploadPayload} data - Data required for uploadImage - * @returns {Promise} - */ - uploadImage(data) { - return new Promise((resolve, reject) => { - this._linode.uploadImage(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getImage function of ImagesLinodeClass + * @param {StringKeyword} imageId - Data required for getImage + * @returns {Promise} + */ + getImage(imageId) { + return new Promise((resolve, reject) => { + this._linode + .getImage(imageId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getImages function of ImagesLinodeClass + * @param {Params} params - Data required for getImages + * @param {Filter} filters - Data required for getImages + * @returns {Promise} + */ + getImages(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getImages(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createImage function of ImagesLinodeClass + * @param {NumberKeyword} diskId - Data required for createImage + * @param {StringKeyword} label - Data required for createImage + * @param {StringKeyword} description - Data required for createImage + * @param {BooleanKeyword} cloud_init - Data required for createImage + * @returns {Promise} + */ + createImage( + diskId, + label = undefined, + description = undefined, + cloud_init = undefined + ) { + return new Promise((resolve, reject) => { + this._linode + .createImage(diskId, label, description, cloud_init) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateImage function of ImagesLinodeClass + * @param {StringKeyword} imageId - Data required for updateImage + * @param {StringKeyword} label - Data required for updateImage + * @param {StringKeyword} description - Data required for updateImage + * @returns {Promise} + */ + updateImage(imageId, label = undefined, description = undefined) { + return new Promise((resolve, reject) => { + this._linode + .updateImage(imageId, label, description) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteImage function of ImagesLinodeClass + * @param {StringKeyword} imageId - Data required for deleteImage + * @returns {Promise} + */ + deleteImage(imageId) { + return new Promise((resolve, reject) => { + this._linode + .deleteImage(imageId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the uploadImage function of ImagesLinodeClass + * @param {ImageUploadPayload} data - Data required for uploadImage + * @returns {Promise} + */ + uploadImage(data) { + return new Promise((resolve, reject) => { + this._linode + .uploadImage(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_Images; diff --git a/generator/generatedClasses/Linode/management/linode-monitoring.js b/generator/generatedClasses/Linode/management/linode-monitoring.js index bce2e4ca..87bd1334 100644 --- a/generator/generatedClasses/Linode/management/linode-monitoring.js +++ b/generator/generatedClasses/Linode/management/linode-monitoring.js @@ -1,130 +1,139 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a MonitoringLinodeClass object - * @category Linode - */ + * Class to create a MonitoringLinodeClass object + * @category Linode + */ class Linode_Monitoring { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getServices function of MonitoringLinodeClass - * @param {Params} params - Data required for getServices - * @param {Filter} filters - Data required for getServices - * @returns {Promise} - */ - getServices(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getServices(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the disableServiceMonitor function of MonitoringLinodeClass - * @param {NumberKeyword} serviceID - Data required for disableServiceMonitor - * @returns {Promise} - */ - disableServiceMonitor(serviceID) { - return new Promise((resolve, reject) => { - this._linode.disableServiceMonitor(serviceID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the enableServiceMonitor function of MonitoringLinodeClass - * @param {NumberKeyword} serviceID - Data required for enableServiceMonitor - * @returns {Promise} - */ - enableServiceMonitor(serviceID) { - return new Promise((resolve, reject) => { - this._linode.enableServiceMonitor(serviceID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteServiceMonitor function of MonitoringLinodeClass - * @param {NumberKeyword} serviceID - Data required for deleteServiceMonitor - * @returns {Promise} - */ - deleteServiceMonitor(serviceID) { - return new Promise((resolve, reject) => { - this._linode.deleteServiceMonitor(serviceID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createServiceMonitor function of MonitoringLinodeClass - * @param {ManagedServicePayload} data - Data required for createServiceMonitor - * @returns {Promise} - */ - createServiceMonitor(data) { - return new Promise((resolve, reject) => { - this._linode.createServiceMonitor(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateServiceMonitor function of MonitoringLinodeClass - * @param {NumberKeyword} monitorID - Data required for updateServiceMonitor - * @param {Partial} data - Data required for updateServiceMonitor - * @returns {Promise} - */ - updateServiceMonitor(monitorID, data) { - return new Promise((resolve, reject) => { - this._linode.updateServiceMonitor(monitorID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getCredentials function of MonitoringLinodeClass - * @param {Params} params - Data required for getCredentials - * @param {Filter} filters - Data required for getCredentials - * @returns {Promise} - */ - getCredentials(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getCredentials(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateCredential function of MonitoringLinodeClass - * @param {NumberKeyword} credentialID - Data required for updateCredential - * @param {UpdateCredentialPayload} data - Data required for updateCredential - * @returns {Promise} - */ - updateCredential(credentialID, data) { - return new Promise((resolve, reject) => { - this._linode.updateCredential(credentialID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteCredential function of MonitoringLinodeClass - * @param {NumberKeyword} credentialID - Data required for deleteCredential - * @returns {Promise} - */ - deleteCredential(credentialID) { - return new Promise((resolve, reject) => { - this._linode.deleteCredential(credentialID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getServices function of MonitoringLinodeClass + * @param {Params} params - Data required for getServices + * @param {Filter} filters - Data required for getServices + * @returns {Promise} + */ + getServices(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getServices(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the disableServiceMonitor function of MonitoringLinodeClass + * @param {NumberKeyword} serviceID - Data required for disableServiceMonitor + * @returns {Promise} + */ + disableServiceMonitor(serviceID) { + return new Promise((resolve, reject) => { + this._linode + .disableServiceMonitor(serviceID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the enableServiceMonitor function of MonitoringLinodeClass + * @param {NumberKeyword} serviceID - Data required for enableServiceMonitor + * @returns {Promise} + */ + enableServiceMonitor(serviceID) { + return new Promise((resolve, reject) => { + this._linode + .enableServiceMonitor(serviceID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteServiceMonitor function of MonitoringLinodeClass + * @param {NumberKeyword} serviceID - Data required for deleteServiceMonitor + * @returns {Promise} + */ + deleteServiceMonitor(serviceID) { + return new Promise((resolve, reject) => { + this._linode + .deleteServiceMonitor(serviceID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createServiceMonitor function of MonitoringLinodeClass + * @param {ManagedServicePayload} data - Data required for createServiceMonitor + * @returns {Promise} + */ + createServiceMonitor(data) { + return new Promise((resolve, reject) => { + this._linode + .createServiceMonitor(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateServiceMonitor function of MonitoringLinodeClass + * @param {NumberKeyword} monitorID - Data required for updateServiceMonitor + * @param {Partial} data - Data required for updateServiceMonitor + * @returns {Promise} + */ + updateServiceMonitor(monitorID, data) { + return new Promise((resolve, reject) => { + this._linode + .updateServiceMonitor(monitorID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getCredentials function of MonitoringLinodeClass + * @param {Params} params - Data required for getCredentials + * @param {Filter} filters - Data required for getCredentials + * @returns {Promise} + */ + getCredentials(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getCredentials(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateCredential function of MonitoringLinodeClass + * @param {NumberKeyword} credentialID - Data required for updateCredential + * @param {UpdateCredentialPayload} data - Data required for updateCredential + * @returns {Promise} + */ + updateCredential(credentialID, data) { + return new Promise((resolve, reject) => { + this._linode + .updateCredential(credentialID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteCredential function of MonitoringLinodeClass + * @param {NumberKeyword} credentialID - Data required for deleteCredential + * @returns {Promise} + */ + deleteCredential(credentialID) { + return new Promise((resolve, reject) => { + this._linode + .deleteCredential(credentialID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_Monitoring; diff --git a/generator/generatedClasses/Linode/network/linode-DNS.js b/generator/generatedClasses/Linode/network/linode-DNS.js index ce3dc8a0..a3c1d066 100644 --- a/generator/generatedClasses/Linode/network/linode-DNS.js +++ b/generator/generatedClasses/Linode/network/linode-DNS.js @@ -1,93 +1,99 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a DNSLinodeClass object - * @category Linode - */ + * Class to create a DNSLinodeClass object + * @category Linode + */ class Linode_DNS { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getDomains function of DNSLinodeClass - * @param {Params} params - Data required for getDomains - * @param {Filter} filter - Data required for getDomains - * @returns {Promise} - */ - getDomains(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode.getDomains(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDomain function of DNSLinodeClass - * @param {NumberKeyword} domainId - Data required for getDomain - * @returns {Promise} - */ - getDomain(domainId) { - return new Promise((resolve, reject) => { - this._linode.getDomain(domainId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createDomain function of DNSLinodeClass - * @param {CreateDomainPayload} data - Data required for createDomain - * @returns {Promise} - */ - createDomain(data) { - return new Promise((resolve, reject) => { - this._linode.createDomain(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateDomain function of DNSLinodeClass - * @param {NumberKeyword} domainId - Data required for updateDomain - * @param {UpdateDomainPayload} data - Data required for updateDomain - * @returns {Promise} - */ - updateDomain(domainId, data) { - return new Promise((resolve, reject) => { - this._linode.updateDomain(domainId, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDomain function of DNSLinodeClass - * @param {NumberKeyword} domainId - Data required for deleteDomain - * @returns {Promise} - */ - deleteDomain(domainId) { - return new Promise((resolve, reject) => { - this._linode.deleteDomain(domainId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the cloneDomain function of DNSLinodeClass - * @param {NumberKeyword} domainId - Data required for cloneDomain - * @param {CloneDomainPayload} data - Data required for cloneDomain - * @returns {Promise} - */ - cloneDomain(domainId, data) { - return new Promise((resolve, reject) => { - this._linode.cloneDomain(domainId, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getDomains function of DNSLinodeClass + * @param {Params} params - Data required for getDomains + * @param {Filter} filter - Data required for getDomains + * @returns {Promise} + */ + getDomains(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getDomains(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDomain function of DNSLinodeClass + * @param {NumberKeyword} domainId - Data required for getDomain + * @returns {Promise} + */ + getDomain(domainId) { + return new Promise((resolve, reject) => { + this._linode + .getDomain(domainId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createDomain function of DNSLinodeClass + * @param {CreateDomainPayload} data - Data required for createDomain + * @returns {Promise} + */ + createDomain(data) { + return new Promise((resolve, reject) => { + this._linode + .createDomain(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateDomain function of DNSLinodeClass + * @param {NumberKeyword} domainId - Data required for updateDomain + * @param {UpdateDomainPayload} data - Data required for updateDomain + * @returns {Promise} + */ + updateDomain(domainId, data) { + return new Promise((resolve, reject) => { + this._linode + .updateDomain(domainId, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDomain function of DNSLinodeClass + * @param {NumberKeyword} domainId - Data required for deleteDomain + * @returns {Promise} + */ + deleteDomain(domainId) { + return new Promise((resolve, reject) => { + this._linode + .deleteDomain(domainId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the cloneDomain function of DNSLinodeClass + * @param {NumberKeyword} domainId - Data required for cloneDomain + * @param {CloneDomainPayload} data - Data required for cloneDomain + * @returns {Promise} + */ + cloneDomain(domainId, data) { + return new Promise((resolve, reject) => { + this._linode + .cloneDomain(domainId, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_DNS; diff --git a/generator/generatedClasses/Linode/network/linode-loadBalancer.js b/generator/generatedClasses/Linode/network/linode-loadBalancer.js index eb97ba0e..7af0d984 100644 --- a/generator/generatedClasses/Linode/network/linode-loadBalancer.js +++ b/generator/generatedClasses/Linode/network/linode-loadBalancer.js @@ -1,68 +1,72 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a LoadBalancerLinodeClass object - * @category Linode - */ + * Class to create a LoadBalancerLinodeClass object + * @category Linode + */ class Linode_LoadBalancer { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getNodeBalancers function of LoadBalancerLinodeClass - * @param {Params} params - Data required for getNodeBalancers - * @param {Filter} filters - Data required for getNodeBalancers - * @returns {Promise} - */ - list(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getNodeBalancers(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateNodeBalancer function of LoadBalancerLinodeClass - * @param {NumberKeyword} nodeBalancerId - Data required for updateNodeBalancer - * @param {Partial} data - Data required for updateNodeBalancer - * @returns {Promise} - */ - update(nodeBalancerId, data) { - return new Promise((resolve, reject) => { - this._linode.updateNodeBalancer(nodeBalancerId, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createNodeBalancer function of LoadBalancerLinodeClass - * @param {CreateNodeBalancerPayload} data - Data required for createNodeBalancer - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode.createNodeBalancer(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteNodeBalancer function of LoadBalancerLinodeClass - * @param {NumberKeyword} nodeBalancerId - Data required for deleteNodeBalancer - * @returns {Promise} - */ - delete(nodeBalancerId) { - return new Promise((resolve, reject) => { - this._linode.deleteNodeBalancer(nodeBalancerId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getNodeBalancers function of LoadBalancerLinodeClass + * @param {Params} params - Data required for getNodeBalancers + * @param {Filter} filters - Data required for getNodeBalancers + * @returns {Promise} + */ + list(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getNodeBalancers(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateNodeBalancer function of LoadBalancerLinodeClass + * @param {NumberKeyword} nodeBalancerId - Data required for updateNodeBalancer + * @param {Partial} data - Data required for updateNodeBalancer + * @returns {Promise} + */ + update(nodeBalancerId, data) { + return new Promise((resolve, reject) => { + this._linode + .updateNodeBalancer(nodeBalancerId, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createNodeBalancer function of LoadBalancerLinodeClass + * @param {CreateNodeBalancerPayload} data - Data required for createNodeBalancer + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode + .createNodeBalancer(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteNodeBalancer function of LoadBalancerLinodeClass + * @param {NumberKeyword} nodeBalancerId - Data required for deleteNodeBalancer + * @returns {Promise} + */ + delete(nodeBalancerId) { + return new Promise((resolve, reject) => { + this._linode + .deleteNodeBalancer(nodeBalancerId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_LoadBalancer; diff --git a/generator/generatedClasses/Linode/storage/linode-blockStorage.js b/generator/generatedClasses/Linode/storage/linode-blockStorage.js index 63c16610..29846fc6 100644 --- a/generator/generatedClasses/Linode/storage/linode-blockStorage.js +++ b/generator/generatedClasses/Linode/storage/linode-blockStorage.js @@ -1,68 +1,72 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a BlockStorageLinodeClass object - * @category Linode - */ + * Class to create a BlockStorageLinodeClass object + * @category Linode + */ class Linode_BlockStorage { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getVolumes function of BlockStorageLinodeClass - * @param {Params} params - Data required for getVolumes - * @param {Filter} filters - Data required for getVolumes - * @returns {Promise} - */ - list(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getVolumes(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteVolume function of BlockStorageLinodeClass - * @param {NumberKeyword} volumeId - Data required for deleteVolume - * @returns {Promise} - */ - delete(volumeId) { - return new Promise((resolve, reject) => { - this._linode.deleteVolume(volumeId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateVolume function of BlockStorageLinodeClass - * @param {NumberKeyword} volumeId - Data required for updateVolume - * @param {UpdateVolumeRequest} data - Data required for updateVolume - * @returns {Promise} - */ - update(volumeId, data) { - return new Promise((resolve, reject) => { - this._linode.updateVolume(volumeId, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createVolume function of BlockStorageLinodeClass - * @param {VolumeRequestPayload} data - Data required for createVolume - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode.createVolume(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getVolumes function of BlockStorageLinodeClass + * @param {Params} params - Data required for getVolumes + * @param {Filter} filters - Data required for getVolumes + * @returns {Promise} + */ + list(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getVolumes(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteVolume function of BlockStorageLinodeClass + * @param {NumberKeyword} volumeId - Data required for deleteVolume + * @returns {Promise} + */ + delete(volumeId) { + return new Promise((resolve, reject) => { + this._linode + .deleteVolume(volumeId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateVolume function of BlockStorageLinodeClass + * @param {NumberKeyword} volumeId - Data required for updateVolume + * @param {UpdateVolumeRequest} data - Data required for updateVolume + * @returns {Promise} + */ + update(volumeId, data) { + return new Promise((resolve, reject) => { + this._linode + .updateVolume(volumeId, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createVolume function of BlockStorageLinodeClass + * @param {VolumeRequestPayload} data - Data required for createVolume + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode + .createVolume(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_BlockStorage; diff --git a/generator/generatedClasses/Linode/storage/linode-storageBucket.js b/generator/generatedClasses/Linode/storage/linode-storageBucket.js index 6cdf3dfb..54b7b993 100644 --- a/generator/generatedClasses/Linode/storage/linode-storageBucket.js +++ b/generator/generatedClasses/Linode/storage/linode-storageBucket.js @@ -1,95 +1,101 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a StorageBucketLinodeClass object - * @category Linode - */ + * Class to create a StorageBucketLinodeClass object + * @category Linode + */ class Linode_StorageBucket { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getBucket function of StorageBucketLinodeClass - * @param {StringKeyword} clusterId - Data required for getBucket - * @param {StringKeyword} bucketName - Data required for getBucket - * @returns {Promise} - */ - get(clusterId, bucketName) { - return new Promise((resolve, reject) => { - this._linode.getBucket(clusterId, bucketName) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getBuckets function of StorageBucketLinodeClass - * @param {Params} params - Data required for getBuckets - * @param {Filter} filters - Data required for getBuckets - * @returns {Promise} - */ - list(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getBuckets(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createBucket function of StorageBucketLinodeClass - * @param {ObjectStorageBucketRequestPayload} data - Data required for createBucket - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode.createBucket(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteBucket function of StorageBucketLinodeClass - * @param {ObjectStorageDeleteBucketRequestPayload} {cluster,label} - Data required for deleteBucket - * @returns {Promise} - */ - delete({ cluster, label }) { - return new Promise((resolve, reject) => { - this._linode.deleteBucket({ cluster, label }) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getBucketAccess function of StorageBucketLinodeClass - * @param {StringKeyword} clusterId - Data required for getBucketAccess - * @param {StringKeyword} bucketName - Data required for getBucketAccess - * @returns {Promise} - */ - getBucketAccess(clusterId, bucketName) { - return new Promise((resolve, reject) => { - this._linode.getBucketAccess(clusterId, bucketName) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateBucketAccess function of StorageBucketLinodeClass - * @param {StringKeyword} clusterId - Data required for updateBucketAccess - * @param {StringKeyword} bucketName - Data required for updateBucketAccess - * @param {ObjectStorageBucketAccessRequest} data - Data required for updateBucketAccess - * @returns {Promise} - */ - updateBucketAccess(clusterId, bucketName, data) { - return new Promise((resolve, reject) => { - this._linode.updateBucketAccess(clusterId, bucketName, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getBucket function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for getBucket + * @param {StringKeyword} bucketName - Data required for getBucket + * @returns {Promise} + */ + get(clusterId, bucketName) { + return new Promise((resolve, reject) => { + this._linode + .getBucket(clusterId, bucketName) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getBuckets function of StorageBucketLinodeClass + * @param {Params} params - Data required for getBuckets + * @param {Filter} filters - Data required for getBuckets + * @returns {Promise} + */ + list(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getBuckets(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createBucket function of StorageBucketLinodeClass + * @param {ObjectStorageBucketRequestPayload} data - Data required for createBucket + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode + .createBucket(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteBucket function of StorageBucketLinodeClass + * @param {ObjectStorageDeleteBucketRequestPayload} {cluster,label} - Data required for deleteBucket + * @returns {Promise} + */ + delete({ cluster, label }) { + return new Promise((resolve, reject) => { + this._linode + .deleteBucket({ cluster, label }) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getBucketAccess function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for getBucketAccess + * @param {StringKeyword} bucketName - Data required for getBucketAccess + * @returns {Promise} + */ + getBucketAccess(clusterId, bucketName) { + return new Promise((resolve, reject) => { + this._linode + .getBucketAccess(clusterId, bucketName) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateBucketAccess function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for updateBucketAccess + * @param {StringKeyword} bucketName - Data required for updateBucketAccess + * @param {ObjectStorageBucketAccessRequest} data - Data required for updateBucketAccess + * @returns {Promise} + */ + updateBucketAccess(clusterId, bucketName, data) { + return new Promise((resolve, reject) => { + this._linode + .updateBucketAccess(clusterId, bucketName, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_StorageBucket; diff --git a/generator/generatedClasses/Oracle/blockchain/oci-blockChain.js b/generator/generatedClasses/Oracle/blockchain/oci-blockChain.js index 50155811..8ec5a5fa 100644 --- a/generator/generatedClasses/Oracle/blockchain/oci-blockChain.js +++ b/generator/generatedClasses/Oracle/blockchain/oci-blockChain.js @@ -1,138 +1,151 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a BlockchainPlatformClient object - * @category Oracle Cloud - */ + * Class to create a BlockchainPlatformClient object + * @category Oracle Cloud + */ class Oracle_BlockChain { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._blockchainPlatformClient = this._oci.BlockchainPlatformClient(params, clientConfiguration); - } - /** - * Trigers the createBlockchainPlatform function of BlockchainPlatformClient - * @param {CreateBlockchainPlatformRequest} createBlockchainPlatformRequest - Data required for createBlockchainPlatform - * @returns {Promise} - */ - createBlockchainPlatform(createBlockchainPlatformRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient.createBlockchainPlatform(createBlockchainPlatformRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createOsn function of BlockchainPlatformClient - * @param {CreateOsnRequest} createOsnRequest - Data required for createOsn - * @returns {Promise} - */ - createOsn(createOsnRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient.createOsn(createOsnRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createPeer function of BlockchainPlatformClient - * @param {CreatePeerRequest} createPeerRequest - Data required for createPeer - * @returns {Promise} - */ - createPeer(createPeerRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient.createPeer(createPeerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteBlockchainPlatform function of BlockchainPlatformClient - * @param {DeleteBlockchainPlatformRequest} deleteBlockchainPlatformRequest - Data required for deleteBlockchainPlatform - * @returns {Promise} - */ - deleteBlockchainPlatform(deleteBlockchainPlatformRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient.deleteBlockchainPlatform(deleteBlockchainPlatformRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteOsn function of BlockchainPlatformClient - * @param {DeleteOsnRequest} deleteOsnRequest - Data required for deleteOsn - * @returns {Promise} - */ - deleteOsn(deleteOsnRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient.deleteOsn(deleteOsnRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deletePeer function of BlockchainPlatformClient - * @param {DeletePeerRequest} deletePeerRequest - Data required for deletePeer - * @returns {Promise} - */ - deletePeer(deletePeerRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient.deletePeer(deletePeerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getOsn function of BlockchainPlatformClient - * @param {GetOsnRequest} getOsnRequest - Data required for getOsn - * @returns {Promise} - */ - getOsn(getOsnRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient.getOsn(getOsnRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listBlockchainPlatforms function of BlockchainPlatformClient - * @param {ListBlockchainPlatformsRequest} listBlockchainPlatformsRequest - Data required for listBlockchainPlatforms - * @returns {Promise} - */ - listBlockchainPlatforms(listBlockchainPlatformsRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient.listBlockchainPlatforms(listBlockchainPlatformsRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listOsns function of BlockchainPlatformClient - * @param {ListOsnsRequest} listOsnsRequest - Data required for listOsns - * @returns {Promise} - */ - listOsns(listOsnsRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient.listOsns(listOsnsRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listPeers function of BlockchainPlatformClient - * @param {ListPeersRequest} listPeersRequest - Data required for listPeers - * @returns {Promise} - */ - listPeers(listPeersRequest) { - return new Promise((resolve, reject) => { - this._blockchainPlatformClient.listPeers(listPeersRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._blockchainPlatformClient = this._oci.BlockchainPlatformClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createBlockchainPlatform function of BlockchainPlatformClient + * @param {CreateBlockchainPlatformRequest} createBlockchainPlatformRequest - Data required for createBlockchainPlatform + * @returns {Promise} + */ + createBlockchainPlatform(createBlockchainPlatformRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient + .createBlockchainPlatform(createBlockchainPlatformRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createOsn function of BlockchainPlatformClient + * @param {CreateOsnRequest} createOsnRequest - Data required for createOsn + * @returns {Promise} + */ + createOsn(createOsnRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient + .createOsn(createOsnRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createPeer function of BlockchainPlatformClient + * @param {CreatePeerRequest} createPeerRequest - Data required for createPeer + * @returns {Promise} + */ + createPeer(createPeerRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient + .createPeer(createPeerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteBlockchainPlatform function of BlockchainPlatformClient + * @param {DeleteBlockchainPlatformRequest} deleteBlockchainPlatformRequest - Data required for deleteBlockchainPlatform + * @returns {Promise} + */ + deleteBlockchainPlatform(deleteBlockchainPlatformRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient + .deleteBlockchainPlatform(deleteBlockchainPlatformRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteOsn function of BlockchainPlatformClient + * @param {DeleteOsnRequest} deleteOsnRequest - Data required for deleteOsn + * @returns {Promise} + */ + deleteOsn(deleteOsnRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient + .deleteOsn(deleteOsnRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deletePeer function of BlockchainPlatformClient + * @param {DeletePeerRequest} deletePeerRequest - Data required for deletePeer + * @returns {Promise} + */ + deletePeer(deletePeerRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient + .deletePeer(deletePeerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getOsn function of BlockchainPlatformClient + * @param {GetOsnRequest} getOsnRequest - Data required for getOsn + * @returns {Promise} + */ + getOsn(getOsnRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient + .getOsn(getOsnRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listBlockchainPlatforms function of BlockchainPlatformClient + * @param {ListBlockchainPlatformsRequest} listBlockchainPlatformsRequest - Data required for listBlockchainPlatforms + * @returns {Promise} + */ + listBlockchainPlatforms(listBlockchainPlatformsRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient + .listBlockchainPlatforms(listBlockchainPlatformsRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listOsns function of BlockchainPlatformClient + * @param {ListOsnsRequest} listOsnsRequest - Data required for listOsns + * @returns {Promise} + */ + listOsns(listOsnsRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient + .listOsns(listOsnsRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listPeers function of BlockchainPlatformClient + * @param {ListPeersRequest} listPeersRequest - Data required for listPeers + * @returns {Promise} + */ + listPeers(listPeersRequest) { + return new Promise((resolve, reject) => { + this._blockchainPlatformClient + .listPeers(listPeersRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_BlockChain; diff --git a/generator/generatedClasses/Oracle/compute/oci-computeInstance.js b/generator/generatedClasses/Oracle/compute/oci-computeInstance.js index 4ee962dd..61a4d3c6 100644 --- a/generator/generatedClasses/Oracle/compute/oci-computeInstance.js +++ b/generator/generatedClasses/Oracle/compute/oci-computeInstance.js @@ -1,126 +1,138 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ContainerInstanceClient object - * @category Oracle Cloud - */ + * Class to create a ContainerInstanceClient object + * @category Oracle Cloud + */ class Oracle_ComputeInstance { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._containerInstanceClient = this._oci.ContainerInstanceClient(params, clientConfiguration); - } - /** - * Trigers the createContainerInstance function of ContainerInstanceClient - * @param {CreateContainerInstanceRequest} createContainerInstanceRequest - Data required for createContainerInstance - * @returns {Promise} - */ - create(createContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient.createContainerInstance(createContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteContainerInstance function of ContainerInstanceClient - * @param {DeleteContainerInstanceRequest} deleteContainerInstanceRequest - Data required for deleteContainerInstance - * @returns {Promise} - */ - delete(deleteContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient.deleteContainerInstance(deleteContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getContainer function of ContainerInstanceClient - * @param {GetContainerRequest} getContainerRequest - Data required for getContainer - * @returns {Promise} - */ - getAll(getContainerRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient.getContainer(getContainerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getContainerInstance function of ContainerInstanceClient - * @param {GetContainerInstanceRequest} getContainerInstanceRequest - Data required for getContainerInstance - * @returns {Promise} - */ - get(getContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient.getContainerInstance(getContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listContainers function of ContainerInstanceClient - * @param {ListContainersRequest} listContainersRequest - Data required for listContainers - * @returns {Promise} - */ - list(listContainersRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient.listContainers(listContainersRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the restartContainerInstance function of ContainerInstanceClient - * @param {RestartContainerInstanceRequest} restartContainerInstanceRequest - Data required for restartContainerInstance - * @returns {Promise} - */ - restart(restartContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient.restartContainerInstance(restartContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the startContainerInstance function of ContainerInstanceClient - * @param {StartContainerInstanceRequest} startContainerInstanceRequest - Data required for startContainerInstance - * @returns {Promise} - */ - start(startContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient.startContainerInstance(startContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the stopContainerInstance function of ContainerInstanceClient - * @param {StopContainerInstanceRequest} stopContainerInstanceRequest - Data required for stopContainerInstance - * @returns {Promise} - */ - stop(stopContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient.stopContainerInstance(stopContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateContainer function of ContainerInstanceClient - * @param {UpdateContainerRequest} updateContainerRequest - Data required for updateContainer - * @returns {Promise} - */ - update(updateContainerRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient.updateContainer(updateContainerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._containerInstanceClient = this._oci.ContainerInstanceClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createContainerInstance function of ContainerInstanceClient + * @param {CreateContainerInstanceRequest} createContainerInstanceRequest - Data required for createContainerInstance + * @returns {Promise} + */ + create(createContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient + .createContainerInstance(createContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteContainerInstance function of ContainerInstanceClient + * @param {DeleteContainerInstanceRequest} deleteContainerInstanceRequest - Data required for deleteContainerInstance + * @returns {Promise} + */ + delete(deleteContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient + .deleteContainerInstance(deleteContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getContainer function of ContainerInstanceClient + * @param {GetContainerRequest} getContainerRequest - Data required for getContainer + * @returns {Promise} + */ + getAll(getContainerRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient + .getContainer(getContainerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getContainerInstance function of ContainerInstanceClient + * @param {GetContainerInstanceRequest} getContainerInstanceRequest - Data required for getContainerInstance + * @returns {Promise} + */ + get(getContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient + .getContainerInstance(getContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listContainers function of ContainerInstanceClient + * @param {ListContainersRequest} listContainersRequest - Data required for listContainers + * @returns {Promise} + */ + list(listContainersRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient + .listContainers(listContainersRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the restartContainerInstance function of ContainerInstanceClient + * @param {RestartContainerInstanceRequest} restartContainerInstanceRequest - Data required for restartContainerInstance + * @returns {Promise} + */ + restart(restartContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient + .restartContainerInstance(restartContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the startContainerInstance function of ContainerInstanceClient + * @param {StartContainerInstanceRequest} startContainerInstanceRequest - Data required for startContainerInstance + * @returns {Promise} + */ + start(startContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient + .startContainerInstance(startContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the stopContainerInstance function of ContainerInstanceClient + * @param {StopContainerInstanceRequest} stopContainerInstanceRequest - Data required for stopContainerInstance + * @returns {Promise} + */ + stop(stopContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient + .stopContainerInstance(stopContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateContainer function of ContainerInstanceClient + * @param {UpdateContainerRequest} updateContainerRequest - Data required for updateContainer + * @returns {Promise} + */ + update(updateContainerRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient + .updateContainer(updateContainerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_ComputeInstance; diff --git a/generator/generatedClasses/Oracle/compute/oci-container.js b/generator/generatedClasses/Oracle/compute/oci-container.js index 84192a0e..9e51ea9f 100644 --- a/generator/generatedClasses/Oracle/compute/oci-container.js +++ b/generator/generatedClasses/Oracle/compute/oci-container.js @@ -1,90 +1,99 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ContainerInstanceClient object - * @category Oracle Cloud - */ + * Class to create a ContainerInstanceClient object + * @category Oracle Cloud + */ class Oracle_Container { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._containerInstanceClient = this._oci.ContainerInstanceClient(params, clientConfiguration); - } - /** - * Trigers the createContainerInstance function of ContainerInstanceClient - * @param {CreateContainerInstanceRequest} createContainerInstanceRequest - Data required for createContainerInstance - * @returns {Promise} - */ - create(createContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient.createContainerInstance(createContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteContainerInstance function of ContainerInstanceClient - * @param {DeleteContainerInstanceRequest} deleteContainerInstanceRequest - Data required for deleteContainerInstance - * @returns {Promise} - */ - delete(deleteContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient.deleteContainerInstance(deleteContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getContainer function of ContainerInstanceClient - * @param {GetContainerRequest} getContainerRequest - Data required for getContainer - * @returns {Promise} - */ - describe(getContainerRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient.getContainer(getContainerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listContainers function of ContainerInstanceClient - * @param {ListContainersRequest} listContainersRequest - Data required for listContainers - * @returns {Promise} - */ - list(listContainersRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient.listContainers(listContainersRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the startContainerInstance function of ContainerInstanceClient - * @param {StartContainerInstanceRequest} startContainerInstanceRequest - Data required for startContainerInstance - * @returns {Promise} - */ - start(startContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient.startContainerInstance(startContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the stopContainerInstance function of ContainerInstanceClient - * @param {StopContainerInstanceRequest} stopContainerInstanceRequest - Data required for stopContainerInstance - * @returns {Promise} - */ - stop(stopContainerInstanceRequest) { - return new Promise((resolve, reject) => { - this._containerInstanceClient.stopContainerInstance(stopContainerInstanceRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._containerInstanceClient = this._oci.ContainerInstanceClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createContainerInstance function of ContainerInstanceClient + * @param {CreateContainerInstanceRequest} createContainerInstanceRequest - Data required for createContainerInstance + * @returns {Promise} + */ + create(createContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient + .createContainerInstance(createContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteContainerInstance function of ContainerInstanceClient + * @param {DeleteContainerInstanceRequest} deleteContainerInstanceRequest - Data required for deleteContainerInstance + * @returns {Promise} + */ + delete(deleteContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient + .deleteContainerInstance(deleteContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getContainer function of ContainerInstanceClient + * @param {GetContainerRequest} getContainerRequest - Data required for getContainer + * @returns {Promise} + */ + describe(getContainerRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient + .getContainer(getContainerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listContainers function of ContainerInstanceClient + * @param {ListContainersRequest} listContainersRequest - Data required for listContainers + * @returns {Promise} + */ + list(listContainersRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient + .listContainers(listContainersRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the startContainerInstance function of ContainerInstanceClient + * @param {StartContainerInstanceRequest} startContainerInstanceRequest - Data required for startContainerInstance + * @returns {Promise} + */ + start(startContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient + .startContainerInstance(startContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the stopContainerInstance function of ContainerInstanceClient + * @param {StopContainerInstanceRequest} stopContainerInstanceRequest - Data required for stopContainerInstance + * @returns {Promise} + */ + stop(stopContainerInstanceRequest) { + return new Promise((resolve, reject) => { + this._containerInstanceClient + .stopContainerInstance(stopContainerInstanceRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_Container; diff --git a/generator/generatedClasses/Oracle/compute/oci-kubernetes.js b/generator/generatedClasses/Oracle/compute/oci-kubernetes.js index 8d14026f..f2a468c8 100644 --- a/generator/generatedClasses/Oracle/compute/oci-kubernetes.js +++ b/generator/generatedClasses/Oracle/compute/oci-kubernetes.js @@ -1,138 +1,151 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ContainerEngineClient object - * @category Oracle Cloud - */ + * Class to create a ContainerEngineClient object + * @category Oracle Cloud + */ class Oracle_Kubernetes { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._containerEngineClient = this._oci.ContainerEngineClient(params, clientConfiguration); - } - /** - * Trigers the createCluster function of ContainerEngineClient - * @param {CreateClusterRequest} createClusterRequest - Data required for createCluster - * @returns {Promise} - */ - create(createClusterRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.createCluster(createClusterRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createNodePool function of ContainerEngineClient - * @param {CreateNodePoolRequest} createNodePoolRequest - Data required for createNodePool - * @returns {Promise} - */ - createNodePool(createNodePoolRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.createNodePool(createNodePoolRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteCluster function of ContainerEngineClient - * @param {DeleteClusterRequest} deleteClusterRequest - Data required for deleteCluster - * @returns {Promise} - */ - delete(deleteClusterRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.deleteCluster(deleteClusterRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteNode function of ContainerEngineClient - * @param {DeleteNodeRequest} deleteNodeRequest - Data required for deleteNode - * @returns {Promise} - */ - deleteNode(deleteNodeRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.deleteNode(deleteNodeRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteNodePool function of ContainerEngineClient - * @param {DeleteNodePoolRequest} deleteNodePoolRequest - Data required for deleteNodePool - * @returns {Promise} - */ - deleteNodePool(deleteNodePoolRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.deleteNodePool(deleteNodePoolRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getCluster function of ContainerEngineClient - * @param {GetClusterRequest} getClusterRequest - Data required for getCluster - * @returns {Promise} - */ - get(getClusterRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.getCluster(getClusterRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getNodePool function of ContainerEngineClient - * @param {GetNodePoolRequest} getNodePoolRequest - Data required for getNodePool - * @returns {Promise} - */ - getNodePool(getNodePoolRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.getNodePool(getNodePoolRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listClusters function of ContainerEngineClient - * @param {ListClustersRequest} listClustersRequest - Data required for listClusters - * @returns {Promise} - */ - list(listClustersRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.listClusters(listClustersRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateCluster function of ContainerEngineClient - * @param {UpdateClusterRequest} updateClusterRequest - Data required for updateCluster - * @returns {Promise} - */ - update(updateClusterRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.updateCluster(updateClusterRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateNodePool function of ContainerEngineClient - * @param {UpdateNodePoolRequest} updateNodePoolRequest - Data required for updateNodePool - * @returns {Promise} - */ - updateNodePool(updateNodePoolRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.updateNodePool(updateNodePoolRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._containerEngineClient = this._oci.ContainerEngineClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createCluster function of ContainerEngineClient + * @param {CreateClusterRequest} createClusterRequest - Data required for createCluster + * @returns {Promise} + */ + create(createClusterRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .createCluster(createClusterRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createNodePool function of ContainerEngineClient + * @param {CreateNodePoolRequest} createNodePoolRequest - Data required for createNodePool + * @returns {Promise} + */ + createNodePool(createNodePoolRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .createNodePool(createNodePoolRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteCluster function of ContainerEngineClient + * @param {DeleteClusterRequest} deleteClusterRequest - Data required for deleteCluster + * @returns {Promise} + */ + delete(deleteClusterRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .deleteCluster(deleteClusterRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteNode function of ContainerEngineClient + * @param {DeleteNodeRequest} deleteNodeRequest - Data required for deleteNode + * @returns {Promise} + */ + deleteNode(deleteNodeRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .deleteNode(deleteNodeRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteNodePool function of ContainerEngineClient + * @param {DeleteNodePoolRequest} deleteNodePoolRequest - Data required for deleteNodePool + * @returns {Promise} + */ + deleteNodePool(deleteNodePoolRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .deleteNodePool(deleteNodePoolRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getCluster function of ContainerEngineClient + * @param {GetClusterRequest} getClusterRequest - Data required for getCluster + * @returns {Promise} + */ + get(getClusterRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .getCluster(getClusterRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getNodePool function of ContainerEngineClient + * @param {GetNodePoolRequest} getNodePoolRequest - Data required for getNodePool + * @returns {Promise} + */ + getNodePool(getNodePoolRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .getNodePool(getNodePoolRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listClusters function of ContainerEngineClient + * @param {ListClustersRequest} listClustersRequest - Data required for listClusters + * @returns {Promise} + */ + list(listClustersRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .listClusters(listClustersRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateCluster function of ContainerEngineClient + * @param {UpdateClusterRequest} updateClusterRequest - Data required for updateCluster + * @returns {Promise} + */ + update(updateClusterRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .updateCluster(updateClusterRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateNodePool function of ContainerEngineClient + * @param {UpdateNodePoolRequest} updateNodePoolRequest - Data required for updateNodePool + * @returns {Promise} + */ + updateNodePool(updateNodePoolRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .updateNodePool(updateNodePoolRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_Kubernetes; diff --git a/generator/generatedClasses/Oracle/database/oci-RDBMS.js b/generator/generatedClasses/Oracle/database/oci-RDBMS.js index 56d2130a..4032123f 100644 --- a/generator/generatedClasses/Oracle/database/oci-RDBMS.js +++ b/generator/generatedClasses/Oracle/database/oci-RDBMS.js @@ -1,102 +1,112 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a DbSystemClient object - * @category Oracle Cloud - */ + * Class to create a DbSystemClient object + * @category Oracle Cloud + */ class Oracle_RDBMS { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._dbSystemClient = this._oci.DbSystemClient(params, clientConfiguration); - } - /** - * Trigers the createDbSystem function of DbSystemClient - * @param {CreateDbSystemRequest} createDbSystemRequest - Data required for createDbSystem - * @returns {Promise} - */ - createDBSystem(createDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient.createDbSystem(createDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDbSystem function of DbSystemClient - * @param {DeleteDbSystemRequest} deleteDbSystemRequest - Data required for deleteDbSystem - * @returns {Promise} - */ - deleteDBSystem(deleteDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient.deleteDbSystem(deleteDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDbSystem function of DbSystemClient - * @param {GetDbSystemRequest} getDbSystemRequest - Data required for getDbSystem - * @returns {Promise} - */ - getDBSystem(getDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient.getDbSystem(getDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the restartDbSystem function of DbSystemClient - * @param {RestartDbSystemRequest} restartDbSystemRequest - Data required for restartDbSystem - * @returns {Promise} - */ - restartDBSystem(restartDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient.restartDbSystem(restartDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the startDbSystem function of DbSystemClient - * @param {StartDbSystemRequest} startDbSystemRequest - Data required for startDbSystem - * @returns {Promise} - */ - startDBSystem(startDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient.startDbSystem(startDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the stopDbSystem function of DbSystemClient - * @param {StopDbSystemRequest} stopDbSystemRequest - Data required for stopDbSystem - * @returns {Promise} - */ - stopDBSystem(stopDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient.stopDbSystem(stopDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateDbSystem function of DbSystemClient - * @param {UpdateDbSystemRequest} updateDbSystemRequest - Data required for updateDbSystem - * @returns {Promise} - */ - updateDBSystem(updateDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient.updateDbSystem(updateDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._dbSystemClient = this._oci.DbSystemClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createDbSystem function of DbSystemClient + * @param {CreateDbSystemRequest} createDbSystemRequest - Data required for createDbSystem + * @returns {Promise} + */ + createDBSystem(createDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient + .createDbSystem(createDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDbSystem function of DbSystemClient + * @param {DeleteDbSystemRequest} deleteDbSystemRequest - Data required for deleteDbSystem + * @returns {Promise} + */ + deleteDBSystem(deleteDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient + .deleteDbSystem(deleteDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDbSystem function of DbSystemClient + * @param {GetDbSystemRequest} getDbSystemRequest - Data required for getDbSystem + * @returns {Promise} + */ + getDBSystem(getDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient + .getDbSystem(getDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the restartDbSystem function of DbSystemClient + * @param {RestartDbSystemRequest} restartDbSystemRequest - Data required for restartDbSystem + * @returns {Promise} + */ + restartDBSystem(restartDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient + .restartDbSystem(restartDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the startDbSystem function of DbSystemClient + * @param {StartDbSystemRequest} startDbSystemRequest - Data required for startDbSystem + * @returns {Promise} + */ + startDBSystem(startDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient + .startDbSystem(startDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the stopDbSystem function of DbSystemClient + * @param {StopDbSystemRequest} stopDbSystemRequest - Data required for stopDbSystem + * @returns {Promise} + */ + stopDBSystem(stopDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient + .stopDbSystem(stopDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateDbSystem function of DbSystemClient + * @param {UpdateDbSystemRequest} updateDbSystemRequest - Data required for updateDbSystem + * @returns {Promise} + */ + updateDBSystem(updateDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient + .updateDbSystem(updateDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_RDBMS; diff --git a/generator/generatedClasses/Oracle/database/oci-noSql.js b/generator/generatedClasses/Oracle/database/oci-noSql.js index 53a598e3..d049fbfd 100644 --- a/generator/generatedClasses/Oracle/database/oci-noSql.js +++ b/generator/generatedClasses/Oracle/database/oci-noSql.js @@ -1,114 +1,122 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a NosqlClient object - * @category Oracle Cloud - */ + * Class to create a NosqlClient object + * @category Oracle Cloud + */ class Oracle_NoSql { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._nosqlClient = this._oci.NosqlClient(params, clientConfiguration); - } - /** - * Trigers the createTable function of NosqlClient - * @param {CreateTableRequest} createTableRequest - Data required for createTable - * @returns {Promise} - */ - createTable(createTableRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient.createTable(createTableRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteRow function of NosqlClient - * @param {DeleteRowRequest} deleteRowRequest - Data required for deleteRow - * @returns {Promise} - */ - deleteRow(deleteRowRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient.deleteRow(deleteRowRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteTable function of NosqlClient - * @param {DeleteTableRequest} deleteTableRequest - Data required for deleteTable - * @returns {Promise} - */ - deleteTable(deleteTableRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient.deleteTable(deleteTableRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getRow function of NosqlClient - * @param {GetRowRequest} getRowRequest - Data required for getRow - * @returns {Promise} - */ - getRow(getRowRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient.getRow(getRowRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getTable function of NosqlClient - * @param {GetTableRequest} getTableRequest - Data required for getTable - * @returns {Promise} - */ - getTable(getTableRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient.getTable(getTableRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listTables function of NosqlClient - * @param {ListTablesRequest} listTablesRequest - Data required for listTables - * @returns {Promise} - */ - listTables(listTablesRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient.listTables(listTablesRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateRow function of NosqlClient - * @param {UpdateRowRequest} updateRowRequest - Data required for updateRow - * @returns {Promise} - */ - updateRow(updateRowRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient.updateRow(updateRowRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateTable function of NosqlClient - * @param {UpdateTableRequest} updateTableRequest - Data required for updateTable - * @returns {Promise} - */ - updateTable(updateTableRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient.updateTable(updateTableRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._nosqlClient = this._oci.NosqlClient(params, clientConfiguration); + } + /** + * Trigers the createTable function of NosqlClient + * @param {CreateTableRequest} createTableRequest - Data required for createTable + * @returns {Promise} + */ + createTable(createTableRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient + .createTable(createTableRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteRow function of NosqlClient + * @param {DeleteRowRequest} deleteRowRequest - Data required for deleteRow + * @returns {Promise} + */ + deleteRow(deleteRowRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient + .deleteRow(deleteRowRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteTable function of NosqlClient + * @param {DeleteTableRequest} deleteTableRequest - Data required for deleteTable + * @returns {Promise} + */ + deleteTable(deleteTableRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient + .deleteTable(deleteTableRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getRow function of NosqlClient + * @param {GetRowRequest} getRowRequest - Data required for getRow + * @returns {Promise} + */ + getRow(getRowRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient + .getRow(getRowRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getTable function of NosqlClient + * @param {GetTableRequest} getTableRequest - Data required for getTable + * @returns {Promise} + */ + getTable(getTableRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient + .getTable(getTableRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listTables function of NosqlClient + * @param {ListTablesRequest} listTablesRequest - Data required for listTables + * @returns {Promise} + */ + listTables(listTablesRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient + .listTables(listTablesRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateRow function of NosqlClient + * @param {UpdateRowRequest} updateRowRequest - Data required for updateRow + * @returns {Promise} + */ + updateRow(updateRowRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient + .updateRow(updateRowRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateTable function of NosqlClient + * @param {UpdateTableRequest} updateTableRequest - Data required for updateTable + * @returns {Promise} + */ + updateTable(updateTableRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient + .updateTable(updateTableRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_NoSql; diff --git a/generator/generatedClasses/Oracle/devops/oci-devops.js b/generator/generatedClasses/Oracle/devops/oci-devops.js index 4fba5d28..f0943636 100644 --- a/generator/generatedClasses/Oracle/devops/oci-devops.js +++ b/generator/generatedClasses/Oracle/devops/oci-devops.js @@ -1,174 +1,190 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a DevopsClient object - * @category Oracle Cloud - */ + * Class to create a DevopsClient object + * @category Oracle Cloud + */ class Oracle_Devops { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._devopsClient = this._oci.DevopsClient(params, clientConfiguration); - } - /** - * Trigers the createDeployArtifact function of DevopsClient - * @param {CreateDeployArtifactRequest} createDeployArtifactRequest - Data required for createDeployArtifact - * @returns {Promise} - */ - createDeployArtifact(createDeployArtifactRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.createDeployArtifact(createDeployArtifactRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createDeployPipeline function of DevopsClient - * @param {CreateDeployPipelineRequest} createDeployPipelineRequest - Data required for createDeployPipeline - * @returns {Promise} - */ - createDeployPipeline(createDeployPipelineRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.createDeployPipeline(createDeployPipelineRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createDeployment function of DevopsClient - * @param {CreateDeploymentRequest} createDeploymentRequest - Data required for createDeployment - * @returns {Promise} - */ - createDeployment(createDeploymentRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.createDeployment(createDeploymentRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createProject function of DevopsClient - * @param {CreateProjectRequest} createProjectRequest - Data required for createProject - * @returns {Promise} - */ - createProject(createProjectRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.createProject(createProjectRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createRepository function of DevopsClient - * @param {CreateRepositoryRequest} createRepositoryRequest - Data required for createRepository - * @returns {Promise} - */ - createRepository(createRepositoryRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.createRepository(createRepositoryRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDeployArtifact function of DevopsClient - * @param {DeleteDeployArtifactRequest} deleteDeployArtifactRequest - Data required for deleteDeployArtifact - * @returns {Promise} - */ - deleteDeployArtifact(deleteDeployArtifactRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.deleteDeployArtifact(deleteDeployArtifactRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDeployPipeline function of DevopsClient - * @param {DeleteDeployPipelineRequest} deleteDeployPipelineRequest - Data required for deleteDeployPipeline - * @returns {Promise} - */ - deleteDeployPipeline(deleteDeployPipelineRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.deleteDeployPipeline(deleteDeployPipelineRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteProject function of DevopsClient - * @param {DeleteProjectRequest} deleteProjectRequest - Data required for deleteProject - * @returns {Promise} - */ - deleteProject(deleteProjectRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.deleteProject(deleteProjectRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteRepository function of DevopsClient - * @param {DeleteRepositoryRequest} deleteRepositoryRequest - Data required for deleteRepository - * @returns {Promise} - */ - deleteRepository(deleteRepositoryRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.deleteRepository(deleteRepositoryRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDeployArtifact function of DevopsClient - * @param {GetDeployArtifactRequest} getDeployArtifactRequest - Data required for getDeployArtifact - * @returns {Promise} - */ - getDeployArtifact(getDeployArtifactRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.getDeployArtifact(getDeployArtifactRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDeployPipeline function of DevopsClient - * @param {GetDeployPipelineRequest} getDeployPipelineRequest - Data required for getDeployPipeline - * @returns {Promise} - */ - getDeployPipeline(getDeployPipelineRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.getDeployPipeline(getDeployPipelineRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDeployment function of DevopsClient - * @param {GetDeploymentRequest} getDeploymentRequest - Data required for getDeployment - * @returns {Promise} - */ - getDeployment(getDeploymentRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.getDeployment(getDeploymentRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getProject function of DevopsClient - * @param {GetProjectRequest} getProjectRequest - Data required for getProject - * @returns {Promise} - */ - getProject(getProjectRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.getProject(getProjectRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._devopsClient = this._oci.DevopsClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createDeployArtifact function of DevopsClient + * @param {CreateDeployArtifactRequest} createDeployArtifactRequest - Data required for createDeployArtifact + * @returns {Promise} + */ + createDeployArtifact(createDeployArtifactRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .createDeployArtifact(createDeployArtifactRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createDeployPipeline function of DevopsClient + * @param {CreateDeployPipelineRequest} createDeployPipelineRequest - Data required for createDeployPipeline + * @returns {Promise} + */ + createDeployPipeline(createDeployPipelineRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .createDeployPipeline(createDeployPipelineRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createDeployment function of DevopsClient + * @param {CreateDeploymentRequest} createDeploymentRequest - Data required for createDeployment + * @returns {Promise} + */ + createDeployment(createDeploymentRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .createDeployment(createDeploymentRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createProject function of DevopsClient + * @param {CreateProjectRequest} createProjectRequest - Data required for createProject + * @returns {Promise} + */ + createProject(createProjectRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .createProject(createProjectRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createRepository function of DevopsClient + * @param {CreateRepositoryRequest} createRepositoryRequest - Data required for createRepository + * @returns {Promise} + */ + createRepository(createRepositoryRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .createRepository(createRepositoryRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDeployArtifact function of DevopsClient + * @param {DeleteDeployArtifactRequest} deleteDeployArtifactRequest - Data required for deleteDeployArtifact + * @returns {Promise} + */ + deleteDeployArtifact(deleteDeployArtifactRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .deleteDeployArtifact(deleteDeployArtifactRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDeployPipeline function of DevopsClient + * @param {DeleteDeployPipelineRequest} deleteDeployPipelineRequest - Data required for deleteDeployPipeline + * @returns {Promise} + */ + deleteDeployPipeline(deleteDeployPipelineRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .deleteDeployPipeline(deleteDeployPipelineRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteProject function of DevopsClient + * @param {DeleteProjectRequest} deleteProjectRequest - Data required for deleteProject + * @returns {Promise} + */ + deleteProject(deleteProjectRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .deleteProject(deleteProjectRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteRepository function of DevopsClient + * @param {DeleteRepositoryRequest} deleteRepositoryRequest - Data required for deleteRepository + * @returns {Promise} + */ + deleteRepository(deleteRepositoryRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .deleteRepository(deleteRepositoryRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDeployArtifact function of DevopsClient + * @param {GetDeployArtifactRequest} getDeployArtifactRequest - Data required for getDeployArtifact + * @returns {Promise} + */ + getDeployArtifact(getDeployArtifactRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .getDeployArtifact(getDeployArtifactRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDeployPipeline function of DevopsClient + * @param {GetDeployPipelineRequest} getDeployPipelineRequest - Data required for getDeployPipeline + * @returns {Promise} + */ + getDeployPipeline(getDeployPipelineRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .getDeployPipeline(getDeployPipelineRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDeployment function of DevopsClient + * @param {GetDeploymentRequest} getDeploymentRequest - Data required for getDeployment + * @returns {Promise} + */ + getDeployment(getDeploymentRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .getDeployment(getDeploymentRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getProject function of DevopsClient + * @param {GetProjectRequest} getProjectRequest - Data required for getProject + * @returns {Promise} + */ + getProject(getProjectRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .getProject(getProjectRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_Devops; diff --git a/generator/generatedClasses/Oracle/management/oci-keyManagement.js b/generator/generatedClasses/Oracle/management/oci-keyManagement.js index c8ba87c7..49c34874 100644 --- a/generator/generatedClasses/Oracle/management/oci-keyManagement.js +++ b/generator/generatedClasses/Oracle/management/oci-keyManagement.js @@ -1,66 +1,73 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a KmsManagementClient object - * @category Oracle Cloud - */ + * Class to create a KmsManagementClient object + * @category Oracle Cloud + */ class Oracle_KeyManagement { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._kmsManagementClient = this._oci.KmsManagementClient(params, clientConfiguration); - } - /** - * Trigers the createKey function of KmsManagementClient - * @param {CreateKeyRequest} createKeyRequest - Data required for createKey - * @returns {Promise} - */ - createKey(createKeyRequest) { - return new Promise((resolve, reject) => { - this._kmsManagementClient.createKey(createKeyRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the disableKey function of KmsManagementClient - * @param {DisableKeyRequest} disableKeyRequest - Data required for disableKey - * @returns {Promise} - */ - disableKey(disableKeyRequest) { - return new Promise((resolve, reject) => { - this._kmsManagementClient.disableKey(disableKeyRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the enableKey function of KmsManagementClient - * @param {EnableKeyRequest} enableKeyRequest - Data required for enableKey - * @returns {Promise} - */ - enableKey(enableKeyRequest) { - return new Promise((resolve, reject) => { - this._kmsManagementClient.enableKey(enableKeyRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateKey function of KmsManagementClient - * @param {UpdateKeyRequest} updateKeyRequest - Data required for updateKey - * @returns {Promise} - */ - update(updateKeyRequest) { - return new Promise((resolve, reject) => { - this._kmsManagementClient.updateKey(updateKeyRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._kmsManagementClient = this._oci.KmsManagementClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createKey function of KmsManagementClient + * @param {CreateKeyRequest} createKeyRequest - Data required for createKey + * @returns {Promise} + */ + createKey(createKeyRequest) { + return new Promise((resolve, reject) => { + this._kmsManagementClient + .createKey(createKeyRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the disableKey function of KmsManagementClient + * @param {DisableKeyRequest} disableKeyRequest - Data required for disableKey + * @returns {Promise} + */ + disableKey(disableKeyRequest) { + return new Promise((resolve, reject) => { + this._kmsManagementClient + .disableKey(disableKeyRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the enableKey function of KmsManagementClient + * @param {EnableKeyRequest} enableKeyRequest - Data required for enableKey + * @returns {Promise} + */ + enableKey(enableKeyRequest) { + return new Promise((resolve, reject) => { + this._kmsManagementClient + .enableKey(enableKeyRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateKey function of KmsManagementClient + * @param {UpdateKeyRequest} updateKeyRequest - Data required for updateKey + * @returns {Promise} + */ + update(updateKeyRequest) { + return new Promise((resolve, reject) => { + this._kmsManagementClient + .updateKey(updateKeyRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_KeyManagement; diff --git a/generator/generatedClasses/Oracle/management/oci-notificationService.js b/generator/generatedClasses/Oracle/management/oci-notificationService.js index d0895c41..0bc11a1b 100644 --- a/generator/generatedClasses/Oracle/management/oci-notificationService.js +++ b/generator/generatedClasses/Oracle/management/oci-notificationService.js @@ -1,66 +1,73 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a NotificationDataPlaneClient object - * @category Oracle Cloud - */ + * Class to create a NotificationDataPlaneClient object + * @category Oracle Cloud + */ class Oracle_NotificationService { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._notificationDataPlaneClient = this._oci.NotificationDataPlaneClient(params, clientConfiguration); - } - /** - * Trigers the createSubscription function of NotificationDataPlaneClient - * @param {CreateSubscriptionRequest} createSubscriptionRequest - Data required for createSubscription - * @returns {Promise} - */ - subscribe(createSubscriptionRequest) { - return new Promise((resolve, reject) => { - this._notificationDataPlaneClient.createSubscription(createSubscriptionRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteSubscription function of NotificationDataPlaneClient - * @param {DeleteSubscriptionRequest} deleteSubscriptionRequest - Data required for deleteSubscription - * @returns {Promise} - */ - unsubscribe(deleteSubscriptionRequest) { - return new Promise((resolve, reject) => { - this._notificationDataPlaneClient.deleteSubscription(deleteSubscriptionRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listSubscriptions function of NotificationDataPlaneClient - * @param {ListSubscriptionsRequest} listSubscriptionsRequest - Data required for listSubscriptions - * @returns {Promise} - */ - listSubscriptions(listSubscriptionsRequest) { - return new Promise((resolve, reject) => { - this._notificationDataPlaneClient.listSubscriptions(listSubscriptionsRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the publishMessage function of NotificationDataPlaneClient - * @param {PublishMessageRequest} publishMessageRequest - Data required for publishMessage - * @returns {Promise} - */ - publish(publishMessageRequest) { - return new Promise((resolve, reject) => { - this._notificationDataPlaneClient.publishMessage(publishMessageRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._notificationDataPlaneClient = this._oci.NotificationDataPlaneClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createSubscription function of NotificationDataPlaneClient + * @param {CreateSubscriptionRequest} createSubscriptionRequest - Data required for createSubscription + * @returns {Promise} + */ + subscribe(createSubscriptionRequest) { + return new Promise((resolve, reject) => { + this._notificationDataPlaneClient + .createSubscription(createSubscriptionRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteSubscription function of NotificationDataPlaneClient + * @param {DeleteSubscriptionRequest} deleteSubscriptionRequest - Data required for deleteSubscription + * @returns {Promise} + */ + unsubscribe(deleteSubscriptionRequest) { + return new Promise((resolve, reject) => { + this._notificationDataPlaneClient + .deleteSubscription(deleteSubscriptionRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listSubscriptions function of NotificationDataPlaneClient + * @param {ListSubscriptionsRequest} listSubscriptionsRequest - Data required for listSubscriptions + * @returns {Promise} + */ + listSubscriptions(listSubscriptionsRequest) { + return new Promise((resolve, reject) => { + this._notificationDataPlaneClient + .listSubscriptions(listSubscriptionsRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the publishMessage function of NotificationDataPlaneClient + * @param {PublishMessageRequest} publishMessageRequest - Data required for publishMessage + * @returns {Promise} + */ + publish(publishMessageRequest) { + return new Promise((resolve, reject) => { + this._notificationDataPlaneClient + .publishMessage(publishMessageRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_NotificationService; diff --git a/generator/generatedClasses/Oracle/network/oci-DNS.js b/generator/generatedClasses/Oracle/network/oci-DNS.js index bd996e42..52cd67f9 100644 --- a/generator/generatedClasses/Oracle/network/oci-DNS.js +++ b/generator/generatedClasses/Oracle/network/oci-DNS.js @@ -1,66 +1,70 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a DnsClient object - * @category Oracle Cloud - */ + * Class to create a DnsClient object + * @category Oracle Cloud + */ class Oracle_DNS { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._dnsClient = this._oci.DnsClient(params, clientConfiguration); - } - /** - * Trigers the createZone function of DnsClient - * @param {CreateZoneRequest} createZoneRequest - Data required for createZone - * @returns {Promise} - */ - create(createZoneRequest) { - return new Promise((resolve, reject) => { - this._dnsClient.createZone(createZoneRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteZone function of DnsClient - * @param {DeleteZoneRequest} deleteZoneRequest - Data required for deleteZone - * @returns {Promise} - */ - delete(deleteZoneRequest) { - return new Promise((resolve, reject) => { - this._dnsClient.deleteZone(deleteZoneRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listZones function of DnsClient - * @param {ListZonesRequest} listZonesRequest - Data required for listZones - * @returns {Promise} - */ - list(listZonesRequest) { - return new Promise((resolve, reject) => { - this._dnsClient.listZones(listZonesRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateZone function of DnsClient - * @param {UpdateZoneRequest} updateZoneRequest - Data required for updateZone - * @returns {Promise} - */ - update(updateZoneRequest) { - return new Promise((resolve, reject) => { - this._dnsClient.updateZone(updateZoneRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._dnsClient = this._oci.DnsClient(params, clientConfiguration); + } + /** + * Trigers the createZone function of DnsClient + * @param {CreateZoneRequest} createZoneRequest - Data required for createZone + * @returns {Promise} + */ + create(createZoneRequest) { + return new Promise((resolve, reject) => { + this._dnsClient + .createZone(createZoneRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteZone function of DnsClient + * @param {DeleteZoneRequest} deleteZoneRequest - Data required for deleteZone + * @returns {Promise} + */ + delete(deleteZoneRequest) { + return new Promise((resolve, reject) => { + this._dnsClient + .deleteZone(deleteZoneRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listZones function of DnsClient + * @param {ListZonesRequest} listZonesRequest - Data required for listZones + * @returns {Promise} + */ + list(listZonesRequest) { + return new Promise((resolve, reject) => { + this._dnsClient + .listZones(listZonesRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateZone function of DnsClient + * @param {UpdateZoneRequest} updateZoneRequest - Data required for updateZone + * @returns {Promise} + */ + update(updateZoneRequest) { + return new Promise((resolve, reject) => { + this._dnsClient + .updateZone(updateZoneRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_DNS; diff --git a/generator/generatedClasses/Oracle/network/oci-loadBalancer.js b/generator/generatedClasses/Oracle/network/oci-loadBalancer.js index e0ec4f08..21faafa6 100644 --- a/generator/generatedClasses/Oracle/network/oci-loadBalancer.js +++ b/generator/generatedClasses/Oracle/network/oci-loadBalancer.js @@ -1,78 +1,86 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a LoadBalancerClient object - * @category Oracle Cloud - */ + * Class to create a LoadBalancerClient object + * @category Oracle Cloud + */ class Oracle_LoadBalancer { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._loadBalancerClient = this._oci.LoadBalancerClient(params, clientConfiguration); - } - /** - * Trigers the createLoadBalancer function of LoadBalancerClient - * @param {CreateLoadBalancerRequest} createLoadBalancerRequest - Data required for createLoadBalancer - * @returns {Promise} - */ - create(createLoadBalancerRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient.createLoadBalancer(createLoadBalancerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteLoadBalancer function of LoadBalancerClient - * @param {DeleteLoadBalancerRequest} deleteLoadBalancerRequest - Data required for deleteLoadBalancer - * @returns {Promise} - */ - delete(deleteLoadBalancerRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient.deleteLoadBalancer(deleteLoadBalancerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getLoadBalancer function of LoadBalancerClient - * @param {GetLoadBalancerRequest} getLoadBalancerRequest - Data required for getLoadBalancer - * @returns {Promise} - */ - get(getLoadBalancerRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient.getLoadBalancer(getLoadBalancerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listLoadBalancers function of LoadBalancerClient - * @param {ListLoadBalancersRequest} listLoadBalancersRequest - Data required for listLoadBalancers - * @returns {Promise} - */ - list(listLoadBalancersRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient.listLoadBalancers(listLoadBalancersRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateLoadBalancer function of LoadBalancerClient - * @param {UpdateLoadBalancerRequest} updateLoadBalancerRequest - Data required for updateLoadBalancer - * @returns {Promise} - */ - update(updateLoadBalancerRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient.updateLoadBalancer(updateLoadBalancerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._loadBalancerClient = this._oci.LoadBalancerClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createLoadBalancer function of LoadBalancerClient + * @param {CreateLoadBalancerRequest} createLoadBalancerRequest - Data required for createLoadBalancer + * @returns {Promise} + */ + create(createLoadBalancerRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient + .createLoadBalancer(createLoadBalancerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteLoadBalancer function of LoadBalancerClient + * @param {DeleteLoadBalancerRequest} deleteLoadBalancerRequest - Data required for deleteLoadBalancer + * @returns {Promise} + */ + delete(deleteLoadBalancerRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient + .deleteLoadBalancer(deleteLoadBalancerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getLoadBalancer function of LoadBalancerClient + * @param {GetLoadBalancerRequest} getLoadBalancerRequest - Data required for getLoadBalancer + * @returns {Promise} + */ + get(getLoadBalancerRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient + .getLoadBalancer(getLoadBalancerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listLoadBalancers function of LoadBalancerClient + * @param {ListLoadBalancersRequest} listLoadBalancersRequest - Data required for listLoadBalancers + * @returns {Promise} + */ + list(listLoadBalancersRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient + .listLoadBalancers(listLoadBalancersRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateLoadBalancer function of LoadBalancerClient + * @param {UpdateLoadBalancerRequest} updateLoadBalancerRequest - Data required for updateLoadBalancer + * @returns {Promise} + */ + update(updateLoadBalancerRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient + .updateLoadBalancer(updateLoadBalancerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_LoadBalancer; diff --git a/generator/generatedClasses/Oracle/storage/oci-archivalStorage.js b/generator/generatedClasses/Oracle/storage/oci-archivalStorage.js index 202582b3..fe306c87 100644 --- a/generator/generatedClasses/Oracle/storage/oci-archivalStorage.js +++ b/generator/generatedClasses/Oracle/storage/oci-archivalStorage.js @@ -1,66 +1,73 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ObjectStorageClient object - * @category Oracle Cloud - */ + * Class to create a ObjectStorageClient object + * @category Oracle Cloud + */ class Oracle_ArchivalStorage { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._objectStorageClient = this._oci.ObjectStorageClient(params, clientConfiguration); - } - /** - * Trigers the createBucket function of ObjectStorageClient - * @param {CreateBucketRequest} createBucketRequest - Data required for createBucket - * @returns {Promise} - */ - create(createBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient.createBucket(createBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteBucket function of ObjectStorageClient - * @param {DeleteBucketRequest} deleteBucketRequest - Data required for deleteBucket - * @returns {Promise} - */ - delete(deleteBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient.deleteBucket(deleteBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listBuckets function of ObjectStorageClient - * @param {ListBucketsRequest} listBucketsRequest - Data required for listBuckets - * @returns {Promise} - */ - list(listBucketsRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient.listBuckets(listBucketsRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateBucket function of ObjectStorageClient - * @param {UpdateBucketRequest} updateBucketRequest - Data required for updateBucket - * @returns {Promise} - */ - update(updateBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient.updateBucket(updateBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._objectStorageClient = this._oci.ObjectStorageClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createBucket function of ObjectStorageClient + * @param {CreateBucketRequest} createBucketRequest - Data required for createBucket + * @returns {Promise} + */ + create(createBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient + .createBucket(createBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteBucket function of ObjectStorageClient + * @param {DeleteBucketRequest} deleteBucketRequest - Data required for deleteBucket + * @returns {Promise} + */ + delete(deleteBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient + .deleteBucket(deleteBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listBuckets function of ObjectStorageClient + * @param {ListBucketsRequest} listBucketsRequest - Data required for listBuckets + * @returns {Promise} + */ + list(listBucketsRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient + .listBuckets(listBucketsRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateBucket function of ObjectStorageClient + * @param {UpdateBucketRequest} updateBucketRequest - Data required for updateBucket + * @returns {Promise} + */ + update(updateBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient + .updateBucket(updateBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_ArchivalStorage; diff --git a/generator/generatedClasses/Oracle/storage/oci-blockStorage.js b/generator/generatedClasses/Oracle/storage/oci-blockStorage.js index 36b43d66..26dc83ac 100644 --- a/generator/generatedClasses/Oracle/storage/oci-blockStorage.js +++ b/generator/generatedClasses/Oracle/storage/oci-blockStorage.js @@ -1,66 +1,73 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a BlockstorageClient object - * @category Oracle Cloud - */ + * Class to create a BlockstorageClient object + * @category Oracle Cloud + */ class Oracle_BlockStorage { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._blockstorageClient = this._oci.BlockstorageClient(params, clientConfiguration); - } - /** - * Trigers the createVolume function of BlockstorageClient - * @param {CreateVolumeRequest} createVolumeRequest - Data required for createVolume - * @returns {Promise} - */ - create(createVolumeRequest) { - return new Promise((resolve, reject) => { - this._blockstorageClient.createVolume(createVolumeRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteVolume function of BlockstorageClient - * @param {DeleteVolumeRequest} deleteVolumeRequest - Data required for deleteVolume - * @returns {Promise} - */ - delete(deleteVolumeRequest) { - return new Promise((resolve, reject) => { - this._blockstorageClient.deleteVolume(deleteVolumeRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getVolume function of BlockstorageClient - * @param {GetVolumeRequest} getVolumeRequest - Data required for getVolume - * @returns {Promise} - */ - get(getVolumeRequest) { - return new Promise((resolve, reject) => { - this._blockstorageClient.getVolume(getVolumeRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listVolumes function of BlockstorageClient - * @param {ListVolumesRequest} listVolumesRequest - Data required for listVolumes - * @returns {Promise} - */ - list(listVolumesRequest) { - return new Promise((resolve, reject) => { - this._blockstorageClient.listVolumes(listVolumesRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._blockstorageClient = this._oci.BlockstorageClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createVolume function of BlockstorageClient + * @param {CreateVolumeRequest} createVolumeRequest - Data required for createVolume + * @returns {Promise} + */ + create(createVolumeRequest) { + return new Promise((resolve, reject) => { + this._blockstorageClient + .createVolume(createVolumeRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteVolume function of BlockstorageClient + * @param {DeleteVolumeRequest} deleteVolumeRequest - Data required for deleteVolume + * @returns {Promise} + */ + delete(deleteVolumeRequest) { + return new Promise((resolve, reject) => { + this._blockstorageClient + .deleteVolume(deleteVolumeRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getVolume function of BlockstorageClient + * @param {GetVolumeRequest} getVolumeRequest - Data required for getVolume + * @returns {Promise} + */ + get(getVolumeRequest) { + return new Promise((resolve, reject) => { + this._blockstorageClient + .getVolume(getVolumeRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listVolumes function of BlockstorageClient + * @param {ListVolumesRequest} listVolumesRequest - Data required for listVolumes + * @returns {Promise} + */ + list(listVolumesRequest) { + return new Promise((resolve, reject) => { + this._blockstorageClient + .listVolumes(listVolumesRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_BlockStorage; diff --git a/generator/generatedClasses/Oracle/storage/oci-storageBucket.js b/generator/generatedClasses/Oracle/storage/oci-storageBucket.js index f85aff48..b7d643ed 100644 --- a/generator/generatedClasses/Oracle/storage/oci-storageBucket.js +++ b/generator/generatedClasses/Oracle/storage/oci-storageBucket.js @@ -1,78 +1,86 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ObjectStorageClient object - * @category Oracle Cloud - */ + * Class to create a ObjectStorageClient object + * @category Oracle Cloud + */ class Oracle_StorageBucket { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._objectStorageClient = this._oci.ObjectStorageClient(params, clientConfiguration); - } - /** - * Trigers the createBucket function of ObjectStorageClient - * @param {CreateBucketRequest} createBucketRequest - Data required for createBucket - * @returns {Promise} - */ - create(createBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient.createBucket(createBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteBucket function of ObjectStorageClient - * @param {DeleteBucketRequest} deleteBucketRequest - Data required for deleteBucket - * @returns {Promise} - */ - delete(deleteBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient.deleteBucket(deleteBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getBucket function of ObjectStorageClient - * @param {GetBucketRequest} getBucketRequest - Data required for getBucket - * @returns {Promise} - */ - get(getBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient.getBucket(getBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listBuckets function of ObjectStorageClient - * @param {ListBucketsRequest} listBucketsRequest - Data required for listBuckets - * @returns {Promise} - */ - list(listBucketsRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient.listBuckets(listBucketsRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the reencryptBucket function of ObjectStorageClient - * @param {ReencryptBucketRequest} reencryptBucketRequest - Data required for reencryptBucket - * @returns {Promise} - */ - reencrypt(reencryptBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient.reencryptBucket(reencryptBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._objectStorageClient = this._oci.ObjectStorageClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createBucket function of ObjectStorageClient + * @param {CreateBucketRequest} createBucketRequest - Data required for createBucket + * @returns {Promise} + */ + create(createBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient + .createBucket(createBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteBucket function of ObjectStorageClient + * @param {DeleteBucketRequest} deleteBucketRequest - Data required for deleteBucket + * @returns {Promise} + */ + delete(deleteBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient + .deleteBucket(deleteBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getBucket function of ObjectStorageClient + * @param {GetBucketRequest} getBucketRequest - Data required for getBucket + * @returns {Promise} + */ + get(getBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient + .getBucket(getBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listBuckets function of ObjectStorageClient + * @param {ListBucketsRequest} listBucketsRequest - Data required for listBuckets + * @returns {Promise} + */ + list(listBucketsRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient + .listBuckets(listBucketsRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the reencryptBucket function of ObjectStorageClient + * @param {ReencryptBucketRequest} reencryptBucketRequest - Data required for reencryptBucket + * @returns {Promise} + */ + reencrypt(reencryptBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient + .reencryptBucket(reencryptBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_StorageBucket; diff --git a/packages/linode-plugin/compute/linode-computeInstance.js b/packages/linode-plugin/compute/linode-computeInstance.js index bfba842e..07d14748 100644 --- a/packages/linode-plugin/compute/linode-computeInstance.js +++ b/packages/linode-plugin/compute/linode-computeInstance.js @@ -1,68 +1,72 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ComputeInstanceLinodeClass object - * @category Linode - */ + * Class to create a ComputeInstanceLinodeClass object + * @category Linode + */ class Linode_ComputeInstance { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getLinodes function of ComputeInstanceLinodeClass - * @param {Params} params - Data required for getLinodes - * @param {Filter} filter - Data required for getLinodes - * @returns {Promise} - */ - list(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode.getLinodes(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createLinode function of ComputeInstanceLinodeClass - * @param {CreateLinodeRequest} data - Data required for createLinode - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode.createLinode(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateLinode function of ComputeInstanceLinodeClass - * @param {NumberKeyword} linodeId - Data required for updateLinode - * @param {DeepPartial} values - Data required for updateLinode - * @returns {Promise} - */ - update(linodeId, values) { - return new Promise((resolve, reject) => { - this._linode.updateLinode(linodeId, values) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteLinode function of ComputeInstanceLinodeClass - * @param {NumberKeyword} linodeId - Data required for deleteLinode - * @returns {Promise} - */ - delete(linodeId) { - return new Promise((resolve, reject) => { - this._linode.deleteLinode(linodeId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getLinodes function of ComputeInstanceLinodeClass + * @param {Params} params - Data required for getLinodes + * @param {Filter} filter - Data required for getLinodes + * @returns {Promise} + */ + list(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getLinodes(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createLinode function of ComputeInstanceLinodeClass + * @param {CreateLinodeRequest} data - Data required for createLinode + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode + .createLinode(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateLinode function of ComputeInstanceLinodeClass + * @param {NumberKeyword} linodeId - Data required for updateLinode + * @param {DeepPartial} values - Data required for updateLinode + * @returns {Promise} + */ + update(linodeId, values) { + return new Promise((resolve, reject) => { + this._linode + .updateLinode(linodeId, values) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteLinode function of ComputeInstanceLinodeClass + * @param {NumberKeyword} linodeId - Data required for deleteLinode + * @returns {Promise} + */ + delete(linodeId) { + return new Promise((resolve, reject) => { + this._linode + .deleteLinode(linodeId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_ComputeInstance; diff --git a/packages/linode-plugin/compute/linode-kubernetes.js b/packages/linode-plugin/compute/linode-kubernetes.js index a7414df0..5b73741d 100644 --- a/packages/linode-plugin/compute/linode-kubernetes.js +++ b/packages/linode-plugin/compute/linode-kubernetes.js @@ -1,122 +1,130 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a KubernetesLinodeClass object - * @category Linode - */ + * Class to create a KubernetesLinodeClass object + * @category Linode + */ class Linode_Kubernetes { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getKubernetesClusters function of KubernetesLinodeClass - * @param {Params} params - Data required for getKubernetesClusters - * @param {Filter} filters - Data required for getKubernetesClusters - * @returns {Promise} - */ - getAllClusters(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getKubernetesClusters(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createKubernetesCluster function of KubernetesLinodeClass - * @param {CreateKubeClusterPayload} data - Data required for createKubernetesCluster - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode.createKubernetesCluster(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteKubernetesCluster function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for deleteKubernetesCluster - * @returns {Promise} - */ - delete(clusterID) { - return new Promise((resolve, reject) => { - this._linode.deleteKubernetesCluster(clusterID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getNodePools function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for getNodePools - * @param {Params} params - Data required for getNodePools - * @param {Filter} filters - Data required for getNodePools - * @returns {Promise} - */ - getNodePools(clusterID, params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getNodePools(clusterID, params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for getNodePool - * @param {NumberKeyword} nodePoolID - Data required for getNodePool - * @returns {Promise} - */ - getNodePool(clusterID, nodePoolID) { - return new Promise((resolve, reject) => { - this._linode.getNodePool(clusterID, nodePoolID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for createNodePool - * @param {CreateNodePoolData} data - Data required for createNodePool - * @returns {Promise} - */ - createNodePool(clusterID, data) { - return new Promise((resolve, reject) => { - this._linode.createNodePool(clusterID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for updateNodePool - * @param {NumberKeyword} nodePoolID - Data required for updateNodePool - * @param {Partial} data - Data required for updateNodePool - * @returns {Promise} - */ - updateNodePool(clusterID, nodePoolID, data) { - return new Promise((resolve, reject) => { - this._linode.updateNodePool(clusterID, nodePoolID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteNodePool function of KubernetesLinodeClass - * @param {NumberKeyword} clusterID - Data required for deleteNodePool - * @param {NumberKeyword} nodePoolID - Data required for deleteNodePool - * @returns {Promise} - */ - deleteNodePool(clusterID, nodePoolID) { - return new Promise((resolve, reject) => { - this._linode.deleteNodePool(clusterID, nodePoolID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getKubernetesClusters function of KubernetesLinodeClass + * @param {Params} params - Data required for getKubernetesClusters + * @param {Filter} filters - Data required for getKubernetesClusters + * @returns {Promise} + */ + getAllClusters(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getKubernetesClusters(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createKubernetesCluster function of KubernetesLinodeClass + * @param {CreateKubeClusterPayload} data - Data required for createKubernetesCluster + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode + .createKubernetesCluster(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteKubernetesCluster function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for deleteKubernetesCluster + * @returns {Promise} + */ + delete(clusterID) { + return new Promise((resolve, reject) => { + this._linode + .deleteKubernetesCluster(clusterID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getNodePools function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for getNodePools + * @param {Params} params - Data required for getNodePools + * @param {Filter} filters - Data required for getNodePools + * @returns {Promise} + */ + getNodePools(clusterID, params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getNodePools(clusterID, params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for getNodePool + * @param {NumberKeyword} nodePoolID - Data required for getNodePool + * @returns {Promise} + */ + getNodePool(clusterID, nodePoolID) { + return new Promise((resolve, reject) => { + this._linode + .getNodePool(clusterID, nodePoolID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for createNodePool + * @param {CreateNodePoolData} data - Data required for createNodePool + * @returns {Promise} + */ + createNodePool(clusterID, data) { + return new Promise((resolve, reject) => { + this._linode + .createNodePool(clusterID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for updateNodePool + * @param {NumberKeyword} nodePoolID - Data required for updateNodePool + * @param {Partial} data - Data required for updateNodePool + * @returns {Promise} + */ + updateNodePool(clusterID, nodePoolID, data) { + return new Promise((resolve, reject) => { + this._linode + .updateNodePool(clusterID, nodePoolID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteNodePool function of KubernetesLinodeClass + * @param {NumberKeyword} clusterID - Data required for deleteNodePool + * @param {NumberKeyword} nodePoolID - Data required for deleteNodePool + * @returns {Promise} + */ + deleteNodePool(clusterID, nodePoolID) { + return new Promise((resolve, reject) => { + this._linode + .deleteNodePool(clusterID, nodePoolID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_Kubernetes; diff --git a/packages/linode-plugin/database/linode-RDBMS.js b/packages/linode-plugin/database/linode-RDBMS.js index 25bfe893..a3b2b0f7 100644 --- a/packages/linode-plugin/database/linode-RDBMS.js +++ b/packages/linode-plugin/database/linode-RDBMS.js @@ -1,97 +1,103 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a RDBMSLinodeClass object - * @category Linode - */ + * Class to create a RDBMSLinodeClass object + * @category Linode + */ class Linode_RDBMS { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getDatabases function of RDBMSLinodeClass - * @param {Params} params - Data required for getDatabases - * @param {Filter} filter - Data required for getDatabases - * @returns {Promise} - */ - getDatabases(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode.getDatabases(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDatabaseEngines function of RDBMSLinodeClass - * @param {Params} params - Data required for getDatabaseEngines - * @param {Filter} filter - Data required for getDatabaseEngines - * @returns {Promise} - */ - getDatabaseEngines(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode.getDatabaseEngines(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createDatabase function of RDBMSLinodeClass - * @param {UnionType} engine - Data required for createDatabase - * @param {CreateDatabasePayload} data - Data required for createDatabase - * @returns {Promise} - */ - createDatabase(engine, data) { - return new Promise((resolve, reject) => { - this._linode.createDatabase(engine, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getEngineDatabase function of RDBMSLinodeClass - * @param {Engine} engine - Data required for getEngineDatabase - * @param {NumberKeyword} databaseID - Data required for getEngineDatabase - * @returns {Promise} - */ - getEngineDatabase(engine, databaseID) { - return new Promise((resolve, reject) => { - this._linode.getEngineDatabase(engine, databaseID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateDatabase function of RDBMSLinodeClass - * @param {Engine} engine - Data required for updateDatabase - * @param {NumberKeyword} databaseID - Data required for updateDatabase - * @param {UpdateDatabasePayload} data - Data required for updateDatabase - * @returns {Promise} - */ - updateDatabase(engine, databaseID, data) { - return new Promise((resolve, reject) => { - this._linode.updateDatabase(engine, databaseID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDatabase function of RDBMSLinodeClass - * @param {Engine} engine - Data required for deleteDatabase - * @param {NumberKeyword} databaseID - Data required for deleteDatabase - * @returns {Promise} - */ - deleteDatabase(engine, databaseID) { - return new Promise((resolve, reject) => { - this._linode.deleteDatabase(engine, databaseID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getDatabases function of RDBMSLinodeClass + * @param {Params} params - Data required for getDatabases + * @param {Filter} filter - Data required for getDatabases + * @returns {Promise} + */ + getDatabases(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getDatabases(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDatabaseEngines function of RDBMSLinodeClass + * @param {Params} params - Data required for getDatabaseEngines + * @param {Filter} filter - Data required for getDatabaseEngines + * @returns {Promise} + */ + getDatabaseEngines(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getDatabaseEngines(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createDatabase function of RDBMSLinodeClass + * @param {UnionType} engine - Data required for createDatabase + * @param {CreateDatabasePayload} data - Data required for createDatabase + * @returns {Promise} + */ + createDatabase(engine, data) { + return new Promise((resolve, reject) => { + this._linode + .createDatabase(engine, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getEngineDatabase function of RDBMSLinodeClass + * @param {Engine} engine - Data required for getEngineDatabase + * @param {NumberKeyword} databaseID - Data required for getEngineDatabase + * @returns {Promise} + */ + getEngineDatabase(engine, databaseID) { + return new Promise((resolve, reject) => { + this._linode + .getEngineDatabase(engine, databaseID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateDatabase function of RDBMSLinodeClass + * @param {Engine} engine - Data required for updateDatabase + * @param {NumberKeyword} databaseID - Data required for updateDatabase + * @param {UpdateDatabasePayload} data - Data required for updateDatabase + * @returns {Promise} + */ + updateDatabase(engine, databaseID, data) { + return new Promise((resolve, reject) => { + this._linode + .updateDatabase(engine, databaseID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDatabase function of RDBMSLinodeClass + * @param {Engine} engine - Data required for deleteDatabase + * @param {NumberKeyword} databaseID - Data required for deleteDatabase + * @returns {Promise} + */ + deleteDatabase(engine, databaseID) { + return new Promise((resolve, reject) => { + this._linode + .deleteDatabase(engine, databaseID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_RDBMS; diff --git a/packages/linode-plugin/firewalls/linode-firewalls.js b/packages/linode-plugin/firewalls/linode-firewalls.js index dca7266c..2cfc10f0 100644 --- a/packages/linode-plugin/firewalls/linode-firewalls.js +++ b/packages/linode-plugin/firewalls/linode-firewalls.js @@ -1,104 +1,111 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a FirewallsLinodeClass object - * @category Linode - */ + * Class to create a FirewallsLinodeClass object + * @category Linode + */ class Linode_Firewalls { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getFirewalls function of FirewallsLinodeClass - * @param {Params} params - Data required for getFirewalls - * @param {Filter} filter - Data required for getFirewalls - * @returns {Promise} - */ - getFirewalls(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode.getFirewalls(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for getFirewall - * @returns {Promise} - */ - getFirewall(firewallID) { - return new Promise((resolve, reject) => { - this._linode.getFirewall(firewallID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createFirewall function of FirewallsLinodeClass - * @param {CreateFirewallPayload} data - Data required for createFirewall - * @returns {Promise} - */ - createFirewall(data) { - return new Promise((resolve, reject) => { - this._linode.createFirewall(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for updateFirewall - * @param {UpdateFirewallPayload} data - Data required for updateFirewall - * @returns {Promise} - */ - updateFirewall(firewallID, data) { - return new Promise((resolve, reject) => { - this._linode.updateFirewall(firewallID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the enableFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for enableFirewall - * @returns {Promise} - */ - enableFirewall(firewallID) { - return new Promise((resolve, reject) => { - this._linode.enableFirewall(firewallID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the disableFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for disableFirewall - * @returns {Promise} - */ - disableFirewall(firewallID) { - return new Promise((resolve, reject) => { - this._linode.disableFirewall(firewallID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteFirewall function of FirewallsLinodeClass - * @param {NumberKeyword} firewallID - Data required for deleteFirewall - * @returns {Promise} - */ - deleteFirewall(firewallID) { - return new Promise((resolve, reject) => { - this._linode.deleteFirewall(firewallID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getFirewalls function of FirewallsLinodeClass + * @param {Params} params - Data required for getFirewalls + * @param {Filter} filter - Data required for getFirewalls + * @returns {Promise} + */ + getFirewalls(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getFirewalls(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for getFirewall + * @returns {Promise} + */ + getFirewall(firewallID) { + return new Promise((resolve, reject) => { + this._linode + .getFirewall(firewallID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createFirewall function of FirewallsLinodeClass + * @param {CreateFirewallPayload} data - Data required for createFirewall + * @returns {Promise} + */ + createFirewall(data) { + return new Promise((resolve, reject) => { + this._linode + .createFirewall(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for updateFirewall + * @param {UpdateFirewallPayload} data - Data required for updateFirewall + * @returns {Promise} + */ + updateFirewall(firewallID, data) { + return new Promise((resolve, reject) => { + this._linode + .updateFirewall(firewallID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the enableFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for enableFirewall + * @returns {Promise} + */ + enableFirewall(firewallID) { + return new Promise((resolve, reject) => { + this._linode + .enableFirewall(firewallID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the disableFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for disableFirewall + * @returns {Promise} + */ + disableFirewall(firewallID) { + return new Promise((resolve, reject) => { + this._linode + .disableFirewall(firewallID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteFirewall function of FirewallsLinodeClass + * @param {NumberKeyword} firewallID - Data required for deleteFirewall + * @returns {Promise} + */ + deleteFirewall(firewallID) { + return new Promise((resolve, reject) => { + this._linode + .deleteFirewall(firewallID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_Firewalls; diff --git a/packages/linode-plugin/images/linode-images.js b/packages/linode-plugin/images/linode-images.js index 1be67ed1..2d0651fc 100644 --- a/packages/linode-plugin/images/linode-images.js +++ b/packages/linode-plugin/images/linode-images.js @@ -1,96 +1,107 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ImagesLinodeClass object - * @category Linode - */ + * Class to create a ImagesLinodeClass object + * @category Linode + */ class Linode_Images { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getImage function of ImagesLinodeClass - * @param {StringKeyword} imageId - Data required for getImage - * @returns {Promise} - */ - getImage(imageId) { - return new Promise((resolve, reject) => { - this._linode.getImage(imageId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getImages function of ImagesLinodeClass - * @param {Params} params - Data required for getImages - * @param {Filter} filters - Data required for getImages - * @returns {Promise} - */ - getImages(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getImages(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createImage function of ImagesLinodeClass - * @param {NumberKeyword} diskId - Data required for createImage - * @param {StringKeyword} label - Data required for createImage - * @param {StringKeyword} description - Data required for createImage - * @param {BooleanKeyword} cloud_init - Data required for createImage - * @returns {Promise} - */ - createImage(diskId, label = undefined, description = undefined, cloud_init = undefined) { - return new Promise((resolve, reject) => { - this._linode.createImage(diskId, label, description, cloud_init) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateImage function of ImagesLinodeClass - * @param {StringKeyword} imageId - Data required for updateImage - * @param {StringKeyword} label - Data required for updateImage - * @param {StringKeyword} description - Data required for updateImage - * @returns {Promise} - */ - updateImage(imageId, label = undefined, description = undefined) { - return new Promise((resolve, reject) => { - this._linode.updateImage(imageId, label, description) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteImage function of ImagesLinodeClass - * @param {StringKeyword} imageId - Data required for deleteImage - * @returns {Promise} - */ - deleteImage(imageId) { - return new Promise((resolve, reject) => { - this._linode.deleteImage(imageId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the uploadImage function of ImagesLinodeClass - * @param {ImageUploadPayload} data - Data required for uploadImage - * @returns {Promise} - */ - uploadImage(data) { - return new Promise((resolve, reject) => { - this._linode.uploadImage(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getImage function of ImagesLinodeClass + * @param {StringKeyword} imageId - Data required for getImage + * @returns {Promise} + */ + getImage(imageId) { + return new Promise((resolve, reject) => { + this._linode + .getImage(imageId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getImages function of ImagesLinodeClass + * @param {Params} params - Data required for getImages + * @param {Filter} filters - Data required for getImages + * @returns {Promise} + */ + getImages(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getImages(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createImage function of ImagesLinodeClass + * @param {NumberKeyword} diskId - Data required for createImage + * @param {StringKeyword} label - Data required for createImage + * @param {StringKeyword} description - Data required for createImage + * @param {BooleanKeyword} cloud_init - Data required for createImage + * @returns {Promise} + */ + createImage( + diskId, + label = undefined, + description = undefined, + cloud_init = undefined + ) { + return new Promise((resolve, reject) => { + this._linode + .createImage(diskId, label, description, cloud_init) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateImage function of ImagesLinodeClass + * @param {StringKeyword} imageId - Data required for updateImage + * @param {StringKeyword} label - Data required for updateImage + * @param {StringKeyword} description - Data required for updateImage + * @returns {Promise} + */ + updateImage(imageId, label = undefined, description = undefined) { + return new Promise((resolve, reject) => { + this._linode + .updateImage(imageId, label, description) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteImage function of ImagesLinodeClass + * @param {StringKeyword} imageId - Data required for deleteImage + * @returns {Promise} + */ + deleteImage(imageId) { + return new Promise((resolve, reject) => { + this._linode + .deleteImage(imageId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the uploadImage function of ImagesLinodeClass + * @param {ImageUploadPayload} data - Data required for uploadImage + * @returns {Promise} + */ + uploadImage(data) { + return new Promise((resolve, reject) => { + this._linode + .uploadImage(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_Images; diff --git a/packages/linode-plugin/management/linode-monitoring.js b/packages/linode-plugin/management/linode-monitoring.js index bce2e4ca..87bd1334 100644 --- a/packages/linode-plugin/management/linode-monitoring.js +++ b/packages/linode-plugin/management/linode-monitoring.js @@ -1,130 +1,139 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a MonitoringLinodeClass object - * @category Linode - */ + * Class to create a MonitoringLinodeClass object + * @category Linode + */ class Linode_Monitoring { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getServices function of MonitoringLinodeClass - * @param {Params} params - Data required for getServices - * @param {Filter} filters - Data required for getServices - * @returns {Promise} - */ - getServices(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getServices(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the disableServiceMonitor function of MonitoringLinodeClass - * @param {NumberKeyword} serviceID - Data required for disableServiceMonitor - * @returns {Promise} - */ - disableServiceMonitor(serviceID) { - return new Promise((resolve, reject) => { - this._linode.disableServiceMonitor(serviceID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the enableServiceMonitor function of MonitoringLinodeClass - * @param {NumberKeyword} serviceID - Data required for enableServiceMonitor - * @returns {Promise} - */ - enableServiceMonitor(serviceID) { - return new Promise((resolve, reject) => { - this._linode.enableServiceMonitor(serviceID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteServiceMonitor function of MonitoringLinodeClass - * @param {NumberKeyword} serviceID - Data required for deleteServiceMonitor - * @returns {Promise} - */ - deleteServiceMonitor(serviceID) { - return new Promise((resolve, reject) => { - this._linode.deleteServiceMonitor(serviceID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createServiceMonitor function of MonitoringLinodeClass - * @param {ManagedServicePayload} data - Data required for createServiceMonitor - * @returns {Promise} - */ - createServiceMonitor(data) { - return new Promise((resolve, reject) => { - this._linode.createServiceMonitor(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateServiceMonitor function of MonitoringLinodeClass - * @param {NumberKeyword} monitorID - Data required for updateServiceMonitor - * @param {Partial} data - Data required for updateServiceMonitor - * @returns {Promise} - */ - updateServiceMonitor(monitorID, data) { - return new Promise((resolve, reject) => { - this._linode.updateServiceMonitor(monitorID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getCredentials function of MonitoringLinodeClass - * @param {Params} params - Data required for getCredentials - * @param {Filter} filters - Data required for getCredentials - * @returns {Promise} - */ - getCredentials(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getCredentials(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateCredential function of MonitoringLinodeClass - * @param {NumberKeyword} credentialID - Data required for updateCredential - * @param {UpdateCredentialPayload} data - Data required for updateCredential - * @returns {Promise} - */ - updateCredential(credentialID, data) { - return new Promise((resolve, reject) => { - this._linode.updateCredential(credentialID, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteCredential function of MonitoringLinodeClass - * @param {NumberKeyword} credentialID - Data required for deleteCredential - * @returns {Promise} - */ - deleteCredential(credentialID) { - return new Promise((resolve, reject) => { - this._linode.deleteCredential(credentialID) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getServices function of MonitoringLinodeClass + * @param {Params} params - Data required for getServices + * @param {Filter} filters - Data required for getServices + * @returns {Promise} + */ + getServices(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getServices(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the disableServiceMonitor function of MonitoringLinodeClass + * @param {NumberKeyword} serviceID - Data required for disableServiceMonitor + * @returns {Promise} + */ + disableServiceMonitor(serviceID) { + return new Promise((resolve, reject) => { + this._linode + .disableServiceMonitor(serviceID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the enableServiceMonitor function of MonitoringLinodeClass + * @param {NumberKeyword} serviceID - Data required for enableServiceMonitor + * @returns {Promise} + */ + enableServiceMonitor(serviceID) { + return new Promise((resolve, reject) => { + this._linode + .enableServiceMonitor(serviceID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteServiceMonitor function of MonitoringLinodeClass + * @param {NumberKeyword} serviceID - Data required for deleteServiceMonitor + * @returns {Promise} + */ + deleteServiceMonitor(serviceID) { + return new Promise((resolve, reject) => { + this._linode + .deleteServiceMonitor(serviceID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createServiceMonitor function of MonitoringLinodeClass + * @param {ManagedServicePayload} data - Data required for createServiceMonitor + * @returns {Promise} + */ + createServiceMonitor(data) { + return new Promise((resolve, reject) => { + this._linode + .createServiceMonitor(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateServiceMonitor function of MonitoringLinodeClass + * @param {NumberKeyword} monitorID - Data required for updateServiceMonitor + * @param {Partial} data - Data required for updateServiceMonitor + * @returns {Promise} + */ + updateServiceMonitor(monitorID, data) { + return new Promise((resolve, reject) => { + this._linode + .updateServiceMonitor(monitorID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getCredentials function of MonitoringLinodeClass + * @param {Params} params - Data required for getCredentials + * @param {Filter} filters - Data required for getCredentials + * @returns {Promise} + */ + getCredentials(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getCredentials(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateCredential function of MonitoringLinodeClass + * @param {NumberKeyword} credentialID - Data required for updateCredential + * @param {UpdateCredentialPayload} data - Data required for updateCredential + * @returns {Promise} + */ + updateCredential(credentialID, data) { + return new Promise((resolve, reject) => { + this._linode + .updateCredential(credentialID, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteCredential function of MonitoringLinodeClass + * @param {NumberKeyword} credentialID - Data required for deleteCredential + * @returns {Promise} + */ + deleteCredential(credentialID) { + return new Promise((resolve, reject) => { + this._linode + .deleteCredential(credentialID) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_Monitoring; diff --git a/packages/linode-plugin/network/linode-DNS.js b/packages/linode-plugin/network/linode-DNS.js index ce3dc8a0..a3c1d066 100644 --- a/packages/linode-plugin/network/linode-DNS.js +++ b/packages/linode-plugin/network/linode-DNS.js @@ -1,93 +1,99 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a DNSLinodeClass object - * @category Linode - */ + * Class to create a DNSLinodeClass object + * @category Linode + */ class Linode_DNS { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getDomains function of DNSLinodeClass - * @param {Params} params - Data required for getDomains - * @param {Filter} filter - Data required for getDomains - * @returns {Promise} - */ - getDomains(params = undefined, filter = undefined) { - return new Promise((resolve, reject) => { - this._linode.getDomains(params, filter) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDomain function of DNSLinodeClass - * @param {NumberKeyword} domainId - Data required for getDomain - * @returns {Promise} - */ - getDomain(domainId) { - return new Promise((resolve, reject) => { - this._linode.getDomain(domainId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createDomain function of DNSLinodeClass - * @param {CreateDomainPayload} data - Data required for createDomain - * @returns {Promise} - */ - createDomain(data) { - return new Promise((resolve, reject) => { - this._linode.createDomain(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateDomain function of DNSLinodeClass - * @param {NumberKeyword} domainId - Data required for updateDomain - * @param {UpdateDomainPayload} data - Data required for updateDomain - * @returns {Promise} - */ - updateDomain(domainId, data) { - return new Promise((resolve, reject) => { - this._linode.updateDomain(domainId, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDomain function of DNSLinodeClass - * @param {NumberKeyword} domainId - Data required for deleteDomain - * @returns {Promise} - */ - deleteDomain(domainId) { - return new Promise((resolve, reject) => { - this._linode.deleteDomain(domainId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the cloneDomain function of DNSLinodeClass - * @param {NumberKeyword} domainId - Data required for cloneDomain - * @param {CloneDomainPayload} data - Data required for cloneDomain - * @returns {Promise} - */ - cloneDomain(domainId, data) { - return new Promise((resolve, reject) => { - this._linode.cloneDomain(domainId, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getDomains function of DNSLinodeClass + * @param {Params} params - Data required for getDomains + * @param {Filter} filter - Data required for getDomains + * @returns {Promise} + */ + getDomains(params = undefined, filter = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getDomains(params, filter) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDomain function of DNSLinodeClass + * @param {NumberKeyword} domainId - Data required for getDomain + * @returns {Promise} + */ + getDomain(domainId) { + return new Promise((resolve, reject) => { + this._linode + .getDomain(domainId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createDomain function of DNSLinodeClass + * @param {CreateDomainPayload} data - Data required for createDomain + * @returns {Promise} + */ + createDomain(data) { + return new Promise((resolve, reject) => { + this._linode + .createDomain(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateDomain function of DNSLinodeClass + * @param {NumberKeyword} domainId - Data required for updateDomain + * @param {UpdateDomainPayload} data - Data required for updateDomain + * @returns {Promise} + */ + updateDomain(domainId, data) { + return new Promise((resolve, reject) => { + this._linode + .updateDomain(domainId, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDomain function of DNSLinodeClass + * @param {NumberKeyword} domainId - Data required for deleteDomain + * @returns {Promise} + */ + deleteDomain(domainId) { + return new Promise((resolve, reject) => { + this._linode + .deleteDomain(domainId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the cloneDomain function of DNSLinodeClass + * @param {NumberKeyword} domainId - Data required for cloneDomain + * @param {CloneDomainPayload} data - Data required for cloneDomain + * @returns {Promise} + */ + cloneDomain(domainId, data) { + return new Promise((resolve, reject) => { + this._linode + .cloneDomain(domainId, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_DNS; diff --git a/packages/linode-plugin/network/linode-loadBalancer.js b/packages/linode-plugin/network/linode-loadBalancer.js index eb97ba0e..7af0d984 100644 --- a/packages/linode-plugin/network/linode-loadBalancer.js +++ b/packages/linode-plugin/network/linode-loadBalancer.js @@ -1,68 +1,72 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a LoadBalancerLinodeClass object - * @category Linode - */ + * Class to create a LoadBalancerLinodeClass object + * @category Linode + */ class Linode_LoadBalancer { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getNodeBalancers function of LoadBalancerLinodeClass - * @param {Params} params - Data required for getNodeBalancers - * @param {Filter} filters - Data required for getNodeBalancers - * @returns {Promise} - */ - list(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getNodeBalancers(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateNodeBalancer function of LoadBalancerLinodeClass - * @param {NumberKeyword} nodeBalancerId - Data required for updateNodeBalancer - * @param {Partial} data - Data required for updateNodeBalancer - * @returns {Promise} - */ - update(nodeBalancerId, data) { - return new Promise((resolve, reject) => { - this._linode.updateNodeBalancer(nodeBalancerId, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createNodeBalancer function of LoadBalancerLinodeClass - * @param {CreateNodeBalancerPayload} data - Data required for createNodeBalancer - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode.createNodeBalancer(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteNodeBalancer function of LoadBalancerLinodeClass - * @param {NumberKeyword} nodeBalancerId - Data required for deleteNodeBalancer - * @returns {Promise} - */ - delete(nodeBalancerId) { - return new Promise((resolve, reject) => { - this._linode.deleteNodeBalancer(nodeBalancerId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getNodeBalancers function of LoadBalancerLinodeClass + * @param {Params} params - Data required for getNodeBalancers + * @param {Filter} filters - Data required for getNodeBalancers + * @returns {Promise} + */ + list(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getNodeBalancers(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateNodeBalancer function of LoadBalancerLinodeClass + * @param {NumberKeyword} nodeBalancerId - Data required for updateNodeBalancer + * @param {Partial} data - Data required for updateNodeBalancer + * @returns {Promise} + */ + update(nodeBalancerId, data) { + return new Promise((resolve, reject) => { + this._linode + .updateNodeBalancer(nodeBalancerId, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createNodeBalancer function of LoadBalancerLinodeClass + * @param {CreateNodeBalancerPayload} data - Data required for createNodeBalancer + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode + .createNodeBalancer(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteNodeBalancer function of LoadBalancerLinodeClass + * @param {NumberKeyword} nodeBalancerId - Data required for deleteNodeBalancer + * @returns {Promise} + */ + delete(nodeBalancerId) { + return new Promise((resolve, reject) => { + this._linode + .deleteNodeBalancer(nodeBalancerId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_LoadBalancer; diff --git a/packages/linode-plugin/storage/linode-blockStorage.js b/packages/linode-plugin/storage/linode-blockStorage.js index 63c16610..29846fc6 100644 --- a/packages/linode-plugin/storage/linode-blockStorage.js +++ b/packages/linode-plugin/storage/linode-blockStorage.js @@ -1,68 +1,72 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a BlockStorageLinodeClass object - * @category Linode - */ + * Class to create a BlockStorageLinodeClass object + * @category Linode + */ class Linode_BlockStorage { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getVolumes function of BlockStorageLinodeClass - * @param {Params} params - Data required for getVolumes - * @param {Filter} filters - Data required for getVolumes - * @returns {Promise} - */ - list(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getVolumes(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteVolume function of BlockStorageLinodeClass - * @param {NumberKeyword} volumeId - Data required for deleteVolume - * @returns {Promise} - */ - delete(volumeId) { - return new Promise((resolve, reject) => { - this._linode.deleteVolume(volumeId) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateVolume function of BlockStorageLinodeClass - * @param {NumberKeyword} volumeId - Data required for updateVolume - * @param {UpdateVolumeRequest} data - Data required for updateVolume - * @returns {Promise} - */ - update(volumeId, data) { - return new Promise((resolve, reject) => { - this._linode.updateVolume(volumeId, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createVolume function of BlockStorageLinodeClass - * @param {VolumeRequestPayload} data - Data required for createVolume - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode.createVolume(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getVolumes function of BlockStorageLinodeClass + * @param {Params} params - Data required for getVolumes + * @param {Filter} filters - Data required for getVolumes + * @returns {Promise} + */ + list(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getVolumes(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteVolume function of BlockStorageLinodeClass + * @param {NumberKeyword} volumeId - Data required for deleteVolume + * @returns {Promise} + */ + delete(volumeId) { + return new Promise((resolve, reject) => { + this._linode + .deleteVolume(volumeId) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateVolume function of BlockStorageLinodeClass + * @param {NumberKeyword} volumeId - Data required for updateVolume + * @param {UpdateVolumeRequest} data - Data required for updateVolume + * @returns {Promise} + */ + update(volumeId, data) { + return new Promise((resolve, reject) => { + this._linode + .updateVolume(volumeId, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createVolume function of BlockStorageLinodeClass + * @param {VolumeRequestPayload} data - Data required for createVolume + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode + .createVolume(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_BlockStorage; diff --git a/packages/linode-plugin/storage/linode-storageBucket.js b/packages/linode-plugin/storage/linode-storageBucket.js index 6cdf3dfb..54b7b993 100644 --- a/packages/linode-plugin/storage/linode-storageBucket.js +++ b/packages/linode-plugin/storage/linode-storageBucket.js @@ -1,95 +1,101 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a StorageBucketLinodeClass object - * @category Linode - */ + * Class to create a StorageBucketLinodeClass object + * @category Linode + */ class Linode_StorageBucket { - /** - * - * @param {module} linodeSdk Linode SDK - * @param {string} linodeToken Linode Token - */ - constructor(linodeSdk, linodeToken) { - this._linode = linodeSdk; - this._linodeToken = linodeToken; - this._linode.setToken(this._linodeToken); - } - /** - * Trigers the getBucket function of StorageBucketLinodeClass - * @param {StringKeyword} clusterId - Data required for getBucket - * @param {StringKeyword} bucketName - Data required for getBucket - * @returns {Promise} - */ - get(clusterId, bucketName) { - return new Promise((resolve, reject) => { - this._linode.getBucket(clusterId, bucketName) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getBuckets function of StorageBucketLinodeClass - * @param {Params} params - Data required for getBuckets - * @param {Filter} filters - Data required for getBuckets - * @returns {Promise} - */ - list(params = undefined, filters = undefined) { - return new Promise((resolve, reject) => { - this._linode.getBuckets(params, filters) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createBucket function of StorageBucketLinodeClass - * @param {ObjectStorageBucketRequestPayload} data - Data required for createBucket - * @returns {Promise} - */ - create(data) { - return new Promise((resolve, reject) => { - this._linode.createBucket(data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteBucket function of StorageBucketLinodeClass - * @param {ObjectStorageDeleteBucketRequestPayload} {cluster,label} - Data required for deleteBucket - * @returns {Promise} - */ - delete({ cluster, label }) { - return new Promise((resolve, reject) => { - this._linode.deleteBucket({ cluster, label }) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getBucketAccess function of StorageBucketLinodeClass - * @param {StringKeyword} clusterId - Data required for getBucketAccess - * @param {StringKeyword} bucketName - Data required for getBucketAccess - * @returns {Promise} - */ - getBucketAccess(clusterId, bucketName) { - return new Promise((resolve, reject) => { - this._linode.getBucketAccess(clusterId, bucketName) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateBucketAccess function of StorageBucketLinodeClass - * @param {StringKeyword} clusterId - Data required for updateBucketAccess - * @param {StringKeyword} bucketName - Data required for updateBucketAccess - * @param {ObjectStorageBucketAccessRequest} data - Data required for updateBucketAccess - * @returns {Promise} - */ - updateBucketAccess(clusterId, bucketName, data) { - return new Promise((resolve, reject) => { - this._linode.updateBucketAccess(clusterId, bucketName, data) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} linodeSdk Linode SDK + * @param {string} linodeToken Linode Token + */ + constructor(linodeSdk, linodeToken) { + this._linode = linodeSdk; + this._linodeToken = linodeToken; + this._linode.setToken(this._linodeToken); + } + /** + * Trigers the getBucket function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for getBucket + * @param {StringKeyword} bucketName - Data required for getBucket + * @returns {Promise} + */ + get(clusterId, bucketName) { + return new Promise((resolve, reject) => { + this._linode + .getBucket(clusterId, bucketName) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getBuckets function of StorageBucketLinodeClass + * @param {Params} params - Data required for getBuckets + * @param {Filter} filters - Data required for getBuckets + * @returns {Promise} + */ + list(params = undefined, filters = undefined) { + return new Promise((resolve, reject) => { + this._linode + .getBuckets(params, filters) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createBucket function of StorageBucketLinodeClass + * @param {ObjectStorageBucketRequestPayload} data - Data required for createBucket + * @returns {Promise} + */ + create(data) { + return new Promise((resolve, reject) => { + this._linode + .createBucket(data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteBucket function of StorageBucketLinodeClass + * @param {ObjectStorageDeleteBucketRequestPayload} {cluster,label} - Data required for deleteBucket + * @returns {Promise} + */ + delete({ cluster, label }) { + return new Promise((resolve, reject) => { + this._linode + .deleteBucket({ cluster, label }) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getBucketAccess function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for getBucketAccess + * @param {StringKeyword} bucketName - Data required for getBucketAccess + * @returns {Promise} + */ + getBucketAccess(clusterId, bucketName) { + return new Promise((resolve, reject) => { + this._linode + .getBucketAccess(clusterId, bucketName) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateBucketAccess function of StorageBucketLinodeClass + * @param {StringKeyword} clusterId - Data required for updateBucketAccess + * @param {StringKeyword} bucketName - Data required for updateBucketAccess + * @param {ObjectStorageBucketAccessRequest} data - Data required for updateBucketAccess + * @returns {Promise} + */ + updateBucketAccess(clusterId, bucketName, data) { + return new Promise((resolve, reject) => { + this._linode + .updateBucketAccess(clusterId, bucketName, data) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Linode_StorageBucket; diff --git a/packages/oracle-plugin/compute/oci-kubernetes.js b/packages/oracle-plugin/compute/oci-kubernetes.js index 8d14026f..f2a468c8 100644 --- a/packages/oracle-plugin/compute/oci-kubernetes.js +++ b/packages/oracle-plugin/compute/oci-kubernetes.js @@ -1,138 +1,151 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ContainerEngineClient object - * @category Oracle Cloud - */ + * Class to create a ContainerEngineClient object + * @category Oracle Cloud + */ class Oracle_Kubernetes { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._containerEngineClient = this._oci.ContainerEngineClient(params, clientConfiguration); - } - /** - * Trigers the createCluster function of ContainerEngineClient - * @param {CreateClusterRequest} createClusterRequest - Data required for createCluster - * @returns {Promise} - */ - create(createClusterRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.createCluster(createClusterRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createNodePool function of ContainerEngineClient - * @param {CreateNodePoolRequest} createNodePoolRequest - Data required for createNodePool - * @returns {Promise} - */ - createNodePool(createNodePoolRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.createNodePool(createNodePoolRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteCluster function of ContainerEngineClient - * @param {DeleteClusterRequest} deleteClusterRequest - Data required for deleteCluster - * @returns {Promise} - */ - delete(deleteClusterRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.deleteCluster(deleteClusterRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteNode function of ContainerEngineClient - * @param {DeleteNodeRequest} deleteNodeRequest - Data required for deleteNode - * @returns {Promise} - */ - deleteNode(deleteNodeRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.deleteNode(deleteNodeRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteNodePool function of ContainerEngineClient - * @param {DeleteNodePoolRequest} deleteNodePoolRequest - Data required for deleteNodePool - * @returns {Promise} - */ - deleteNodePool(deleteNodePoolRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.deleteNodePool(deleteNodePoolRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getCluster function of ContainerEngineClient - * @param {GetClusterRequest} getClusterRequest - Data required for getCluster - * @returns {Promise} - */ - get(getClusterRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.getCluster(getClusterRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getNodePool function of ContainerEngineClient - * @param {GetNodePoolRequest} getNodePoolRequest - Data required for getNodePool - * @returns {Promise} - */ - getNodePool(getNodePoolRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.getNodePool(getNodePoolRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listClusters function of ContainerEngineClient - * @param {ListClustersRequest} listClustersRequest - Data required for listClusters - * @returns {Promise} - */ - list(listClustersRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.listClusters(listClustersRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateCluster function of ContainerEngineClient - * @param {UpdateClusterRequest} updateClusterRequest - Data required for updateCluster - * @returns {Promise} - */ - update(updateClusterRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.updateCluster(updateClusterRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateNodePool function of ContainerEngineClient - * @param {UpdateNodePoolRequest} updateNodePoolRequest - Data required for updateNodePool - * @returns {Promise} - */ - updateNodePool(updateNodePoolRequest) { - return new Promise((resolve, reject) => { - this._containerEngineClient.updateNodePool(updateNodePoolRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._containerEngineClient = this._oci.ContainerEngineClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createCluster function of ContainerEngineClient + * @param {CreateClusterRequest} createClusterRequest - Data required for createCluster + * @returns {Promise} + */ + create(createClusterRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .createCluster(createClusterRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createNodePool function of ContainerEngineClient + * @param {CreateNodePoolRequest} createNodePoolRequest - Data required for createNodePool + * @returns {Promise} + */ + createNodePool(createNodePoolRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .createNodePool(createNodePoolRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteCluster function of ContainerEngineClient + * @param {DeleteClusterRequest} deleteClusterRequest - Data required for deleteCluster + * @returns {Promise} + */ + delete(deleteClusterRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .deleteCluster(deleteClusterRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteNode function of ContainerEngineClient + * @param {DeleteNodeRequest} deleteNodeRequest - Data required for deleteNode + * @returns {Promise} + */ + deleteNode(deleteNodeRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .deleteNode(deleteNodeRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteNodePool function of ContainerEngineClient + * @param {DeleteNodePoolRequest} deleteNodePoolRequest - Data required for deleteNodePool + * @returns {Promise} + */ + deleteNodePool(deleteNodePoolRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .deleteNodePool(deleteNodePoolRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getCluster function of ContainerEngineClient + * @param {GetClusterRequest} getClusterRequest - Data required for getCluster + * @returns {Promise} + */ + get(getClusterRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .getCluster(getClusterRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getNodePool function of ContainerEngineClient + * @param {GetNodePoolRequest} getNodePoolRequest - Data required for getNodePool + * @returns {Promise} + */ + getNodePool(getNodePoolRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .getNodePool(getNodePoolRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listClusters function of ContainerEngineClient + * @param {ListClustersRequest} listClustersRequest - Data required for listClusters + * @returns {Promise} + */ + list(listClustersRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .listClusters(listClustersRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateCluster function of ContainerEngineClient + * @param {UpdateClusterRequest} updateClusterRequest - Data required for updateCluster + * @returns {Promise} + */ + update(updateClusterRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .updateCluster(updateClusterRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateNodePool function of ContainerEngineClient + * @param {UpdateNodePoolRequest} updateNodePoolRequest - Data required for updateNodePool + * @returns {Promise} + */ + updateNodePool(updateNodePoolRequest) { + return new Promise((resolve, reject) => { + this._containerEngineClient + .updateNodePool(updateNodePoolRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_Kubernetes; diff --git a/packages/oracle-plugin/database/oci-RDBMS.js b/packages/oracle-plugin/database/oci-RDBMS.js index 56d2130a..4032123f 100644 --- a/packages/oracle-plugin/database/oci-RDBMS.js +++ b/packages/oracle-plugin/database/oci-RDBMS.js @@ -1,102 +1,112 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a DbSystemClient object - * @category Oracle Cloud - */ + * Class to create a DbSystemClient object + * @category Oracle Cloud + */ class Oracle_RDBMS { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._dbSystemClient = this._oci.DbSystemClient(params, clientConfiguration); - } - /** - * Trigers the createDbSystem function of DbSystemClient - * @param {CreateDbSystemRequest} createDbSystemRequest - Data required for createDbSystem - * @returns {Promise} - */ - createDBSystem(createDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient.createDbSystem(createDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDbSystem function of DbSystemClient - * @param {DeleteDbSystemRequest} deleteDbSystemRequest - Data required for deleteDbSystem - * @returns {Promise} - */ - deleteDBSystem(deleteDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient.deleteDbSystem(deleteDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDbSystem function of DbSystemClient - * @param {GetDbSystemRequest} getDbSystemRequest - Data required for getDbSystem - * @returns {Promise} - */ - getDBSystem(getDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient.getDbSystem(getDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the restartDbSystem function of DbSystemClient - * @param {RestartDbSystemRequest} restartDbSystemRequest - Data required for restartDbSystem - * @returns {Promise} - */ - restartDBSystem(restartDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient.restartDbSystem(restartDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the startDbSystem function of DbSystemClient - * @param {StartDbSystemRequest} startDbSystemRequest - Data required for startDbSystem - * @returns {Promise} - */ - startDBSystem(startDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient.startDbSystem(startDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the stopDbSystem function of DbSystemClient - * @param {StopDbSystemRequest} stopDbSystemRequest - Data required for stopDbSystem - * @returns {Promise} - */ - stopDBSystem(stopDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient.stopDbSystem(stopDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateDbSystem function of DbSystemClient - * @param {UpdateDbSystemRequest} updateDbSystemRequest - Data required for updateDbSystem - * @returns {Promise} - */ - updateDBSystem(updateDbSystemRequest) { - return new Promise((resolve, reject) => { - this._dbSystemClient.updateDbSystem(updateDbSystemRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._dbSystemClient = this._oci.DbSystemClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createDbSystem function of DbSystemClient + * @param {CreateDbSystemRequest} createDbSystemRequest - Data required for createDbSystem + * @returns {Promise} + */ + createDBSystem(createDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient + .createDbSystem(createDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDbSystem function of DbSystemClient + * @param {DeleteDbSystemRequest} deleteDbSystemRequest - Data required for deleteDbSystem + * @returns {Promise} + */ + deleteDBSystem(deleteDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient + .deleteDbSystem(deleteDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDbSystem function of DbSystemClient + * @param {GetDbSystemRequest} getDbSystemRequest - Data required for getDbSystem + * @returns {Promise} + */ + getDBSystem(getDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient + .getDbSystem(getDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the restartDbSystem function of DbSystemClient + * @param {RestartDbSystemRequest} restartDbSystemRequest - Data required for restartDbSystem + * @returns {Promise} + */ + restartDBSystem(restartDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient + .restartDbSystem(restartDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the startDbSystem function of DbSystemClient + * @param {StartDbSystemRequest} startDbSystemRequest - Data required for startDbSystem + * @returns {Promise} + */ + startDBSystem(startDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient + .startDbSystem(startDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the stopDbSystem function of DbSystemClient + * @param {StopDbSystemRequest} stopDbSystemRequest - Data required for stopDbSystem + * @returns {Promise} + */ + stopDBSystem(stopDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient + .stopDbSystem(stopDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateDbSystem function of DbSystemClient + * @param {UpdateDbSystemRequest} updateDbSystemRequest - Data required for updateDbSystem + * @returns {Promise} + */ + updateDBSystem(updateDbSystemRequest) { + return new Promise((resolve, reject) => { + this._dbSystemClient + .updateDbSystem(updateDbSystemRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_RDBMS; diff --git a/packages/oracle-plugin/database/oci-noSql.js b/packages/oracle-plugin/database/oci-noSql.js index 53a598e3..d049fbfd 100644 --- a/packages/oracle-plugin/database/oci-noSql.js +++ b/packages/oracle-plugin/database/oci-noSql.js @@ -1,114 +1,122 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a NosqlClient object - * @category Oracle Cloud - */ + * Class to create a NosqlClient object + * @category Oracle Cloud + */ class Oracle_NoSql { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._nosqlClient = this._oci.NosqlClient(params, clientConfiguration); - } - /** - * Trigers the createTable function of NosqlClient - * @param {CreateTableRequest} createTableRequest - Data required for createTable - * @returns {Promise} - */ - createTable(createTableRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient.createTable(createTableRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteRow function of NosqlClient - * @param {DeleteRowRequest} deleteRowRequest - Data required for deleteRow - * @returns {Promise} - */ - deleteRow(deleteRowRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient.deleteRow(deleteRowRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteTable function of NosqlClient - * @param {DeleteTableRequest} deleteTableRequest - Data required for deleteTable - * @returns {Promise} - */ - deleteTable(deleteTableRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient.deleteTable(deleteTableRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getRow function of NosqlClient - * @param {GetRowRequest} getRowRequest - Data required for getRow - * @returns {Promise} - */ - getRow(getRowRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient.getRow(getRowRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getTable function of NosqlClient - * @param {GetTableRequest} getTableRequest - Data required for getTable - * @returns {Promise} - */ - getTable(getTableRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient.getTable(getTableRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listTables function of NosqlClient - * @param {ListTablesRequest} listTablesRequest - Data required for listTables - * @returns {Promise} - */ - listTables(listTablesRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient.listTables(listTablesRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateRow function of NosqlClient - * @param {UpdateRowRequest} updateRowRequest - Data required for updateRow - * @returns {Promise} - */ - updateRow(updateRowRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient.updateRow(updateRowRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateTable function of NosqlClient - * @param {UpdateTableRequest} updateTableRequest - Data required for updateTable - * @returns {Promise} - */ - updateTable(updateTableRequest) { - return new Promise((resolve, reject) => { - this._nosqlClient.updateTable(updateTableRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._nosqlClient = this._oci.NosqlClient(params, clientConfiguration); + } + /** + * Trigers the createTable function of NosqlClient + * @param {CreateTableRequest} createTableRequest - Data required for createTable + * @returns {Promise} + */ + createTable(createTableRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient + .createTable(createTableRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteRow function of NosqlClient + * @param {DeleteRowRequest} deleteRowRequest - Data required for deleteRow + * @returns {Promise} + */ + deleteRow(deleteRowRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient + .deleteRow(deleteRowRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteTable function of NosqlClient + * @param {DeleteTableRequest} deleteTableRequest - Data required for deleteTable + * @returns {Promise} + */ + deleteTable(deleteTableRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient + .deleteTable(deleteTableRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getRow function of NosqlClient + * @param {GetRowRequest} getRowRequest - Data required for getRow + * @returns {Promise} + */ + getRow(getRowRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient + .getRow(getRowRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getTable function of NosqlClient + * @param {GetTableRequest} getTableRequest - Data required for getTable + * @returns {Promise} + */ + getTable(getTableRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient + .getTable(getTableRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listTables function of NosqlClient + * @param {ListTablesRequest} listTablesRequest - Data required for listTables + * @returns {Promise} + */ + listTables(listTablesRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient + .listTables(listTablesRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateRow function of NosqlClient + * @param {UpdateRowRequest} updateRowRequest - Data required for updateRow + * @returns {Promise} + */ + updateRow(updateRowRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient + .updateRow(updateRowRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateTable function of NosqlClient + * @param {UpdateTableRequest} updateTableRequest - Data required for updateTable + * @returns {Promise} + */ + updateTable(updateTableRequest) { + return new Promise((resolve, reject) => { + this._nosqlClient + .updateTable(updateTableRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_NoSql; diff --git a/packages/oracle-plugin/devops/oci-devops.js b/packages/oracle-plugin/devops/oci-devops.js index 4fba5d28..f0943636 100644 --- a/packages/oracle-plugin/devops/oci-devops.js +++ b/packages/oracle-plugin/devops/oci-devops.js @@ -1,174 +1,190 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a DevopsClient object - * @category Oracle Cloud - */ + * Class to create a DevopsClient object + * @category Oracle Cloud + */ class Oracle_Devops { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._devopsClient = this._oci.DevopsClient(params, clientConfiguration); - } - /** - * Trigers the createDeployArtifact function of DevopsClient - * @param {CreateDeployArtifactRequest} createDeployArtifactRequest - Data required for createDeployArtifact - * @returns {Promise} - */ - createDeployArtifact(createDeployArtifactRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.createDeployArtifact(createDeployArtifactRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createDeployPipeline function of DevopsClient - * @param {CreateDeployPipelineRequest} createDeployPipelineRequest - Data required for createDeployPipeline - * @returns {Promise} - */ - createDeployPipeline(createDeployPipelineRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.createDeployPipeline(createDeployPipelineRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createDeployment function of DevopsClient - * @param {CreateDeploymentRequest} createDeploymentRequest - Data required for createDeployment - * @returns {Promise} - */ - createDeployment(createDeploymentRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.createDeployment(createDeploymentRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createProject function of DevopsClient - * @param {CreateProjectRequest} createProjectRequest - Data required for createProject - * @returns {Promise} - */ - createProject(createProjectRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.createProject(createProjectRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the createRepository function of DevopsClient - * @param {CreateRepositoryRequest} createRepositoryRequest - Data required for createRepository - * @returns {Promise} - */ - createRepository(createRepositoryRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.createRepository(createRepositoryRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDeployArtifact function of DevopsClient - * @param {DeleteDeployArtifactRequest} deleteDeployArtifactRequest - Data required for deleteDeployArtifact - * @returns {Promise} - */ - deleteDeployArtifact(deleteDeployArtifactRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.deleteDeployArtifact(deleteDeployArtifactRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteDeployPipeline function of DevopsClient - * @param {DeleteDeployPipelineRequest} deleteDeployPipelineRequest - Data required for deleteDeployPipeline - * @returns {Promise} - */ - deleteDeployPipeline(deleteDeployPipelineRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.deleteDeployPipeline(deleteDeployPipelineRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteProject function of DevopsClient - * @param {DeleteProjectRequest} deleteProjectRequest - Data required for deleteProject - * @returns {Promise} - */ - deleteProject(deleteProjectRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.deleteProject(deleteProjectRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteRepository function of DevopsClient - * @param {DeleteRepositoryRequest} deleteRepositoryRequest - Data required for deleteRepository - * @returns {Promise} - */ - deleteRepository(deleteRepositoryRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.deleteRepository(deleteRepositoryRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDeployArtifact function of DevopsClient - * @param {GetDeployArtifactRequest} getDeployArtifactRequest - Data required for getDeployArtifact - * @returns {Promise} - */ - getDeployArtifact(getDeployArtifactRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.getDeployArtifact(getDeployArtifactRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDeployPipeline function of DevopsClient - * @param {GetDeployPipelineRequest} getDeployPipelineRequest - Data required for getDeployPipeline - * @returns {Promise} - */ - getDeployPipeline(getDeployPipelineRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.getDeployPipeline(getDeployPipelineRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getDeployment function of DevopsClient - * @param {GetDeploymentRequest} getDeploymentRequest - Data required for getDeployment - * @returns {Promise} - */ - getDeployment(getDeploymentRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.getDeployment(getDeploymentRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getProject function of DevopsClient - * @param {GetProjectRequest} getProjectRequest - Data required for getProject - * @returns {Promise} - */ - getProject(getProjectRequest) { - return new Promise((resolve, reject) => { - this._devopsClient.getProject(getProjectRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._devopsClient = this._oci.DevopsClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createDeployArtifact function of DevopsClient + * @param {CreateDeployArtifactRequest} createDeployArtifactRequest - Data required for createDeployArtifact + * @returns {Promise} + */ + createDeployArtifact(createDeployArtifactRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .createDeployArtifact(createDeployArtifactRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createDeployPipeline function of DevopsClient + * @param {CreateDeployPipelineRequest} createDeployPipelineRequest - Data required for createDeployPipeline + * @returns {Promise} + */ + createDeployPipeline(createDeployPipelineRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .createDeployPipeline(createDeployPipelineRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createDeployment function of DevopsClient + * @param {CreateDeploymentRequest} createDeploymentRequest - Data required for createDeployment + * @returns {Promise} + */ + createDeployment(createDeploymentRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .createDeployment(createDeploymentRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createProject function of DevopsClient + * @param {CreateProjectRequest} createProjectRequest - Data required for createProject + * @returns {Promise} + */ + createProject(createProjectRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .createProject(createProjectRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the createRepository function of DevopsClient + * @param {CreateRepositoryRequest} createRepositoryRequest - Data required for createRepository + * @returns {Promise} + */ + createRepository(createRepositoryRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .createRepository(createRepositoryRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDeployArtifact function of DevopsClient + * @param {DeleteDeployArtifactRequest} deleteDeployArtifactRequest - Data required for deleteDeployArtifact + * @returns {Promise} + */ + deleteDeployArtifact(deleteDeployArtifactRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .deleteDeployArtifact(deleteDeployArtifactRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteDeployPipeline function of DevopsClient + * @param {DeleteDeployPipelineRequest} deleteDeployPipelineRequest - Data required for deleteDeployPipeline + * @returns {Promise} + */ + deleteDeployPipeline(deleteDeployPipelineRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .deleteDeployPipeline(deleteDeployPipelineRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteProject function of DevopsClient + * @param {DeleteProjectRequest} deleteProjectRequest - Data required for deleteProject + * @returns {Promise} + */ + deleteProject(deleteProjectRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .deleteProject(deleteProjectRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteRepository function of DevopsClient + * @param {DeleteRepositoryRequest} deleteRepositoryRequest - Data required for deleteRepository + * @returns {Promise} + */ + deleteRepository(deleteRepositoryRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .deleteRepository(deleteRepositoryRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDeployArtifact function of DevopsClient + * @param {GetDeployArtifactRequest} getDeployArtifactRequest - Data required for getDeployArtifact + * @returns {Promise} + */ + getDeployArtifact(getDeployArtifactRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .getDeployArtifact(getDeployArtifactRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDeployPipeline function of DevopsClient + * @param {GetDeployPipelineRequest} getDeployPipelineRequest - Data required for getDeployPipeline + * @returns {Promise} + */ + getDeployPipeline(getDeployPipelineRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .getDeployPipeline(getDeployPipelineRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getDeployment function of DevopsClient + * @param {GetDeploymentRequest} getDeploymentRequest - Data required for getDeployment + * @returns {Promise} + */ + getDeployment(getDeploymentRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .getDeployment(getDeploymentRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getProject function of DevopsClient + * @param {GetProjectRequest} getProjectRequest - Data required for getProject + * @returns {Promise} + */ + getProject(getProjectRequest) { + return new Promise((resolve, reject) => { + this._devopsClient + .getProject(getProjectRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_Devops; diff --git a/packages/oracle-plugin/management/oci-keyManagement.js b/packages/oracle-plugin/management/oci-keyManagement.js index c8ba87c7..49c34874 100644 --- a/packages/oracle-plugin/management/oci-keyManagement.js +++ b/packages/oracle-plugin/management/oci-keyManagement.js @@ -1,66 +1,73 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a KmsManagementClient object - * @category Oracle Cloud - */ + * Class to create a KmsManagementClient object + * @category Oracle Cloud + */ class Oracle_KeyManagement { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._kmsManagementClient = this._oci.KmsManagementClient(params, clientConfiguration); - } - /** - * Trigers the createKey function of KmsManagementClient - * @param {CreateKeyRequest} createKeyRequest - Data required for createKey - * @returns {Promise} - */ - createKey(createKeyRequest) { - return new Promise((resolve, reject) => { - this._kmsManagementClient.createKey(createKeyRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the disableKey function of KmsManagementClient - * @param {DisableKeyRequest} disableKeyRequest - Data required for disableKey - * @returns {Promise} - */ - disableKey(disableKeyRequest) { - return new Promise((resolve, reject) => { - this._kmsManagementClient.disableKey(disableKeyRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the enableKey function of KmsManagementClient - * @param {EnableKeyRequest} enableKeyRequest - Data required for enableKey - * @returns {Promise} - */ - enableKey(enableKeyRequest) { - return new Promise((resolve, reject) => { - this._kmsManagementClient.enableKey(enableKeyRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateKey function of KmsManagementClient - * @param {UpdateKeyRequest} updateKeyRequest - Data required for updateKey - * @returns {Promise} - */ - update(updateKeyRequest) { - return new Promise((resolve, reject) => { - this._kmsManagementClient.updateKey(updateKeyRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._kmsManagementClient = this._oci.KmsManagementClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createKey function of KmsManagementClient + * @param {CreateKeyRequest} createKeyRequest - Data required for createKey + * @returns {Promise} + */ + createKey(createKeyRequest) { + return new Promise((resolve, reject) => { + this._kmsManagementClient + .createKey(createKeyRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the disableKey function of KmsManagementClient + * @param {DisableKeyRequest} disableKeyRequest - Data required for disableKey + * @returns {Promise} + */ + disableKey(disableKeyRequest) { + return new Promise((resolve, reject) => { + this._kmsManagementClient + .disableKey(disableKeyRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the enableKey function of KmsManagementClient + * @param {EnableKeyRequest} enableKeyRequest - Data required for enableKey + * @returns {Promise} + */ + enableKey(enableKeyRequest) { + return new Promise((resolve, reject) => { + this._kmsManagementClient + .enableKey(enableKeyRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateKey function of KmsManagementClient + * @param {UpdateKeyRequest} updateKeyRequest - Data required for updateKey + * @returns {Promise} + */ + update(updateKeyRequest) { + return new Promise((resolve, reject) => { + this._kmsManagementClient + .updateKey(updateKeyRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_KeyManagement; diff --git a/packages/oracle-plugin/management/oci-notificationService.js b/packages/oracle-plugin/management/oci-notificationService.js index d0895c41..0bc11a1b 100644 --- a/packages/oracle-plugin/management/oci-notificationService.js +++ b/packages/oracle-plugin/management/oci-notificationService.js @@ -1,66 +1,73 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a NotificationDataPlaneClient object - * @category Oracle Cloud - */ + * Class to create a NotificationDataPlaneClient object + * @category Oracle Cloud + */ class Oracle_NotificationService { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._notificationDataPlaneClient = this._oci.NotificationDataPlaneClient(params, clientConfiguration); - } - /** - * Trigers the createSubscription function of NotificationDataPlaneClient - * @param {CreateSubscriptionRequest} createSubscriptionRequest - Data required for createSubscription - * @returns {Promise} - */ - subscribe(createSubscriptionRequest) { - return new Promise((resolve, reject) => { - this._notificationDataPlaneClient.createSubscription(createSubscriptionRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteSubscription function of NotificationDataPlaneClient - * @param {DeleteSubscriptionRequest} deleteSubscriptionRequest - Data required for deleteSubscription - * @returns {Promise} - */ - unsubscribe(deleteSubscriptionRequest) { - return new Promise((resolve, reject) => { - this._notificationDataPlaneClient.deleteSubscription(deleteSubscriptionRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listSubscriptions function of NotificationDataPlaneClient - * @param {ListSubscriptionsRequest} listSubscriptionsRequest - Data required for listSubscriptions - * @returns {Promise} - */ - listSubscriptions(listSubscriptionsRequest) { - return new Promise((resolve, reject) => { - this._notificationDataPlaneClient.listSubscriptions(listSubscriptionsRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the publishMessage function of NotificationDataPlaneClient - * @param {PublishMessageRequest} publishMessageRequest - Data required for publishMessage - * @returns {Promise} - */ - publish(publishMessageRequest) { - return new Promise((resolve, reject) => { - this._notificationDataPlaneClient.publishMessage(publishMessageRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._notificationDataPlaneClient = this._oci.NotificationDataPlaneClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createSubscription function of NotificationDataPlaneClient + * @param {CreateSubscriptionRequest} createSubscriptionRequest - Data required for createSubscription + * @returns {Promise} + */ + subscribe(createSubscriptionRequest) { + return new Promise((resolve, reject) => { + this._notificationDataPlaneClient + .createSubscription(createSubscriptionRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteSubscription function of NotificationDataPlaneClient + * @param {DeleteSubscriptionRequest} deleteSubscriptionRequest - Data required for deleteSubscription + * @returns {Promise} + */ + unsubscribe(deleteSubscriptionRequest) { + return new Promise((resolve, reject) => { + this._notificationDataPlaneClient + .deleteSubscription(deleteSubscriptionRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listSubscriptions function of NotificationDataPlaneClient + * @param {ListSubscriptionsRequest} listSubscriptionsRequest - Data required for listSubscriptions + * @returns {Promise} + */ + listSubscriptions(listSubscriptionsRequest) { + return new Promise((resolve, reject) => { + this._notificationDataPlaneClient + .listSubscriptions(listSubscriptionsRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the publishMessage function of NotificationDataPlaneClient + * @param {PublishMessageRequest} publishMessageRequest - Data required for publishMessage + * @returns {Promise} + */ + publish(publishMessageRequest) { + return new Promise((resolve, reject) => { + this._notificationDataPlaneClient + .publishMessage(publishMessageRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_NotificationService; diff --git a/packages/oracle-plugin/network/oci-DNS.js b/packages/oracle-plugin/network/oci-DNS.js index bd996e42..52cd67f9 100644 --- a/packages/oracle-plugin/network/oci-DNS.js +++ b/packages/oracle-plugin/network/oci-DNS.js @@ -1,66 +1,70 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a DnsClient object - * @category Oracle Cloud - */ + * Class to create a DnsClient object + * @category Oracle Cloud + */ class Oracle_DNS { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._dnsClient = this._oci.DnsClient(params, clientConfiguration); - } - /** - * Trigers the createZone function of DnsClient - * @param {CreateZoneRequest} createZoneRequest - Data required for createZone - * @returns {Promise} - */ - create(createZoneRequest) { - return new Promise((resolve, reject) => { - this._dnsClient.createZone(createZoneRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteZone function of DnsClient - * @param {DeleteZoneRequest} deleteZoneRequest - Data required for deleteZone - * @returns {Promise} - */ - delete(deleteZoneRequest) { - return new Promise((resolve, reject) => { - this._dnsClient.deleteZone(deleteZoneRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listZones function of DnsClient - * @param {ListZonesRequest} listZonesRequest - Data required for listZones - * @returns {Promise} - */ - list(listZonesRequest) { - return new Promise((resolve, reject) => { - this._dnsClient.listZones(listZonesRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateZone function of DnsClient - * @param {UpdateZoneRequest} updateZoneRequest - Data required for updateZone - * @returns {Promise} - */ - update(updateZoneRequest) { - return new Promise((resolve, reject) => { - this._dnsClient.updateZone(updateZoneRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._dnsClient = this._oci.DnsClient(params, clientConfiguration); + } + /** + * Trigers the createZone function of DnsClient + * @param {CreateZoneRequest} createZoneRequest - Data required for createZone + * @returns {Promise} + */ + create(createZoneRequest) { + return new Promise((resolve, reject) => { + this._dnsClient + .createZone(createZoneRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteZone function of DnsClient + * @param {DeleteZoneRequest} deleteZoneRequest - Data required for deleteZone + * @returns {Promise} + */ + delete(deleteZoneRequest) { + return new Promise((resolve, reject) => { + this._dnsClient + .deleteZone(deleteZoneRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listZones function of DnsClient + * @param {ListZonesRequest} listZonesRequest - Data required for listZones + * @returns {Promise} + */ + list(listZonesRequest) { + return new Promise((resolve, reject) => { + this._dnsClient + .listZones(listZonesRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateZone function of DnsClient + * @param {UpdateZoneRequest} updateZoneRequest - Data required for updateZone + * @returns {Promise} + */ + update(updateZoneRequest) { + return new Promise((resolve, reject) => { + this._dnsClient + .updateZone(updateZoneRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_DNS; diff --git a/packages/oracle-plugin/network/oci-loadBalancer.js b/packages/oracle-plugin/network/oci-loadBalancer.js index e0ec4f08..21faafa6 100644 --- a/packages/oracle-plugin/network/oci-loadBalancer.js +++ b/packages/oracle-plugin/network/oci-loadBalancer.js @@ -1,78 +1,86 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a LoadBalancerClient object - * @category Oracle Cloud - */ + * Class to create a LoadBalancerClient object + * @category Oracle Cloud + */ class Oracle_LoadBalancer { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._loadBalancerClient = this._oci.LoadBalancerClient(params, clientConfiguration); - } - /** - * Trigers the createLoadBalancer function of LoadBalancerClient - * @param {CreateLoadBalancerRequest} createLoadBalancerRequest - Data required for createLoadBalancer - * @returns {Promise} - */ - create(createLoadBalancerRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient.createLoadBalancer(createLoadBalancerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteLoadBalancer function of LoadBalancerClient - * @param {DeleteLoadBalancerRequest} deleteLoadBalancerRequest - Data required for deleteLoadBalancer - * @returns {Promise} - */ - delete(deleteLoadBalancerRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient.deleteLoadBalancer(deleteLoadBalancerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getLoadBalancer function of LoadBalancerClient - * @param {GetLoadBalancerRequest} getLoadBalancerRequest - Data required for getLoadBalancer - * @returns {Promise} - */ - get(getLoadBalancerRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient.getLoadBalancer(getLoadBalancerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listLoadBalancers function of LoadBalancerClient - * @param {ListLoadBalancersRequest} listLoadBalancersRequest - Data required for listLoadBalancers - * @returns {Promise} - */ - list(listLoadBalancersRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient.listLoadBalancers(listLoadBalancersRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateLoadBalancer function of LoadBalancerClient - * @param {UpdateLoadBalancerRequest} updateLoadBalancerRequest - Data required for updateLoadBalancer - * @returns {Promise} - */ - update(updateLoadBalancerRequest) { - return new Promise((resolve, reject) => { - this._loadBalancerClient.updateLoadBalancer(updateLoadBalancerRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._loadBalancerClient = this._oci.LoadBalancerClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createLoadBalancer function of LoadBalancerClient + * @param {CreateLoadBalancerRequest} createLoadBalancerRequest - Data required for createLoadBalancer + * @returns {Promise} + */ + create(createLoadBalancerRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient + .createLoadBalancer(createLoadBalancerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteLoadBalancer function of LoadBalancerClient + * @param {DeleteLoadBalancerRequest} deleteLoadBalancerRequest - Data required for deleteLoadBalancer + * @returns {Promise} + */ + delete(deleteLoadBalancerRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient + .deleteLoadBalancer(deleteLoadBalancerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getLoadBalancer function of LoadBalancerClient + * @param {GetLoadBalancerRequest} getLoadBalancerRequest - Data required for getLoadBalancer + * @returns {Promise} + */ + get(getLoadBalancerRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient + .getLoadBalancer(getLoadBalancerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listLoadBalancers function of LoadBalancerClient + * @param {ListLoadBalancersRequest} listLoadBalancersRequest - Data required for listLoadBalancers + * @returns {Promise} + */ + list(listLoadBalancersRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient + .listLoadBalancers(listLoadBalancersRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateLoadBalancer function of LoadBalancerClient + * @param {UpdateLoadBalancerRequest} updateLoadBalancerRequest - Data required for updateLoadBalancer + * @returns {Promise} + */ + update(updateLoadBalancerRequest) { + return new Promise((resolve, reject) => { + this._loadBalancerClient + .updateLoadBalancer(updateLoadBalancerRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_LoadBalancer; diff --git a/packages/oracle-plugin/storage/oci-archivalStorage.js b/packages/oracle-plugin/storage/oci-archivalStorage.js index 202582b3..fe306c87 100644 --- a/packages/oracle-plugin/storage/oci-archivalStorage.js +++ b/packages/oracle-plugin/storage/oci-archivalStorage.js @@ -1,66 +1,73 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ObjectStorageClient object - * @category Oracle Cloud - */ + * Class to create a ObjectStorageClient object + * @category Oracle Cloud + */ class Oracle_ArchivalStorage { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._objectStorageClient = this._oci.ObjectStorageClient(params, clientConfiguration); - } - /** - * Trigers the createBucket function of ObjectStorageClient - * @param {CreateBucketRequest} createBucketRequest - Data required for createBucket - * @returns {Promise} - */ - create(createBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient.createBucket(createBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteBucket function of ObjectStorageClient - * @param {DeleteBucketRequest} deleteBucketRequest - Data required for deleteBucket - * @returns {Promise} - */ - delete(deleteBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient.deleteBucket(deleteBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listBuckets function of ObjectStorageClient - * @param {ListBucketsRequest} listBucketsRequest - Data required for listBuckets - * @returns {Promise} - */ - list(listBucketsRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient.listBuckets(listBucketsRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the updateBucket function of ObjectStorageClient - * @param {UpdateBucketRequest} updateBucketRequest - Data required for updateBucket - * @returns {Promise} - */ - update(updateBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient.updateBucket(updateBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._objectStorageClient = this._oci.ObjectStorageClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createBucket function of ObjectStorageClient + * @param {CreateBucketRequest} createBucketRequest - Data required for createBucket + * @returns {Promise} + */ + create(createBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient + .createBucket(createBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteBucket function of ObjectStorageClient + * @param {DeleteBucketRequest} deleteBucketRequest - Data required for deleteBucket + * @returns {Promise} + */ + delete(deleteBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient + .deleteBucket(deleteBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listBuckets function of ObjectStorageClient + * @param {ListBucketsRequest} listBucketsRequest - Data required for listBuckets + * @returns {Promise} + */ + list(listBucketsRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient + .listBuckets(listBucketsRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the updateBucket function of ObjectStorageClient + * @param {UpdateBucketRequest} updateBucketRequest - Data required for updateBucket + * @returns {Promise} + */ + update(updateBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient + .updateBucket(updateBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_ArchivalStorage; diff --git a/packages/oracle-plugin/storage/oci-blockStorage.js b/packages/oracle-plugin/storage/oci-blockStorage.js index 36b43d66..26dc83ac 100644 --- a/packages/oracle-plugin/storage/oci-blockStorage.js +++ b/packages/oracle-plugin/storage/oci-blockStorage.js @@ -1,66 +1,73 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a BlockstorageClient object - * @category Oracle Cloud - */ + * Class to create a BlockstorageClient object + * @category Oracle Cloud + */ class Oracle_BlockStorage { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._blockstorageClient = this._oci.BlockstorageClient(params, clientConfiguration); - } - /** - * Trigers the createVolume function of BlockstorageClient - * @param {CreateVolumeRequest} createVolumeRequest - Data required for createVolume - * @returns {Promise} - */ - create(createVolumeRequest) { - return new Promise((resolve, reject) => { - this._blockstorageClient.createVolume(createVolumeRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteVolume function of BlockstorageClient - * @param {DeleteVolumeRequest} deleteVolumeRequest - Data required for deleteVolume - * @returns {Promise} - */ - delete(deleteVolumeRequest) { - return new Promise((resolve, reject) => { - this._blockstorageClient.deleteVolume(deleteVolumeRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getVolume function of BlockstorageClient - * @param {GetVolumeRequest} getVolumeRequest - Data required for getVolume - * @returns {Promise} - */ - get(getVolumeRequest) { - return new Promise((resolve, reject) => { - this._blockstorageClient.getVolume(getVolumeRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listVolumes function of BlockstorageClient - * @param {ListVolumesRequest} listVolumesRequest - Data required for listVolumes - * @returns {Promise} - */ - list(listVolumesRequest) { - return new Promise((resolve, reject) => { - this._blockstorageClient.listVolumes(listVolumesRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._blockstorageClient = this._oci.BlockstorageClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createVolume function of BlockstorageClient + * @param {CreateVolumeRequest} createVolumeRequest - Data required for createVolume + * @returns {Promise} + */ + create(createVolumeRequest) { + return new Promise((resolve, reject) => { + this._blockstorageClient + .createVolume(createVolumeRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteVolume function of BlockstorageClient + * @param {DeleteVolumeRequest} deleteVolumeRequest - Data required for deleteVolume + * @returns {Promise} + */ + delete(deleteVolumeRequest) { + return new Promise((resolve, reject) => { + this._blockstorageClient + .deleteVolume(deleteVolumeRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getVolume function of BlockstorageClient + * @param {GetVolumeRequest} getVolumeRequest - Data required for getVolume + * @returns {Promise} + */ + get(getVolumeRequest) { + return new Promise((resolve, reject) => { + this._blockstorageClient + .getVolume(getVolumeRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listVolumes function of BlockstorageClient + * @param {ListVolumesRequest} listVolumesRequest - Data required for listVolumes + * @returns {Promise} + */ + list(listVolumesRequest) { + return new Promise((resolve, reject) => { + this._blockstorageClient + .listVolumes(listVolumesRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_BlockStorage; diff --git a/packages/oracle-plugin/storage/oci-storageBucket.js b/packages/oracle-plugin/storage/oci-storageBucket.js index f85aff48..b7d643ed 100644 --- a/packages/oracle-plugin/storage/oci-storageBucket.js +++ b/packages/oracle-plugin/storage/oci-storageBucket.js @@ -1,78 +1,86 @@ /*This is an auto generated class, please do not change.*/ /** - * Class to create a ObjectStorageClient object - * @category Oracle Cloud - */ + * Class to create a ObjectStorageClient object + * @category Oracle Cloud + */ class Oracle_StorageBucket { - /** - * - * @param {module} ocisdk Oracle SDK - * @param {object} params SDK params - * @param {string} clientConfiguration SDK ClientConfiguration - */ - constructor(ocisdk, params, clientConfiguration) { - this._oci = ocisdk._sdkFileName; - this._objectStorageClient = this._oci.ObjectStorageClient(params, clientConfiguration); - } - /** - * Trigers the createBucket function of ObjectStorageClient - * @param {CreateBucketRequest} createBucketRequest - Data required for createBucket - * @returns {Promise} - */ - create(createBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient.createBucket(createBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the deleteBucket function of ObjectStorageClient - * @param {DeleteBucketRequest} deleteBucketRequest - Data required for deleteBucket - * @returns {Promise} - */ - delete(deleteBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient.deleteBucket(deleteBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the getBucket function of ObjectStorageClient - * @param {GetBucketRequest} getBucketRequest - Data required for getBucket - * @returns {Promise} - */ - get(getBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient.getBucket(getBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the listBuckets function of ObjectStorageClient - * @param {ListBucketsRequest} listBucketsRequest - Data required for listBuckets - * @returns {Promise} - */ - list(listBucketsRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient.listBuckets(listBucketsRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } - /** - * Trigers the reencryptBucket function of ObjectStorageClient - * @param {ReencryptBucketRequest} reencryptBucketRequest - Data required for reencryptBucket - * @returns {Promise} - */ - reencrypt(reencryptBucketRequest) { - return new Promise((resolve, reject) => { - this._objectStorageClient.reencryptBucket(reencryptBucketRequest) - .then(data => resolve(data)) - .catch(err => reject(err)); - }); - } + /** + * + * @param {module} ocisdk Oracle SDK + * @param {object} params SDK params + * @param {string} clientConfiguration SDK ClientConfiguration + */ + constructor(ocisdk, params, clientConfiguration) { + this._oci = ocisdk._sdkFileName; + this._objectStorageClient = this._oci.ObjectStorageClient( + params, + clientConfiguration + ); + } + /** + * Trigers the createBucket function of ObjectStorageClient + * @param {CreateBucketRequest} createBucketRequest - Data required for createBucket + * @returns {Promise} + */ + create(createBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient + .createBucket(createBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the deleteBucket function of ObjectStorageClient + * @param {DeleteBucketRequest} deleteBucketRequest - Data required for deleteBucket + * @returns {Promise} + */ + delete(deleteBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient + .deleteBucket(deleteBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the getBucket function of ObjectStorageClient + * @param {GetBucketRequest} getBucketRequest - Data required for getBucket + * @returns {Promise} + */ + get(getBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient + .getBucket(getBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the listBuckets function of ObjectStorageClient + * @param {ListBucketsRequest} listBucketsRequest - Data required for listBuckets + * @returns {Promise} + */ + list(listBucketsRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient + .listBuckets(listBucketsRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } + /** + * Trigers the reencryptBucket function of ObjectStorageClient + * @param {ReencryptBucketRequest} reencryptBucketRequest - Data required for reencryptBucket + * @returns {Promise} + */ + reencrypt(reencryptBucketRequest) { + return new Promise((resolve, reject) => { + this._objectStorageClient + .reencryptBucket(reencryptBucketRequest) + .then(data => resolve(data)) + .catch(err => reject(err)); + }); + } } module.exports = Oracle_StorageBucket;