@quatrain/core 1.0.0-beta13 → 1.0.0-beta15

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/lib/Core.d.ts CHANGED
@@ -9,6 +9,7 @@ export interface AuthAdapter extends AbstractAuthAdapter {
9
9
  }
10
10
  export declare class Core {
11
11
  static defaultBackend: string;
12
+ static defaultStorage: string;
12
13
  static userClass: typeof User;
13
14
  static classRegistry: {
14
15
  [key: string]: any;
@@ -17,6 +18,7 @@ export declare class Core {
17
18
  static auth: AuthAdapter | AbstractAuthAdapter;
18
19
  static timestamp: () => string;
19
20
  protected static _backends: BackendRegistry<any>;
21
+ protected static _storages: BackendRegistry<any>;
20
22
  static definition(key: string): {
21
23
  manifest: {
22
24
  type: StringConstructor;
@@ -25,6 +27,8 @@ export declare class Core {
25
27
  };
26
28
  static addBackend(backend: AbstractAdapter, alias: string, setDefault?: boolean): void;
27
29
  static getBackend<T extends AbstractAdapter>(alias?: string): T;
30
+ static addStorage(backend: AbstractAdapter, alias: string, setDefault?: boolean): void;
31
+ static getStorage<T extends AbstractAdapter>(alias?: string): T;
28
32
  static addClass(name: string, obj: any): void;
29
33
  static getClass(name: string): any;
30
34
  /**
package/lib/Core.js CHANGED
@@ -26,6 +26,20 @@ class Core {
26
26
  throw new Error(`Unknown backend alias: '${alias}'`);
27
27
  }
28
28
  }
29
+ static addStorage(backend, alias, setDefault = false) {
30
+ Core._storages[alias] = backend;
31
+ if (setDefault) {
32
+ Core.defaultStorage = alias;
33
+ }
34
+ }
35
+ static getStorage(alias = this.defaultStorage) {
36
+ if (this._storages[alias]) {
37
+ return this._storages[alias];
38
+ }
39
+ else {
40
+ throw new Error(`Unknown storage alias: '${alias}'`);
41
+ }
42
+ }
29
43
  static addClass(name, obj) {
30
44
  Core.classRegistry[name] = obj;
31
45
  }
@@ -52,9 +66,11 @@ class Core {
52
66
  }
53
67
  exports.Core = Core;
54
68
  Core.defaultBackend = '@default';
69
+ Core.defaultStorage = '@default';
55
70
  Core.userClass = User_1.User;
56
71
  Core.classRegistry = {};
57
72
  Core.logger = console;
58
73
  // How timestamp are formatted
59
74
  Core.timestamp = () => new Date().toISOString();
60
75
  Core._backends = {};
76
+ Core._storages = {};
package/lib/index.d.ts CHANGED
@@ -30,5 +30,13 @@ import { AuthAction, AuthParameters, AuthParametersKeys } from './Auth';
30
30
  import { AuthInterface, AbstractAuthAdapter, AuthenticationError } from './authentication';
31
31
  import { AbstractAdapter, MockAdapter, BackendError, Query, QueryMetaType, QueryResultType, Filter, Filters, Limits, Sorting, SortAndLimit } from './backends';
32
32
  import { BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError } from './common/ResourcesErrors';
33
+ import { AbstractStorageAdapter } from './storages/AbstractStorageAdapter';
34
+ import { FileType } from './storages/types/FileType';
35
+ import { BlobType } from './storages/types/BlobType';
36
+ import { BlobMediaType } from './storages/types/BlobMediaType';
37
+ import { StorageAdapterInterface } from './storages/StorageAdapterInterface';
38
+ import { FileResponseLink } from './storages/types/FileResponseLink';
39
+ import { FileResponseUrl } from './storages/types/FileResponseUrl';
40
+ import { DatabaseTriggerType } from './wrappers/cloud/types/DatabaseTriggerType';
33
41
  import { AbstractCloudWrapper } from './wrappers/cloud/AbstractCloudWrapper';
34
- export { statuses, utils, Core, Property, BaseProperty, BasePropertyType, BooleanProperty, BooleanPropertyType, DateTimeProperty, DateTimePropertyType, EnumProperty, EnumPropertyType, HashProperty, HashPropertyType, ObjectProperty, ObjectPropertyType, StringProperty, StringPropertyType, AbstractAdapter, RepositoryClass, MockAdapter, ObjectUri, DataObjectClass, DataObject, AbstractObject, BaseObject, BaseObjectCore, BaseObjectProperties, AuthAction, AuthParameters, AuthParametersKeys, AuthInterface, AbstractAuthAdapter, AuthenticationError, BackendParameters, BackendParametersKeys, BackendRecordType, BackendAction, BaseRepository, BackendError, Query, QueryMetaType, QueryResultType, Filter, Filters, Limits, Sorting, SortAndLimit, Middleware, InjectMetaMiddleware, InjectKeywordsMiddleware, User, UserType, Proxy, UserRepository, Entity, EntityType, EntityRepository, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError, AbstractCloudWrapper, };
42
+ export { statuses, utils, Core, Property, BaseProperty, BasePropertyType, BooleanProperty, BooleanPropertyType, DateTimeProperty, DateTimePropertyType, EnumProperty, EnumPropertyType, HashProperty, HashPropertyType, ObjectProperty, ObjectPropertyType, StringProperty, StringPropertyType, AbstractAdapter, RepositoryClass, MockAdapter, ObjectUri, DataObjectClass, DataObject, AbstractObject, BaseObject, BaseObjectCore, BaseObjectProperties, AuthAction, AuthParameters, AuthParametersKeys, AuthInterface, AbstractAuthAdapter, AuthenticationError, BackendParameters, BackendParametersKeys, BackendRecordType, BackendAction, BaseRepository, BackendError, Query, QueryMetaType, QueryResultType, Filter, Filters, Limits, Sorting, SortAndLimit, Middleware, InjectMetaMiddleware, InjectKeywordsMiddleware, User, UserType, Proxy, UserRepository, Entity, EntityType, EntityRepository, BadRequestError, UnauthorizedError, ForbiddenError, NotFoundError, GoneError, FileType, BlobType, BlobMediaType, StorageAdapterInterface, AbstractStorageAdapter, FileResponseLink, FileResponseUrl, DatabaseTriggerType, AbstractCloudWrapper, };
package/lib/index.js CHANGED
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.AbstractCloudWrapper = exports.GoneError = exports.NotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.BadRequestError = exports.EntityRepository = exports.Entity = exports.UserRepository = exports.User = exports.InjectKeywordsMiddleware = exports.InjectMetaMiddleware = exports.SortAndLimit = exports.Sorting = exports.Limits = exports.Filters = exports.Filter = exports.Query = exports.BackendError = exports.BaseRepository = exports.BackendAction = exports.AuthenticationError = exports.AbstractAuthAdapter = exports.AuthAction = exports.BaseObjectProperties = exports.BaseObjectCore = exports.AbstractObject = exports.DataObject = exports.ObjectUri = exports.MockAdapter = exports.AbstractAdapter = exports.StringProperty = exports.ObjectProperty = exports.HashProperty = exports.EnumProperty = exports.DateTimeProperty = exports.BooleanProperty = exports.BaseProperty = exports.Property = exports.Core = exports.utils = exports.statuses = void 0;
29
+ exports.AbstractCloudWrapper = exports.AbstractStorageAdapter = exports.GoneError = exports.NotFoundError = exports.ForbiddenError = exports.UnauthorizedError = exports.BadRequestError = exports.EntityRepository = exports.Entity = exports.UserRepository = exports.User = exports.InjectKeywordsMiddleware = exports.InjectMetaMiddleware = exports.SortAndLimit = exports.Sorting = exports.Limits = exports.Filters = exports.Filter = exports.Query = exports.BackendError = exports.BaseRepository = exports.BackendAction = exports.AuthenticationError = exports.AbstractAuthAdapter = exports.AuthAction = exports.BaseObjectProperties = exports.BaseObjectCore = exports.AbstractObject = exports.DataObject = exports.ObjectUri = exports.MockAdapter = exports.AbstractAdapter = exports.StringProperty = exports.ObjectProperty = exports.HashProperty = exports.EnumProperty = exports.DateTimeProperty = exports.BooleanProperty = exports.BaseProperty = exports.Property = exports.Core = exports.utils = exports.statuses = void 0;
30
30
  const Core_1 = require("./Core");
31
31
  Object.defineProperty(exports, "Core", { enumerable: true, get: function () { return Core_1.Core; } });
32
32
  const statuses = __importStar(require("./common/statuses"));
@@ -96,5 +96,7 @@ Object.defineProperty(exports, "UnauthorizedError", { enumerable: true, get: fun
96
96
  Object.defineProperty(exports, "ForbiddenError", { enumerable: true, get: function () { return ResourcesErrors_1.ForbiddenError; } });
97
97
  Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return ResourcesErrors_1.NotFoundError; } });
98
98
  Object.defineProperty(exports, "GoneError", { enumerable: true, get: function () { return ResourcesErrors_1.GoneError; } });
99
+ const AbstractStorageAdapter_1 = require("./storages/AbstractStorageAdapter");
100
+ Object.defineProperty(exports, "AbstractStorageAdapter", { enumerable: true, get: function () { return AbstractStorageAdapter_1.AbstractStorageAdapter; } });
99
101
  const AbstractCloudWrapper_1 = require("./wrappers/cloud/AbstractCloudWrapper");
100
102
  Object.defineProperty(exports, "AbstractCloudWrapper", { enumerable: true, get: function () { return AbstractCloudWrapper_1.AbstractCloudWrapper; } });
@@ -0,0 +1,17 @@
1
+ /// <reference types="node" />
2
+ import { Readable } from 'stream';
3
+ import { FileType } from './types/FileType';
4
+ import { StorageAdapterInterface } from './StorageAdapterInterface';
5
+ export declare abstract class AbstractStorageAdapter implements StorageAdapterInterface {
6
+ abstract getDriver(): any;
7
+ abstract create(file: FileType, stream: Readable): Promise<FileType>;
8
+ abstract download(file: FileType, path: string): Promise<string>;
9
+ abstract getUrl(file: FileType, expiresIn?: number, action?: string, extra?: any): Promise<any>;
10
+ abstract delete(file: FileType): Promise<Boolean>;
11
+ abstract stream(file: FileType, res: any): Promise<any>;
12
+ abstract getUploadUrl(filePath: FileType, expiresIn?: number): Promise<any>;
13
+ abstract getReadable(file: FileType): Promise<Readable>;
14
+ abstract generateThumbnail(file: FileType, sizes: number[]): Promise<any>;
15
+ abstract generateImageThumbnail(file: FileType, sizes: number[]): Promise<any>;
16
+ abstract generateVideoThumbnail(file: FileType, sizes: number[]): Promise<any>;
17
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractStorageAdapter = void 0;
4
+ //import { APIResponseLink, ResponsePublicUrl } from './types'
5
+ class AbstractStorageAdapter {
6
+ }
7
+ exports.AbstractStorageAdapter = AbstractStorageAdapter;
@@ -0,0 +1,19 @@
1
+ /// <reference types="node" />
2
+ import { Readable } from "stream";
3
+ import { FileType } from "./types/FileType";
4
+ /**
5
+ * These are the public functions that any storage interface must expose
6
+ */
7
+ export interface StorageAdapterInterface {
8
+ getDriver(): any;
9
+ create(file: FileType, stream: Readable): Promise<FileType>;
10
+ delete(file: FileType): Promise<Boolean>;
11
+ stream(file: FileType, res: any): Promise<any>;
12
+ download(file: FileType, path: string): Promise<string>;
13
+ getUrl(file: FileType, expiresIn?: number, action?: string, extra?: any): Promise<any>;
14
+ getUploadUrl(filePath: FileType, expiresIn?: number): Promise<any>;
15
+ getReadable(filePath: FileType): Promise<Readable>;
16
+ generateThumbnail(file: FileType, sizes: number[]): Promise<any>;
17
+ generateImageThumbnail(file: FileType, sizes: number[]): Promise<any>;
18
+ generateVideoThumbnail(file: FileType, sizes: number[]): Promise<any>;
19
+ }
@@ -0,0 +1,8 @@
1
+ import { FileType } from './types/FileType';
2
+ import { BlobType } from './types/BlobType';
3
+ import { BlobMediaType } from './types/BlobMediaType';
4
+ import { FileResponseLink } from './types/FileResponseLink';
5
+ import { FileResponseUrl } from './types/FileResponseUrl';
6
+ import { StorageAdapterInterface } from './StorageAdapterInterface';
7
+ import { AbstractStorageAdapter } from './AbstractStorageAdapter';
8
+ export { FileType, BlobType, BlobMediaType, FileResponseLink, FileResponseUrl, StorageAdapterInterface, AbstractStorageAdapter, };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractStorageAdapter = void 0;
4
+ const AbstractStorageAdapter_1 = require("./AbstractStorageAdapter");
5
+ Object.defineProperty(exports, "AbstractStorageAdapter", { enumerable: true, get: function () { return AbstractStorageAdapter_1.AbstractStorageAdapter; } });
@@ -0,0 +1,8 @@
1
+ import { BlobType } from "./BlobType";
2
+ export interface BlobMediaType extends BlobType {
3
+ width?: number;
4
+ height?: number;
5
+ bitrate?: number;
6
+ thumb128?: string;
7
+ thumb256?: string;
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import { FileType } from './FileType';
2
+ export interface BlobType extends FileType {
3
+ size: number;
4
+ contentType: string;
5
+ isTempFile?: boolean;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ export type FileResponseLink = {
2
+ href: string;
3
+ type: 'PUT' | 'POST' | 'GET';
4
+ accept: string;
5
+ size?: number;
6
+ expiresIn?: number;
7
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export type FileResponseUrl = {
2
+ url: string;
3
+ expiresIn: number;
4
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,15 @@
1
+ export interface FileType {
2
+ bucket: string;
3
+ ref: string;
4
+ label?: string;
5
+ contentType?: string;
6
+ size?: number;
7
+ framerate?: number;
8
+ duration?: number;
9
+ bitrate?: number;
10
+ width?: number;
11
+ height?: number;
12
+ thumb128?: string;
13
+ thumb256?: string;
14
+ [x: string]: any;
15
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ export type APIMoveFile = {
2
+ cloud: string;
3
+ ref: string;
4
+ bucket: string;
5
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ import { BackendAction } from '../../../Backend';
2
+ export type DatabaseTriggerType = {
3
+ name: string;
4
+ event: BackendAction;
5
+ model: string;
6
+ path: string;
7
+ script: Function;
8
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quatrain/core",
3
- "version": "1.0.0-beta13",
3
+ "version": "1.0.0-beta15",
4
4
  "description": "Core objects for business apps",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -1,5 +0,0 @@
1
- import { AuthAction } from '../../Auth';
2
- import { User } from '../../components/User';
3
- export default interface Middleware {
4
- execute: (user: User, action: AuthAction) => void;
5
- }