@cirrobio/sdk 0.0.1 → 0.1.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/api.d.ts CHANGED
@@ -1,8 +1,8 @@
1
- import { Middleware, ResponseContext } from "@cirrobio/api-client";
2
- export declare class ApiError extends Error {
3
- errors: string[];
4
- constructor(message: string, errors: string[]);
5
- }
6
- export declare class PortalErrorHandler implements Middleware {
7
- post(context: ResponseContext): Promise<Response | void>;
8
- }
1
+ import { Middleware, ResponseContext } from "@cirrobio/api-client";
2
+ export declare class ApiError extends Error {
3
+ errors: string[];
4
+ constructor(message: string, errors: string[]);
5
+ }
6
+ export declare class PortalErrorHandler implements Middleware {
7
+ post(context: ResponseContext): Promise<Response | void>;
8
+ }
package/dist/api.js CHANGED
@@ -1,105 +1,105 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
17
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
- return new (P || (P = Promise))(function (resolve, reject) {
20
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
- step((generator = generator.apply(thisArg, _arguments || [])).next());
24
- });
25
- };
26
- var __generator = (this && this.__generator) || function (thisArg, body) {
27
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
- function verb(n) { return function (v) { return step([n, v]); }; }
30
- function step(op) {
31
- if (f) throw new TypeError("Generator is already executing.");
32
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
33
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
- if (y = 0, t) op = [op[0] & 2, t.value];
35
- switch (op[0]) {
36
- case 0: case 1: t = op; break;
37
- case 4: _.label++; return { value: op[1], done: false };
38
- case 5: _.label++; y = op[1]; op = [0]; continue;
39
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
- default:
41
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
- if (t[2]) _.ops.pop();
46
- _.trys.pop(); continue;
47
- }
48
- op = body.call(thisArg, _);
49
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
- }
52
- };
53
- Object.defineProperty(exports, "__esModule", { value: true });
54
- exports.PortalErrorHandler = exports.ApiError = void 0;
55
- var ApiError = /** @class */ (function (_super) {
56
- __extends(ApiError, _super);
57
- function ApiError(message, errors) {
58
- var _this = _super.call(this, message) || this;
59
- _this.errors = errors;
60
- return _this;
61
- }
62
- return ApiError;
63
- }(Error));
64
- exports.ApiError = ApiError;
65
- var PortalErrorHandler = /** @class */ (function () {
66
- function PortalErrorHandler() {
67
- }
68
- PortalErrorHandler.prototype.post = function (context) {
69
- return __awaiter(this, void 0, void 0, function () {
70
- var response, errorMessage, errors, err, ignore_1;
71
- return __generator(this, function (_a) {
72
- switch (_a.label) {
73
- case 0:
74
- response = context.response;
75
- if (response && (response.status >= 200 && response.status < 300)) {
76
- return [2 /*return*/, response];
77
- }
78
- errors = [];
79
- _a.label = 1;
80
- case 1:
81
- _a.trys.push([1, 3, , 4]);
82
- return [4 /*yield*/, response.json()];
83
- case 2:
84
- err = _a.sent();
85
- console.warn(err);
86
- if ('errorDetail' in err) {
87
- errorMessage = err.errorDetail;
88
- errors.push(err.errors.map(function (e) { return e.message; }));
89
- }
90
- else {
91
- errorMessage = err.message;
92
- }
93
- return [3 /*break*/, 4];
94
- case 3:
95
- ignore_1 = _a.sent();
96
- errorMessage = "Unknown Error";
97
- return [3 /*break*/, 4];
98
- case 4: throw new ApiError(errorMessage, errors);
99
- }
100
- });
101
- });
102
- };
103
- return PortalErrorHandler;
104
- }());
105
- exports.PortalErrorHandler = PortalErrorHandler;
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ Object.defineProperty(exports, "__esModule", { value: true });
54
+ exports.PortalErrorHandler = exports.ApiError = void 0;
55
+ var ApiError = /** @class */ (function (_super) {
56
+ __extends(ApiError, _super);
57
+ function ApiError(message, errors) {
58
+ var _this = _super.call(this, message) || this;
59
+ _this.errors = errors;
60
+ return _this;
61
+ }
62
+ return ApiError;
63
+ }(Error));
64
+ exports.ApiError = ApiError;
65
+ var PortalErrorHandler = /** @class */ (function () {
66
+ function PortalErrorHandler() {
67
+ }
68
+ PortalErrorHandler.prototype.post = function (context) {
69
+ return __awaiter(this, void 0, void 0, function () {
70
+ var response, errorMessage, errors, err, ignore_1;
71
+ return __generator(this, function (_a) {
72
+ switch (_a.label) {
73
+ case 0:
74
+ response = context.response;
75
+ if (response && (response.status >= 200 && response.status < 300)) {
76
+ return [2 /*return*/, response];
77
+ }
78
+ errors = [];
79
+ _a.label = 1;
80
+ case 1:
81
+ _a.trys.push([1, 3, , 4]);
82
+ return [4 /*yield*/, response.json()];
83
+ case 2:
84
+ err = _a.sent();
85
+ console.warn(err);
86
+ if ('errorDetail' in err) {
87
+ errorMessage = err.errorDetail;
88
+ errors.push(err.errors.map(function (e) { return e.message; }));
89
+ }
90
+ else {
91
+ errorMessage = err.message;
92
+ }
93
+ return [3 /*break*/, 4];
94
+ case 3:
95
+ ignore_1 = _a.sent();
96
+ errorMessage = "Unknown Error";
97
+ return [3 /*break*/, 4];
98
+ case 4: throw new ApiError(errorMessage, errors);
99
+ }
100
+ });
101
+ });
102
+ };
103
+ return PortalErrorHandler;
104
+ }());
105
+ exports.PortalErrorHandler = PortalErrorHandler;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * An array of file extensions that can be rendered in a genome viewer
3
+ */
4
+ export declare const FILE_TRACK_ANNOTATION: string[];
5
+ export declare const FILE_TRACK_ALIGNMENTS: string[];
6
+ export declare const FILE_TRACK_VARIANT: string[];
7
+ export declare const FILE_TRACK_WIG: string[];
8
+ export declare const FILE_TRACK_SEG: string[];
9
+ export declare const FILE_TRACK_INDEX_EXTENSIONS: string[];
10
+ export declare const FILE_VITESSCE_EXTENSIONS: string[];
11
+ export declare const FILE_TRACK_EXTENSIONS_NO_INDEX: string[];
12
+ export declare const FILE_TRACK_EXTENSIONS: string[];
13
+ export declare const FILE_BROWSER_EXTENSIONS: string[];
14
+ /**
15
+ * An array of file extensions that are protein structure files.
16
+ */
17
+ export declare const FILE_PROTEIN_STRUCTURE_EXTENSIONS: string[];
18
+ /**
19
+ * An array of file extensions that are considered tabular files.
20
+ */
21
+ export declare const FILE_DSV_EXTENSIONS: string[];
22
+ /**
23
+ * An array of file extensions that contain genomic sequence content.
24
+ */
25
+ export declare const FILE_TXT_GENOMICS_EXTENSIONS: string[];
26
+ /**
27
+ * An array of file extensions that are considered TXT files.
28
+ */
29
+ export declare const FILE_TXT_EXTENSIONS: string[];
30
+ /**
31
+ * An array of file extensions that are considered image files.
32
+ */
33
+ export declare const FILE_IMAGE_EXTENSIONS: string[];
34
+ /**
35
+ * An array of file extensions that are considered OME (Open Microscopy Environment) files.
36
+ */
37
+ export declare const FILE_OME_EXTENSIONS: string[];
38
+ /**
39
+ * An array of file extensions that can be opened in the browser.
40
+ * Includes common document formats such as HTML, PDF, and JSON, as well as image, DSV, TXT, and OME file formats.
41
+ */
42
+ export declare const FILE_EXTENSIONS_TO_OPEN: string[];
43
+ /**
44
+ * Checks if a file has an extension that matches one in the provided list.
45
+ * @param filePath The file to check the extension of.
46
+ * @param extensions A list of file endings to check the file against.
47
+ * @returns True or false if the file has an ending in the extensions list.
48
+ */
49
+ export declare function matchesExtension(filePath: string, extensions: string[]): boolean;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ /**
3
+ * An array of file extensions that can be rendered in a genome viewer
4
+ */
5
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
6
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
7
+ if (ar || !(i in from)) {
8
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
9
+ ar[i] = from[i];
10
+ }
11
+ }
12
+ return to.concat(ar || Array.prototype.slice.call(from));
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.matchesExtension = exports.FILE_EXTENSIONS_TO_OPEN = exports.FILE_OME_EXTENSIONS = exports.FILE_IMAGE_EXTENSIONS = exports.FILE_TXT_EXTENSIONS = exports.FILE_TXT_GENOMICS_EXTENSIONS = exports.FILE_DSV_EXTENSIONS = exports.FILE_PROTEIN_STRUCTURE_EXTENSIONS = exports.FILE_BROWSER_EXTENSIONS = exports.FILE_TRACK_EXTENSIONS = exports.FILE_TRACK_EXTENSIONS_NO_INDEX = exports.FILE_VITESSCE_EXTENSIONS = exports.FILE_TRACK_INDEX_EXTENSIONS = exports.FILE_TRACK_SEG = exports.FILE_TRACK_WIG = exports.FILE_TRACK_VARIANT = exports.FILE_TRACK_ALIGNMENTS = exports.FILE_TRACK_ANNOTATION = void 0;
16
+ exports.FILE_TRACK_ANNOTATION = ['bed', 'bed.gz', 'gtf', 'gtf.gz'];
17
+ exports.FILE_TRACK_ALIGNMENTS = ['cram', 'cram.gz']; // TODO: put back bam
18
+ exports.FILE_TRACK_VARIANT = ['vcf', 'vcf.gz'];
19
+ exports.FILE_TRACK_WIG = ['wig', 'wig.gz', 'bw', 'bw.gz', 'bigwig', 'bigwig.gz'];
20
+ exports.FILE_TRACK_SEG = ['seg', 'seg.gz'];
21
+ exports.FILE_TRACK_INDEX_EXTENSIONS = ['tbi', 'bai', 'crai', 'csi'];
22
+ exports.FILE_VITESSCE_EXTENSIONS = ['hdf5', 'h5ad', 'loom'];
23
+ exports.FILE_TRACK_EXTENSIONS_NO_INDEX = __spreadArray(__spreadArray(__spreadArray(__spreadArray(__spreadArray([], exports.FILE_TRACK_ANNOTATION, true), exports.FILE_TRACK_ALIGNMENTS, true), exports.FILE_TRACK_VARIANT, true), exports.FILE_TRACK_WIG, true), exports.FILE_TRACK_SEG, true);
24
+ exports.FILE_TRACK_EXTENSIONS = __spreadArray(__spreadArray([], exports.FILE_TRACK_EXTENSIONS_NO_INDEX, true), exports.FILE_TRACK_INDEX_EXTENSIONS, true);
25
+ exports.FILE_BROWSER_EXTENSIONS = ['html', 'pdf'];
26
+ /**
27
+ * An array of file extensions that are protein structure files.
28
+ */
29
+ exports.FILE_PROTEIN_STRUCTURE_EXTENSIONS = ['pdb', 'pdb.gz', 'cif', 'cif.gz', 'ent', 'ent.gz', 'mmtf', 'mmtf.gz'];
30
+ /**
31
+ * An array of file extensions that are considered tabular files.
32
+ */
33
+ exports.FILE_DSV_EXTENSIONS = ['tab', 'csv', 'tsv', 'dsv'];
34
+ /**
35
+ * An array of file extensions that contain genomic sequence content.
36
+ */
37
+ exports.FILE_TXT_GENOMICS_EXTENSIONS = ['fasta', 'fna', 'fsa', 'fa', 'fastp', 'fastq', 'faa', 'gbk', 'gff', 'vcf', 'seq'];
38
+ /**
39
+ * An array of file extensions that are considered TXT files.
40
+ */
41
+ exports.FILE_TXT_EXTENSIONS = __spreadArray(__spreadArray(['txt', 'log', 'yml', 'cfg', 'xml', 'yaml'], exports.FILE_DSV_EXTENSIONS, true), exports.FILE_TXT_GENOMICS_EXTENSIONS, true);
42
+ /**
43
+ * An array of file extensions that are considered image files.
44
+ */
45
+ exports.FILE_IMAGE_EXTENSIONS = ['jpg', 'jpeg', 'png', 'svg'];
46
+ /**
47
+ * An array of file extensions that are considered OME (Open Microscopy Environment) files.
48
+ */
49
+ exports.FILE_OME_EXTENSIONS = ['tif', 'ome.tif', 'ome.tiff', 'ome.tif.gz', 'ome.tiff.gz'];
50
+ /**
51
+ * An array of file extensions that can be opened in the browser.
52
+ * Includes common document formats such as HTML, PDF, and JSON, as well as image, DSV, TXT, and OME file formats.
53
+ */
54
+ exports.FILE_EXTENSIONS_TO_OPEN = __spreadArray(__spreadArray(__spreadArray(__spreadArray(['html', 'pdf', 'json', 'fcs'], exports.FILE_IMAGE_EXTENSIONS, true), exports.FILE_TXT_EXTENSIONS, true), exports.FILE_TRACK_EXTENSIONS, true), exports.FILE_PROTEIN_STRUCTURE_EXTENSIONS, true);
55
+ /**
56
+ * Checks if a file has an extension that matches one in the provided list.
57
+ * @param filePath The file to check the extension of.
58
+ * @param extensions A list of file endings to check the file against.
59
+ * @returns True or false if the file has an ending in the extensions list.
60
+ */
61
+ function matchesExtension(filePath, extensions) {
62
+ filePath = filePath.toLowerCase();
63
+ // Decompress the filePath if it ends with .gz
64
+ if (filePath.endsWith('.gz')) {
65
+ filePath = filePath.slice(0, -3); // remove the .gz extension
66
+ }
67
+ // Now, get the extension of the file
68
+ var fileExtension = filePath.slice(filePath.lastIndexOf('.') + 1);
69
+ // Check if the fileExtension is in the list of extensions
70
+ return extensions.includes(fileExtension);
71
+ }
72
+ exports.matchesExtension = matchesExtension;
package/dist/index.d.ts CHANGED
@@ -1 +1,2 @@
1
- export * from './api';
1
+ export * from './api';
2
+ export * from './extensions.fn';
package/dist/index.js CHANGED
@@ -1,17 +1,18 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./api"), exports);
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./api"), exports);
18
+ __exportStar(require("./extensions.fn"), exports);
package/package.json CHANGED
@@ -1,25 +1,25 @@
1
- {
2
- "name": "@cirrobio/sdk",
3
- "version": "0.0.1",
4
- "description": "SDK for Cirro",
5
- "author": "CirroBio",
6
- "repository": {
7
- "type": "git",
8
- "url": "https://github.com/CirroBio/Cirro-client-ts.git",
9
- "directory": "packages/sdk"
10
- },
11
- "license": "MIT",
12
- "homepage": "https://cirro.bio",
13
- "main": "./dist/index.js",
14
- "typings": "./dist/index.d.ts",
15
- "scripts": {
16
- "build": "tsc",
17
- "prepare": "npm run build"
18
- },
19
- "devDependencies": {
20
- "typescript": "^4.0"
21
- },
22
- "dependencies": {
23
- "@cirrobio/api-client": "^0.1"
24
- }
25
- }
1
+ {
2
+ "name": "@cirrobio/sdk",
3
+ "version": "0.1.29",
4
+ "description": "SDK for Cirro",
5
+ "author": "CirroBio",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/CirroBio/Cirro-client-ts.git",
9
+ "directory": "packages/sdk"
10
+ },
11
+ "license": "MIT",
12
+ "homepage": "https://cirro.bio",
13
+ "main": "./dist/index.js",
14
+ "typings": "./dist/index.d.ts",
15
+ "scripts": {
16
+ "build": "tsc",
17
+ "prepare": "npm run build"
18
+ },
19
+ "devDependencies": {
20
+ "typescript": "^4.0"
21
+ },
22
+ "dependencies": {
23
+ "@cirrobio/api-client": "^0.1"
24
+ }
25
+ }
package/src/api.ts CHANGED
@@ -1,36 +1,36 @@
1
- import { Middleware, ResponseContext } from "@cirrobio/api-client";
2
-
3
- export class ApiError extends Error {
4
- errors: string[];
5
-
6
- constructor(message: string, errors: string[]) {
7
- super(message);
8
- this.errors = errors;
9
- }
10
- }
11
-
12
- export class PortalErrorHandler implements Middleware {
13
- async post(context: ResponseContext): Promise<Response | void> {
14
- const { response } = context;
15
- if (response && (response.status >= 200 && response.status < 300)) {
16
- return response;
17
- }
18
-
19
- // Handle Error
20
- let errorMessage: string;
21
- const errors = [];
22
- try {
23
- const err = await response.json();
24
- console.warn(err);
25
- if ('errorDetail' in err) {
26
- errorMessage = err.errorDetail;
27
- errors.push(err.errors.map((e: any) => e.message));
28
- } else {
29
- errorMessage = err.message;
30
- }
31
- } catch (ignore) {
32
- errorMessage = "Unknown Error";
33
- }
34
- throw new ApiError(errorMessage, errors);
35
- }
36
- }
1
+ import { Middleware, ResponseContext } from "@cirrobio/api-client";
2
+
3
+ export class ApiError extends Error {
4
+ errors: string[];
5
+
6
+ constructor(message: string, errors: string[]) {
7
+ super(message);
8
+ this.errors = errors;
9
+ }
10
+ }
11
+
12
+ export class PortalErrorHandler implements Middleware {
13
+ async post(context: ResponseContext): Promise<Response | void> {
14
+ const { response } = context;
15
+ if (response && (response.status >= 200 && response.status < 300)) {
16
+ return response;
17
+ }
18
+
19
+ // Handle Error
20
+ let errorMessage: string;
21
+ const errors = [];
22
+ try {
23
+ const err = await response.json();
24
+ console.warn(err);
25
+ if ('errorDetail' in err) {
26
+ errorMessage = err.errorDetail;
27
+ errors.push(err.errors.map((e: any) => e.message));
28
+ } else {
29
+ errorMessage = err.message;
30
+ }
31
+ } catch (ignore) {
32
+ errorMessage = "Unknown Error";
33
+ }
34
+ throw new ApiError(errorMessage, errors);
35
+ }
36
+ }
@@ -0,0 +1,89 @@
1
+
2
+ /**
3
+ * An array of file extensions that can be rendered in a genome viewer
4
+ */
5
+
6
+ export const FILE_TRACK_ANNOTATION = ['bed', 'bed.gz', 'gtf', 'gtf.gz'];
7
+ export const FILE_TRACK_ALIGNMENTS = ['cram', 'cram.gz']; // TODO: put back bam
8
+ export const FILE_TRACK_VARIANT = ['vcf', 'vcf.gz'];
9
+ export const FILE_TRACK_WIG = ['wig', 'wig.gz', 'bw', 'bw.gz', 'bigwig', 'bigwig.gz'];
10
+ export const FILE_TRACK_SEG = ['seg', 'seg.gz'];
11
+ export const FILE_TRACK_INDEX_EXTENSIONS = ['tbi', 'bai', 'crai', 'csi'];
12
+ export const FILE_VITESSCE_EXTENSIONS = ['hdf5', 'h5ad', 'loom'];
13
+ export const FILE_TRACK_EXTENSIONS_NO_INDEX = [
14
+ ...FILE_TRACK_ANNOTATION,
15
+ ...FILE_TRACK_ALIGNMENTS,
16
+ ...FILE_TRACK_VARIANT,
17
+ ...FILE_TRACK_WIG,
18
+ ...FILE_TRACK_SEG
19
+ ];
20
+ export const FILE_TRACK_EXTENSIONS = [
21
+ ...FILE_TRACK_EXTENSIONS_NO_INDEX,
22
+ ...FILE_TRACK_INDEX_EXTENSIONS
23
+ ]
24
+
25
+
26
+ export const FILE_BROWSER_EXTENSIONS = ['html', 'pdf'];
27
+
28
+
29
+ /**
30
+ * An array of file extensions that are protein structure files.
31
+ */
32
+ export const FILE_PROTEIN_STRUCTURE_EXTENSIONS = ['pdb', 'pdb.gz', 'cif', 'cif.gz', 'ent', 'ent.gz', 'mmtf', 'mmtf.gz'];
33
+ /**
34
+ * An array of file extensions that are considered tabular files.
35
+ */
36
+ export const FILE_DSV_EXTENSIONS = ['tab', 'csv', 'tsv', 'dsv'];
37
+ /**
38
+ * An array of file extensions that contain genomic sequence content.
39
+ */
40
+ export const FILE_TXT_GENOMICS_EXTENSIONS = ['fasta', 'fna', 'fsa', 'fa', 'fastp', 'fastq', 'faa', 'gbk', 'gff', 'vcf', 'seq'];
41
+
42
+ /**
43
+ * An array of file extensions that are considered TXT files.
44
+ */
45
+ export const FILE_TXT_EXTENSIONS = ['txt', 'log', 'yml', 'cfg', 'xml', 'yaml', ...FILE_DSV_EXTENSIONS, ...FILE_TXT_GENOMICS_EXTENSIONS];
46
+
47
+
48
+ /**
49
+ * An array of file extensions that are considered image files.
50
+ */
51
+ export const FILE_IMAGE_EXTENSIONS = ['jpg', 'jpeg', 'png', 'svg'];
52
+
53
+ /**
54
+ * An array of file extensions that are considered OME (Open Microscopy Environment) files.
55
+ */
56
+ export const FILE_OME_EXTENSIONS = ['tif', 'ome.tif', 'ome.tiff', 'ome.tif.gz', 'ome.tiff.gz'];
57
+
58
+ /**
59
+ * An array of file extensions that can be opened in the browser.
60
+ * Includes common document formats such as HTML, PDF, and JSON, as well as image, DSV, TXT, and OME file formats.
61
+ */
62
+ export const FILE_EXTENSIONS_TO_OPEN = ['html', 'pdf', 'json', 'fcs',
63
+ ...FILE_IMAGE_EXTENSIONS,
64
+ ...FILE_TXT_EXTENSIONS,
65
+ ...FILE_TRACK_EXTENSIONS,
66
+ ...FILE_PROTEIN_STRUCTURE_EXTENSIONS
67
+ ];
68
+
69
+
70
+ /**
71
+ * Checks if a file has an extension that matches one in the provided list.
72
+ * @param filePath The file to check the extension of.
73
+ * @param extensions A list of file endings to check the file against.
74
+ * @returns True or false if the file has an ending in the extensions list.
75
+ */
76
+ export function matchesExtension(filePath: string, extensions: string[]): boolean {
77
+ filePath = filePath.toLowerCase();
78
+
79
+ // Decompress the filePath if it ends with .gz
80
+ if (filePath.endsWith('.gz')) {
81
+ filePath = filePath.slice(0, -3); // remove the .gz extension
82
+ }
83
+
84
+ // Now, get the extension of the file
85
+ const fileExtension = filePath.slice(filePath.lastIndexOf('.') + 1);
86
+
87
+ // Check if the fileExtension is in the list of extensions
88
+ return extensions.includes(fileExtension);
89
+ }
package/src/index.ts CHANGED
@@ -1 +1,2 @@
1
- export * from './api'
1
+ export * from './api'
2
+ export * from './extensions.fn'
package/tsconfig.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "moduleResolution": "node",
7
7
  "outDir": "dist",
8
8
  "lib": [
9
- "es6",
9
+ "es2016",
10
10
  "dom"
11
11
  ],
12
12
  "typeRoots": [
@@ -17,4 +17,4 @@
17
17
  "dist",
18
18
  "node_modules"
19
19
  ]
20
- }
20
+ }