functional-google-cloud
Version:
Google Cloud Utilities functions in Functional Programming Style
250 lines • 9.47 kB
JavaScript
;
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