@tblabs/storage 5.15.4 → 5.15.6

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.
@@ -4,7 +4,8 @@ import { DatasetBase } from "../DatasetBase";
4
4
  import { DatasetType } from "../../Services/DatasetType";
5
5
  import { FilePack } from "./FilePack";
6
6
  import { FilesUploadConfig } from "../../Models/FilesUploadConfig";
7
- export declare class FileDataset extends DatasetBase {
7
+ import { IFileDataset } from "./IFileDataset";
8
+ export declare class FileDataset extends DatasetBase implements IFileDataset {
8
9
  protected _db: OnlineStorage;
9
10
  protected dataset: dir;
10
11
  Type: DatasetType;
@@ -0,0 +1,13 @@
1
+ import { FilesUploadConfig } from "../../Models/FilesUploadConfig";
2
+ import { DatasetType } from "../../Services/DatasetType";
3
+ import { FilePack } from "./FilePack";
4
+ export interface IFileDataset {
5
+ Type: DatasetType;
6
+ SetConfig(config: Partial<FilesUploadConfig>): void;
7
+ GetConfig(): FilesUploadConfig;
8
+ GetAllIds(): Promise<string[]>;
9
+ GetOne(fileId: string): Promise<FilePack>;
10
+ GetAll(): Promise<FilePack[]>;
11
+ Add(files: File[]): Promise<FilePack[]>;
12
+ Delete(fileId: string): Promise<void>;
13
+ }
@@ -1,10 +1,10 @@
1
- import { IRepoBase } from "../IRepoBase";
2
- export interface IRepo<T> extends IRepoBase {
3
- Add(id: string, item: T): Promise<void>;
1
+ import { DatasetType } from "../../Services/DatasetType";
2
+ export interface IObjectDataset<T extends object> {
3
+ Type: DatasetType.Object;
4
4
  GetOne(id: string): Promise<T>;
5
5
  GetAll(): Promise<T[]>;
6
6
  GetAllIds(): Promise<string[]>;
7
+ Add(id: string, item: T): Promise<void>;
7
8
  Update(id: string, item: T): Promise<void>;
8
9
  Delete(id: string): Promise<void>;
9
- Drop(): Promise<void>;
10
10
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ import { OnlineStorage } from "../../Services/OnlineStorage";
2
+ import { dir } from "../../Types/dir";
3
+ export interface IObjectDatasets<T extends object> {
4
+ get Names(): string[];
5
+ get Database(): OnlineStorage;
6
+ GetOne(dataset: dir, id: string): Promise<T>;
7
+ GetAll(dataset: dir): Promise<T[]>;
8
+ GetAllIds(dataset: dir): Promise<string[]>;
9
+ Add(dataset: dir, id: string, item: T): Promise<void>;
10
+ Update(dataset: dir, id: string, item: T): Promise<void>;
11
+ Move(id: string, sourceDataset: dir, targetDataset: dir): Promise<void>;
12
+ Delete(dataset: dir, id: string): Promise<void>;
13
+ Drop(datasets?: dir[]): Promise<void>;
14
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,14 +1,14 @@
1
+ import { dir } from "../../Types/dir";
1
2
  import { OnlineStorage } from "../../Services/OnlineStorage";
2
3
  import { IConverter } from "../../Converters/IConverter";
3
- import { IRepo } from "./IRepo";
4
- import { dir } from "../../Types/dir";
5
4
  import { DatasetBase } from "../DatasetBase";
6
5
  import { DatasetType } from "../../Services/DatasetType";
7
- export declare class ObjectDataset<T extends object> extends DatasetBase implements IRepo<T> {
6
+ import { IObjectDataset } from "./IObjectDataset";
7
+ export declare class ObjectDataset<T extends object> extends DatasetBase implements IObjectDataset<T> {
8
8
  protected _db: OnlineStorage;
9
9
  protected dataset: dir;
10
10
  protected _converter: IConverter<any, T>;
11
- Type: DatasetType;
11
+ readonly Type: DatasetType.Object;
12
12
  constructor(_db: OnlineStorage, dataset: dir, _converter?: IConverter<any, T>);
13
13
  GetOne(id: string): Promise<T>;
14
14
  GetAll(): Promise<T[]>;
@@ -1,8 +1,8 @@
1
+ import { dir } from "../../Types/dir";
1
2
  import { IConverter } from "../../Converters/IConverter";
2
- import { IRepos } from "./IRepos";
3
3
  import { OnlineStorage } from "../../Services/OnlineStorage";
4
- import { dir } from "../../Types/dir";
5
- export declare class ObjectDatasets<T extends object> implements IRepos<T> {
4
+ import { IObjectDatasets } from "./IObjectDatasets";
5
+ export declare class ObjectDatasets<T extends object> implements IObjectDatasets<T> {
6
6
  private _db;
7
7
  private datasets;
8
8
  private _converter;
@@ -25,60 +25,6 @@ export class ObjectDatasets {
25
25
  get Database() {
26
26
  return this._db;
27
27
  }
28
- // public CanUserDo(action: keyof IStorageUserPrivileges): boolean
29
- // {
30
- // if (!this._db.User.Privileges)
31
- // {
32
- // return false;
33
- // }
34
- // const privilege = this._db.User.Privileges[action];
35
- // if (!privilege)
36
- // {
37
- // return false;
38
- // }
39
- // // ex. AddFile: { Datasets: "all" } or AddFile: { Datasets: ["Public"] }
40
- // if (typeof privilege === "object")
41
- // {
42
- // const allowedDatasets = privilege.Datasets;
43
- // // ex. AddFile: { Datasets: "all" }
44
- // if (typeof allowedDatasets === "string")
45
- // {
46
- // if (allowedDatasets == "all")
47
- // {
48
- // return true;
49
- // }
50
- // else if (allowedDatasets == "none")
51
- // {
52
- // return false;
53
- // }
54
- // else
55
- // {
56
- // return false;
57
- // }
58
- // }
59
- // // ex. AddFile: { Datasets: ["Public"] }
60
- // else if (typeof allowedDatasets === "object")
61
- // {
62
- // if (Array.isArray(allowedDatasets))
63
- // {
64
- // for (const dataset of this.datasets)
65
- // {
66
- // if (allowedDatasets.includes(dataset))
67
- // {
68
- // return true;
69
- // }
70
- // }
71
- // return false;
72
- // }
73
- // }
74
- // }
75
- // // ex. CreateUser: true
76
- // else if (typeof privilege === "boolean")
77
- // {
78
- // return privilege;
79
- // }
80
- // return false;
81
- // }
82
28
  async GetOne(dataset, id) {
83
29
  this._db.Log(`Fetching "${id}" from "${dataset}"...`);
84
30
  const queryResult = await this._db.Send(new GetObjectQuery(this._db.DatabaseDir, dataset, id));
@@ -0,0 +1,13 @@
1
+ import { DatasetType } from "../../Services/DatasetType";
2
+ import { PicsConfig } from "./PicsConfig";
3
+ import { PicturePack } from "./PicturePack";
4
+ export interface IPictureDataset {
5
+ Type: DatasetType;
6
+ SetConfig(config: Partial<PicsConfig>): void;
7
+ GetConfig(): PicsConfig;
8
+ GetAllIds(): Promise<string[]>;
9
+ GetOne(pictureDir: string): Promise<PicturePack>;
10
+ GetAll(): Promise<PicturePack[]>;
11
+ Add(files: File[]): Promise<PicturePack[]>;
12
+ Delete(pictureDir: string): Promise<void>;
13
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -4,7 +4,8 @@ import { DatasetBase } from "../DatasetBase";
4
4
  import { PicsConfig } from "./PicsConfig";
5
5
  import { PicturePack } from "./PicturePack";
6
6
  import { DatasetType } from "../../Services/DatasetType";
7
- export declare class PictureDataset extends DatasetBase {
7
+ import { IPictureDataset } from "./IPictureDataset";
8
+ export declare class PictureDataset extends DatasetBase implements IPictureDataset {
8
9
  protected _db: OnlineStorage;
9
10
  protected dataset: dir;
10
11
  Type: DatasetType;
@@ -0,0 +1,12 @@
1
+ import { DatasetType } from "../../Services/DatasetType";
2
+ export interface IRawTextDataset {
3
+ Type: DatasetType;
4
+ Read(id: string, offset?: number, limit?: number): Promise<string[]>;
5
+ GetAllIds(): Promise<string[]>;
6
+ Create(id: string): Promise<void>;
7
+ AppendText(id: string, text: string): Promise<void>;
8
+ Clear(id: string): Promise<void>;
9
+ ReplaceText(id: string, text: string): Promise<void>;
10
+ AppendLine(id: string, line: string): Promise<void>;
11
+ Delete(id: string): Promise<void>;
12
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ export interface ITextDataset<T> {
2
+ Load(id: string, offset?: number, limit?: number): Promise<T[]>;
3
+ Append(id: string, entry: T): Promise<void>;
4
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,9 +1,9 @@
1
1
  import { DatasetBase } from "../DatasetBase";
2
- import { ITextRepo } from "./ITextRepo";
3
2
  import { DatasetType } from "../../Services/DatasetType";
4
3
  import { OnlineStorage } from "../../Services/OnlineStorage";
5
4
  import { dir } from "../../Types/dir";
6
- export declare class RawTextDataset extends DatasetBase implements ITextRepo {
5
+ import { IRawTextDataset } from "./IRawTextDataset";
6
+ export declare class RawTextDataset extends DatasetBase implements IRawTextDataset {
7
7
  protected _db: OnlineStorage;
8
8
  protected dataset: dir;
9
9
  Type: DatasetType;
@@ -2,7 +2,8 @@ import { OnlineStorage } from "../../Services/OnlineStorage";
2
2
  import { RawTextDataset } from "./RawTextDataset";
3
3
  import { ITextConverter } from "../../Converters/ITextConverter";
4
4
  import { dir } from "../../Types/dir";
5
- export declare class TextDataset<T> extends RawTextDataset {
5
+ import { ITextDataset } from "./ITextDataset";
6
+ export declare class TextDataset<T> extends RawTextDataset implements ITextDataset<T> {
6
7
  protected _db: OnlineStorage;
7
8
  protected dataset: dir;
8
9
  protected _converter: ITextConverter<T>;
@@ -1,5 +1,9 @@
1
1
  import { Message } from '../MessageBus/Message';
2
+ import { DatasetMetadata } from '../Models/DatasetMetadata';
2
3
  import { dir } from '../Types/dir';
3
4
  export declare class GetMetadataQuery extends Message {
4
5
  constructor(Database: dir, Dataset: dir);
5
6
  }
7
+ export declare class UpdateMetadataQuery extends Message {
8
+ constructor(Database: dir, Dataset: dir, Metadata: DatasetMetadata);
9
+ }
@@ -4,3 +4,8 @@ export class GetMetadataQuery extends Message {
4
4
  super("GetMetadata", { Database, Dataset });
5
5
  }
6
6
  }
7
+ export class UpdateMetadataQuery extends Message {
8
+ constructor(Database, Dataset, Metadata) {
9
+ super("UpdateMetadata", { Database, Dataset, Metadata });
10
+ }
11
+ }
@@ -0,0 +1,50 @@
1
+ import { IConverter } from "../Converters/IConverter";
2
+ import { ITextConverter } from "../Converters/ITextConverter";
3
+ import { FileDataset } from "../Datasets/File/FileDataset";
4
+ import { ObjectDataset } from "../Datasets/Object/ObjectDataset";
5
+ import { ObjectDatasets } from "../Datasets/Object/ObjectDatasets";
6
+ import { PicsConfig } from "../Datasets/Picture/PicsConfig";
7
+ import { PictureDataset } from "../Datasets/Picture/PictureDataset";
8
+ import { RawTextDataset } from "../Datasets/Text/RawTextDataset";
9
+ import { TextDataset } from "../Datasets/Text/TextDataset";
10
+ import { IMessage } from "../MessageBus/IMessage";
11
+ import { MessageBusResponse } from "../MessageBus/MessageBusResponse";
12
+ import { DatabaseInfo } from "../Models/DatabaseInfo";
13
+ import { DatasetInfo } from "../Models/DatasetInfo";
14
+ import { FilesUploadConfig } from "../Models/FilesUploadConfig";
15
+ import { IStorageUser } from "../Models/IStorageUser";
16
+ import { dir, url } from "../Types/dir";
17
+ import { DatasetType } from "./DatasetType";
18
+ export interface IOnlineStorage {
19
+ Server: string;
20
+ DatabaseDir: dir;
21
+ User: IStorageUser;
22
+ SetServer(server: url): this;
23
+ SetDatabase(database: dir): this;
24
+ SetUser(user: IStorageUser): this;
25
+ EnableLog(): this;
26
+ DisableLog(): this;
27
+ Log(...message: any[]): void;
28
+ Ping(): Promise<boolean>;
29
+ Send(message: IMessage): Promise<MessageBusResponse>;
30
+ ListDatasets(): Promise<DatasetInfo[]>;
31
+ CreateDataset(type: DatasetType, datasetName: string): Promise<void>;
32
+ DatasetExists(datasetName: string): Promise<boolean>;
33
+ RemoveDataset(datasetName: string): Promise<void>;
34
+ Move(fileId: string, sourceDataset: ObjectDataset<any>, targetDataset: ObjectDataset<any>): Promise<void>;
35
+ ListUsers(): Promise<IStorageUser[]>;
36
+ GetUser(userId: string): Promise<IStorageUser>;
37
+ UpdateUser(user: IStorageUser): Promise<void>;
38
+ AddUser(user: IStorageUser): Promise<void>;
39
+ DeleteUser(user: IStorageUser): Promise<void>;
40
+ ListDatabases(): Promise<DatabaseInfo[]>;
41
+ CreateDatabase(databaseName: string): Promise<void>;
42
+ DeleteDatabase(databaseName: string): Promise<void>;
43
+ GetLog(id: string): Promise<string>;
44
+ GetLogsList(): Promise<string[]>;
45
+ GetObjectDataset<T extends object>(dataset: dir, converter: IConverter<any, T>): ObjectDataset<T>;
46
+ GetObjectDatasets<T extends object>(datasets: dir[], converter?: IConverter<any, T>): ObjectDatasets<T>;
47
+ GetTextDataset(datasetName: string, converter?: ITextConverter<any>): TextDataset<any> | RawTextDataset;
48
+ GetPictureDataset(dataset: dir, picsConfig: PicsConfig): PictureDataset;
49
+ GetFileDataset(dataset: dir, config?: FilesUploadConfig): FileDataset;
50
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -18,7 +18,9 @@ import { PicsConfig } from "../Datasets/Picture/PicsConfig";
18
18
  import { FileDataset } from "../Datasets/File/FileDataset";
19
19
  import { FilesUploadConfig } from "../Models/FilesUploadConfig";
20
20
  import { ObjectDatasets } from "../Datasets/Object/ObjectDatasets";
21
- export declare class OnlineStorage {
21
+ import { IOnlineStorage } from "./IOnlineStorage";
22
+ import { DatasetMetadata } from "../Models/DatasetMetadata";
23
+ export declare class OnlineStorage implements IOnlineStorage {
22
24
  private server;
23
25
  private database;
24
26
  private sender;
@@ -46,6 +48,8 @@ export declare class OnlineStorage {
46
48
  GetTextDataset(datasetName: string, converter?: ITextConverter<any>): TextDataset<any> | RawTextDataset;
47
49
  GetPictureDataset(datasetName: string, picsConfig?: PicsConfig): PictureDataset;
48
50
  GetFileDataset(datasetName: string, config?: Partial<FilesUploadConfig>): FileDataset;
51
+ GetDatasetMetadata(datasetName: string): Promise<DatasetMetadata>;
52
+ UpdateDatasetMetadata(datasetName: string, metadata: DatasetMetadata): Promise<void>;
49
53
  private IsBrowserEnvironment;
50
54
  private LoadUserFromLocalStorage;
51
55
  Login(password: string, login?: string): Promise<IStorageUser>;
@@ -21,6 +21,7 @@ import { TextDataset } from "../Datasets/Text/TextDataset";
21
21
  import { PictureDataset } from "../Datasets/Picture/PictureDataset";
22
22
  import { FileDataset } from "../Datasets/File/FileDataset";
23
23
  import { ObjectDatasets } from "../Datasets/Object/ObjectDatasets";
24
+ import { GetMetadataQuery, UpdateMetadataQuery } from "../Messages/GetMetadataQuery";
24
25
  export class OnlineStorage {
25
26
  server;
26
27
  database;
@@ -126,6 +127,22 @@ export class OnlineStorage {
126
127
  GetFileDataset(datasetName, config) {
127
128
  return new FileDataset(this, datasetName, config);
128
129
  }
130
+ async GetDatasetMetadata(datasetName) {
131
+ const response = await this.Send(new GetMetadataQuery(this.DatabaseDir, datasetName));
132
+ if (!response.IsSuccess && response.ErrorMessage.includes("not exist")) {
133
+ return {};
134
+ }
135
+ else if (!response.IsSuccess) {
136
+ throw new Error(`Failed to get metadata for dataset "${datasetName}": ${response.ErrorMessage}`);
137
+ }
138
+ return response.Result;
139
+ }
140
+ async UpdateDatasetMetadata(datasetName, metadata) {
141
+ const response = await this.Send(new UpdateMetadataQuery(this.DatabaseDir, datasetName, metadata));
142
+ if (!response.IsSuccess) {
143
+ throw new Error(`Failed to update metadata for dataset "${datasetName}": ${response.ErrorMessage}`);
144
+ }
145
+ }
129
146
  IsBrowserEnvironment() {
130
147
  return typeof window !== "undefined" && typeof window.localStorage !== "undefined";
131
148
  }
package/index.d.ts CHANGED
@@ -4,28 +4,33 @@ export * from "./Models/IEntitiesSet";
4
4
  export * from "./Models/IStorageUser";
5
5
  export * from "./Models/DatabaseInfo";
6
6
  export * from "./Datasets/IRepoBase";
7
- export * from "./Datasets/Object/IRepo";
8
7
  export * from "./Datasets/Text/ITextRepo";
9
- export * from "./Datasets/Object/IRepos";
10
8
  export * from "./Models/DatasetMetadata";
11
9
  export * from "./Datasets/DatasetBase";
12
10
  export * from "./Services/DatasetType";
13
11
  export * from "./Converters/IConverter";
14
12
  export * from "./Converters/Converter";
13
+ export * from "./Datasets/Object/IObjectDataset";
14
+ export * from "./Datasets/Object/IObjectDatasets";
15
15
  export * from "./Datasets/Object/ObjectDataset";
16
16
  export * from "./Datasets/Object/ObjectDatasets";
17
17
  export * from "./Converters/DummyConverter";
18
+ export * from "./Datasets/Text/IRawTextDataset";
19
+ export * from "./Datasets/Text/ITextDataset";
18
20
  export * from "./Datasets/Text/RawTextDataset";
19
21
  export * from "./Datasets/Text/TextDataset";
20
22
  export * from "./Converters/ITextConverter";
21
23
  export * from "./Converters/JsonTextConverter";
24
+ export * from "./Datasets/Picture/IPictureDataset";
22
25
  export * from "./Datasets/Picture/PictureDataset";
23
26
  export * from "./Datasets/Picture/PicConfig";
24
27
  export * from "./Datasets/Picture/PicsConfig";
25
28
  export * from "./Datasets/Picture/PicturePack";
26
29
  export * from "./Models/PictureDatasetMetadata";
30
+ export * from "./Datasets/File/IFileDataset";
27
31
  export * from "./Datasets/File/FileDataset";
28
32
  export * from "./Datasets/File/FilePack";
29
33
  export * from "./Models/FileDatasetMetadata";
30
34
  export * from "./Models/FilesUploadConfig";
35
+ export * from "./Services/IOnlineStorage";
31
36
  export * from "./Services/OnlineStorage";
package/index.js CHANGED
@@ -4,9 +4,7 @@ export * from "./Models/IEntitiesSet";
4
4
  export * from "./Models/IStorageUser";
5
5
  export * from "./Models/DatabaseInfo";
6
6
  export * from "./Datasets/IRepoBase";
7
- export * from "./Datasets/Object/IRepo";
8
7
  export * from "./Datasets/Text/ITextRepo";
9
- export * from "./Datasets/Object/IRepos";
10
8
  // Common for datasets
11
9
  export * from "./Models/DatasetMetadata";
12
10
  export * from "./Datasets/DatasetBase";
@@ -14,24 +12,31 @@ export * from "./Services/DatasetType";
14
12
  export * from "./Converters/IConverter";
15
13
  export * from "./Converters/Converter";
16
14
  // Object datasets
15
+ export * from "./Datasets/Object/IObjectDataset";
16
+ export * from "./Datasets/Object/IObjectDatasets";
17
17
  export * from "./Datasets/Object/ObjectDataset";
18
18
  export * from "./Datasets/Object/ObjectDatasets";
19
19
  export * from "./Converters/DummyConverter";
20
20
  // Text datasets
21
+ export * from "./Datasets/Text/IRawTextDataset";
22
+ export * from "./Datasets/Text/ITextDataset";
21
23
  export * from "./Datasets/Text/RawTextDataset";
22
24
  export * from "./Datasets/Text/TextDataset";
23
25
  export * from "./Converters/ITextConverter";
24
26
  export * from "./Converters/JsonTextConverter";
25
27
  // Picture datasets
28
+ export * from "./Datasets/Picture/IPictureDataset";
26
29
  export * from "./Datasets/Picture/PictureDataset";
27
30
  export * from "./Datasets/Picture/PicConfig";
28
31
  export * from "./Datasets/Picture/PicsConfig";
29
32
  export * from "./Datasets/Picture/PicturePack";
30
33
  export * from "./Models/PictureDatasetMetadata";
31
34
  // File datasets
35
+ export * from "./Datasets/File/IFileDataset";
32
36
  export * from "./Datasets/File/FileDataset";
33
37
  export * from "./Datasets/File/FilePack";
34
38
  export * from "./Models/FileDatasetMetadata";
35
39
  export * from "./Models/FilesUploadConfig";
36
40
  // Storage
41
+ export * from "./Services/IOnlineStorage";
37
42
  export * from "./Services/OnlineStorage";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tblabs/storage",
3
- "version": "5.15.4",
3
+ "version": "5.15.6",
4
4
  "description": "online storage module with auth",
5
5
  "license": "beerware",
6
6
  "main": "index.js",
Binary file
@@ -1,9 +0,0 @@
1
- export interface IRepos<T> {
2
- Add(dataset: string, id: string, item: T): Promise<void>;
3
- GetAll(dataset: string): Promise<T[]>;
4
- GetOne(dataset: string, id: string): Promise<T | null>;
5
- Update(dataset: string, id: string, item: T): Promise<void>;
6
- Delete(dataset: string, id: string): Promise<void>;
7
- Drop(datasets?: string[]): Promise<void>;
8
- Move(id: string, sourceDataset: string, targetDataset: string): Promise<void>;
9
- }
@@ -1,2 +0,0 @@
1
- // import { IStorageUserPrivileges } from "../../Models/IStorageUserPrivileges";
2
- export {};
Binary file