@quatrain/core 1.0.0-beta12 → 1.0.0-beta14

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 = {};
@@ -22,10 +22,26 @@ export declare class ObjectUri {
22
22
  set class(objClass: any);
23
23
  get class(): any;
24
24
  get backend(): string;
25
+ /**
26
+ * Returns the full path of the resource
27
+ * including optional parents' path
28
+ * @returns string
29
+ */
25
30
  get path(): string;
31
+ /**
32
+ * Returns the own path of the resource
33
+ * without the optional parents' paths
34
+ * @returns string
35
+ */
36
+ get ownPath(): string;
26
37
  get parent(): ObjectUri | undefined;
27
38
  set label(label: string | undefined);
28
39
  get label(): string | undefined;
40
+ /**
41
+ * Return the full path litteral
42
+ * including the backend alias
43
+ * @returns string
44
+ */
29
45
  get literal(): string;
30
46
  set path(path: string);
31
47
  get uid(): string | undefined;
@@ -72,7 +72,22 @@ class ObjectUri {
72
72
  get backend() {
73
73
  return this._backend;
74
74
  }
75
+ /**
76
+ * Returns the full path of the resource
77
+ * including optional parents' path
78
+ * @returns string
79
+ */
75
80
  get path() {
81
+ return this._parent
82
+ ? `${this._parent.path}${ObjectUri.DEFAULT}${this._path}`
83
+ : this._path;
84
+ }
85
+ /**
86
+ * Returns the own path of the resource
87
+ * without the optional parents' paths
88
+ * @returns string
89
+ */
90
+ get ownPath() {
76
91
  return this._path;
77
92
  }
78
93
  get parent() {
@@ -84,6 +99,11 @@ class ObjectUri {
84
99
  get label() {
85
100
  return this._label;
86
101
  }
102
+ /**
103
+ * Return the full path litteral
104
+ * including the backend alias
105
+ * @returns string
106
+ */
87
107
  get literal() {
88
108
  return this._str.includes(':')
89
109
  ? this._str
package/lib/index.d.ts CHANGED
@@ -30,5 +30,12 @@ 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';
33
40
  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, };
41
+ 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, 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,16 @@
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 create(file: FileType, stream: Readable): Promise<FileType>;
7
+ abstract download(file: FileType, path: string): Promise<string>;
8
+ abstract getUrl(file: FileType, expiresIn?: number, action?: string, extra?: any): Promise<any>;
9
+ abstract delete(file: FileType): Promise<Boolean>;
10
+ abstract stream(file: FileType, res: any): Promise<any>;
11
+ abstract getUploadUrl(filePath: FileType, expiresIn?: number): Promise<any>;
12
+ abstract getReadable(file: FileType): Promise<Readable>;
13
+ abstract generateThumbnail(file: FileType, sizes: number[]): Promise<any>;
14
+ abstract generateImageThumbnail(file: FileType, sizes: number[]): Promise<any>;
15
+ abstract generateVideoThumbnail(file: FileType, sizes: number[]): Promise<any>;
16
+ }
@@ -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,18 @@
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
+ create(file: FileType, stream: Readable): Promise<FileType>;
9
+ delete(file: FileType): Promise<Boolean>;
10
+ stream(file: FileType, res: any): Promise<any>;
11
+ download(file: FileType, path: string): Promise<string>;
12
+ getUrl(file: FileType, expiresIn?: number, action?: string, extra?: any): Promise<any>;
13
+ getUploadUrl(filePath: FileType, expiresIn?: number): Promise<any>;
14
+ getReadable(filePath: FileType): Promise<Readable>;
15
+ generateThumbnail(file: FileType, sizes: number[]): Promise<any>;
16
+ generateImageThumbnail(file: FileType, sizes: number[]): Promise<any>;
17
+ generateVideoThumbnail(file: FileType, sizes: number[]): Promise<any>;
18
+ }
@@ -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 });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quatrain/core",
3
- "version": "1.0.0-beta12",
3
+ "version": "1.0.0-beta14",
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
- }