@futdevpro/nts-dynamo 1.15.280 → 1.15.290
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/build/_collections/endpoint-bridge.util.d.ts +40 -0
- package/build/_collections/endpoint-bridge.util.d.ts.map +1 -0
- package/build/_collections/endpoint-bridge.util.js +128 -0
- package/build/_collections/endpoint-bridge.util.js.map +1 -0
- package/build/_collections/operation-rest.util.d.ts +53 -0
- package/build/_collections/operation-rest.util.d.ts.map +1 -0
- package/build/_collections/operation-rest.util.js +146 -0
- package/build/_collections/operation-rest.util.js.map +1 -0
- package/build/_models/control-models/endpoint-params.control-model.d.ts +21 -2
- package/build/_models/control-models/endpoint-params.control-model.d.ts.map +1 -1
- package/build/_models/control-models/endpoint-params.control-model.js +51 -3
- package/build/_models/control-models/endpoint-params.control-model.js.map +1 -1
- package/build/_models/interfaces/bridgeable-endpoint.interface.d.ts +15 -0
- package/build/_models/interfaces/bridgeable-endpoint.interface.d.ts.map +1 -0
- package/build/_models/interfaces/bridgeable-endpoint.interface.js +3 -0
- package/build/_models/interfaces/bridgeable-endpoint.interface.js.map +1 -0
- package/build/_models/interfaces/endpoint-bridge-call.interface.d.ts +16 -0
- package/build/_models/interfaces/endpoint-bridge-call.interface.d.ts.map +1 -0
- package/build/_models/interfaces/endpoint-bridge-call.interface.js +3 -0
- package/build/_models/interfaces/endpoint-bridge-call.interface.js.map +1 -0
- package/build/_models/interfaces/endpoint-bridge-result.interface.d.ts +17 -0
- package/build/_models/interfaces/endpoint-bridge-result.interface.d.ts.map +1 -0
- package/build/_models/interfaces/endpoint-bridge-result.interface.js +3 -0
- package/build/_models/interfaces/endpoint-bridge-result.interface.js.map +1 -0
- package/build/_models/interfaces/operation-identity.interface.d.ts +20 -0
- package/build/_models/interfaces/operation-identity.interface.d.ts.map +1 -0
- package/build/_models/interfaces/operation-identity.interface.js +3 -0
- package/build/_models/interfaces/operation-identity.interface.js.map +1 -0
- package/build/_modules/defaults/_collections/default-endpoints.util.d.ts +15 -0
- package/build/_modules/defaults/_collections/default-endpoints.util.d.ts.map +1 -1
- package/build/_modules/defaults/_collections/default-endpoints.util.js +56 -64
- package/build/_modules/defaults/_collections/default-endpoints.util.js.map +1 -1
- package/build/_modules/defaults/_collections/default-operations.util.d.ts +110 -0
- package/build/_modules/defaults/_collections/default-operations.util.d.ts.map +1 -0
- package/build/_modules/defaults/_collections/default-operations.util.js +156 -0
- package/build/_modules/defaults/_collections/default-operations.util.js.map +1 -0
- package/build/_modules/defaults/index.d.ts +1 -0
- package/build/_modules/defaults/index.d.ts.map +1 -1
- package/build/_modules/defaults/index.js +1 -0
- package/build/_modules/defaults/index.js.map +1 -1
- package/build/_services/core/auth.service.d.ts +13 -0
- package/build/_services/core/auth.service.d.ts.map +1 -1
- package/build/_services/core/auth.service.js +23 -0
- package/build/_services/core/auth.service.js.map +1 -1
- package/build/index.d.ts +6 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +6 -0
- package/build/index.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bridgeable-endpoint.interface.js","sourceRoot":"","sources":["../../../src/_models/interfaces/bridgeable-endpoint.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One programmatic call of an endpoint through `DyNTS_EndpointBridge_Util` (HP-DOPL MP-2.3).
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* const call: DyNTS_EndpointBridge_Call = { params: { taskId: 't-1' }, headers: { authorization: 'Bearer …' } };
|
|
7
|
+
* ```
|
|
8
|
+
*/
|
|
9
|
+
export interface DyNTS_EndpointBridge_Call {
|
|
10
|
+
params?: Record<string, string>;
|
|
11
|
+
query?: Record<string, unknown>;
|
|
12
|
+
body?: unknown;
|
|
13
|
+
/** Header names are matched case-insensitively (stored lowercase, like Express). */
|
|
14
|
+
headers?: Record<string, string>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=endpoint-bridge-call.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-bridge-call.interface.d.ts","sourceRoot":"","sources":["../../../src/_models/interfaces/endpoint-bridge-call.interface.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-bridge-call.interface.js","sourceRoot":"","sources":["../../../src/_models/interfaces/endpoint-bridge-call.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The captured response of a bridged endpoint call (HP-DOPL MP-2.3).
|
|
3
|
+
*
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* const result: DyNTS_EndpointBridge_Result = await DyNTS_EndpointBridge_Util.invoke(endpoint, call);
|
|
7
|
+
* if (result.status >= 400) { … }
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export interface DyNTS_EndpointBridge_Result {
|
|
11
|
+
/** HTTP-equivalent status (200 when the endpoint sent without setting one). */
|
|
12
|
+
status: number;
|
|
13
|
+
body: unknown;
|
|
14
|
+
/** Response headers, lowercase names. */
|
|
15
|
+
headers: Record<string, string>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=endpoint-bridge-result.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-bridge-result.interface.d.ts","sourceRoot":"","sources":["../../../src/_models/interfaces/endpoint-bridge-result.interface.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,WAAW,2BAA2B;IAC1C,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint-bridge-result.interface.js","sourceRoot":"","sources":["../../../src/_models/interfaces/endpoint-bridge-result.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DyFM_OperationAuth_Type } from '@futdevpro/fsm-dynamo';
|
|
2
|
+
/**
|
|
3
|
+
* The caller identity of one request, as the auth layer resolves it for an operation call (HP-DOPL MP-2.2).
|
|
4
|
+
*
|
|
5
|
+
* 🔴 `issuer` is ALWAYS the accountId (`fdp-issuer-is-account-id`) — also for API key calls, where the key's
|
|
6
|
+
* user record must be resolved to its account. `clientUserId` is the service's own user id (ownership).
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* const identity: DyNTS_Operation_Identity = { authKind: DyFM_OperationAuth_Type.token, issuer: accountId };
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export interface DyNTS_Operation_Identity {
|
|
14
|
+
authKind: DyFM_OperationAuth_Type;
|
|
15
|
+
issuer?: string;
|
|
16
|
+
clientUserId?: string;
|
|
17
|
+
/** Scopes of the API key; `undefined` = legacy key without scopes (D-6). */
|
|
18
|
+
apiKeyScopes?: string[];
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=operation-identity.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation-identity.interface.d.ts","sourceRoot":"","sources":["../../../src/_models/interfaces/operation-identity.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGhE;;;;;;;;;;GAUG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,uBAAuB,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation-identity.interface.js","sourceRoot":"","sources":["../../../src/_models/interfaces/operation-identity.interface.ts"],"names":[],"mappings":""}
|
|
@@ -245,5 +245,20 @@ export declare class DyNTS_DefaultEndpoints_Util {
|
|
|
245
245
|
};
|
|
246
246
|
idParamName?: string;
|
|
247
247
|
}): DyNTS_Endpoint_Params[];
|
|
248
|
+
/**
|
|
249
|
+
* Resolves the path param that carries the id of a delete endpoint (HP-DOPL MP-2.4).
|
|
250
|
+
*
|
|
251
|
+
* The delete check used to be `includesIgnoreCase(path, idParamName)`, which also matches word suffixes
|
|
252
|
+
* (`taskId` → `id`) and so passed for EVERY path with `:userId` — while the task read `req.params[idParamName]`.
|
|
253
|
+
* Measured consequence: `entityName: 'StockItem'` on `/:userId/item/delete/:itemId` read `stockitemId` (undefined).
|
|
254
|
+
*
|
|
255
|
+
* The lenient matching is kept (existing paths keep booting), but the result is now the real param name:
|
|
256
|
+
* exact match (`:userId` included) → case-insensitive match → the single param whose name ends the id name
|
|
257
|
+
* (`stockitemId` → `itemId`); the last two skip `:userId`, the owner guard param.
|
|
258
|
+
* @param endpointPath - the endpoint path
|
|
259
|
+
* @param idParamName - the configured (or default) id param name
|
|
260
|
+
* @throws 406 `DyNTS-DEU-DE0` when no path param (or more than one) can carry the id
|
|
261
|
+
*/
|
|
262
|
+
private static resolveDeleteIdParam;
|
|
248
263
|
}
|
|
249
264
|
//# sourceMappingURL=default-endpoints.util.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-endpoints.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/defaults/_collections/default-endpoints.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAiC,aAAa,
|
|
1
|
+
{"version":3,"file":"default-endpoints.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/defaults/_collections/default-endpoints.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ exports.DyNTS_DefaultEndpoints_Util = void 0;
|
|
|
4
4
|
const fsm_dynamo_1 = require("@futdevpro/fsm-dynamo");
|
|
5
5
|
const endpoint_params_control_model_1 = require("../../../_models/control-models/endpoint-params.control-model");
|
|
6
6
|
const global_settings_const_1 = require("../../../_collections/global-settings.const");
|
|
7
|
+
const default_operations_util_1 = require("./default-operations.util");
|
|
7
8
|
/**
|
|
8
9
|
* Alapértelmezett endpoint-ok létrehozásához használt utility class.
|
|
9
10
|
* Az Organizer Modules mintáját követve generálja a standard CRUD endpoint-okat.
|
|
@@ -56,15 +57,9 @@ class DyNTS_DefaultEndpoints_Util {
|
|
|
56
57
|
type: fsm_dynamo_1.DyFM_HttpCallType.get,
|
|
57
58
|
endpoint: set.endpointPath,
|
|
58
59
|
preProcesses: [set.authService.authenticate_tokenSelf],
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
issuer: issuer,
|
|
63
|
-
});
|
|
64
|
-
const data = await dataService.getDataById(req.params[idParamName]);
|
|
65
|
-
res.send(dataService.getProvidedData(data));
|
|
66
|
-
},
|
|
67
|
-
],
|
|
60
|
+
operation: default_operations_util_1.DyNTS_DefaultOperations_Util.getGetOperation({
|
|
61
|
+
entityName: set.entityName, dataServiceClass: set.dataServiceClass, idParamName: idParamName,
|
|
62
|
+
}),
|
|
68
63
|
});
|
|
69
64
|
}
|
|
70
65
|
static getGetMyEndpoint(set) {
|
|
@@ -81,15 +76,9 @@ class DyNTS_DefaultEndpoints_Util {
|
|
|
81
76
|
type: fsm_dynamo_1.DyFM_HttpCallType.get,
|
|
82
77
|
endpoint: set.endpointPath,
|
|
83
78
|
preProcesses: [set.authService.authenticate_tokenSelf],
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
issuer: issuer,
|
|
88
|
-
});
|
|
89
|
-
const dataList = await dataService.getDataListByDependencyId({ userId: req.params.userId });
|
|
90
|
-
res.send(dataService.getProvidedDataList(dataList));
|
|
91
|
-
},
|
|
92
|
-
],
|
|
79
|
+
operation: default_operations_util_1.DyNTS_DefaultOperations_Util.getGetMyOperation({
|
|
80
|
+
entityName: set.entityName, dataServiceClass: set.dataServiceClass,
|
|
81
|
+
}),
|
|
93
82
|
});
|
|
94
83
|
}
|
|
95
84
|
/**
|
|
@@ -127,16 +116,9 @@ class DyNTS_DefaultEndpoints_Util {
|
|
|
127
116
|
type: fsm_dynamo_1.DyFM_HttpCallType.post,
|
|
128
117
|
endpoint: set.endpointPath,
|
|
129
118
|
preProcesses: [set.authService.authenticate_tokenSelf],
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
issuer: issuer,
|
|
134
|
-
});
|
|
135
|
-
const searchResults = await dataService.searchData(req.body);
|
|
136
|
-
searchResults.results = dataService.getProvidedDataList(searchResults.results);
|
|
137
|
-
res.send(searchResults);
|
|
138
|
-
},
|
|
139
|
-
],
|
|
119
|
+
operation: default_operations_util_1.DyNTS_DefaultOperations_Util.getSearchOperation({
|
|
120
|
+
entityName: set.entityName, dataServiceClass: set.dataServiceClass,
|
|
121
|
+
}),
|
|
140
122
|
});
|
|
141
123
|
}
|
|
142
124
|
/**
|
|
@@ -175,15 +157,9 @@ class DyNTS_DefaultEndpoints_Util {
|
|
|
175
157
|
type: fsm_dynamo_1.DyFM_HttpCallType.post,
|
|
176
158
|
endpoint: set.endpointPath,
|
|
177
159
|
preProcesses: [set.authService.authenticate_tokenSelf],
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
issuer: issuer,
|
|
182
|
-
});
|
|
183
|
-
const data = await dataService.saveData(req.body);
|
|
184
|
-
res.send(dataService.getProvidedData(data));
|
|
185
|
-
},
|
|
186
|
-
],
|
|
160
|
+
operation: default_operations_util_1.DyNTS_DefaultOperations_Util.getModifyOperation({
|
|
161
|
+
entityName: set.entityName, dataServiceClass: set.dataServiceClass,
|
|
162
|
+
}),
|
|
187
163
|
});
|
|
188
164
|
}
|
|
189
165
|
/**
|
|
@@ -210,16 +186,9 @@ class DyNTS_DefaultEndpoints_Util {
|
|
|
210
186
|
* ```
|
|
211
187
|
*/
|
|
212
188
|
static getDeleteEndpoint(set) {
|
|
213
|
-
|
|
189
|
+
// HP-DOPL MP-2.4: the id is resolved to the path param that REALLY carries it (see resolveDeleteIdParam)
|
|
190
|
+
const idParamName = DyNTS_DefaultEndpoints_Util.resolveDeleteIdParam(set.endpointPath, set.idParamName ?? `${set.entityName.toLowerCase()}Id`);
|
|
214
191
|
const endpointName = `delete${set.entityName}`;
|
|
215
|
-
// Ellenőrizzük a casing-ignore módon, hogy az endpoint path tartalmazza-e az ID paramétert
|
|
216
|
-
if (!fsm_dynamo_1.DyFM_StringCase.includesIgnoreCase(set.endpointPath, idParamName)) {
|
|
217
|
-
throw new fsm_dynamo_1.DyFM_Error({
|
|
218
|
-
status: 406,
|
|
219
|
-
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DEU-DE0`,
|
|
220
|
-
message: `endpoint path does not contain the ID parameter: ${idParamName}`,
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
192
|
if (!set.endpointPath.includes(`:userId`)) {
|
|
224
193
|
throw new fsm_dynamo_1.DyFM_Error({
|
|
225
194
|
status: 406,
|
|
@@ -232,15 +201,9 @@ class DyNTS_DefaultEndpoints_Util {
|
|
|
232
201
|
type: fsm_dynamo_1.DyFM_HttpCallType.delete,
|
|
233
202
|
endpoint: set.endpointPath,
|
|
234
203
|
preProcesses: [set.authService.authenticate_tokenSelf],
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
issuer: issuer,
|
|
239
|
-
});
|
|
240
|
-
await dataService.deleteData(req.params[idParamName]);
|
|
241
|
-
res.send({ result: 'deleted' });
|
|
242
|
-
},
|
|
243
|
-
],
|
|
204
|
+
operation: default_operations_util_1.DyNTS_DefaultOperations_Util.getDeleteOperation({
|
|
205
|
+
entityName: set.entityName, dataServiceClass: set.dataServiceClass, idParamName: idParamName,
|
|
206
|
+
}),
|
|
244
207
|
});
|
|
245
208
|
}
|
|
246
209
|
/**
|
|
@@ -279,15 +242,9 @@ class DyNTS_DefaultEndpoints_Util {
|
|
|
279
242
|
type: fsm_dynamo_1.DyFM_HttpCallType.patch,
|
|
280
243
|
endpoint: set.endpointPath,
|
|
281
244
|
preProcesses: [set.authService.authenticate_tokenSelf],
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
issuer: issuer,
|
|
286
|
-
});
|
|
287
|
-
const data = await dataService.patchData(req.body);
|
|
288
|
-
res.send(dataService.getProvidedData(data));
|
|
289
|
-
},
|
|
290
|
-
],
|
|
245
|
+
operation: default_operations_util_1.DyNTS_DefaultOperations_Util.getPatchOperation({
|
|
246
|
+
entityName: set.entityName, dataServiceClass: set.dataServiceClass,
|
|
247
|
+
}),
|
|
291
248
|
});
|
|
292
249
|
}
|
|
293
250
|
/**
|
|
@@ -382,6 +339,41 @@ class DyNTS_DefaultEndpoints_Util {
|
|
|
382
339
|
}
|
|
383
340
|
return endpoints;
|
|
384
341
|
}
|
|
342
|
+
/**
|
|
343
|
+
* Resolves the path param that carries the id of a delete endpoint (HP-DOPL MP-2.4).
|
|
344
|
+
*
|
|
345
|
+
* The delete check used to be `includesIgnoreCase(path, idParamName)`, which also matches word suffixes
|
|
346
|
+
* (`taskId` → `id`) and so passed for EVERY path with `:userId` — while the task read `req.params[idParamName]`.
|
|
347
|
+
* Measured consequence: `entityName: 'StockItem'` on `/:userId/item/delete/:itemId` read `stockitemId` (undefined).
|
|
348
|
+
*
|
|
349
|
+
* The lenient matching is kept (existing paths keep booting), but the result is now the real param name:
|
|
350
|
+
* exact match (`:userId` included) → case-insensitive match → the single param whose name ends the id name
|
|
351
|
+
* (`stockitemId` → `itemId`); the last two skip `:userId`, the owner guard param.
|
|
352
|
+
* @param endpointPath - the endpoint path
|
|
353
|
+
* @param idParamName - the configured (or default) id param name
|
|
354
|
+
* @throws 406 `DyNTS-DEU-DE0` when no path param (or more than one) can carry the id
|
|
355
|
+
*/
|
|
356
|
+
static resolveDeleteIdParam(endpointPath, idParamName) {
|
|
357
|
+
const allParams = (endpointPath.match(/:[A-Za-z0-9_]+/g) ?? [])
|
|
358
|
+
.map((param) => param.slice(1));
|
|
359
|
+
// `:userId` is the owner guard param — it only carries the id when it is named explicitly (exact match)
|
|
360
|
+
const params = allParams.filter((param) => param !== 'userId');
|
|
361
|
+
const wanted = idParamName.toLowerCase();
|
|
362
|
+
const suffixMatches = params.filter((param) => wanted.endsWith(param.toLowerCase()));
|
|
363
|
+
const resolved = allParams.find((param) => param === idParamName) ??
|
|
364
|
+
params.find((param) => param.toLowerCase() === wanted) ??
|
|
365
|
+
(suffixMatches.length === 1 ? suffixMatches[0] : undefined);
|
|
366
|
+
if (!resolved) {
|
|
367
|
+
throw new fsm_dynamo_1.DyFM_Error({
|
|
368
|
+
status: 406,
|
|
369
|
+
errorCode: `${global_settings_const_1.DyNTS_global_settings.systemShortCodeName}|DyNTS-DEU-DE0`,
|
|
370
|
+
message: `endpoint path does not contain the ID parameter: ${idParamName} ` +
|
|
371
|
+
`(path params: ${params.join(', ') || 'none'})`,
|
|
372
|
+
additionalContent: { endpointPath: endpointPath, idParamName: idParamName, params: params },
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
return resolved;
|
|
376
|
+
}
|
|
385
377
|
}
|
|
386
378
|
exports.DyNTS_DefaultEndpoints_Util = DyNTS_DefaultEndpoints_Util;
|
|
387
379
|
//# sourceMappingURL=default-endpoints.util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-endpoints.util.js","sourceRoot":"","sources":["../../../../src/_modules/defaults/_collections/default-endpoints.util.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"default-endpoints.util.js","sourceRoot":"","sources":["../../../../src/_modules/defaults/_collections/default-endpoints.util.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { DyFM_Metadata, DyFM_Operation_Settings, DyFM_SearchQuery, DyFM_SearchResult } from '@futdevpro/fsm-dynamo';
|
|
2
|
+
import { DyNTS_DataService } from '../../../_services/base/data.service';
|
|
3
|
+
/**
|
|
4
|
+
* The standard CRUD operations of an entity (HP-DOPL MP-2.4) — the transport-independent core of the default
|
|
5
|
+
* endpoints: `DyNTS_DefaultEndpoints_Util` builds its REST endpoints on these, so the data service logic exists once.
|
|
6
|
+
*
|
|
7
|
+
* Conventions:
|
|
8
|
+
* - `domain` is the kebab-case entity name (`StockItem` → `stock-item`), `action` is `get` · `get-my` · `search` ·
|
|
9
|
+
* `modify` · `patch` · `delete`;
|
|
10
|
+
* - the data service is created per call with the caller's `issuer` (the accountId, never the userId);
|
|
11
|
+
* - search/modify/patch take the request body WITHOUT a data model (`isBodyUntyped`), because the model belongs to
|
|
12
|
+
* the data service — so every default operation is `expose: { rest: true, mcp: false, cli: false }`.
|
|
13
|
+
* ⚠️ Exposing them on MCP/CLI is a separate, deliberate step: the REST endpoints rely on the
|
|
14
|
+
* `authenticate_tokenSelf` preProcess (the `:userId` path guard), which an MCP/CLI call would not run.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* const getTask: DyFM_Operation_Settings<Task, [string]> = DyNTS_DefaultOperations_Util.getGetOperation({
|
|
19
|
+
* entityName: 'Task', dataServiceClass: Task_DataService,
|
|
20
|
+
* });
|
|
21
|
+
* // getTask.name === 'task.get', getTask.inputs === { taskId: { type: 'string', required: true } }
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare class DyNTS_DefaultOperations_Util {
|
|
25
|
+
/**
|
|
26
|
+
* Gets one entity by its id (input: `idParamName`).
|
|
27
|
+
* @param set.entityName - the entity name (e.g. `Task`)
|
|
28
|
+
* @param set.dataServiceClass - the data service constructor
|
|
29
|
+
* @param set.idParamName - the id input name (default: `${entityName.toLowerCase()}Id`)
|
|
30
|
+
*/
|
|
31
|
+
static getGetOperation<T_Data extends DyFM_Metadata>(set: {
|
|
32
|
+
entityName: string;
|
|
33
|
+
dataServiceClass: new (set: {
|
|
34
|
+
data?: T_Data;
|
|
35
|
+
issuer: string;
|
|
36
|
+
}) => DyNTS_DataService<T_Data>;
|
|
37
|
+
idParamName?: string;
|
|
38
|
+
}): DyFM_Operation_Settings<T_Data, [string]>;
|
|
39
|
+
/**
|
|
40
|
+
* Lists the entities that depend on a user (input: `userId`).
|
|
41
|
+
* @param set.entityName - the entity name (e.g. `Task`)
|
|
42
|
+
* @param set.dataServiceClass - the data service constructor
|
|
43
|
+
*/
|
|
44
|
+
static getGetMyOperation<T_Data extends DyFM_Metadata>(set: {
|
|
45
|
+
entityName: string;
|
|
46
|
+
dataServiceClass: new (set: {
|
|
47
|
+
data?: T_Data;
|
|
48
|
+
issuer: string;
|
|
49
|
+
}) => DyNTS_DataService<T_Data>;
|
|
50
|
+
}): DyFM_Operation_Settings<T_Data[], [string]>;
|
|
51
|
+
/**
|
|
52
|
+
* Searches the entities (body: the search query).
|
|
53
|
+
* @param set.entityName - the entity name (e.g. `Task`)
|
|
54
|
+
* @param set.dataServiceClass - the data service constructor
|
|
55
|
+
*/
|
|
56
|
+
static getSearchOperation<T_Data extends DyFM_Metadata>(set: {
|
|
57
|
+
entityName: string;
|
|
58
|
+
dataServiceClass: new (set: {
|
|
59
|
+
data?: T_Data;
|
|
60
|
+
issuer: string;
|
|
61
|
+
}) => DyNTS_DataService<T_Data>;
|
|
62
|
+
}): DyFM_Operation_Settings<DyFM_SearchResult<T_Data>, [DyFM_SearchQuery<T_Data>]>;
|
|
63
|
+
/**
|
|
64
|
+
* Creates or replaces an entity (body: the entity) — a modify is always a create as well.
|
|
65
|
+
* @param set.entityName - the entity name (e.g. `Task`)
|
|
66
|
+
* @param set.dataServiceClass - the data service constructor
|
|
67
|
+
*/
|
|
68
|
+
static getModifyOperation<T_Data extends DyFM_Metadata>(set: {
|
|
69
|
+
entityName: string;
|
|
70
|
+
dataServiceClass: new (set: {
|
|
71
|
+
data?: T_Data;
|
|
72
|
+
issuer: string;
|
|
73
|
+
}) => DyNTS_DataService<T_Data>;
|
|
74
|
+
}): DyFM_Operation_Settings<T_Data, [T_Data]>;
|
|
75
|
+
/**
|
|
76
|
+
* Partially modifies an entity (body: the changed fields with `_id`).
|
|
77
|
+
* @param set.entityName - the entity name (e.g. `Task`)
|
|
78
|
+
* @param set.dataServiceClass - the data service constructor
|
|
79
|
+
*/
|
|
80
|
+
static getPatchOperation<T_Data extends DyFM_Metadata>(set: {
|
|
81
|
+
entityName: string;
|
|
82
|
+
dataServiceClass: new (set: {
|
|
83
|
+
data?: T_Data;
|
|
84
|
+
issuer: string;
|
|
85
|
+
}) => DyNTS_DataService<T_Data>;
|
|
86
|
+
}): DyFM_Operation_Settings<T_Data, [Partial<T_Data>]>;
|
|
87
|
+
/**
|
|
88
|
+
* Deletes an entity by its id (input: `idParamName`).
|
|
89
|
+
* @param set.entityName - the entity name (e.g. `Task`)
|
|
90
|
+
* @param set.dataServiceClass - the data service constructor
|
|
91
|
+
* @param set.idParamName - the id input name (default: `${entityName.toLowerCase()}Id`)
|
|
92
|
+
*/
|
|
93
|
+
static getDeleteOperation<T_Data extends DyFM_Metadata>(set: {
|
|
94
|
+
entityName: string;
|
|
95
|
+
dataServiceClass: new (set: {
|
|
96
|
+
data?: T_Data;
|
|
97
|
+
issuer: string;
|
|
98
|
+
}) => DyNTS_DataService<T_Data>;
|
|
99
|
+
idParamName?: string;
|
|
100
|
+
}): DyFM_Operation_Settings<{
|
|
101
|
+
result: string;
|
|
102
|
+
}, [string]>;
|
|
103
|
+
/** The operation domain of an entity: its kebab-case name. */
|
|
104
|
+
private static domainOf;
|
|
105
|
+
/** The id input name: the given one, or `${entityName.toLowerCase()}Id` (the default endpoint convention). */
|
|
106
|
+
private static idParamNameOf;
|
|
107
|
+
/** The exposure of every default operation — REST only (see the class documentation). */
|
|
108
|
+
private static restOnly;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=default-operations.util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-operations.util.d.ts","sourceRoot":"","sources":["../../../../src/_modules/defaults/_collections/default-operations.util.ts"],"names":[],"mappings":"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"}
|