UNPKG

genai-bunny-provider

Version:
34 lines 7.5 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.init=void 0;var _utils=require("@strapi/utils"),_axios=_interopRequireDefault(require("axios")),_buffer=require("buffer"),_index=require("./utils/index.js");function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function _regenerator(){function b(a,b,f,g){var h=b&&b.prototype instanceof d?b:d,c=Object.create(h.prototype);return _regeneratorDefine2(c,"_invoke",function(a,b,g){function h(a,b){for(q=a,s=b,e=0;!w&&t&&!c&&e<v.length;e++){var c,f=v[e],g=p.p,h=f[2];3<a?(c=h===b)&&(s=f[(q=f[4])?5:(q=3,3)],f[4]=f[5]=j):f[0]<=g&&((c=2>a&&g<f[1])?(q=0,p.v=b,p.n=f[1]):g<h&&(c=3>a||f[0]>b||b>h)&&(f[4]=a,f[5]=b,p.n=h,q=0))}if(c||1<a)return m;throw w=!0,b}var k,q,s,t=0,v=g||[],w=!1,p={p:0,n:0,v:j,a:h,f:h.bind(j,4),d:function c(a,b){return k=a,q=0,s=j,p.n=b,m}};return function(c,d,f){if(1<t)throw TypeError("Generator is already running");for(w&&1===d&&h(d,f),q=d,s=f;(e=2>q?j:s)||!w;){k||(q?3>q?(1<q&&(p.n=-1),h(q,s)):p.n=s:p.v=s);try{if(t=2,k){if(q||(c="next"),e=k[c]){if(!(e=e.call(k,s)))throw TypeError("iterator result is not an object");if(!e.done)return e;s=e.value,2>q&&(q=0)}else 1===q&&(e=k["return"])&&e.call(k),2>q&&(s=TypeError("The iterator does not provide a '"+c+"' method"),q=1);k=j}else if((e=(w=0>p.n)?s:a.call(b,p))!==m)break}catch(a){k=j,q=1,s=a}finally{t=1}}return{value:e,done:w}}}(a,f,g),!0),c}function d(){}function g(){}function h(){}function i(a){return Object.setPrototypeOf?Object.setPrototypeOf(a,h):(a.__proto__=h,_regeneratorDefine2(a,l,"GeneratorFunction")),a.prototype=Object.create(c),a}/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var j,e,f="function"==typeof Symbol?Symbol:{},k=f.iterator||"@@iterator",l=f.toStringTag||"@@toStringTag",m={};e=Object.getPrototypeOf;var a=[][k]?e(e([][k]())):(_regeneratorDefine2(e={},k,function(){return this}),e),c=h.prototype=d.prototype=Object.create(a);return g.prototype=h,_regeneratorDefine2(c,"constructor",h),_regeneratorDefine2(h,"constructor",g),g.displayName="GeneratorFunction",_regeneratorDefine2(h,l,"GeneratorFunction"),_regeneratorDefine2(c),_regeneratorDefine2(c,l,"Generator"),_regeneratorDefine2(c,k,function(){return this}),_regeneratorDefine2(c,"toString",function(){return"[object Generator]"}),(_regenerator=function a(){return{w:b,m:i}})()}function _regeneratorDefine2(a,b,c,d){var f=Object.defineProperty;try{f({},"",{})}catch(a){f=0}_regeneratorDefine2=function e(a,b,c,d){if(b)f?f(a,b,{value:c,enumerable:!d,configurable:!d,writable:!d}):a[b]=c;else{var g=function d(b,c){_regeneratorDefine2(a,b,function(a){return this._invoke(b,c,a)})};g("next",0),g("throw",1),g("return",2)}},_regeneratorDefine2(a,b,c,d)}function asyncGeneratorStep(b,d,f,e,g,h,a){try{var c=b[h](a),i=c.value}catch(a){return void f(a)}c.done?d(i):Promise.resolve(i).then(e,g)}function _asyncToGenerator(b){return function(){var c=this,d=arguments;return new Promise(function(e,f){function g(a){asyncGeneratorStep(i,e,f,g,h,"next",a)}function h(a){asyncGeneratorStep(i,e,f,g,h,"throw",a)}var i=b.apply(c,d);g(void 0)})}}var bunnyAxios=_axios["default"].create({maxBodyLength:1/0,maxContentLength:1/0}),ApplicationError=_utils.errors.ApplicationError,init=exports.init=function b(a){var c=a.api_key,d=a.storage_zone,e=a.pull_zone,f=a.hostname,g=a.upload_path;if(!c||!d||!e||!f)throw new ApplicationError("BUNNY_API_KEY, BUNNY_HOSTNAME, BUNNY_STORAGE_ZONE or BUNNY_PULL_ZONE can't be null or undefined.");/** * Uploads a file to Bunny CDN. * * @param {Object} file - The file object to upload. * @param {Buffer|Stream} file.stream - The file data as a stream or buffer. * @param {string} file.hash - The hash of the file. * @param {string} file.ext - The file extension. * @returns {Promise<void>} A promise that resolves when the file is uploaded. */var h=/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function b(a){var h,i,j,k;return _regenerator().w(function(b){for(;1;)switch(b.p=b.n){case 0:return h=a.stream||_buffer.Buffer.from(a.buffer,"binary"),i=g?"".concat(g,"/"):"",b.p=1,b.n=2,bunnyAxios.put("https://".concat(f,"/").concat(d,"/").concat(i).concat(a.hash).concat(a.ext),h,{headers:{AccessKey:c,"content-type":"application/octet-stream"}});case 2:if(j=b.v,201===j.data.HttpCode){b.n=3;break}throw new ApplicationError("Error uploading to Bunny.net: ".concat(j.data.Message));case 3:a.url="https://".concat(e,"/").concat(i).concat(a.hash).concat(a.ext),b.n=5;break;case 4:throw b.p=4,k=b.v,new ApplicationError("Error uploading to Bunny.net: ".concat(k.message));case 5:return b.a(2)}},b,null,[[1,4]])}));return function c(b){return a.apply(this,arguments)}}(),i=/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function b(a){var e,h,i,j,k;return _regenerator().w(function(b){for(;1;)switch(b.p=b.n){case 0:return b.p=0,e=g?"".concat(g,"/"):"",b.n=1,bunnyAxios.get("https://".concat(f,"/").concat(d,"/").concat(e).concat(a.hash).concat(a.ext),{headers:{AccessKey:c},responseType:"arraybuffer"// Para manejar diferentes tipos de archivos });case 1:return h=b.v,i=(0,_index.getMimeType)(a.ext),j=/^text(\/|$)/.test(i)?h.data.toString("utf8"):"application/json"===i?JSON.parse(h.data.toString("utf8")):_buffer.Buffer.from(h.data),b.a(2,{type:i,body:j});case 2:throw b.p=2,k=b.v,new ApplicationError("Error downloading from Bunny.net: ".concat(k.message));case 3:return b.a(2)}},b,null,[[0,2]])}));return function c(b){return a.apply(this,arguments)}}(),j=/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function b(a){var e,h,i;return _regenerator().w(function(b){for(;1;)switch(b.p=b.n){case 0:return b.p=0,e=g?"".concat(g,"/"):"",b.n=1,bunnyAxios["delete"]("https://".concat(f,"/").concat(d,"/").concat(e).concat(a.hash).concat(a.ext),{headers:{AccessKey:c}});case 1:h=b.v,200!==h.data.HttpCode&&console.error("Soft Error: Failed to delete file; has it already been deleted?",h.data),b.n=3;break;case 2:b.p=2,i=b.v,console.error("Soft Error: Failed to delete file; has it already been deleted?",i.message);case 3:return b.a(2)}},b,null,[[0,2]])}));return function c(b){return a.apply(this,arguments)}}();/** * Downloads a file from Bunny CDN. * * @param {Object} file - The file object to download. * @param {string} file.hash - The hash of the file. * @param {string} file.ext - The file extension. * @returns {Promise<Object>} A promise that resolves with the downloaded file data. *//** * Deletes a file from Bunny CDN. * * @param {Object} file - The file object to delete. * @param {string} file.hash - The hash of the file. * @param {string} file.ext - The file extension. * @returns {Promise<void>} A promise that resolves when the file is deleted. */return{upload:h,download:i,delete:j,uploadStream:h}};/** * Initialize Bunny CDN Storage integration. * * @param {Object} config - The configuration object for Bunny CDN. * @param {string} config.api_key - The API key for Bunny CDN. * @param {string} config.storage_zone - The storage zone name in Bunny CDN. * @param {string} config.pull_zone - The pull zone name in Bunny CDN. * @param {string} config.hostname - The region of the Bunny CDN storage. * @param {string?} config.upload_path - The default upload path, optional * @returns {Object} The initialized upload, download, and delete methods. */