equipped 5.0.0-alpha.1 → 5.0.0-alpha.3
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/CHANGELOG.md +9 -0
- package/lib/instance/settings.d.ts +2 -1
- package/lib/instance/settings.js +2 -1
- package/lib/listeners/emitter.d.ts +1 -1
- package/lib/listeners/emitter.js +6 -6
- package/lib/server/impls/base.js +1 -0
- package/lib/server/impls/express.js +2 -2
- package/lib/server/impls/fastify.js +2 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [5.0.0-alpha.3](https://github.com/kevinand11/equipped/compare/v5.0.0-alpha.2...v5.0.0-alpha.3) (2024-06-18)
|
|
6
|
+
|
|
7
|
+
## [5.0.0-alpha.2](https://github.com/kevinand11/equipped/compare/v5.0.0-alpha.1...v5.0.0-alpha.2) (2024-06-16)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* open api base url ([2a1becf](https://github.com/kevinand11/equipped/commit/2a1becf5f18f2b62ec5b2aada4c14db349e449bc))
|
|
13
|
+
|
|
5
14
|
## [5.0.0-alpha.1](https://github.com/kevinand11/equipped/compare/v5.0.0-beta.17...v5.0.0-alpha.1) (2024-06-09)
|
|
6
15
|
|
|
7
16
|
## [5.0.0-beta.17](https://github.com/kevinand11/equipped/compare/v5.0.0-beta.16...v5.0.0-beta.17) (2024-06-03)
|
|
@@ -25,7 +25,8 @@ export type Settings = {
|
|
|
25
25
|
paginationDefaultLimit: number;
|
|
26
26
|
server: ServerTypes;
|
|
27
27
|
openapiDocsVersion: string;
|
|
28
|
-
|
|
28
|
+
openapiDocsBaseUrl: string[];
|
|
29
|
+
openapiDocsPath: string;
|
|
29
30
|
logLevel: Level;
|
|
30
31
|
logRequests: boolean;
|
|
31
32
|
requestSchemaValidation: boolean;
|
package/lib/instance/settings.js
CHANGED
|
@@ -26,7 +26,8 @@ exports.defaulInstanceSetting = {
|
|
|
26
26
|
paginationDefaultLimit: 100,
|
|
27
27
|
server: 'express',
|
|
28
28
|
openapiDocsVersion: '1.0.0',
|
|
29
|
-
|
|
29
|
+
openapiDocsBaseUrl: ['/'],
|
|
30
|
+
openapiDocsPath: '/__docs',
|
|
30
31
|
logLevel: 'info',
|
|
31
32
|
logRequests: true,
|
|
32
33
|
requestSchemaValidation: false,
|
|
@@ -14,7 +14,7 @@ export declare class Listener {
|
|
|
14
14
|
constructor(socket: io.Server, callers: SocketCallers);
|
|
15
15
|
start(): Promise<void>;
|
|
16
16
|
created<T extends BaseEntity<any, any>>(channels: string[], data: T): Promise<void>;
|
|
17
|
-
updated<T extends BaseEntity<any, any>>(channels: string[],
|
|
17
|
+
updated<T extends BaseEntity<any, any>>(channels: string[], after: T, before: T): Promise<void>;
|
|
18
18
|
deleted<T extends BaseEntity<any, any>>(channels: string[], data: T): Promise<void>;
|
|
19
19
|
set callers(callers: SocketCallers);
|
|
20
20
|
register(channel: string, onJoin?: OnJoinFn): this;
|
package/lib/listeners/emitter.js
CHANGED
|
@@ -101,13 +101,13 @@ class Listener {
|
|
|
101
101
|
await __classPrivateFieldGet(this, _Listener_subscriber, "f").subscribe();
|
|
102
102
|
}
|
|
103
103
|
async created(channels, data) {
|
|
104
|
-
await __classPrivateFieldGet(this, _Listener_instances, "m", _Listener_emit).call(this, channels, EmitTypes.created, data.toJSON());
|
|
104
|
+
await __classPrivateFieldGet(this, _Listener_instances, "m", _Listener_emit).call(this, channels, EmitTypes.created, { after: data.toJSON(), before: null });
|
|
105
105
|
}
|
|
106
|
-
async updated(channels,
|
|
107
|
-
await __classPrivateFieldGet(this, _Listener_instances, "m", _Listener_emit).call(this, channels, EmitTypes.updated,
|
|
106
|
+
async updated(channels, after, before) {
|
|
107
|
+
await __classPrivateFieldGet(this, _Listener_instances, "m", _Listener_emit).call(this, channels, EmitTypes.updated, { after: after.toJSON(), before: before.toJSON() });
|
|
108
108
|
}
|
|
109
109
|
async deleted(channels, data) {
|
|
110
|
-
await __classPrivateFieldGet(this, _Listener_instances, "m", _Listener_emit).call(this, channels, EmitTypes.deleted, data.toJSON());
|
|
110
|
+
await __classPrivateFieldGet(this, _Listener_instances, "m", _Listener_emit).call(this, channels, EmitTypes.deleted, { before: data.toJSON(), after: null });
|
|
111
111
|
}
|
|
112
112
|
set callers(callers) {
|
|
113
113
|
__classPrivateFieldSet(this, _Listener_callers, callers, "f");
|
|
@@ -134,9 +134,9 @@ _Listener_socket = new WeakMap(), _Listener_callers = new WeakMap(), _Listener_r
|
|
|
134
134
|
onJoin: __classPrivateFieldGet(this, _Listener_routes, "f")[matchedChannel],
|
|
135
135
|
params: JSON.parse(JSON.stringify(match.params))
|
|
136
136
|
};
|
|
137
|
-
}, _Listener_emit = async function _Listener_emit(channels, type,
|
|
137
|
+
}, _Listener_emit = async function _Listener_emit(channels, type, { before, after }) {
|
|
138
138
|
await Promise.all(channels.map(async (channel) => {
|
|
139
|
-
const emitData = { channel, type,
|
|
139
|
+
const emitData = { channel, type, before, after };
|
|
140
140
|
await __classPrivateFieldGet(this, _Listener_publisher, "f").publish(emitData);
|
|
141
141
|
}));
|
|
142
142
|
};
|
package/lib/server/impls/base.js
CHANGED
|
@@ -35,6 +35,7 @@ class Server {
|
|
|
35
35
|
this.baseOpenapiDoc = {
|
|
36
36
|
openapi: '3.0.0',
|
|
37
37
|
info: { title: this.settings.appId, version: this.settings.openapiDocsVersion },
|
|
38
|
+
servers: this.settings.openapiDocsBaseUrl.map((url) => ({ url })),
|
|
38
39
|
paths: {},
|
|
39
40
|
components: {
|
|
40
41
|
schemas: {},
|
|
@@ -40,7 +40,7 @@ class ExpressServer extends base_1.Server {
|
|
|
40
40
|
const app = (0, express_1.default)();
|
|
41
41
|
super(http_1.default.createServer(app));
|
|
42
42
|
_ExpressServer_expressApp.set(this, void 0);
|
|
43
|
-
_ExpressServer_oapi.set(this, (0, openapi_1.default)(`${this.settings.
|
|
43
|
+
_ExpressServer_oapi.set(this, (0, openapi_1.default)(`${this.settings.openapiDocsPath}/json`, this.baseOpenapiDoc, { coerce: false }));
|
|
44
44
|
_ExpressServer_ref.set(this, (0, json_schema_resolver_1.default)({ clone: true }));
|
|
45
45
|
__classPrivateFieldSet(this, _ExpressServer_expressApp, app, "f");
|
|
46
46
|
app.disable('x-powered-by');
|
|
@@ -54,7 +54,7 @@ class ExpressServer extends base_1.Server {
|
|
|
54
54
|
app.use(express_1.default.urlencoded({ extended: false }));
|
|
55
55
|
app.use(express_1.default.static(this.staticPath));
|
|
56
56
|
app.use(__classPrivateFieldGet(this, _ExpressServer_oapi, "f"));
|
|
57
|
-
app.use(this.settings.
|
|
57
|
+
app.use(this.settings.openapiDocsPath, __classPrivateFieldGet(this, _ExpressServer_oapi, "f").swaggerui());
|
|
58
58
|
app.use((0, express_fileupload_1.default)({
|
|
59
59
|
limits: { fileSize: this.settings.maxFileUploadSizeInMb * 1024 * 1024 },
|
|
60
60
|
useTempFiles: false
|
|
@@ -38,6 +38,7 @@ const base_1 = require("./base");
|
|
|
38
38
|
function getFastifyApp() {
|
|
39
39
|
const instance = instance_1.Instance.get();
|
|
40
40
|
return (0, fastify_1.default)({
|
|
41
|
+
caseSensitive: false,
|
|
41
42
|
logger: instance.settings.logRequests ? instance.logger : false,
|
|
42
43
|
ajv: { customOptions: { coerceTypes: false } },
|
|
43
44
|
schemaErrorFormatter: (errors, data) => new errors_1.ValidationError(errors.map((error) => ({ messages: [error.message ?? ''], field: `${data}${error.instancePath}`.replaceAll('/', '.') })))
|
|
@@ -54,7 +55,7 @@ class FastifyServer extends base_1.Server {
|
|
|
54
55
|
app.register(cookie_1.default, {});
|
|
55
56
|
app.register(cors_1.default, { origin: '*' });
|
|
56
57
|
app.register(swagger_1.default, { openapi: this.baseOpenapiDoc });
|
|
57
|
-
app.register(swagger_ui_1.default, { routePrefix: this.settings.
|
|
58
|
+
app.register(swagger_ui_1.default, { routePrefix: this.settings.openapiDocsPath });
|
|
58
59
|
app.register(formbody_1.default, { parser: (str) => qs_1.default.parse(str) });
|
|
59
60
|
app.register(helmet_1.default, { crossOriginResourcePolicy: { policy: 'cross-origin' } });
|
|
60
61
|
app.register(multipart_1.default, {
|