@flusys/nestjs-entity-builder 9.0.1 → 9.1.0
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/README.md +22 -28
- package/config/message-keys.d.ts +9 -62
- package/controllers/flow-api-key.controller.d.ts +14 -0
- package/controllers/flow-definition.controller.d.ts +1 -7
- package/controllers/index.d.ts +1 -0
- package/dtos/flow.dto.d.ts +20 -10
- package/entities/flow-api-key.entity.d.ts +10 -0
- package/entities/flow-definition.entity.d.ts +9 -3
- package/entities/flow-execution.entity.d.ts +0 -1
- package/entities/index.d.ts +3 -3
- package/fesm/21.js +11 -64
- package/fesm/{582.js → 489.js} +11 -20
- package/fesm/{913.js → 606.js} +295 -209
- package/fesm/719.js +186 -162
- package/fesm/794.js +187 -116
- package/fesm/{677.js → 996.js} +616 -1490
- package/fesm/controllers/index.js +6 -5
- package/fesm/docs/index.js +2 -2
- package/fesm/entities/index.js +2 -2
- package/fesm/guards/index.js +19 -12
- package/fesm/index.js +638 -50
- package/fesm/modules/index.js +625 -7
- package/fesm/rule-engine/index.js +2 -2
- package/fesm/services/index.js +25 -54
- package/flow-engine/flow-api-key.d.ts +7 -3
- package/flow-engine/flow-graph.validator.d.ts +2 -4
- package/flow-engine/flow-run.types.d.ts +4 -14
- package/flow-engine/flow.types.d.ts +9 -91
- package/interfaces/flow-definition.interface.d.ts +9 -13
- package/package.json +5 -5
- package/rule-engine/rule-engine.service.d.ts +0 -1
- package/services/entity-flow-scaffold.d.ts +1 -1
- package/services/flow-api-key.service.d.ts +31 -0
- package/services/flow-definition.service.d.ts +12 -24
- package/services/flow-execution.service.d.ts +0 -1
- package/services/flow-executor.service.d.ts +7 -7
- package/services/generic-entity.service.d.ts +1 -1
- package/services/index.d.ts +1 -0
- package/entities/flow-version.entity.d.ts +0 -10
- package/fesm/458.js +0 -649
|
@@ -5,23 +5,24 @@ import { __webpack_require__ } from '../runtime.js';
|
|
|
5
5
|
var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
|
|
6
6
|
import * as __rspack_chunk_1 from '../21.js';
|
|
7
7
|
__webpack_require__.C(__rspack_chunk_1);
|
|
8
|
-
import * as __rspack_chunk_2 from '../
|
|
8
|
+
import * as __rspack_chunk_2 from '../489.js';
|
|
9
9
|
__webpack_require__.C(__rspack_chunk_2);
|
|
10
10
|
import * as __rspack_chunk_3 from '../794.js';
|
|
11
11
|
__webpack_require__.C(__rspack_chunk_3);
|
|
12
|
-
import * as __rspack_chunk_4 from '../
|
|
12
|
+
import * as __rspack_chunk_4 from '../996.js';
|
|
13
13
|
__webpack_require__.C(__rspack_chunk_4);
|
|
14
14
|
import * as __rspack_chunk_5 from '../362.js';
|
|
15
15
|
__webpack_require__.C(__rspack_chunk_5);
|
|
16
16
|
import * as __rspack_chunk_6 from '../719.js';
|
|
17
17
|
__webpack_require__.C(__rspack_chunk_6);
|
|
18
|
-
import * as __rspack_chunk_7 from '../
|
|
18
|
+
import * as __rspack_chunk_7 from '../606.js';
|
|
19
19
|
__webpack_require__.C(__rspack_chunk_7);
|
|
20
20
|
import * as __rspack_chunk_8 from './index.js';
|
|
21
21
|
__webpack_require__.C(__rspack_chunk_8);
|
|
22
|
-
var __webpack_exports__ = __webpack_exec__(
|
|
22
|
+
var __webpack_exports__ = __webpack_exec__(2517);var __webpack_exports__EntityDefinitionController = __webpack_exports__.hv;
|
|
23
23
|
var __webpack_exports__FieldDefinitionController = __webpack_exports__.GX;
|
|
24
|
+
var __webpack_exports__FlowApiKeyController = __webpack_exports__.Sv;
|
|
24
25
|
var __webpack_exports__FlowDefinitionController = __webpack_exports__.W8;
|
|
25
26
|
var __webpack_exports__FlowExecutionController = __webpack_exports__.VU;
|
|
26
27
|
var __webpack_exports__FlowRuntimeController = __webpack_exports__.bw;
|
|
27
|
-
export { __webpack_exports__EntityDefinitionController as EntityDefinitionController, __webpack_exports__FieldDefinitionController as FieldDefinitionController, __webpack_exports__FlowDefinitionController as FlowDefinitionController, __webpack_exports__FlowExecutionController as FlowExecutionController, __webpack_exports__FlowRuntimeController as FlowRuntimeController };
|
|
28
|
+
export { __webpack_exports__EntityDefinitionController as EntityDefinitionController, __webpack_exports__FieldDefinitionController as FieldDefinitionController, __webpack_exports__FlowApiKeyController as FlowApiKeyController, __webpack_exports__FlowDefinitionController as FlowDefinitionController, __webpack_exports__FlowExecutionController as FlowExecutionController, __webpack_exports__FlowRuntimeController as FlowRuntimeController };
|
package/fesm/docs/index.js
CHANGED
|
@@ -36,7 +36,7 @@ Runtime-defined business entities backed by real database tables, whose records
|
|
|
36
36
|
- Permissions per entity and action: \`entity_builder.entity.<entityCode>.<create|read|update|delete>\`, checked by flows running as the caller
|
|
37
37
|
|
|
38
38
|
### ⚙️ Automation
|
|
39
|
-
- **Flows**: visual virtual APIs served at \`POST /api-flows/:slug
|
|
39
|
+
- **Flows**: visual virtual APIs served at \`POST /api-flows/:slug\` (jwt, permission, api_key or public) - validate, branch, loop, read/write entities in one transaction, call other flows, HTTP requests and events
|
|
40
40
|
|
|
41
41
|
## Data Isolation
|
|
42
42
|
|
|
@@ -49,7 +49,7 @@ to a company or branch, add fields such as \`company_id\` / \`branch_id\` and ma
|
|
|
49
49
|
|
|
50
50
|
- \`/entity-builder/entity-definitions/*\` - Entities, schema changes, health and history
|
|
51
51
|
- \`/entity-builder/field-definitions/*\` - Field metadata (read-only; changes go through schema changes)
|
|
52
|
-
- \`/entity-builder/flows/*\`, \`/entity-builder/flow-executions/*\` - Flows
|
|
52
|
+
- \`/entity-builder/flows/*\`, \`/entity-builder/flow-api-keys/*\`, \`/entity-builder/flow-executions/*\` - Flows
|
|
53
53
|
- \`/api-flows/:slug\` - Call a flow
|
|
54
54
|
|
|
55
55
|
## Common Error Codes
|
package/fesm/entities/index.js
CHANGED
|
@@ -10,9 +10,9 @@ __webpack_require__.C(__rspack_chunk_2);
|
|
|
10
10
|
var __webpack_exports__ = __webpack_exec__(665);var __webpack_exports__EntityBuilderEntities = __webpack_exports__.Ui;
|
|
11
11
|
var __webpack_exports__EntityDefinition = __webpack_exports__.f6;
|
|
12
12
|
var __webpack_exports__FieldDefinition = __webpack_exports__.ck;
|
|
13
|
+
var __webpack_exports__FlowApiKey = __webpack_exports__.Sf;
|
|
13
14
|
var __webpack_exports__FlowDefinition = __webpack_exports__.G;
|
|
14
15
|
var __webpack_exports__FlowExecution = __webpack_exports__.j5;
|
|
15
|
-
var __webpack_exports__FlowVersion = __webpack_exports__.pj;
|
|
16
16
|
var __webpack_exports__SchemaChangeLog = __webpack_exports__.We;
|
|
17
17
|
var __webpack_exports__getEntityBuilderEntities = __webpack_exports__.ac;
|
|
18
|
-
export { __webpack_exports__EntityBuilderEntities as EntityBuilderEntities, __webpack_exports__EntityDefinition as EntityDefinition, __webpack_exports__FieldDefinition as FieldDefinition,
|
|
18
|
+
export { __webpack_exports__EntityBuilderEntities as EntityBuilderEntities, __webpack_exports__EntityDefinition as EntityDefinition, __webpack_exports__FieldDefinition as FieldDefinition, __webpack_exports__FlowApiKey as FlowApiKey, __webpack_exports__FlowDefinition as FlowDefinition, __webpack_exports__FlowExecution as FlowExecution, __webpack_exports__SchemaChangeLog as SchemaChangeLog, __webpack_exports__getEntityBuilderEntities as getEntityBuilderEntities };
|
package/fesm/guards/index.js
CHANGED
|
@@ -24,8 +24,10 @@ var core_ = __webpack_require__(3075);
|
|
|
24
24
|
|
|
25
25
|
// EXTERNAL MODULE: ./projects/nestjs-entity-builder/src/config/message-keys.ts
|
|
26
26
|
var message_keys = __webpack_require__(5732);
|
|
27
|
-
// EXTERNAL MODULE: ./projects/nestjs-entity-builder/src/services/flow-definition.service.ts
|
|
28
|
-
var flow_definition_service = __webpack_require__(
|
|
27
|
+
// EXTERNAL MODULE: ./projects/nestjs-entity-builder/src/services/flow-definition.service.ts
|
|
28
|
+
var flow_definition_service = __webpack_require__(5229);
|
|
29
|
+
// EXTERNAL MODULE: ./projects/nestjs-entity-builder/src/services/flow-api-key.service.ts + 1 modules
|
|
30
|
+
var flow_api_key_service = __webpack_require__(8888);
|
|
29
31
|
// EXTERNAL MODULE: ./projects/nestjs-entity-builder/src/services/flow-runtime.service.ts
|
|
30
32
|
var flow_runtime_service = __webpack_require__(2300);
|
|
31
33
|
;// CONCATENATED MODULE: ./projects/nestjs-entity-builder/src/flow-engine/flow-rate-limiter.ts
|
|
@@ -69,8 +71,6 @@ const DEFAULT_MAX_KEYS = 10_000;
|
|
|
69
71
|
}
|
|
70
72
|
}
|
|
71
73
|
|
|
72
|
-
// EXTERNAL MODULE: ./projects/nestjs-entity-builder/src/flow-engine/flow-api-key.ts
|
|
73
|
-
var flow_api_key = __webpack_require__(4816);
|
|
74
74
|
// EXTERNAL MODULE: ./projects/nestjs-entity-builder/src/flow-engine/flow.types.ts
|
|
75
75
|
var flow_types = __webpack_require__(6256);
|
|
76
76
|
;// CONCATENATED MODULE: ./projects/nestjs-entity-builder/src/guards/flow-access.guard.ts
|
|
@@ -127,27 +127,34 @@ class FlowAccessGuard {
|
|
|
127
127
|
});
|
|
128
128
|
const flow = slug ? await runtime.findActive(slug) : null;
|
|
129
129
|
const endpoint = flow ? (0,flow_types/* .findEndpoint */.vS)(flow, request.params?.endpoint) : undefined;
|
|
130
|
-
|
|
131
|
-
if (!flow || !endpoint || endpoint.authMode === 'internal') throw new common_.NotFoundException({
|
|
130
|
+
if (!flow || !endpoint) throw new common_.NotFoundException({
|
|
132
131
|
message: 'Not found',
|
|
133
132
|
messageKey: message_keys/* .FLOW_MESSAGES.NOT_FOUND */.wu.NOT_FOUND
|
|
134
133
|
});
|
|
135
134
|
request.flowDefinition = flow;
|
|
136
135
|
request.flowEndpoint = endpoint;
|
|
137
136
|
const ip = request.ip ?? request.socket?.remoteAddress ?? 'unknown';
|
|
138
|
-
if (!limiter.hit(`${flow.id}|${
|
|
137
|
+
if (!limiter.hit(`${flow.id}|${ip}`, flow.rateLimitPerMinute)) {
|
|
139
138
|
throw new common_.HttpException({
|
|
140
139
|
message: 'Too many requests. Try again in a minute.',
|
|
141
140
|
messageKey: message_keys/* .FLOW_MESSAGES.RATE_LIMITED */.wu.RATE_LIMITED
|
|
142
141
|
}, common_.HttpStatus.TOO_MANY_REQUESTS);
|
|
143
142
|
}
|
|
144
|
-
switch(
|
|
143
|
+
switch(flow.authMode){
|
|
145
144
|
case 'public':
|
|
146
145
|
return true;
|
|
147
146
|
case 'api_key':
|
|
148
147
|
{
|
|
148
|
+
const keys = await this.moduleRef.resolve(flow_api_key_service/* .FlowApiKeyService */.T, contextId, {
|
|
149
|
+
strict: false
|
|
150
|
+
});
|
|
149
151
|
const header = request.headers?.['x-api-key'];
|
|
150
|
-
|
|
152
|
+
const check = await keys.verify(flow.id, Array.isArray(header) ? header[0] : header);
|
|
153
|
+
if (check === 'expired') throw new common_.UnauthorizedException({
|
|
154
|
+
message: 'This API key has expired.',
|
|
155
|
+
messageKey: message_keys/* .FLOW_MESSAGES.API_KEY_EXPIRED */.wu.API_KEY_EXPIRED
|
|
156
|
+
});
|
|
157
|
+
if (check !== 'valid') {
|
|
151
158
|
throw new common_.UnauthorizedException({
|
|
152
159
|
message: 'A valid API key is required (x-api-key header).',
|
|
153
160
|
messageKey: message_keys/* .FLOW_MESSAGES.API_KEY_INVALID */.wu.API_KEY_INVALID
|
|
@@ -161,7 +168,7 @@ class FlowAccessGuard {
|
|
|
161
168
|
case 'permission':
|
|
162
169
|
{
|
|
163
170
|
if (!await this.authenticate(context)) return false;
|
|
164
|
-
await this.permissionCache.assertPermission(request.user,
|
|
171
|
+
await this.permissionCache.assertPermission(request.user, flow.permissionCode || (0,flow_definition_service/* .defaultFlowPermissionCode */.Er)(flow.slug));
|
|
165
172
|
return true;
|
|
166
173
|
}
|
|
167
174
|
default:
|
|
@@ -214,11 +221,11 @@ import { __webpack_require__ } from '../runtime.js';
|
|
|
214
221
|
var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
|
|
215
222
|
import * as __rspack_chunk_1 from '../21.js';
|
|
216
223
|
__webpack_require__.C(__rspack_chunk_1);
|
|
217
|
-
import * as __rspack_chunk_2 from '../
|
|
224
|
+
import * as __rspack_chunk_2 from '../489.js';
|
|
218
225
|
__webpack_require__.C(__rspack_chunk_2);
|
|
219
226
|
import * as __rspack_chunk_3 from '../794.js';
|
|
220
227
|
__webpack_require__.C(__rspack_chunk_3);
|
|
221
|
-
import * as __rspack_chunk_4 from '../
|
|
228
|
+
import * as __rspack_chunk_4 from '../996.js';
|
|
222
229
|
__webpack_require__.C(__rspack_chunk_4);
|
|
223
230
|
import * as __rspack_chunk_5 from './index.js';
|
|
224
231
|
__webpack_require__.C(__rspack_chunk_5);
|