UNPKG

functional-google-cloud

Version:

Google Cloud Utilities functions in Functional Programming Style

250 lines 9.47 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.listFilesInStorage = exports.listFilesInBucket = exports.getBucketFromStorage = exports.storeMetadataToStorage = exports.storeMetadataToFile = exports.storeMetadataToFileTask = exports.storeBufferToStorage = exports.storeBufferToFile = exports.storeBufferToFileTask = exports.getBufferFromStorage = exports.getBufferFromFile = exports.getBufferSingletonFromFile = exports.getBufferSingletonFromFileTask = exports.getUploadUrlFromStorage = exports.fetchFileFromStorage = exports.fetchFile = exports.getFileFromStorage = exports.getFileFromBucket = exports.getDownloadUrlFromFile = exports.getUploadUrlFromFile = exports.getTaskEitherFromTask = exports.getDownloadUrlFromFileTask = exports.getUploadUrlFromFileTask = exports.getReadOnlySignedUrlArrayFromFileTask = exports.getWriteOnlySignedUrlArrayFromFileTask = exports.getSignedUrlTask = exports.getReadOnlySignedUrlConfigFromConfig = exports.getWriteOnlySignedUrlConfigFromConfig = exports.isPath = void 0; const TEUtils = __importStar(require("functional-types/lib/fp-ts/TaskEither")); const DateTime_1 = require("./DateTime"); const TE = __importStar(require("fp-ts/lib/TaskEither")); const E = __importStar(require("fp-ts/lib/Either")); const R = __importStar(require("fp-ts/lib/Reader")); const RT = __importStar(require("fp-ts/lib/ReaderTask")); const ramda_1 = require("ramda"); const FileType = __importStar(require("functional-types/lib/FileType")); /** * ```haskell * isPath :: a -> bool * ``` */ exports.isPath = (a) => ramda_1.allPass([ramda_1.is(Object), ramda_1.propIs(String, 'bucket'), ramda_1.propIs(String, 'filename')])(a); /** * ```haskell * getWriteOnlySignedUrlConfigFromConfig :: WriteOnlyConfig -> GetSignedUrlConfig * ``` */ exports.getWriteOnlySignedUrlConfigFromConfig = ({ expires_in: expiresIn, file_type: fileType }) => ({ version: 'v4', action: 'write', expires: DateTime_1.getUnixTimestampIn(expiresIn), contentType: FileType.toContentType(fileType), }); /** * ```haskell * getReadOnlySignedUrlConfigFromConfig :: WriteOnlyConfig -> GetSignedUrlConfig * ``` */ exports.getReadOnlySignedUrlConfigFromConfig = ({ expires_in: expiresIn }) => ({ version: 'v4', action: 'read', expires: DateTime_1.getUnixTimestampIn(expiresIn), }); /** * ```haskell * getSignedUrlTask :: File -> ReaderTask GetSignedUrlConfig [String] * ``` */ exports.getSignedUrlTask = (file) => (config) => () => file.getSignedUrl(config); /** * ```haskell * getWriteOnlySignedUrlArrayFromFileTask :: File -> ReaderTask WriteOnlyConfig [String] * ``` */ exports.getWriteOnlySignedUrlArrayFromFileTask = ramda_1.useWith(ramda_1.call, [ exports.getSignedUrlTask, exports.getWriteOnlySignedUrlConfigFromConfig, ]); /** * ```haskell * getReadOnlySignedUrlArrayFromFileTask :: File -> ReaderTask WriteOnlyConfig [String] * ``` */ exports.getReadOnlySignedUrlArrayFromFileTask = ramda_1.useWith(ramda_1.call, [ exports.getSignedUrlTask, exports.getReadOnlySignedUrlConfigFromConfig, ]); /** * ```haskell * getUploadUrlFromFileTask :: File -> ReaderTask WriteOnlyConfig String * ``` */ exports.getUploadUrlFromFileTask = ramda_1.pipe(exports.getWriteOnlySignedUrlArrayFromFileTask, RT.map(ramda_1.head)); /** * ```haskell * getDownloadUrlFromFileTask :: File -> ReaderTask WriteOnlyConfig String * ``` */ exports.getDownloadUrlFromFileTask = ramda_1.pipe(exports.getReadOnlySignedUrlArrayFromFileTask, RT.map(ramda_1.head)); /** * ```haskell * getTaskEitherFromTask :: Task -> TaskEither * ``` */ exports.getTaskEitherFromTask = (task) => TE.tryCatch(task, E.toError); /** * ```haskell * getUploadUrlFromFile :: File -> ReaderTaskEither WriteOnlyConfig String Error * ``` */ exports.getUploadUrlFromFile = ramda_1.pipe(exports.getUploadUrlFromFileTask, R.map(exports.getTaskEitherFromTask)); /** * ```haskell * getDownloadUrlFromFile :: File -> ReaderTaskEither WriteOnlyConfig String Error * ``` */ exports.getDownloadUrlFromFile = ramda_1.pipe(exports.getDownloadUrlFromFileTask, R.map(exports.getTaskEitherFromTask)); /** * ```haskell * getFileFromBucket :: Bucket -> Reader Path File * ``` */ exports.getFileFromBucket = (bucket) => (path) => bucket.file(path.filename); /** * ```haskell * getBucketFromStorageWithPath :: Storage -> Reader String Bucket * ``` */ const getBucketFromStorageWithPath = (storage) => (path) => storage.bucket(path.bucket); /** * ```haskell * getFileFromStorage :: Storage -> Reader Path File * ``` */ exports.getFileFromStorage = ramda_1.pipe(getBucketFromStorageWithPath, R.chain(exports.getFileFromBucket)); /** * ```haskell * fetchFileTask :: File -> Task File * ``` */ const fetchFileTask = (file) => async () => { const result = await file.get(); return result[0]; }; /** * ```haskell * fetchFile :: File -> TaskEither File Error * ``` */ exports.fetchFile = ramda_1.pipe(fetchFileTask, TEUtils.fromTask); /** * ```haskell * fetchFileFromStorage :: Storage -> ReaderTaskEither Path File Error * ``` */ exports.fetchFileFromStorage = ramda_1.pipe(exports.getFileFromStorage, R.map(exports.fetchFile)); /** * ```haskell * getUploadUrlFromStorage :: Storage -> Path -> ReaderTaskEither WriteOnlyConfig String Error * ``` */ exports.getUploadUrlFromStorage = ramda_1.pipe(exports.getFileFromStorage, R.map(exports.getUploadUrlFromFile)); /** * ```haskell * getBufferSingletonFromFilePromise :: File -> Task [Buffer] * ``` */ exports.getBufferSingletonFromFileTask = (file) => () => file.download(); /** * ```haskell * getBufferSingletonFromFile :: File -> TaskEither [Buffer] Error * ``` */ exports.getBufferSingletonFromFile = ramda_1.pipe(exports.getBufferSingletonFromFileTask, ramda_1.partialRight(TE.tryCatch, [E.toError])); /** * ```haskell * getBufferFromFile :: File -> TaskEither Buffer Error * ``` */ exports.getBufferFromFile = ramda_1.pipe(exports.getBufferSingletonFromFile, TE.map(ramda_1.head)); /** * ```haskell * getBufferFromStorage :: Storage -> ReaderTaskEither Path File Error * ``` */ exports.getBufferFromStorage = ramda_1.pipe(exports.getFileFromStorage, R.map(exports.getBufferFromFile)); /** * ```haskell * storeBufferToFileTask :: File -> ReaderTask Buffer File * ``` */ exports.storeBufferToFileTask = (file) => (buffer) => async () => { await file.save(buffer); return file; }; /** * ```haskell * storeBufferToFile :: File -> ReaderTaskEither Buffer File Error * ``` */ exports.storeBufferToFile = ramda_1.pipe(exports.storeBufferToFileTask, R.map(exports.getTaskEitherFromTask)); /** * ```haskell * storeBufferToStorage :: Storage -> Reader Path ReaderTaskEither Buffer File Error * ``` */ exports.storeBufferToStorage = ramda_1.pipe(exports.getFileFromStorage, R.map(exports.storeBufferToFile)); /** * ```haskell * storeMetadataToFileTask :: File -> ReaderTask Metadata File * ``` */ exports.storeMetadataToFileTask = (file) => (metadata) => async () => { await file.setMetadata(metadata); return file; }; /** * ```haskell * storeMetadataToFile :: File -> ReaderTaskEither Metadata File Error * ``` */ exports.storeMetadataToFile = ramda_1.pipe(exports.storeMetadataToFileTask, R.map(exports.getTaskEitherFromTask)); /** * ```haskell * storeMetadataToStorage :: Metadata -> Reader Path ReaderTaskEither Metadata File Error * ``` */ exports.storeMetadataToStorage = ramda_1.pipe(exports.getFileFromStorage, R.map(exports.storeMetadataToFile)); /** * ```haskell * getBucketFromStorage :: Storage -> Reader String Bucket * ``` */ exports.getBucketFromStorage = (storage) => (name) => storage.bucket(name); /** * ```haskell * listFilesInBucketTask :: Bucket -> ReaderTask ListFilesOptions [File] * ``` */ const listFilesInBucketTask = (bucket) => (options) => async () => { const [files] = await bucket.getFiles(options); return files; }; /** * ```haskell * listFilesInBucket :: Bucket -> ReaderTaskEither ListFilesOptions [File] Error * ``` */ exports.listFilesInBucket = ramda_1.pipe(listFilesInBucketTask, R.map(TEUtils.fromTask)); /** * ```haskell * listFilesInStorage :: Storage -> Reader String (ReaderTaskEither ListFilesOptions [File] Error) * ``` */ exports.listFilesInStorage = ramda_1.pipe(exports.getBucketFromStorage, R.map(exports.listFilesInBucket)); //# sourceMappingURL=index.js.map