@typetron/framework 0.5.30 → 0.5.32
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/AGENTS.md +31 -0
- package/CLAUDE.md +1 -0
- package/Cache/Readme.md +63 -0
- package/Container/Readme.md +95 -0
- package/Database/Readme.md +139 -0
- package/Encryption/Readme.md +54 -0
- package/Forms/Readme.md +79 -0
- package/Framework/Readme.md +143 -0
- package/Frontend/Angular/Readme.md +68 -0
- package/Frontend/Websockets/Readme.md +96 -0
- package/Mail/Readme.md +99 -0
- package/Models/Readme.md +85 -0
- package/Router/Readme.md +145 -0
- package/Storage/Readme.md +188 -0
- package/Support/Readme.md +71 -0
- package/Testing/Readme.md +80 -0
- package/Validation/Readme.md +91 -0
- package/build/Cache/Stores/FileStore.d.ts +3 -3
- package/build/Cache/Stores/FileStore.d.ts.map +1 -1
- package/build/Cache/Stores/FileStore.js.map +1 -1
- package/build/Database/List.d.ts +1 -1
- package/build/Database/Migrations/Migrator.d.ts +3 -3
- package/build/Database/Migrations/Migrator.d.ts.map +1 -1
- package/build/Database/Migrations/Migrator.js.map +1 -1
- package/build/Database/Seeders/SeederManager.d.ts +3 -3
- package/build/Database/Seeders/SeederManager.d.ts.map +1 -1
- package/build/Database/Seeders/SeederManager.js +3 -3
- package/build/Database/Seeders/SeederManager.js.map +1 -1
- package/build/Framework/Application.js +1 -1
- package/build/Framework/Application.js.map +1 -1
- package/build/Framework/Config/StorageConfig.d.ts +7 -0
- package/build/Framework/Config/StorageConfig.d.ts.map +1 -0
- package/build/Framework/Config/StorageConfig.js +15 -0
- package/build/Framework/Config/StorageConfig.js.map +1 -0
- package/build/Framework/Config/index.d.ts +1 -0
- package/build/Framework/Config/index.d.ts.map +1 -1
- package/build/Framework/Config/index.js +1 -0
- package/build/Framework/Config/index.js.map +1 -1
- package/build/Framework/Middleware/StaticAssetsMiddleware.d.ts +2 -2
- package/build/Framework/Middleware/StaticAssetsMiddleware.d.ts.map +1 -1
- package/build/Framework/Middleware/StaticAssetsMiddleware.js +1 -1
- package/build/Framework/Middleware/StaticAssetsMiddleware.js.map +1 -1
- package/build/Framework/Providers/CacheProvider.js +1 -1
- package/build/Framework/Providers/CacheProvider.js.map +1 -1
- package/build/Framework/Providers/DatabaseProvider.d.ts +2 -2
- package/build/Framework/Providers/DatabaseProvider.d.ts.map +1 -1
- package/build/Framework/Providers/DatabaseProvider.js +1 -1
- package/build/Framework/Providers/DatabaseProvider.js.map +1 -1
- package/build/Framework/Providers/StorageProvider.d.ts +7 -0
- package/build/Framework/Providers/StorageProvider.d.ts.map +1 -0
- package/build/Framework/Providers/StorageProvider.js +28 -0
- package/build/Framework/Providers/StorageProvider.js.map +1 -0
- package/build/Framework/Providers/WebsocketsProvider.d.ts.map +1 -1
- package/build/Framework/Providers/WebsocketsProvider.js +13 -0
- package/build/Framework/Providers/WebsocketsProvider.js.map +1 -1
- package/build/Framework/index.d.ts +1 -0
- package/build/Framework/index.d.ts.map +1 -1
- package/build/Framework/index.js +1 -0
- package/build/Framework/index.js.map +1 -1
- package/build/Router/Http/Request.d.ts.map +1 -1
- package/build/Router/Http/Request.js +3 -4
- package/build/Router/Http/Request.js.map +1 -1
- package/build/Router/Router.js +1 -1
- package/build/Router/Router.js.map +1 -1
- package/build/Router/Servers/uNetworking.d.ts.map +1 -1
- package/build/Router/Servers/uNetworking.js +3 -4
- package/build/Router/Servers/uNetworking.js.map +1 -1
- package/build/Storage/Drivers/LocalDriver.d.ts +26 -0
- package/build/Storage/Drivers/LocalDriver.d.ts.map +1 -0
- package/build/Storage/Drivers/LocalDriver.js +209 -0
- package/build/Storage/Drivers/LocalDriver.js.map +1 -0
- package/build/Storage/Drivers/MemoryDriver.d.ts +25 -0
- package/build/Storage/Drivers/MemoryDriver.d.ts.map +1 -0
- package/build/Storage/Drivers/MemoryDriver.js +108 -0
- package/build/Storage/Drivers/MemoryDriver.js.map +1 -0
- package/build/Storage/Drivers/ReadOnlyDriver.d.ts +22 -0
- package/build/Storage/Drivers/ReadOnlyDriver.d.ts.map +1 -0
- package/build/Storage/Drivers/ReadOnlyDriver.js +38 -0
- package/build/Storage/Drivers/ReadOnlyDriver.js.map +1 -0
- package/build/Storage/Drivers/S3Driver.d.ts +32 -0
- package/build/Storage/Drivers/S3Driver.d.ts.map +1 -0
- package/build/Storage/Drivers/S3Driver.js +248 -0
- package/build/Storage/Drivers/S3Driver.js.map +1 -0
- package/build/Storage/Drivers/ScopedDriver.d.ts +24 -0
- package/build/Storage/Drivers/ScopedDriver.d.ts.map +1 -0
- package/build/Storage/Drivers/ScopedDriver.js +50 -0
- package/build/Storage/Drivers/ScopedDriver.js.map +1 -0
- package/build/Storage/File.d.ts +14 -4
- package/build/Storage/File.d.ts.map +1 -1
- package/build/Storage/File.js +29 -47
- package/build/Storage/File.js.map +1 -1
- package/build/Storage/Filesystem.d.ts +31 -0
- package/build/Storage/Filesystem.d.ts.map +1 -0
- package/build/Storage/Filesystem.js +121 -0
- package/build/Storage/Filesystem.js.map +1 -0
- package/build/Storage/PathPrefixer.d.ts +9 -0
- package/build/Storage/PathPrefixer.d.ts.map +1 -0
- package/build/Storage/PathPrefixer.js +53 -0
- package/build/Storage/PathPrefixer.js.map +1 -0
- package/build/Storage/Storage.d.ts +37 -9
- package/build/Storage/Storage.d.ts.map +1 -1
- package/build/Storage/Storage.js +85 -101
- package/build/Storage/Storage.js.map +1 -1
- package/build/Storage/StorageDisk.d.ts +34 -0
- package/build/Storage/StorageDisk.d.ts.map +1 -0
- package/build/Storage/StorageDisk.js +104 -0
- package/build/Storage/StorageDisk.js.map +1 -0
- package/build/Storage/StorageDriver.d.ts +19 -0
- package/build/Storage/StorageDriver.d.ts.map +1 -0
- package/build/Storage/StorageDriver.js +7 -0
- package/build/Storage/StorageDriver.js.map +1 -0
- package/build/Storage/UploadedFile.d.ts +9 -0
- package/build/Storage/UploadedFile.d.ts.map +1 -0
- package/build/Storage/UploadedFile.js +22 -0
- package/build/Storage/UploadedFile.js.map +1 -0
- package/build/Storage/errors.d.ts +21 -0
- package/build/Storage/errors.d.ts.map +1 -0
- package/build/Storage/errors.js +43 -0
- package/build/Storage/errors.js.map +1 -0
- package/build/Storage/index.d.ts +12 -0
- package/build/Storage/index.d.ts.map +1 -1
- package/build/Storage/index.js +12 -0
- package/build/Storage/index.js.map +1 -1
- package/build/Storage/types.d.ts +73 -0
- package/build/Storage/types.d.ts.map +1 -0
- package/build/Storage/types.js +3 -0
- package/build/Storage/types.js.map +1 -0
- package/package.json +35 -3
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Testing
|
|
2
|
+
|
|
3
|
+
- [Introduction](#introduction)
|
|
4
|
+
- [Creating a Test Case](#creating-a-test-case)
|
|
5
|
+
- [Making HTTP Requests](#making-http-requests)
|
|
6
|
+
- [Authentication](#authentication)
|
|
7
|
+
- [Testing WebSocket Actions](#testing-websocket-actions)
|
|
8
|
+
|
|
9
|
+
## Introduction
|
|
10
|
+
|
|
11
|
+
`TestCase` boots a Typetron application once, creates an isolated child container before each test, and provides helpers for exercising
|
|
12
|
+
named HTTP routes and WebSocket actions without starting a network server.
|
|
13
|
+
|
|
14
|
+
## Creating a Test Case
|
|
15
|
+
|
|
16
|
+
Extend `TestCase` and implement `bootstrapApp`:
|
|
17
|
+
|
|
18
|
+
```ts
|
|
19
|
+
import { Application } from '@Typetron/Framework'
|
|
20
|
+
import { TestCase } from '@Typetron/Testing/TestCase'
|
|
21
|
+
|
|
22
|
+
class UsersTest extends TestCase {
|
|
23
|
+
bootstrapApp() {
|
|
24
|
+
return Application.create(process.cwd())
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
The base `before` hook re-registers `DatabaseProvider` and replaces password hashing with a deterministic test double. Call the inherited
|
|
30
|
+
lifecycle hook when a test framework override would otherwise bypass it.
|
|
31
|
+
|
|
32
|
+
## Making HTTP Requests
|
|
33
|
+
|
|
34
|
+
HTTP helpers resolve the route by its registered name rather than by URL:
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
const response = await this.get<{id: number, name: string}>('users.read')
|
|
38
|
+
|
|
39
|
+
console.log(response.status)
|
|
40
|
+
console.log(response.body)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Use `post`, `patch`, `put`, or `delete` with a body and optional headers. For named routes with parameters, pass a tuple to those helpers:
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
await this.put(
|
|
47
|
+
['users.update', {User: 1}],
|
|
48
|
+
{name: 'John'},
|
|
49
|
+
)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
A route name that is not registered throws `Route '<name>' not found`. HTTP errors are converted to normal `Response` objects so assertions
|
|
53
|
+
may inspect their status and body.
|
|
54
|
+
|
|
55
|
+
## Authentication
|
|
56
|
+
|
|
57
|
+
Use `actingAs` with a user entity or `loginById` with an identity. Subsequent HTTP helpers add the generated bearer token automatically:
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
await this.actingAs(user)
|
|
61
|
+
const response = await this.get('users.me')
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The older `login(user)` helper is deprecated; prefer `actingAs` or `loginById`.
|
|
65
|
+
|
|
66
|
+
## Testing WebSocket Actions
|
|
67
|
+
|
|
68
|
+
Call `action` with the registered action name and optional message data:
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
this.on<{id: number}>('users.created', user => {
|
|
72
|
+
console.log(user.id)
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
const response = await this.action<{id: number}>('users.create', {
|
|
76
|
+
body: {name: 'John'},
|
|
77
|
+
})
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
The WebSocket object is mocked. Calls to `send` and `publishAndSend` are delivered to callbacks registered with `on`.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Validation
|
|
2
|
+
|
|
3
|
+
- [Introduction](#introduction)
|
|
4
|
+
- [Using Rules](#using-rules)
|
|
5
|
+
- [Available Rules](#available-rules)
|
|
6
|
+
- [Optional Values](#optional-values)
|
|
7
|
+
- [Validating Files](#validating-files)
|
|
8
|
+
- [Custom Rules](#custom-rules)
|
|
9
|
+
|
|
10
|
+
## Introduction
|
|
11
|
+
|
|
12
|
+
The Validation module provides small rule classes for checking input values. Forms compose these rules and collect their messages, while
|
|
13
|
+
individual rules may also be used directly.
|
|
14
|
+
|
|
15
|
+
## Using Rules
|
|
16
|
+
|
|
17
|
+
Rule factories return classes. Construct the returned class when validating without a form:
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
import { Email } from '@Typetron/Validation'
|
|
21
|
+
|
|
22
|
+
const EmailRule = Email('Please provide a valid email address')
|
|
23
|
+
const rule = new EmailRule()
|
|
24
|
+
|
|
25
|
+
if (!rule.passes('email', 'john@example.com')) {
|
|
26
|
+
console.log(rule.message('email', 'john@example.com'))
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
When a message is not supplied, each built-in rule returns its default message.
|
|
31
|
+
|
|
32
|
+
## Available Rules
|
|
33
|
+
|
|
34
|
+
Typetron currently includes `Required`, `Email`, `MinLength`, `MaxLength`, `Optional`, and `FileExtension`. Parameterized rules are created
|
|
35
|
+
before use:
|
|
36
|
+
|
|
37
|
+
```ts
|
|
38
|
+
import { MaxLength, MinLength } from '@Typetron/Validation'
|
|
39
|
+
|
|
40
|
+
const shortName = new (MinLength(3))()
|
|
41
|
+
const limitedName = new (MaxLength(50))()
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Forms accept both direct factories such as `Required` and configured factories such as `MinLength(3)` through `@Rules`.
|
|
45
|
+
|
|
46
|
+
## Optional Values
|
|
47
|
+
|
|
48
|
+
`Optional` has special meaning when used by a form. If the value is `undefined` or `null`, the form skips the field's remaining rules. Empty
|
|
49
|
+
strings are not considered missing.
|
|
50
|
+
|
|
51
|
+
## Validating Files
|
|
52
|
+
|
|
53
|
+
`FileExtension` accepts a list of extensions without leading dots:
|
|
54
|
+
|
|
55
|
+
```ts
|
|
56
|
+
import { File } from '@Typetron/Storage'
|
|
57
|
+
import { FileExtension } from '@Typetron/Validation'
|
|
58
|
+
|
|
59
|
+
const rule = new (FileExtension(['jpg', 'png']))()
|
|
60
|
+
const valid = rule.passes('avatar', new File('avatar.png'))
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
The rule returns `false` when the value has no extension or is not a `File`-shaped value.
|
|
64
|
+
|
|
65
|
+
## Custom Rules
|
|
66
|
+
|
|
67
|
+
Extend `Rule` and implement an identifier, `passes`, and `message`:
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
import { Rule } from '@Typetron/Validation'
|
|
71
|
+
|
|
72
|
+
class EvenNumber extends Rule {
|
|
73
|
+
identifier = 'evenNumber'
|
|
74
|
+
|
|
75
|
+
passes(
|
|
76
|
+
attribute: string,
|
|
77
|
+
value: string | number | object | boolean | undefined,
|
|
78
|
+
) {
|
|
79
|
+
return typeof value === 'number' && value % 2 === 0
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
message(
|
|
83
|
+
attribute: string,
|
|
84
|
+
value: string | number | object | boolean | undefined,
|
|
85
|
+
) {
|
|
86
|
+
return `The ${attribute} must be even`
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
The identifier becomes the key for that rule in a form's error object.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Cache } from '@Typetron/Cache';
|
|
2
|
-
import {
|
|
2
|
+
import { Filesystem } from '@Typetron/Storage';
|
|
3
3
|
export declare class FileStore extends Cache {
|
|
4
|
-
storage:
|
|
4
|
+
storage: Filesystem;
|
|
5
5
|
directory: string;
|
|
6
|
-
constructor(storage:
|
|
6
|
+
constructor(storage: Filesystem, directory: string);
|
|
7
7
|
has(name: string): Promise<boolean>;
|
|
8
8
|
get<T>(name: string, defaultValue?: T | (() => T | Promise<T>)): Promise<T | undefined>;
|
|
9
9
|
remember<T>(name: string, defaultValue?: T | (() => T | Promise<T>), durationInSeconds?: number): Promise<T | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileStore.d.ts","sourceRoot":"","sources":["../../../Cache/Stores/FileStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"FileStore.d.ts","sourceRoot":"","sources":["../../../Cache/Stores/FileStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAM9C,qBAAa,SAAU,SAAQ,KAAK;IACb,OAAO,EAAE,UAAU;IAAS,SAAS,EAAE,MAAM;gBAA7C,OAAO,EAAE,UAAU,EAAS,SAAS,EAAE,MAAM;IAI1D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAInC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAavF,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAYxH,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxE,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,OAAO,CAAC,IAAI;YAKE,eAAe;CAOhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileStore.js","sourceRoot":"","sources":["../../../Cache/Stores/FileStore.ts"],"names":[],"mappings":";;;;;;AAAA,2CAAuC;AAEvC,6CAAwC;AACxC,0DAA4B;AAC5B,mDAAuD;AAGvD,MAAa,SAAU,SAAQ,aAAK;IACb;
|
|
1
|
+
{"version":3,"file":"FileStore.js","sourceRoot":"","sources":["../../../Cache/Stores/FileStore.ts"],"names":[],"mappings":"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"}
|
package/build/Database/List.d.ts
CHANGED
|
@@ -21,6 +21,6 @@ export declare abstract class List<E extends Entity, P extends Entity = Entity>
|
|
|
21
21
|
toJSON(): E[];
|
|
22
22
|
}
|
|
23
23
|
export declare class ListProxyHandler<E extends Entity, P extends Entity> {
|
|
24
|
-
get(target: List<E, P>, property: string | symbol): number | E | P | E[] | (() => ArrayIterator<E>) | ((key: ID) => Promise<E | undefined>) | (<K extends Exclude<keyof E, keyof Entity>>(column: Exclude<keyof E, keyof Entity>, operator: import("./Types").SqlValue | E[K], value?: import("./Types").SqlValue | E[K], boolean?: BooleanOperator) => EntityQuery<E>) | (() =>
|
|
24
|
+
get(target: List<E, P>, property: string | symbol): number | E | P | E[] | (() => ArrayIterator<E>) | ((key: ID) => Promise<E | undefined>) | (<K extends Exclude<keyof E, keyof Entity>>(column: Exclude<keyof E, keyof Entity>, operator: import("./Types").SqlValue | E[K], value?: import("./Types").SqlValue | E[K], boolean?: BooleanOperator) => EntityQuery<E>) | (() => E[]) | (() => Promise<List<E, P>>) | HasManyField<P, E> | BelongsToManyField<P, E> | (() => Promise<E[]>);
|
|
25
25
|
}
|
|
26
26
|
//# sourceMappingURL=List.d.ts.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { File,
|
|
1
|
+
import { File, Filesystem } from '@Typetron/Storage';
|
|
2
2
|
import { Connection } from '..';
|
|
3
3
|
interface MigrateOptions {
|
|
4
4
|
fresh?: boolean;
|
|
5
5
|
}
|
|
6
6
|
export declare class Migrator {
|
|
7
|
-
storage:
|
|
7
|
+
storage: Filesystem;
|
|
8
8
|
connection: Connection;
|
|
9
9
|
directory: string;
|
|
10
|
-
constructor(storage:
|
|
10
|
+
constructor(storage: Filesystem, connection: Connection, directory: string);
|
|
11
11
|
files(): Promise<File[]>;
|
|
12
12
|
migrate(options?: MigrateOptions): Promise<boolean>;
|
|
13
13
|
rollback(steps?: number): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Migrator.d.ts","sourceRoot":"","sources":["../../../Database/Migrations/Migrator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"Migrator.d.ts","sourceRoot":"","sources":["../../../Database/Migrations/Migrator.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAG/B,UAAU,cAAc;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,QAAQ;IAGN,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,UAAU;IACtB,SAAS,EAAE,MAAM;gBAFjB,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM;IAGtB,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAIjB,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAsCnD,QAAQ,CAAC,KAAK,SAAI;cA8Bf,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAKpC,KAAK;IAYlB,OAAO,CAAC,YAAY;cAMJ,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;cAIrC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;CAGjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Migrator.js","sourceRoot":"","sources":["../../../Database/Migrations/Migrator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAAqD;AAErD,2CAA4B;AAS5B,MAAa,QAAQ;IAGN;IACA;IACA;IAHX,YACW,
|
|
1
|
+
{"version":3,"file":"Migrator.js","sourceRoot":"","sources":["../../../Database/Migrations/Migrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Filesystem } from '@Typetron/Storage';
|
|
2
2
|
export declare class SeederManager {
|
|
3
|
-
storage:
|
|
3
|
+
storage: Filesystem;
|
|
4
4
|
directory: string;
|
|
5
|
-
constructor(storage:
|
|
5
|
+
constructor(storage: Filesystem, directory: string);
|
|
6
6
|
seed(): Promise<void>;
|
|
7
7
|
private getSeed;
|
|
8
8
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SeederManager.d.ts","sourceRoot":"","sources":["../../../Database/Seeders/SeederManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"SeederManager.d.ts","sourceRoot":"","sources":["../../../Database/Seeders/SeederManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAI9C,qBAAa,aAAa;IAEX,OAAO,EAAE,UAAU;IACnB,SAAS,EAAE,MAAM;gBADjB,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,MAAM;IAGtB,IAAI;IAWV,OAAO,CAAC,OAAO;CAKlB"}
|
|
@@ -9,11 +9,11 @@ class SeederManager {
|
|
|
9
9
|
this.directory = directory;
|
|
10
10
|
}
|
|
11
11
|
async seed() {
|
|
12
|
-
const files =
|
|
12
|
+
const files = this.storage
|
|
13
13
|
.files(this.directory, true)
|
|
14
|
-
.where(
|
|
14
|
+
.where('extension', 'ts')
|
|
15
15
|
.whenEmpty(() => console.log('Nothing to seed!'));
|
|
16
|
-
files.forEachAsync(async (file) => {
|
|
16
|
+
await files.forEachAsync(async (file) => {
|
|
17
17
|
await this.getSeed(file.path).run();
|
|
18
18
|
});
|
|
19
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SeederManager.js","sourceRoot":"","sources":["../../../Database/Seeders/SeederManager.ts"],"names":[],"mappings":";;;AAIA,MAAa,aAAa;IAEX;IACA;IAFX,YACW,
|
|
1
|
+
{"version":3,"file":"SeederManager.js","sourceRoot":"","sources":["../../../Database/Seeders/SeederManager.ts"],"names":[],"mappings":";;;AAIA,MAAa,aAAa;IAEX;IACA;IAFX,YACW,OAAmB,EACnB,SAAiB;QADjB,YAAO,GAAP,OAAO,CAAY;QACnB,cAAS,GAAT,SAAS,CAAQ;IACzB,CAAC;IAEJ,KAAK,CAAC,IAAI;QACN,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO;aACrB,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC;aAC3B,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC;aACxB,SAAS,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAA;QAErD,MAAM,KAAK,CAAC,YAAY,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;YAClC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAA;QACvC,CAAC,CAAC,CAAA;IACN,CAAC;IAEO,OAAO,CAAC,IAAY;QACxB,MAAM,MAAM,GAAwC,OAAO,CAAC,IAAI,CAAC,CAAA;QACjE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACtC,OAAO,IAAI,KAAK,EAAE,CAAA;IACtB,CAAC;CACJ;AAtBD,sCAsBC"}
|
|
@@ -51,7 +51,7 @@ class Application extends Container_1.Container {
|
|
|
51
51
|
}
|
|
52
52
|
async loadConfig(configDirectory) {
|
|
53
53
|
const configsPath = path_1.default.join(this.directory, configDirectory);
|
|
54
|
-
const storage = this.get(Storage_1.
|
|
54
|
+
const storage = this.get(Storage_1.Filesystem);
|
|
55
55
|
if (!(await storage.exists(configsPath))) {
|
|
56
56
|
console.warn(`Config path '${configsPath}' does not exist. Running with default config.`);
|
|
57
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Application.js","sourceRoot":"","sources":["../../Framework/Application.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAwC;AAExC,+BAA2B;AAE3B,qCAA4D;AAC5D,2DAAuD;AACvD,+DAA2D;AAC3D,uCAAmC;AACnC,gFAA4E;AAC5E,yCAA6F;AAC7F,
|
|
1
|
+
{"version":3,"file":"Application.js","sourceRoot":"","sources":["../../Framework/Application.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAwC;AAExC,+BAA2B;AAE3B,qCAA4D;AAC5D,2DAAuD;AACvD,+DAA2D;AAC3D,uCAAmC;AACnC,gFAA4E;AAC5E,yCAA6F;AAC7F,wCAAuC;AACvC,2DAAuD;AACvD,4CAA2B;AAC3B,gDAAuB;AACvB,uEAAmE;AAEnE,MAAa,WAAY,SAAQ,qBAAS;IAI3B;IACA;IAJX,MAAM,CAAC,sBAAsB,GAAG,QAAQ,CAAA;IAExC,YACW,SAAiB,EACjB,kBAAkB,WAAW,CAAC,sBAAsB;QAE3D,KAAK,EAAE,CAAA;QAHA,cAAS,GAAT,SAAS,CAAQ;QACjB,oBAAe,GAAf,eAAe,CAAqC;QAG3D,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;QAC7B,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,SAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAA;QAC5C,IAAI,CAAC,GAAG,CAAC,qBAAS,EAAE,IAAI,CAAC,CAAA;QACzB,IAAI,CAAC,GAAG,CAAC,iBAAO,EAAE,SAAS,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CACf,SAAiB,EACjB,eAAe,GAAG,WAAW,CAAC,sBAAsB;QAEpD,MAAM,GAAG,GAAG,IAAI,IAAI,CAChB,YAAU,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,EACzC,eAAe,CAClB,CAAA;QACD,MAAM,GAAG,CAAC,SAAS,EAAE,CAAA;QACrB,OAAO,GAAG,CAAA;IACd,CAAC;IAED,KAAK,CAAC,WAAW;QACb,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,cAAW,CAAC,CAAA;QAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAS,CAAC,CAAA;QAErC,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,iBAAiB,CAAC,CAAC,uCAAkB,CAAC,CAAC,CAAA;QACtD,CAAC;QAED,OAAO,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,SAA2B;QACtD,MAAM,OAAO,CAAC,GAAG,CACb,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YACnC,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAA;QAC9B,CAAC,CAAC,CACL,CAAA;IACL,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,eAAuB;QAC5C,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;QAE9D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAU,CAAC,CAAA;QAEpC,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,CACR,gBAAgB,WAAW,gDAAgD,CAC9E,CAAA;QACL,CAAC;QAED,OAAO;aACF,KAAK,CAAC,WAAW,CAAC;aAClB,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;aAC5B,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;YACd,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAA;YAC7C,IAAI,UAAU,IAAI,UAAU,YAAY,mBAAU,EAAE,CAAC;gBACjD,UAAU,CAAC,cAAc,EAAE,CAAA;YAC/B,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;QAChD,CAAC,CAAC,CAAA;IACV,CAAC;IAEO,iBAAiB;QACrB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,2BAAY,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9C,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,+BAAc,CAAC,IAAI,CAAC,CAAC,CAAA;QAChD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,2BAAY,CAAC,IAAI,CAAC,CAAC,CAAA;IAClD,CAAC;IAEO,KAAK,CAAC,SAAS;QACnB,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAE3C,IAAI,CAAC,GAAG,CAAC,4BAAqB,EAAE,IAAI,CAAC,GAAG,CAAC,mBAAY,CAAC,CAAC,CAAA;QAEvD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAS,CAAC,CAAA;QACrC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAA;QAE3B,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACzB,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,+CAAsB,CAAC,CAAA;QAC7D,CAAC;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAExB,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,IAAI,EAAE,CAAA;QAE3C,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAA;IAC3C,CAAC;IAEO,KAAK,CAAC,cAAc;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAU,CAAC,CAAA;QACvC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;QACrE,CAAC;IACL,CAAC;;AApGL,kCAqGC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BaseConfig } from './BaseConfig';
|
|
2
|
+
import { StorageConfiguration, StorageDiskConfig } from '@Typetron/Storage';
|
|
3
|
+
export declare class StorageConfig extends BaseConfig<StorageConfig> implements StorageConfiguration {
|
|
4
|
+
default: string;
|
|
5
|
+
disks: Record<string, StorageDiskConfig>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=StorageConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageConfig.d.ts","sourceRoot":"","sources":["../../../Framework/Config/StorageConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAE3E,qBAAa,aAAc,SAAQ,UAAU,CAAC,aAAa,CAAE,YAAW,oBAAoB;IACxF,OAAO,SAAsC;IAE7C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAKvC;CACJ"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StorageConfig = void 0;
|
|
4
|
+
const BaseConfig_1 = require("./BaseConfig");
|
|
5
|
+
class StorageConfig extends BaseConfig_1.BaseConfig {
|
|
6
|
+
default = process.env.STORAGE_DISK ?? 'local';
|
|
7
|
+
disks = {
|
|
8
|
+
local: {
|
|
9
|
+
driver: 'local',
|
|
10
|
+
root: 'storage/app',
|
|
11
|
+
},
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
exports.StorageConfig = StorageConfig;
|
|
15
|
+
//# sourceMappingURL=StorageConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageConfig.js","sourceRoot":"","sources":["../../../Framework/Config/StorageConfig.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAGzC,MAAa,aAAc,SAAQ,uBAAyB;IACxD,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAA;IAE7C,KAAK,GAAsC;QACvC,KAAK,EAAE;YACH,MAAM,EAAE,OAAO;YACf,IAAI,EAAE,aAAa;SACtB;KACJ,CAAA;CACJ;AATD,sCASC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../Framework/Config/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../Framework/Config/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,aAAa,CAAA;AAC3B,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA"}
|
|
@@ -19,5 +19,6 @@ __exportStar(require("./AppConfig"), exports);
|
|
|
19
19
|
__exportStar(require("./AuthConfig"), exports);
|
|
20
20
|
__exportStar(require("./DatabaseConfig"), exports);
|
|
21
21
|
__exportStar(require("./CacheConfig"), exports);
|
|
22
|
+
__exportStar(require("./StorageConfig"), exports);
|
|
22
23
|
__exportStar(require("./MailConfig"), exports);
|
|
23
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../Framework/Config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,8CAA2B;AAC3B,+CAA4B;AAC5B,mDAAgC;AAChC,gDAA6B;AAC7B,+CAA4B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../Framework/Config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,8CAA2B;AAC3B,+CAA4B;AAC5B,mDAAgC;AAChC,gDAA6B;AAC7B,kDAA+B;AAC/B,+CAA4B"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { RequestHandler, RouteNotFoundError } from '../../Router';
|
|
2
|
-
import {
|
|
2
|
+
import { Filesystem } from '../../Storage';
|
|
3
3
|
import { Request, Response } from '../../Router/Http';
|
|
4
4
|
import { AppConfig } from '../Config';
|
|
5
5
|
import { HttpMiddleware } from '@Typetron/Router/Http/Middleware';
|
|
6
6
|
export declare class StaticAssetsMiddleware extends HttpMiddleware {
|
|
7
7
|
appConfig: AppConfig;
|
|
8
|
-
storage:
|
|
8
|
+
storage: Filesystem;
|
|
9
9
|
mimeTypes: {
|
|
10
10
|
[key: string]: string;
|
|
11
11
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticAssetsMiddleware.d.ts","sourceRoot":"","sources":["../../../Framework/Middleware/StaticAssetsMiddleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"StaticAssetsMiddleware.d.ts","sourceRoot":"","sources":["../../../Framework/Middleware/StaticAssetsMiddleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAQ,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEjE,qBACa,sBAAuB,SAAQ,cAAc;IAGtD,SAAS,EAAE,SAAS,CAAA;IAGpB,OAAO,EAAE,UAAU,CAAA;IAEnB,SAAS,EAAE;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAUjC;IAEK,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc;IAW7C,eAAe,CAAC,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;YA4BvE,WAAW;CAM5B"}
|
|
@@ -112,7 +112,7 @@ __decorate([
|
|
|
112
112
|
], StaticAssetsMiddleware.prototype, "appConfig", void 0);
|
|
113
113
|
__decorate([
|
|
114
114
|
(0, Container_1.Inject)(),
|
|
115
|
-
__metadata("design:type", Storage_1.
|
|
115
|
+
__metadata("design:type", Storage_1.Filesystem)
|
|
116
116
|
], StaticAssetsMiddleware.prototype, "storage", void 0);
|
|
117
117
|
exports.StaticAssetsMiddleware = StaticAssetsMiddleware = __decorate([
|
|
118
118
|
(0, Container_1.Injectable)()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StaticAssetsMiddleware.js","sourceRoot":"","sources":["../../../Framework/Middleware/StaticAssetsMiddleware.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAoD;AACpD,yCAAiE;AACjE,
|
|
1
|
+
{"version":3,"file":"StaticAssetsMiddleware.js","sourceRoot":"","sources":["../../../Framework/Middleware/StaticAssetsMiddleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ const Provider_1 = require("../Provider");
|
|
|
17
17
|
const Config_1 = require("../Config");
|
|
18
18
|
const cacheStores = {
|
|
19
19
|
file: (app, config) => {
|
|
20
|
-
return new Cache_1.FileStore(app.get(Storage_1.
|
|
20
|
+
return new Cache_1.FileStore(app.get(Storage_1.Filesystem), config.drivers.file.path);
|
|
21
21
|
},
|
|
22
22
|
memory: () => {
|
|
23
23
|
return new Cache_1.MemoryStore();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CacheProvider.js","sourceRoot":"","sources":["../../../Framework/Providers/CacheProvider.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;;;;;;;;AAEZ,mDAAuD;AACvD,2CAA8E;AAC9E,+
|
|
1
|
+
{"version":3,"file":"CacheProvider.js","sourceRoot":"","sources":["../../../Framework/Providers/CacheProvider.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;;;;;;;;;;AAEZ,mDAAuD;AACvD,2CAA8E;AAC9E,+CAA8C;AAC9C,0CAAsC;AACtC,sCAAsD;AAEtD,MAAM,WAAW,GAAqD;IAClE,IAAI,EAAE,CAAC,GAAc,EAAE,MAAmB,EAAE,EAAE;QAC1C,OAAO,IAAI,iBAAS,CAAC,GAAG,CAAC,GAAG,CAAC,oBAAU,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvE,CAAC;IACD,MAAM,EAAE,GAAG,EAAE;QACT,OAAO,IAAI,mBAAW,EAAE,CAAA;IAC5B,CAAC;IACD,QAAQ,EAAE,CAAC,GAAc,EAAE,MAAmB,EAAE,EAAE;QAC9C,OAAO,IAAI,qBAAa,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3D,CAAC;CACJ,CAAA;AAED,MAAa,aAAc,SAAQ,mBAAQ;IAEvC,MAAM,CAAa;IAEZ,QAAQ;QACX,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,aAAK,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAChF,CAAC;CACJ;AAPD,sCAOC;AALG;IADC,IAAA,kBAAM,GAAE;8BACD,oBAAW;6CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Provider } from '../Provider';
|
|
2
2
|
import { DatabaseConfig } from '../Config';
|
|
3
|
-
import {
|
|
3
|
+
import { Filesystem } from '../../Storage';
|
|
4
4
|
export declare class DatabaseProvider extends Provider {
|
|
5
5
|
databaseConfig: DatabaseConfig;
|
|
6
|
-
storage:
|
|
6
|
+
storage: Filesystem;
|
|
7
7
|
register(): Promise<void>;
|
|
8
8
|
private synchronize;
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseProvider.d.ts","sourceRoot":"","sources":["../../../Framework/Providers/DatabaseProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAG1C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"DatabaseProvider.d.ts","sourceRoot":"","sources":["../../../Framework/Providers/DatabaseProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAG1C,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE1C,qBAAa,gBAAiB,SAAQ,QAAQ;IAG1C,cAAc,EAAE,cAAc,CAAA;IAG9B,OAAO,EAAE,UAAU,CAAA;IAEb,QAAQ;YAWA,WAAW;CAU5B"}
|
|
@@ -75,6 +75,6 @@ __decorate([
|
|
|
75
75
|
], DatabaseProvider.prototype, "databaseConfig", void 0);
|
|
76
76
|
__decorate([
|
|
77
77
|
(0, Container_1.Inject)(),
|
|
78
|
-
__metadata("design:type", Storage_1.
|
|
78
|
+
__metadata("design:type", Storage_1.Filesystem)
|
|
79
79
|
], DatabaseProvider.prototype, "storage", void 0);
|
|
80
80
|
//# sourceMappingURL=DatabaseProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatabaseProvider.js","sourceRoot":"","sources":["../../../Framework/Providers/DatabaseProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAsC;AACtC,sCAA0C;AAC1C,+CAAwC;AACxC,iDAA8D;AAC9D,
|
|
1
|
+
{"version":3,"file":"DatabaseProvider.js","sourceRoot":"","sources":["../../../Framework/Providers/DatabaseProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAAsC;AACtC,sCAA0C;AAC1C,+CAAwC;AACxC,iDAA8D;AAC9D,2CAA0C;AAE1C,MAAa,gBAAiB,SAAQ,mBAAQ;IAG1C,cAAc,CAAgB;IAG9B,OAAO,CAAY;IAEnB,KAAK,CAAC,QAAQ;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAA;QACtE,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,cAAc,CAAC,MAAM,mDAAmD,CAAC,CAAA;QAC7G,CAAC;QACD,gBAAK,CAAC,UAAU,GAAG,IAAI,qBAAU,CAAC,MAAM,EAAE,CAAC,CAAA;QAC3C,IAAI,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;YACxC,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAK,CAAC,UAAU,CAAC,CAAA;QAC5C,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,UAAsB;QAC5C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAChF,MAAM,eAAe,GAAsB,MAAM,OAAO,CAAC,GAAG,CACxD,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,oBAAQ,IAAI,CAAC,IAAI,uCAAC,CAAC,CAC7C,CAAA;QACD,MAAM,gBAAgB,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAE/G,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAA;IAChE,CAAC;CAEJ;AA7BD,4CA6BC;AA1BG;IADC,IAAA,kBAAM,GAAE;8BACO,uBAAc;wDAAA;AAG9B;IADC,IAAA,kBAAM,GAAE;8BACA,oBAAU;iDAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageProvider.d.ts","sourceRoot":"","sources":["../../../Framework/Providers/StorageProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,qBAAa,eAAgB,SAAQ,QAAQ;IAEzC,MAAM,EAAE,aAAa,CAAA;IAErB,QAAQ,IAAI,IAAI;CAGnB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.StorageProvider = void 0;
|
|
13
|
+
const Container_1 = require("@Typetron/Container");
|
|
14
|
+
const Storage_1 = require("@Typetron/Storage");
|
|
15
|
+
const Config_1 = require("../Config");
|
|
16
|
+
const Provider_1 = require("../Provider");
|
|
17
|
+
class StorageProvider extends Provider_1.Provider {
|
|
18
|
+
config;
|
|
19
|
+
register() {
|
|
20
|
+
this.app.set(Storage_1.Storage, new Storage_1.Storage(this.config));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.StorageProvider = StorageProvider;
|
|
24
|
+
__decorate([
|
|
25
|
+
(0, Container_1.Inject)(),
|
|
26
|
+
__metadata("design:type", Config_1.StorageConfig)
|
|
27
|
+
], StorageProvider.prototype, "config", void 0);
|
|
28
|
+
//# sourceMappingURL=StorageProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageProvider.js","sourceRoot":"","sources":["../../../Framework/Providers/StorageProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAA4C;AAC5C,+CAA2C;AAC3C,sCAAyC;AACzC,0CAAsC;AAEtC,MAAa,eAAgB,SAAQ,mBAAQ;IAEzC,MAAM,CAAe;IAErB,QAAQ;QACJ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAO,EAAE,IAAI,iBAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACnD,CAAC;CACJ;AAPD,0CAOC;AALG;IADC,IAAA,kBAAM,GAAE;8BACD,sBAAa;+CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebsocketsProvider.d.ts","sourceRoot":"","sources":["../../../Framework/Providers/WebsocketsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAGrC,OAAO,EAAE,qBAAqB,EAAuB,MAAM,mBAAmB,CAAA;AAC9E,OAAO,EAAuB,OAAO,EAAa,MAAM,yBAAyB,CAAA;AASjF,qBAAa,kBAAmB,SAAQ,QAAQ;IAG5C,SAAS,EAAE,SAAS,CAAA;IAGpB,OAAO,EAAE,OAAO,CAAA;IAGhB,YAAY,EAAE,qBAAqB,CAAA;IAEnC,QAAQ,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"WebsocketsProvider.d.ts","sourceRoot":"","sources":["../../../Framework/Providers/WebsocketsProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAGrC,OAAO,EAAE,qBAAqB,EAAuB,MAAM,mBAAmB,CAAA;AAC9E,OAAO,EAAuB,OAAO,EAAa,MAAM,yBAAyB,CAAA;AASjF,qBAAa,kBAAmB,SAAQ,QAAQ;IAG5C,SAAS,EAAE,SAAS,CAAA;IAGpB,OAAO,EAAE,OAAO,CAAA;IAGhB,YAAY,EAAE,qBAAqB,CAAA;IAEnC,QAAQ,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YA6HlB,YAAY;CAS7B"}
|
|
@@ -33,6 +33,9 @@ class WebsocketsProvider extends Provider_1.Provider {
|
|
|
33
33
|
throw new Error('Please define a port for the Websockets server.');
|
|
34
34
|
}
|
|
35
35
|
const stringDecoder = new util_1.TextDecoder();
|
|
36
|
+
// When a WebSocket connection closes, actions already in progress may finish, but the provider skips their success and error responses.
|
|
37
|
+
// This also applies when the connection closes during error handling. Responses are not retried or sent to a replacement connection.
|
|
38
|
+
const closedSockets = new WeakSet();
|
|
36
39
|
const app = (0, uWebSockets_js_1.App)().get('/*', res => {
|
|
37
40
|
res.cork(() => {
|
|
38
41
|
res.end('Typetron Websockets server. Please do not use this url. Work in progress');
|
|
@@ -50,6 +53,7 @@ class WebsocketsProvider extends Provider_1.Provider {
|
|
|
50
53
|
this.handler.onOpen?.run(socketWrapper.connection.container, {});
|
|
51
54
|
},
|
|
52
55
|
close: async (socket, code, message) => {
|
|
56
|
+
closedSockets.add(socket);
|
|
53
57
|
console.info('connection closed', code, Buffer.from(message).toString());
|
|
54
58
|
const extendedSocket = socket;
|
|
55
59
|
await this.handler.onClose?.run(extendedSocket.container, {}).catch(error => {
|
|
@@ -72,6 +76,9 @@ class WebsocketsProvider extends Provider_1.Provider {
|
|
|
72
76
|
},
|
|
73
77
|
status: WebsocketMessageStatus.Error
|
|
74
78
|
};
|
|
79
|
+
if (closedSockets.has(socket)) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
75
82
|
socket.cork(() => {
|
|
76
83
|
socket.send(JSON.stringify(errorMessage), isBinary, true);
|
|
77
84
|
});
|
|
@@ -93,6 +100,9 @@ class WebsocketsProvider extends Provider_1.Provider {
|
|
|
93
100
|
else {
|
|
94
101
|
sentResponse.status = WebsocketMessageStatus.Error;
|
|
95
102
|
}
|
|
103
|
+
if (closedSockets.has(socket)) {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
96
106
|
socket.cork(() => {
|
|
97
107
|
socket.send(JSON.stringify(sentResponse), isBinary, true);
|
|
98
108
|
});
|
|
@@ -113,6 +123,9 @@ class WebsocketsProvider extends Provider_1.Provider {
|
|
|
113
123
|
errorMessage.message.message = response.body.message;
|
|
114
124
|
}
|
|
115
125
|
console.error(errorMessage);
|
|
126
|
+
if (closedSockets.has(socket)) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
116
129
|
socket.cork(() => {
|
|
117
130
|
socket.send(JSON.stringify(errorMessage), isBinary, true);
|
|
118
131
|
});
|