From 1d7c8917d58f38513443bd0bff78398bb4ffbc51 Mon Sep 17 00:00:00 2001 From: Jorge Cortes Date: Tue, 8 Apr 2025 11:09:38 -0500 Subject: [PATCH] [Components] oracle_cloud_infrastructure - new components --- .../create-update-object.mjs | 79 +++++ .../actions/delete-object/delete-object.mjs | 71 +++++ .../common/constants.mjs | 24 ++ .../oracle_cloud_infrastructure.app.mjs | 221 +++++++++++++- .../oracle_cloud_infrastructure/package.json | 15 +- .../sources/common/events.mjs | 25 ++ .../sources/common/webhook.mjs | 239 +++++++++++++++ ...ew-autonomous-database-created-instant.mjs | 33 +++ .../new-instance-state-change-instant.mjs | 62 ++++ .../new-object-storage-object-instant.mjs | 78 +++++ pnpm-lock.yaml | 280 +++++++++++++++++- 11 files changed, 1117 insertions(+), 10 deletions(-) create mode 100644 components/oracle_cloud_infrastructure/actions/create-update-object/create-update-object.mjs create mode 100644 components/oracle_cloud_infrastructure/actions/delete-object/delete-object.mjs create mode 100644 components/oracle_cloud_infrastructure/common/constants.mjs create mode 100644 components/oracle_cloud_infrastructure/sources/common/events.mjs create mode 100644 components/oracle_cloud_infrastructure/sources/common/webhook.mjs create mode 100644 components/oracle_cloud_infrastructure/sources/new-autonomous-database-created-instant/new-autonomous-database-created-instant.mjs create mode 100644 components/oracle_cloud_infrastructure/sources/new-instance-state-change-instant/new-instance-state-change-instant.mjs create mode 100644 components/oracle_cloud_infrastructure/sources/new-object-storage-object-instant/new-object-storage-object-instant.mjs diff --git a/components/oracle_cloud_infrastructure/actions/create-update-object/create-update-object.mjs b/components/oracle_cloud_infrastructure/actions/create-update-object/create-update-object.mjs new file mode 100644 index 0000000000000..a1fba2c08ea31 --- /dev/null +++ b/components/oracle_cloud_infrastructure/actions/create-update-object/create-update-object.mjs @@ -0,0 +1,79 @@ +import app from "../../oracle_cloud_infrastructure.app.mjs"; + +export default { + key: "oracle_cloud_infrastructure-create-update-object", + name: "Create Or Update Object", + description: "Create or update an object in a specified Oracle Cloud Infrastructure Object Storage bucket. [See the documentation](https://docs.oracle.com/en-us/iaas/api/#/en/objectstorage/20160918/Object/PutObject).", + version: "0.0.1", + type: "action", + props: { + app, + compartmentId: { + propDefinition: [ + app, + "compartmentId", + ], + }, + bucketName: { + propDefinition: [ + app, + "bucketName", + ({ compartmentId }) => ({ + compartmentId, + }), + ], + }, + objectName: { + propDefinition: [ + app, + "objectName", + ({ + compartmentId, + bucketName, + }) => ({ + compartmentId, + bucketName, + }), + ], + }, + putObjectBody: { + propDefinition: [ + app, + "putObjectBody", + ], + }, + }, + methods: { + putObject(args = {}) { + return this.app.makeRequest({ + getClient: this.app.getObjectStorageClient, + method: "putObject", + ...args, + }); + }, + }, + async run({ $ }) { + const { + app, + compartmentId, + putObject, + bucketName, + objectName, + putObjectBody, + } = this; + + const { value: namespaceName } = await app.getNamespace({ + compartmentId, + }); + + const response = await putObject({ + namespaceName, + bucketName, + objectName, + putObjectBody, + }); + + $.export("$summary", `Successfully created/updated object with client request ID \`${response.opcRequestId}\`.`); + return response; + }, +}; diff --git a/components/oracle_cloud_infrastructure/actions/delete-object/delete-object.mjs b/components/oracle_cloud_infrastructure/actions/delete-object/delete-object.mjs new file mode 100644 index 0000000000000..d637fbc1e59c9 --- /dev/null +++ b/components/oracle_cloud_infrastructure/actions/delete-object/delete-object.mjs @@ -0,0 +1,71 @@ +import app from "../../oracle_cloud_infrastructure.app.mjs"; + +export default { + key: "oracle_cloud_infrastructure-delete-object", + name: "Delete Object", + description: "Delete an object from a specified Oracle Cloud Infrastructure Object Storage bucket. [See the documentation](https://docs.oracle.com/en-us/iaas/api/#/en/objectstorage/20160918/Object/DeleteObject).", + version: "0.0.1", + type: "action", + props: { + app, + compartmentId: { + propDefinition: [ + app, + "compartmentId", + ], + }, + bucketName: { + propDefinition: [ + app, + "bucketName", + ({ compartmentId }) => ({ + compartmentId, + }), + ], + }, + objectName: { + propDefinition: [ + app, + "objectName", + ({ + compartmentId, + bucketName, + }) => ({ + compartmentId, + bucketName, + }), + ], + }, + }, + methods: { + deleteObject(args = {}) { + return this.app.makeRequest({ + getClient: this.app.getObjectStorageClient, + method: "deleteObject", + ...args, + }); + }, + }, + async run({ $ }) { + const { + app, + deleteObject, + compartmentId, + bucketName, + objectName, + } = this; + + const { value: namespaceName } = await app.getNamespace({ + compartmentId, + }); + + const response = await deleteObject({ + namespaceName, + bucketName, + objectName, + }); + + $.export("$summary", `Successfully deleted object with client request ID \`${response.opcRequestId}\`.`); + return response; + }, +}; diff --git a/components/oracle_cloud_infrastructure/common/constants.mjs b/components/oracle_cloud_infrastructure/common/constants.mjs new file mode 100644 index 0000000000000..2d3eef2ab31a5 --- /dev/null +++ b/components/oracle_cloud_infrastructure/common/constants.mjs @@ -0,0 +1,24 @@ +const REGION_PLACEHOLDER = "{region}"; + +const API = { + OBJECT_STORAGE: { + ENDPOINT: `https://objectstorage.${REGION_PLACEHOLDER}.oraclecloud.com`, + VERSION_PATH: "", + }, + NOTIFICATIONS: { + ENDPOINT: `https://notification.${REGION_PLACEHOLDER}.oci.oraclecloud.com`, + VERSION_PATH: "/20181201", + }, +}; + +const TOPIC_ID = "topicId"; +const SUBSCRIPTION_ID = "subscriptionId"; +const RULE_ID = "ruleId"; + +export default { + REGION_PLACEHOLDER, + API, + TOPIC_ID, + SUBSCRIPTION_ID, + RULE_ID, +}; diff --git a/components/oracle_cloud_infrastructure/oracle_cloud_infrastructure.app.mjs b/components/oracle_cloud_infrastructure/oracle_cloud_infrastructure.app.mjs index 001f007c40770..15840ccca0b64 100644 --- a/components/oracle_cloud_infrastructure/oracle_cloud_infrastructure.app.mjs +++ b/components/oracle_cloud_infrastructure/oracle_cloud_infrastructure.app.mjs @@ -1,11 +1,224 @@ +import ociCommon from "oci-common"; +import ociCore from "oci-core"; +import ociObjectStorage from "oci-objectstorage"; +import ociDataCatalog from "oci-datacatalog"; +import ociIdentity from "oci-identity"; +import { createLogger } from "bunyan"; + +ociCommon.LOG.logger = createLogger({ + name: "Pipedream", + level: "error", +}); + export default { type: "app", app: "oracle_cloud_infrastructure", - propDefinitions: {}, + propDefinitions: { + compartmentId: { + type: "string", + label: "Compartment ID", + description: "The OCID of the compartment in Oracle Cloud Infrastructure.", + async options() { + const compartmentId = this.getCompartmentId(); + const { items } = await this.listCompartments({ + compartmentId, + }); + const options = items.map(({ + id: value, + name: label, + }) => ({ + label, + value, + })); + return [ + { + label: "root", + value: compartmentId, + }, + ...options, + ]; + }, + }, + namespaceName: { + type: "string", + label: "Namespace Name", + description: "The name of the namespace in Oracle Cloud Infrastructure Object Storage.", + async options({ catalogId }) { + const { namespaceCollection: { items } } = await this.listNamespaces({ + catalogId, + }); + return items.map(({ + key: value, + displayName: label, + }) => ({ + label, + value, + })); + }, + }, + bucketName: { + type: "string", + label: "Bucket Name", + description: "The name of the bucket in Oracle Cloud Infrastructure Object Storage.", + async options({ compartmentId }) { + const { value: namespaceName } = await this.getNamespace({ + compartmentId, + }); + + const { items } = await this.listBuckets({ + compartmentId, + namespaceName, + }); + return items.map(({ name }) => name); + }, + }, + objectName: { + type: "string", + label: "Object Name", + description: "The name of the object in Oracle Cloud Infrastructure Object Storage.", + async options({ + compartmentId, + bucketName, + }) { + const { value: namespaceName } = await this.getNamespace({ + compartmentId, + }); + + const { listObjects: { objects } } = await this.listObjects({ + namespaceName, + bucketName, + }); + + return objects?.map(({ name }) => name); + }, + }, + putObjectBody: { + type: "string", + label: "Content", + description: "The content of the object to upload to Oracle Cloud Infrastructure Object Storage.", + }, + instanceId: { + type: "string", + label: "Instance ID", + description: "The OCID of the instance in Oracle Cloud Infrastructure.", + async options({ compartmentId }) { + const { items } = await this.listInstances({ + compartmentId: compartmentId || this.getCompartmentId(), + }); + return items.map(({ + id: value, + displayName: label, + }) => ({ + label, + value, + })); + }, + }, + }, methods: { - // this.$auth contains connected account data - authKeys() { - console.log(Object.keys(this.$auth)); + getCompartmentId() { + return this.$auth.tenancy_id; + }, + getProvider() { + const { + tenancy_id: tenancyId, + user_id: userId, + fingerprint, + private_key: privateKey, + region, + passphrase = null, + } = this.$auth; + return new ociCommon.SimpleAuthenticationDetailsProvider( + tenancyId, + userId, + fingerprint, + privateKey, + passphrase, + ociCommon.Region.fromRegionId(region), + ); + }, + initClient(clientClass) { + const provider = this.getProvider(); + return new clientClass({ + authenticationDetailsProvider: provider, + }); + }, + getObjectStorageClient() { + return this.initClient(ociObjectStorage.ObjectStorageClient); + }, + getDataCatalogClient() { + return this.initClient(ociDataCatalog.DataCatalogClient); + }, + getIdentityClient() { + return this.initClient(ociIdentity.IdentityClient); + }, + getComputeClient() { + return this.initClient(ociCore.ComputeClient); + }, + async makeRequest({ + getClient, + method, + ...args + }) { + const client = getClient(); + try { + const response = await client[method](args); + client.close && client.close(); + return response; + + } catch (error) { + console.log(`Error in ${method}:`, error); + throw error; + } + }, + listCompartments(args = {}) { + return this.makeRequest({ + getClient: this.getIdentityClient, + method: "listCompartments", + ...args, + }); + }, + listNamespaces(args = {}) { + return this.makeRequest({ + getClient: this.getDataCatalogClient, + method: "listNamespaces", + ...args, + }); + }, + listBuckets(args = {}) { + return this.makeRequest({ + getClient: this.getObjectStorageClient, + method: "listBuckets", + ...args, + }); + }, + listObjects(args = {}) { + return this.makeRequest({ + getClient: this.getObjectStorageClient, + method: "listObjects", + ...args, + }); + }, + getNamespace(args = {}) { + return this.makeRequest({ + getClient: this.getObjectStorageClient, + method: "getNamespace", + ...args, + }); + }, + updateBucket(args = {}) { + return this.makeRequest({ + getClient: this.getObjectStorageClient, + method: "updateBucket", + ...args, + }); + }, + listInstances(args = {}) { + return this.makeRequest({ + getClient: this.getComputeClient, + method: "listInstances", + ...args, + }); }, }, }; diff --git a/components/oracle_cloud_infrastructure/package.json b/components/oracle_cloud_infrastructure/package.json index fc671b09f833b..4ac83aacbc9a1 100644 --- a/components/oracle_cloud_infrastructure/package.json +++ b/components/oracle_cloud_infrastructure/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/oracle_cloud_infrastructure", - "version": "0.0.1", + "version": "0.1.0", "description": "Pipedream Oracle Cloud Infrastructure Components", "main": "oracle_cloud_infrastructure.app.mjs", "keywords": [ @@ -11,5 +11,16 @@ "author": "Pipedream (https://pipedream.com/)", "publishConfig": { "access": "public" + }, + "dependencies": { + "@pipedream/platform": "^3.0.3", + "bunyan": "^1.8.15", + "oci-common": "^2.106.2", + "oci-core": "^2.106.2", + "oci-datacatalog": "^2.106.2", + "oci-events": "^2.106.2", + "oci-identity": "^2.106.2", + "oci-objectstorage": "^2.106.2", + "oci-ons": "^2.106.2" } -} \ No newline at end of file +} diff --git a/components/oracle_cloud_infrastructure/sources/common/events.mjs b/components/oracle_cloud_infrastructure/sources/common/events.mjs new file mode 100644 index 0000000000000..43445cef240bf --- /dev/null +++ b/components/oracle_cloud_infrastructure/sources/common/events.mjs @@ -0,0 +1,25 @@ +export default { + DATABASE: { + AUTONOMOUS_DATABASE_CREATE_END: "com.oraclecloud.databaseservice.autonomous.database.instance.create.end", + }, + COMPUTE: { + INSTANCE_ACTION_BEGIN: "com.oraclecloud.computeapi.instanceaction.begin", + INSTANCE_ACTION_END: "com.oraclecloud.computeapi.instanceaction.end", + CHANGE_INSTANCE_COMPARTMENT_BEGIN: "com.oraclecloud.computeapi.changeinstancecompartment.begin", + CHANGE_INSTANCE_COMPARTMENT_END: "com.oraclecloud.computeapi.changeinstancecompartment.end", + INSTANCE_FAILED: "com.oraclecloud.computeapi.instancefailed", + LAUNCH_INSTANCE_BEGIN: "com.oraclecloud.computeapi.launchinstance.begin", + LAUNCH_INSTANCE_END: "com.oraclecloud.computeapi.launchinstance.end", + LIVE_MIGRATE_BEGIN: "com.oraclecloud.computeapi.livemigrate.begin", + LIVE_MIGRATE_END: "com.oraclecloud.computeapi.livemigrate.end", + INSTANCE_PREEMPTION_ACTION: "com.oraclecloud.computeapi.instancepreemptionaction", + SCHEDULE_MAINTENANCE: "com.oraclecloud.computeapi.schedulemaintenance", + TERMINATE_INSTANCE_BEGIN: "com.oraclecloud.computeapi.terminateinstance.begin", + TERMINATE_INSTANCE_END: "com.oraclecloud.computeapi.terminateinstance.end", + UPDATE_INSTANCE_BEGIN: "com.oraclecloud.computeapi.updateinstance.begin", + UPDATE_INSTANCE_END: "com.oraclecloud.computeapi.updateinstance.end", + }, + OBJECT_STORAGE: { + CREATE_OBJECT: "com.oraclecloud.objectstorage.createobject", + }, +}; diff --git a/components/oracle_cloud_infrastructure/sources/common/webhook.mjs b/components/oracle_cloud_infrastructure/sources/common/webhook.mjs new file mode 100644 index 0000000000000..b222bd78a6330 --- /dev/null +++ b/components/oracle_cloud_infrastructure/sources/common/webhook.mjs @@ -0,0 +1,239 @@ +import ociOns from "oci-ons"; +import ociEvents from "oci-events"; +import { ConfigurationError } from "@pipedream/platform"; +import app from "../../oracle_cloud_infrastructure.app.mjs"; +import constants from "../../common/constants.mjs"; + +export default { + props: { + app, + db: "$.service.db", + http: "$.interface.http", + compartmentId: { + propDefinition: [ + app, + "compartmentId", + ], + }, + }, + hooks: { + async activate() { + const { + http: { endpoint }, + compartmentId, + getTopicName, + getCondition, + setTopicId, + setSubscriptionId, + setRuleId, + createTopic, + deleteTopic, + createSubscription, + deleteSubscription, + createRule, + } = this; + + let subscriptionResponse; + + const { notificationTopic: { topicId } } = await createTopic({ + createTopicDetails: { + compartmentId, + name: getTopicName(), + }, + }); + + setTopicId(topicId); + + try { + subscriptionResponse = await createSubscription({ + createSubscriptionDetails: { + topicId, + compartmentId, + protocol: "CUSTOM_HTTPS", + endpoint, + }, + }); + } catch (error) { + await deleteTopic({ + topicId, + }); + } + + const { subscription: { id: subscriptionId } } = subscriptionResponse; + setSubscriptionId(subscriptionId); + + try { + const { rule: { id: ruleId } } = await createRule({ + createRuleDetails: { + compartmentId, + displayName: getTopicName(), + isEnabled: true, + condition: getCondition(), + actions: { + actions: [ + { + isEnabled: true, + actionType: "ONS", + topicId, + }, + ], + }, + }, + }); + setRuleId(ruleId); + + } catch (error) { + await deleteSubscription({ + subscriptionId, + }); + await deleteTopic({ + topicId, + }); + } + }, + async deactivate() { + const { + getTopicId, + getSubscriptionId, + getRuleId, + deleteTopic, + deleteSubscription, + deleteRule, + } = this; + + const topicId = getTopicId(); + const subscriptionId = getSubscriptionId(); + const ruleId = getRuleId(); + + if (ruleId) { + await deleteRule({ + ruleId, + }); + } + if (subscriptionId) { + await deleteSubscription({ + subscriptionId, + }); + } + if (topicId) { + await deleteTopic({ + topicId, + }); + } + }, + }, + methods: { + getNotificationControlPlaneClient() { + return this.app.initClient(ociOns.NotificationControlPlaneClient); + }, + getNotificationDataPlaneClient() { + return this.app.initClient(ociOns.NotificationDataPlaneClient); + }, + getEventsClient() { + return this.app.initClient(ociEvents.EventsClient); + }, + setTopicId(value) { + this.db.set(constants.TOPIC_ID, value); + }, + getTopicId() { + return this.db.get(constants.TOPIC_ID); + }, + setSubscriptionId(value) { + this.db.set(constants.SUBSCRIPTION_ID, value); + }, + getSubscriptionId() { + return this.db.get(constants.SUBSCRIPTION_ID); + }, + setRuleId(value) { + this.db.set(constants.RULE_ID, value); + }, + getRuleId() { + return this.db.get(constants.RULE_ID); + }, + generateMeta() { + throw new ConfigurationError("generateMeta is not implemented"); + }, + getTopicName() { + throw new ConfigurationError("getTopicName is not implemented"); + }, + getCondition() { + throw new ConfigurationError("getCondition is not implemented"); + }, + processResource(resource) { + this.$emit(resource, this.generateMeta(resource)); + }, + createTopic(args = {}) { + return this.app.makeRequest({ + getClient: this.getNotificationControlPlaneClient, + method: "createTopic", + ...args, + }); + }, + deleteTopic(args = {}) { + return this.app.makeRequest({ + getClient: this.getNotificationControlPlaneClient, + method: "deleteTopic", + ...args, + }); + }, + createSubscription(args = {}) { + return this.app.makeRequest({ + getClient: this.getNotificationDataPlaneClient, + method: "createSubscription", + ...args, + }); + }, + deleteSubscription(args = {}) { + return this.app.makeRequest({ + getClient: this.getNotificationDataPlaneClient, + method: "deleteSubscription", + ...args, + }); + }, + getConfirmSubscription(args = {}) { + return this.app.makeRequest({ + getClient: this.getNotificationDataPlaneClient, + method: "getConfirmSubscription", + ...args, + }); + }, + createRule(args = {}) { + return this.app.makeRequest({ + getClient: this.getEventsClient, + method: "createRule", + ...args, + }); + }, + deleteRule(args = {}) { + return this.app.makeRequest({ + getClient: this.getEventsClient, + method: "deleteRule", + ...args, + }); + }, + }, + async run({ + body, headers, + }) { + const { + getConfirmSubscription, + processResource, + } = this; + + if (body.ConfirmationURL) { + const subscriptionId = headers["x-oci-ns-subscriptionid"];; + const { searchParams } = new URL(body.ConfirmationURL); + + const { confirmationResult: { message } } = await getConfirmSubscription({ + id: subscriptionId, + token: searchParams.get("token"), + protocol: "CUSTOM_HTTPS", + }); + + console.log(`Confirmation message: ${message}`); + return; + } + + processResource(body); + }, +}; diff --git a/components/oracle_cloud_infrastructure/sources/new-autonomous-database-created-instant/new-autonomous-database-created-instant.mjs b/components/oracle_cloud_infrastructure/sources/new-autonomous-database-created-instant/new-autonomous-database-created-instant.mjs new file mode 100644 index 0000000000000..0cd3b1b379b0f --- /dev/null +++ b/components/oracle_cloud_infrastructure/sources/new-autonomous-database-created-instant/new-autonomous-database-created-instant.mjs @@ -0,0 +1,33 @@ +import common from "../common/webhook.mjs"; +import events from "../common/events.mjs"; + +export default { + ...common, + key: "oracle_cloud_infrastructure-new-autonomous-database-created-instant", + name: "New Autonomous Database Created (Instant)", + description: "Emit new event when a new autonomous database is created in a specified compartment. [See the documentation](https://docs.oracle.com/en-us/iaas/api/#/en/events/20181201/Rule/CreateRule).", + version: "0.0.1", + type: "source", + dedupe: "unique", + methods: { + ...common.methods, + getTopicName() { + return `new-autonomous-database-created-${Date.now()}`; + }, + // https://docs.oracle.com/en-us/iaas/Content/Events/Concepts/filterevents.htm + getCondition() { + return JSON.stringify({ + eventType: [ + events.DATABASE.AUTONOMOUS_DATABASE_CREATE_END, + ], + }); + }, + generateMeta(resource) { + return { + id: resource.eventID, + summary: `New Autonomous Database: ${resource.data?.resourceName}`, + ts: Date.parse(resource.eventTime), + }; + }, + }, +}; diff --git a/components/oracle_cloud_infrastructure/sources/new-instance-state-change-instant/new-instance-state-change-instant.mjs b/components/oracle_cloud_infrastructure/sources/new-instance-state-change-instant/new-instance-state-change-instant.mjs new file mode 100644 index 0000000000000..8933ca8819d80 --- /dev/null +++ b/components/oracle_cloud_infrastructure/sources/new-instance-state-change-instant/new-instance-state-change-instant.mjs @@ -0,0 +1,62 @@ +import common from "../common/webhook.mjs"; +import events from "../common/events.mjs"; + +export default { + ...common, + key: "oracle_cloud_infrastructure-new-instance-state-change-instant", + name: "New Instance State Change (Instant)", + description: "Emit new event when a compute instance changes state (e.g., from stopped to running). This requires instance OCID and proper event rules set up in Oracle Cloud Infrastructure. [See the documentation](https://docs.oracle.com/en-us/iaas/api/#/en/events/20181201/Rule/CreateRule).", + version: "0.0.1", + type: "source", + dedupe: "unique", + props: { + ...common.props, + instanceId: { + propDefinition: [ + common.props.app, + "instanceId", + ({ compartmentId }) => ({ + compartmentId, + }), + ], + }, + }, + methods: { + ...common.methods, + getTopicName() { + return `new-instance-state-change-${Date.now()}`; + }, + // https://docs.oracle.com/en-us/iaas/Content/Events/Concepts/filterevents.htm + getCondition() { + return JSON.stringify({ + eventType: [ + events.COMPUTE.INSTANCE_ACTION_BEGIN, + events.COMPUTE.INSTANCE_ACTION_END, + events.COMPUTE.CHANGE_INSTANCE_COMPARTMENT_BEGIN, + events.COMPUTE.CHANGE_INSTANCE_COMPARTMENT_END, + events.COMPUTE.INSTANCE_FAILED, + events.COMPUTE.LAUNCH_INSTANCE_BEGIN, + events.COMPUTE.LAUNCH_INSTANCE_END, + events.COMPUTE.LIVE_MIGRATE_BEGIN, + events.COMPUTE.LIVE_MIGRATE_END, + events.COMPUTE.INSTANCE_PREEMPTION_ACTION, + events.COMPUTE.SCHEDULE_MAINTENANCE, + events.COMPUTE.TERMINATE_INSTANCE_BEGIN, + events.COMPUTE.TERMINATE_INSTANCE_END, + events.COMPUTE.UPDATE_INSTANCE_BEGIN, + events.COMPUTE.UPDATE_INSTANCE_END, + ], + data: { + resourceId: this.instanceId, + }, + }); + }, + generateMeta(resource) { + return { + id: resource.eventID, + summary: `Instance state changed: ${resource.data?.resourceName}`, + ts: Date.parse(resource.eventTime), + }; + }, + }, +}; diff --git a/components/oracle_cloud_infrastructure/sources/new-object-storage-object-instant/new-object-storage-object-instant.mjs b/components/oracle_cloud_infrastructure/sources/new-object-storage-object-instant/new-object-storage-object-instant.mjs new file mode 100644 index 0000000000000..ba82619662554 --- /dev/null +++ b/components/oracle_cloud_infrastructure/sources/new-object-storage-object-instant/new-object-storage-object-instant.mjs @@ -0,0 +1,78 @@ +import common from "../common/webhook.mjs"; +import events from "../common/events.mjs"; + +export default { + ...common, + key: "oracle_cloud_infrastructure-new-object-storage-object-instant", + name: "New Object Storage Object (Instant)", + description: "Emit new event when a new object is uploaded to a specified Oracle Cloud Infrastructure Object Storage bucket. [See the documentation](https://docs.oracle.com/en-us/iaas/api/#/en/events/20181201/Rule/CreateRule).", + version: "0.0.1", + type: "source", + dedupe: "unique", + hooks: { + ...common.hooks, + async deploy() { + const { + app, + compartmentId, + bucketName, + } = this; + + const { value: namespaceName } = await app.getNamespace({ + compartmentId, + }); + + await app.updateBucket({ + namespaceName, + bucketName, + updateBucketDetails: { + objectEventsEnabled: true, + }, + }); + }, + }, + props: { + ...common.props, + // eslint-disable-next-line pipedream/props-label, pipedream/props-description + info: { + type: "alert", + alertType: "info", + content: "To emit events for object state changes, enable Emit Object Events on the bucket details page. [Learn more](https://docs.oracle.com/en-us/iaas/Content/Object/Tasks/managingbuckets_topic-To_enable_or_disable_emitting_events_for_object_state_changes.htm#top).", + }, + bucketName: { + propDefinition: [ + common.props.app, + "bucketName", + ({ compartmentId }) => ({ + compartmentId, + }), + ], + }, + }, + methods: { + ...common.methods, + getTopicName() { + return `new-object-storage-${Date.now()}`; + }, + // https://docs.oracle.com/en-us/iaas/Content/Events/Concepts/filterevents.htm + getCondition() { + return JSON.stringify({ + eventType: [ + events.OBJECT_STORAGE.CREATE_OBJECT, + ], + data: { + additionalDetails: { + bucketName: this.bucketName, + }, + }, + }); + }, + generateMeta(resource) { + return { + id: resource.eventID, + summary: `New Object: ${resource.data?.resourceName}`, + ts: Date.parse(resource.eventTime), + }; + }, + }, +}; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 371d148f83508..354908d9e9e70 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9004,7 +9004,35 @@ importers: components/optimoroute: {} - components/oracle_cloud_infrastructure: {} + components/oracle_cloud_infrastructure: + dependencies: + '@pipedream/platform': + specifier: ^3.0.3 + version: 3.0.3 + bunyan: + specifier: ^1.8.15 + version: 1.8.15 + oci-common: + specifier: ^2.106.2 + version: 2.106.2 + oci-core: + specifier: ^2.106.2 + version: 2.106.2 + oci-datacatalog: + specifier: ^2.106.2 + version: 2.106.2 + oci-events: + specifier: ^2.106.2 + version: 2.106.2 + oci-identity: + specifier: ^2.106.2 + version: 2.106.2 + oci-objectstorage: + specifier: ^2.106.2 + version: 2.106.2 + oci-ons: + specifier: ^2.106.2 + version: 2.106.2 components/orbisx: {} @@ -19762,6 +19790,9 @@ packages: '@types/is-stream@1.1.0': resolution: {integrity: sha512-jkZatu4QVbR60mpIzjINmtS1ZF4a/FqdTUTBeQDVOQ2PYyidtwFKr0B5G6ERukKwliq+7mIXvxyppwzG5EgRYg==} + '@types/isomorphic-fetch@0.0.35': + resolution: {integrity: sha512-DaZNUvLDCAnCTjgwxgiL1eQdxIKEpNLOlTNtAgnZc50bG2copGhRrFN9/PxPBuJe+tZVLCbQ7ls0xveXVRPkvw==} + '@types/istanbul-lib-coverage@2.0.6': resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} @@ -19783,9 +19814,15 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + '@types/jsonwebtoken@9.0.0': + resolution: {integrity: sha512-mM4TkDpA9oixqg1Fv2vVpOFyIVLJjm5x4k0V+K/rEsizfjD7Tk7LKk3GTtbB7KCfP0FEHQtsZqFxYA0+sijNVg==} + '@types/jsonwebtoken@9.0.7': resolution: {integrity: sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==} + '@types/jssha@2.0.0': + resolution: {integrity: sha512-oBnY3csYnXfqZXDRBJwP1nDDJCW/+VMJ88UHT4DCy0deSXpJIQvMCwYlnmdW4M+u7PiSfQc44LmiFcUbJ8hLEw==} + '@types/katex@0.16.7': resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} @@ -19867,6 +19904,9 @@ packages: '@types/object-hash@2.2.1': resolution: {integrity: sha512-i/rtaJFCsPljrZvP/akBqEwUP2y5cZLOmvO+JaYnz01aPknrQ+hB5MRcO7iqCUsFaYfTG8kGfKUyboA07xeDHQ==} + '@types/opossum@4.1.1': + resolution: {integrity: sha512-9TMnd8AWRVtnZMqBbbzceQoJdafErgUViogFaQ3eetsbeLtiFFZ695mepNaLtlfJi4uRP3GmHfe3CJ2DZKaxYA==} + '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -19922,6 +19962,9 @@ packages: resolution: {integrity: sha512-LrnsgZIfJaysFkv9rRJp4/uAyqw87oVed3s1hhF83nwbo9c7MG9g5DqR0seHP+lkX4ldmMrVolPjQSe2ZfD0yA==} deprecated: This is a stub types definition for source-map (https://github.com/mozilla/source-map). source-map provides its own type definitions, so you don't need @types/source-map installed! + '@types/sshpk@1.10.3': + resolution: {integrity: sha512-cru1waDhHZnZuB18E6Dgf2UXf8U93mdOEDcKYe5jTri+fpucidSs7DLmGICpLxN+95aYkwtgeyny9fBFzQVdmA==} + '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -20444,6 +20487,9 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} + await-semaphore@0.1.3: + resolution: {integrity: sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q==} + aws-crt@1.25.0: resolution: {integrity: sha512-ub+qGxT80qBJQV8Z4WMq083mcHc9fRlazXPT86sX4N+mZctZfLLkYWwgbR3cKItAwLSiCTpqaEga5uBBzunQVw==} @@ -20743,6 +20789,11 @@ packages: peerDependencies: esbuild: '>=0.18' + bunyan@1.8.15: + resolution: {integrity: sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==} + engines: {'0': node >=0.10.0} + hasBin: true + busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} @@ -21929,6 +21980,10 @@ packages: peerDependencies: '@types/node-fetch': ^2.5.7 + dtrace-provider@0.8.8: + resolution: {integrity: sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==} + engines: {node: '>=0.10'} + dts-critic@3.3.11: resolution: {integrity: sha512-HMO2f9AO7ge44YO8OK18f+cxm/IaE1CFuyNFbfJRCEbyazWj5X5wWDF6W4CGdo5Ax0ILYVfJ7L/rOwuUN1fzWw==} engines: {node: '>=10.17.0'} @@ -22130,6 +22185,9 @@ packages: es6-promise@3.3.1: resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} + es6-promise@4.2.6: + resolution: {integrity: sha512-aRVgGdnmW2OiySVPUC9e6m+plolMAJKjZnQlCwNSuK5yQ0JN61DZSO1X1Ufd1foqWRAlig0rhduTCHe7sVtK5Q==} + es6-symbol@3.1.4: resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} engines: {node: '>=0.12'} @@ -23077,6 +23135,10 @@ packages: engines: {node: 20 || >=22} hasBin: true + glob@6.0.4: + resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==} + deprecated: Glob versions prior to v9 are no longer supported + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -23511,6 +23573,10 @@ packages: resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} engines: {node: '>=0.8', npm: '>=1.3.7'} + http-signature@1.3.1: + resolution: {integrity: sha512-Y29YKEc8MQsjch/VzkUVJ+2MXd9WcR42fK5u36CZf4G8bXw2DXMTWuESiB0R6m59JAWxlPPw5/Fri/t/AyyueA==} + engines: {node: '>=0.10'} + http2-client@1.3.5: resolution: {integrity: sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==} @@ -24391,6 +24457,10 @@ packages: resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} engines: {node: '>=0.6.0'} + jssha@2.4.1: + resolution: {integrity: sha512-77DN1YurYgh+7FPCTJ2CQ6hVDHgIWiHxm4Y5/mAdnpETKYagX22pVWMz4xfKF5fcpNfMaztgVj+/B1bt2k23Eg==} + deprecated: jsSHA versions < 3.0.0 will no longer receive feature updates + jssha@3.3.1: resolution: {integrity: sha512-VCMZj12FCFMQYcFLPRm/0lOBbLi8uM2BhXPTqw3U4YAfs4AZfiApOoBLoN8cQE60Z50m1MYMTQVCfgF/KaCVhQ==} @@ -25425,6 +25495,10 @@ packages: mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + mv@2.1.1: + resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==} + engines: {node: '>=0.8.0'} + mysql2-promise@0.1.4: resolution: {integrity: sha512-/h8ubU/36aIPpbfB6CENw9ZdbzIhZMZOIbstJUHVKp4J9JBRSLScrYImVx+3yZilgag732UhpQMMK5+ktdhLCw==} engines: {node: '>=0.10.0'} @@ -25474,6 +25548,10 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + ncp@2.0.0: + resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==} + hasBin: true + nearley@2.20.1: resolution: {integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==} hasBin: true @@ -25809,6 +25887,30 @@ packages: obliterator@1.6.1: resolution: {integrity: sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==} + oci-common@2.106.2: + resolution: {integrity: sha512-hM9yq5NTdJt6iVDjd5NBwBeM3N5LvWoCvQo6huJnVPwtBDutDOIvxaH7rs2G+52jxmnIsUwuA0eTDu/lqQC2KA==} + + oci-core@2.106.2: + resolution: {integrity: sha512-Remt/LckYAbquhT18XOWBFDZsJG0gjKhK60T8voEQg3gaWXYxGB/87ppYHaGI2ecyPAqWq9SHFosLkJukLmGdQ==} + + oci-datacatalog@2.106.2: + resolution: {integrity: sha512-TpOBA/fzDOE0BRjDHE0Oz2sSaquEPsWZFFiihSUMIU8nsartqELvp4ZYeDyFgERZX9mQSCxeor3amja52oGooQ==} + + oci-events@2.106.2: + resolution: {integrity: sha512-vMGP+oZyI3+IEtlhvpqrKJs50vQdY4+XFI9d18N8GEPeiiZm4GGHQSRJ7gvlZjh0LsMaBy6EcxXtF6CRzvVUvg==} + + oci-identity@2.106.2: + resolution: {integrity: sha512-T8No8HH9pt5dS5ODZegfAlzm3b5oDbyF/cpuLseeO3zq1H2lOKFbsCisCxZ+JjnVCAWLOdmJgZ+1xoKWaAAhZw==} + + oci-objectstorage@2.106.2: + resolution: {integrity: sha512-fIclqkAQT2GUV5I2IdHevdAUEDFgFZdQYfcw18BNE3FRrTRQNOX5308nsdUrGSeqiG5vdHwcW/XHe9tl6WtK2w==} + + oci-ons@2.106.2: + resolution: {integrity: sha512-Uj93Gok4R/A+f5rKLGh1N6asDwn940nxTN2kZ66hdXRnEHAbGhPSaNtkPotqmlqVx7jM9R2R+qM8AhY++QNyCQ==} + + oci-workrequests@2.106.2: + resolution: {integrity: sha512-P0Vy8ePolBMa/L5iZkVKtCxjbs253crQREO9Op6t0Eu9dTTO5xPwklKMJ/xlMu9Oszmf5ylDkRdUX8ENGW5NgA==} + omit.js@2.0.2: resolution: {integrity: sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==} @@ -25876,6 +25978,10 @@ packages: opengraph-io@2.0.0: resolution: {integrity: sha512-R0L0zJ6cnUcUnjPKNOAllaQuII0ZfRZhMAwdu0N5fdC48JiceKzD+D/pStg6NpobwXa8aRZIME617gbXMKhp7g==} + opossum@5.0.1: + resolution: {integrity: sha512-iUDUQmFl3RanaBVLMDTZ6WtXj/Hk84pwJ5JWoJaQd1lXGifdApHhszI3biZvdBDdpTERCmB6x+7+uNvzhzVZIg==} + engines: {node: '>= 10'} + optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} @@ -27061,6 +27167,11 @@ packages: rhea@2.0.8: resolution: {integrity: sha512-IgwlP4D2lzinBSll5f35tAWa30dGCZhG9Ujd1DiaB7MUGegIjAaLzqATCw3ha+h9oq9mXcitqayBbNIXYdvtFg==} + rimraf@2.4.5: + resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + rimraf@3.0.2: resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} deprecated: Rimraf versions prior to v4 are no longer supported @@ -27114,6 +27225,9 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-json-stringify@1.2.0: + resolution: {integrity: sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==} + safe-regex-test@1.0.3: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} engines: {node: '>= 0.4'} @@ -27454,6 +27568,11 @@ packages: resolution: {integrity: sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==} engines: {node: '>=10.16.0'} + sshpk@1.16.1: + resolution: {integrity: sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==} + engines: {node: '>=0.10.0'} + hasBin: true + sshpk@1.18.0: resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} engines: {node: '>=0.10.0'} @@ -28526,6 +28645,11 @@ packages: deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. hasBin: true + uuid@3.3.3: + resolution: {integrity: sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + uuid@3.4.0: resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. @@ -34355,8 +34479,6 @@ snapshots: '@putout/operator-filesystem': 5.0.0(putout@36.13.1(eslint@8.57.1)(typescript@5.6.3)) '@putout/operator-json': 2.2.0 putout: 36.13.1(eslint@8.57.1)(typescript@5.6.3) - transitivePeerDependencies: - - supports-color '@putout/operator-regexp@1.0.0(putout@36.13.1(eslint@8.57.1)(typescript@5.6.3))': dependencies: @@ -36236,6 +36358,8 @@ snapshots: dependencies: '@types/node': 20.17.6 + '@types/isomorphic-fetch@0.0.35': {} + '@types/istanbul-lib-coverage@2.0.6': {} '@types/istanbul-lib-report@3.0.3': @@ -36260,10 +36384,16 @@ snapshots: '@types/json5@0.0.29': {} + '@types/jsonwebtoken@9.0.0': + dependencies: + '@types/node': 20.17.6 + '@types/jsonwebtoken@9.0.7': dependencies: '@types/node': 20.17.6 + '@types/jssha@2.0.0': {} + '@types/katex@0.16.7': {} '@types/keyv@3.1.4': @@ -36346,6 +36476,10 @@ snapshots: '@types/object-hash@2.2.1': {} + '@types/opossum@4.1.1': + dependencies: + '@types/node': 20.17.6 + '@types/parse-json@4.0.2': {} '@types/phoenix@1.6.5': {} @@ -36413,6 +36547,10 @@ snapshots: dependencies: source-map: 0.7.4 + '@types/sshpk@1.10.3': + dependencies: + '@types/node': 20.17.6 + '@types/stack-utils@2.0.3': {} '@types/tough-cookie@4.0.5': {} @@ -37023,6 +37161,8 @@ snapshots: dependencies: possible-typed-array-names: 1.0.0 + await-semaphore@0.1.3: {} + aws-crt@1.25.0: dependencies: '@aws-sdk/util-utf8-browser': 3.259.0 @@ -37472,6 +37612,13 @@ snapshots: esbuild: 0.24.2 load-tsconfig: 0.2.5 + bunyan@1.8.15: + optionalDependencies: + dtrace-provider: 0.8.8 + moment: 2.30.1 + mv: 2.1.1 + safe-json-stringify: 1.2.0 + busboy@1.6.0: dependencies: streamsearch: 1.1.0 @@ -38728,6 +38875,11 @@ snapshots: transitivePeerDependencies: - encoding + dtrace-provider@0.8.8: + dependencies: + nan: 2.22.0 + optional: true + dts-critic@3.3.11(typescript@5.7.2): dependencies: '@definitelytyped/header-parser': 0.2.19 @@ -39010,6 +39162,8 @@ snapshots: es6-promise@3.3.1: {} + es6-promise@4.2.6: {} + es6-symbol@3.1.4: dependencies: d: 1.0.2 @@ -40265,6 +40419,15 @@ snapshots: package-json-from-dist: 1.0.1 path-scurry: 2.0.0 + glob@6.0.4: + dependencies: + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + optional: true + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -41020,6 +41183,12 @@ snapshots: jsprim: 1.4.2 sshpk: 1.18.0 + http-signature@1.3.1: + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.18.0 + http2-client@1.3.5: {} http2-wrapper@1.0.3: @@ -42110,7 +42279,7 @@ snapshots: jws: 3.2.2 lodash: 4.17.21 ms: 2.1.3 - semver: 7.6.3 + semver: 7.7.1 jsonwebtoken@9.0.2: dependencies: @@ -42132,6 +42301,8 @@ snapshots: json-schema: 0.4.0 verror: 1.10.0 + jssha@2.4.1: {} + jssha@3.3.1: {} jsx-ast-utils@3.3.5: @@ -43601,6 +43772,13 @@ snapshots: mute-stream@0.0.8: {} + mv@2.1.1: + dependencies: + mkdirp: 0.5.6 + ncp: 2.0.0 + rimraf: 2.4.5 + optional: true + mysql2-promise@0.1.4: dependencies: mysql2: 0.15.8 @@ -43655,6 +43833,9 @@ snapshots: natural-compare@1.4.0: {} + ncp@2.0.0: + optional: true + nearley@2.20.1: dependencies: commander: 2.20.3 @@ -44133,6 +44314,73 @@ snapshots: obliterator@1.6.1: {} + oci-common@2.106.2: + dependencies: + '@types/isomorphic-fetch': 0.0.35 + '@types/jsonwebtoken': 9.0.0 + '@types/jssha': 2.0.0 + '@types/opossum': 4.1.1 + '@types/sshpk': 1.10.3 + es6-promise: 4.2.6 + http-signature: 1.3.1 + isomorphic-fetch: 3.0.0 + jsonwebtoken: 9.0.0 + jssha: 2.4.1 + opossum: 5.0.1 + sshpk: 1.16.1 + uuid: 3.3.3 + transitivePeerDependencies: + - encoding + + oci-core@2.106.2: + dependencies: + oci-common: 2.106.2 + oci-workrequests: 2.106.2 + transitivePeerDependencies: + - encoding + + oci-datacatalog@2.106.2: + dependencies: + oci-common: 2.106.2 + oci-workrequests: 2.106.2 + transitivePeerDependencies: + - encoding + + oci-events@2.106.2: + dependencies: + oci-common: 2.106.2 + oci-workrequests: 2.106.2 + transitivePeerDependencies: + - encoding + + oci-identity@2.106.2: + dependencies: + oci-common: 2.106.2 + oci-workrequests: 2.106.2 + transitivePeerDependencies: + - encoding + + oci-objectstorage@2.106.2: + dependencies: + await-semaphore: 0.1.3 + oci-common: 2.106.2 + oci-workrequests: 2.106.2 + transitivePeerDependencies: + - encoding + + oci-ons@2.106.2: + dependencies: + oci-common: 2.106.2 + oci-workrequests: 2.106.2 + transitivePeerDependencies: + - encoding + + oci-workrequests@2.106.2: + dependencies: + oci-common: 2.106.2 + transitivePeerDependencies: + - encoding + omit.js@2.0.2: {} on-finished@2.4.1: @@ -44212,6 +44460,8 @@ snapshots: request: 2.88.2 request-promise: 4.2.6(request@2.88.2) + opossum@5.0.1: {} + optionator@0.8.3: dependencies: deep-is: 0.1.4 @@ -45980,6 +46230,11 @@ snapshots: transitivePeerDependencies: - supports-color + rimraf@2.4.5: + dependencies: + glob: 6.0.4 + optional: true + rimraf@3.0.2: dependencies: glob: 7.2.3 @@ -46054,6 +46309,9 @@ snapshots: safe-buffer@5.2.1: {} + safe-json-stringify@1.2.0: + optional: true + safe-regex-test@1.0.3: dependencies: call-bind: 1.0.7 @@ -46470,6 +46728,18 @@ snapshots: cpu-features: 0.0.10 nan: 2.22.0 + sshpk@1.16.1: + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + sshpk@1.18.0: dependencies: asn1: 0.2.6 @@ -47767,6 +48037,8 @@ snapshots: uuid@3.3.2: {} + uuid@3.3.3: {} + uuid@3.4.0: {} uuid@8.3.2: {}